mirror of
https://github.com/A2osX/A2osX.git
synced 2024-12-01 14:50:10 +00:00
Kernel 0.93+
This commit is contained in:
parent
85cee73031
commit
9db2372429
Binary file not shown.
@ -106,6 +106,10 @@ CS.RUN >LDYAI S.PW
|
|||||||
>LDYA pData
|
>LDYA pData
|
||||||
>SYSCALL putpw
|
>SYSCALL putpw
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
>SYSCALL FlushEtcPasswd
|
||||||
|
bcs .99
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
@ -153,9 +157,14 @@ CS.RUN.ROOT ldy #0
|
|||||||
>LEA.G PW+S.PW.PASSWD
|
>LEA.G PW+S.PW.PASSWD
|
||||||
>SYSCALL strcmp
|
>SYSCALL strcmp
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDYA pData
|
>LDYA pData
|
||||||
>SYSCALL putpw
|
>SYSCALL putpw
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
>SYSCALL FlushEtcPasswd
|
||||||
|
bcs .9
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
|
@ -79,6 +79,9 @@ CS.RUN >LDYAI S.PW
|
|||||||
>SYSCALL putpw
|
>SYSCALL putpw
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
>SYSCALL FlushEtcPasswd
|
||||||
|
bcs .99
|
||||||
|
|
||||||
jsr CS.RUN.RmDir
|
jsr CS.RUN.RmDir
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
@ -287,6 +287,9 @@ CS.RUN.DIR .DO X.COPY.TO.DEST=1
|
|||||||
bcs .1
|
bcs .1
|
||||||
cmp #3
|
cmp #3
|
||||||
beq .99 abort
|
beq .99 abort
|
||||||
|
|
||||||
|
jsr CS.RUN.ToUpper
|
||||||
|
|
||||||
cmp #'N'
|
cmp #'N'
|
||||||
bne .2
|
bne .2
|
||||||
jmp CS.RUN.CR.NEXT no overwrite, nothing to do, no recurse
|
jmp CS.RUN.CR.NEXT no overwrite, nothing to do, no recurse
|
||||||
@ -336,6 +339,9 @@ CS.RUN.FILE jsr CS.RUN.FILE.MSG
|
|||||||
bcs .1
|
bcs .1
|
||||||
cmp #3
|
cmp #3
|
||||||
beq .99 abort
|
beq .99 abort
|
||||||
|
|
||||||
|
jsr CS.RUN.ToUpper
|
||||||
|
|
||||||
cmp #'N'
|
cmp #'N'
|
||||||
bne .11
|
bne .11
|
||||||
jmp CS.RUN.CR.NEXT no overwrite exit
|
jmp CS.RUN.CR.NEXT no overwrite exit
|
||||||
@ -619,6 +625,13 @@ CS.RUN.GetPathY lda (pData),y
|
|||||||
CS.RUN.IncCount >INCW.G Count
|
CS.RUN.IncCount >INCW.G Count
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CS.RUN.ToUpper cmp #'a'
|
||||||
|
bcc .8
|
||||||
|
cmp #'z'+1
|
||||||
|
bcs .8
|
||||||
|
eor #$20
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -284,7 +284,7 @@ SYS.UnsetEnv .EQ $BE
|
|||||||
SYS.GetPWUID .EQ $D0
|
SYS.GetPWUID .EQ $D0
|
||||||
SYS.GetPWName .EQ $D2
|
SYS.GetPWName .EQ $D2
|
||||||
SYS.PutPW .EQ $D4
|
SYS.PutPW .EQ $D4
|
||||||
* .EQ $D6
|
SYS.FlushEtcPasswd .EQ $D6
|
||||||
|
|
||||||
* .EQ $D8
|
* .EQ $D8
|
||||||
* .EQ $DA
|
* .EQ $DA
|
||||||
|
@ -2,23 +2,29 @@ NEW
|
|||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BYTE8.MAX .EQ 1+15
|
REP.MAX .EQ 1+1254
|
||||||
REP.MAX .EQ 1+7
|
|
||||||
BL.MIN .EQ 3
|
BL.MIN .EQ 3
|
||||||
BL.MAX .EQ 3+63
|
BL.MAX .EQ 3+63
|
||||||
|
|
||||||
|
STR.MIN .EQ 127 DISABLED
|
||||||
|
STR.MAX .EQ 3+15
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PAK.B.BYTE8 .EQ %0.0000
|
PAK.B.BYTE8.W .EQ 1
|
||||||
PAK.B.BYTE8.W .EQ 5
|
PAK.B.BYTE8 .EQ %0
|
||||||
PAK.B.TOP8 .EQ %10.000
|
|
||||||
PAK.B.TOP8.W .EQ 5
|
PAK.B.TOP8.W .EQ 5
|
||||||
PAK.B.TOP16 .EQ %110.000
|
PAK.B.TOP8 .EQ %10.000
|
||||||
PAK.B.TOP16.W .EQ 6
|
PAK.B.TOP16.W .EQ 6
|
||||||
PAK.B.TOP24 .EQ %1110.000
|
PAK.B.TOP16 .EQ %110.000
|
||||||
PAK.B.TOP24.W .EQ 7
|
PAK.B.TOP24.W .EQ 7
|
||||||
PAK.B.REPn .EQ %11110.000
|
PAK.B.TOP24 .EQ %1110.000
|
||||||
PAK.B.REPn.W .EQ 8
|
|
||||||
PAK.B.BL .EQ %11111
|
PAK.B.REP.W .EQ 5
|
||||||
|
PAK.B.REP .EQ %11110
|
||||||
PAK.B.BL.W .EQ 5
|
PAK.B.BL.W .EQ 5
|
||||||
|
PAK.B.BL .EQ %11111
|
||||||
|
|
||||||
|
PAK.B.STR.W .EQ 6 DISABLED
|
||||||
|
PAK.B.STR .EQ %01.0000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Shunk Header :
|
* Shunk Header :
|
||||||
* WORD : Target UNCompressed Length
|
* WORD : Target UNCompressed Length
|
||||||
@ -38,10 +44,11 @@ S.PAKSTAT.TOP8 .EQ 4
|
|||||||
S.PAKSTAT.TOP16 .EQ 6
|
S.PAKSTAT.TOP16 .EQ 6
|
||||||
S.PAKSTAT.TOP24 .EQ 8
|
S.PAKSTAT.TOP24 .EQ 8
|
||||||
S.PAKSTAT.BYTE8 .EQ 10
|
S.PAKSTAT.BYTE8 .EQ 10
|
||||||
S.PAKSTAT.REPN .EQ 12
|
S.PAKSTAT.STR .EQ 12
|
||||||
S.PAKSTAT.BL .EQ 14
|
S.PAKSTAT.REPN .EQ 14
|
||||||
|
S.PAKSTAT.BL .EQ 16
|
||||||
*
|
*
|
||||||
S.PAKSTAT .EQ 16
|
S.PAKSTAT .EQ 18
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBPAK.Pak .EQ 4
|
LIBPAK.Pak .EQ 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
141
LIB/LIBPAK.S.txt
141
LIB/LIBPAK.S.txt
@ -76,7 +76,7 @@ Pak >PULLW Pak.SrcPtr
|
|||||||
jsr Pak.Run
|
jsr Pak.Run
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr Pak.ComputeBLBits
|
jsr Pak.ComputeLenBits
|
||||||
jsr Pak.BuildTOPTable
|
jsr Pak.BuildTOPTable
|
||||||
|
|
||||||
jsr Pak.PrintStats
|
jsr Pak.PrintStats
|
||||||
@ -109,7 +109,7 @@ Pak >PULLW Pak.SrcPtr
|
|||||||
Pak.Run >LDYA Pak.SrcPtr
|
Pak.Run >LDYA Pak.SrcPtr
|
||||||
>STYA ZPSrcPtr
|
>STYA ZPSrcPtr
|
||||||
|
|
||||||
stz Pak.Byte8.Longest
|
stz Pak.Str.Longest
|
||||||
|
|
||||||
stz Pak.Rep.Longest
|
stz Pak.Rep.Longest
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ Pak.Run >LDYA Pak.SrcPtr
|
|||||||
stz Pak.RepCnt
|
stz Pak.RepCnt
|
||||||
stz Pak.LastByte
|
stz Pak.LastByte
|
||||||
|
|
||||||
stz Pak.Out.ByteCnt
|
stz Pak.Out.StrLen
|
||||||
|
|
||||||
ldx #S.PAKSTAT.PASS1
|
ldx #S.PAKSTAT.PASS1
|
||||||
bit Pak.bPass2
|
bit Pak.bPass2
|
||||||
@ -150,23 +150,23 @@ Pak.Run.1 inc Pak.SrcCnt
|
|||||||
inc Pak.SrcCnt+1
|
inc Pak.SrcCnt+1
|
||||||
beq .8 0 byte left...
|
beq .8 0 byte left...
|
||||||
|
|
||||||
.1 jsr Pak.ScanBL
|
.1 jsr Pak.ScanRep
|
||||||
bcs .2
|
bcs .2
|
||||||
|
|
||||||
jsr Pak.PutBL
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
ldy Pak.BestBLLen
|
|
||||||
bra .6
|
|
||||||
|
|
||||||
.2 jsr Pak.ScanRep
|
|
||||||
bcs .20
|
|
||||||
|
|
||||||
jsr Pak.PutRep
|
jsr Pak.PutRep
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy Pak.RepCnt
|
ldy Pak.RepCnt
|
||||||
stz Pak.RepCnt
|
stz Pak.RepCnt
|
||||||
|
bra .6
|
||||||
|
|
||||||
|
.2 jsr Pak.ScanBL
|
||||||
|
bcs .20
|
||||||
|
|
||||||
|
jsr Pak.PutBL
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy Pak.BestBLLen
|
||||||
|
|
||||||
.6 tya
|
.6 tya
|
||||||
clc
|
clc
|
||||||
@ -302,7 +302,19 @@ Pak.ScanBL >LDYA Pak.SrcPtr Start at beginning of Src buf
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.ComputeBLBits
|
Pak.ComputeLenBits
|
||||||
|
ldx #8
|
||||||
|
lda Pak.Rep.Longest
|
||||||
|
|
||||||
|
dec
|
||||||
|
|
||||||
|
.14 asl
|
||||||
|
bcs .15
|
||||||
|
dex
|
||||||
|
bra .14
|
||||||
|
|
||||||
|
.15 stx Pak.Rep.LenBits
|
||||||
|
|
||||||
ldx #8
|
ldx #8
|
||||||
lda Pak.BL.Longest
|
lda Pak.BL.Longest
|
||||||
|
|
||||||
@ -420,11 +432,14 @@ Pak.PutRep ldx #S.PAKSTAT.REPN
|
|||||||
Pak.PutRep.2 jsr Pak.Out.Flush
|
Pak.PutRep.2 jsr Pak.Out.Flush
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
ldy #PAK.B.REP.W
|
||||||
|
lda #PAK.B.REP
|
||||||
|
jsr Pak.Out.PutYBits
|
||||||
|
bcs .9
|
||||||
|
|
||||||
lda Pak.RepCnt
|
lda Pak.RepCnt
|
||||||
dec remap 1-8 to 0-7 range
|
dec remap 1-8 to 0-7 range
|
||||||
|
ldy Pak.Rep.LenBits
|
||||||
ldy #PAK.B.REPn.W
|
|
||||||
ora #PAK.B.REPn
|
|
||||||
|
|
||||||
jmp Pak.Out.PutYBits
|
jmp Pak.Out.PutYBits
|
||||||
|
|
||||||
@ -518,13 +533,10 @@ Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT
|
|||||||
dey
|
dey
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldx #S.PAKSTAT.BYTE8
|
inc Pak.Out.StrLen
|
||||||
jsr Pak.UpdateStats
|
ldy Pak.Out.StrLen
|
||||||
|
sta Pak.Out.StrBuf,y
|
||||||
inc Pak.Out.ByteCnt
|
cpy #STR.MAX
|
||||||
ldy Pak.Out.ByteCnt
|
|
||||||
sta Pak.Out.ByteBuf,y
|
|
||||||
cpy #BYTE8.MAX
|
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
jmp Pak.Out.Flush
|
jmp Pak.Out.Flush
|
||||||
@ -579,7 +591,7 @@ Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.BLBITS
|
|||||||
sta Pak.Out.Mask
|
sta Pak.Out.Mask
|
||||||
stz Pak.Out.Byte
|
stz Pak.Out.Byte
|
||||||
|
|
||||||
stz Pak.Out.ByteCnt
|
stz Pak.Out.StrLen
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
@ -591,34 +603,65 @@ Pak.Out.Close bit Pak.Out.Mask
|
|||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.Out.Flush lda Pak.Out.ByteCnt
|
Pak.Out.Flush lda Pak.Out.StrLen
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
dec
|
cmp #STR.MIN
|
||||||
ora #PAK.B.BYTE8
|
bcs .2
|
||||||
|
|
||||||
ldy #PAK.B.BYTE8.W
|
ldx #0
|
||||||
|
|
||||||
|
.1 ldy #PAK.B.BYTE8.W
|
||||||
|
lda PAK.B.BYTE8
|
||||||
|
jsr Pak.Out.PutYBits
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
inc Pak.Stat+S.PAKSTAT.BYTE8
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
inc Pak.Stat+S.PAKSTAT.BYTE8+1
|
||||||
|
|
||||||
|
.10 inx
|
||||||
|
lda Pak.Out.StrBuf,x
|
||||||
|
ldy #8
|
||||||
|
jsr Pak.Out.PutYBits
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
cpx Pak.Out.StrLen
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
bra .7
|
||||||
|
|
||||||
|
.2 dec
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
ora #PAK.B.STR
|
||||||
|
|
||||||
|
ldy #PAK.B.STR.W
|
||||||
jsr Pak.Out.PutYBits
|
jsr Pak.Out.PutYBits
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 inx
|
.3 inx
|
||||||
lda Pak.Out.ByteBuf,x
|
lda Pak.Out.StrBuf,x
|
||||||
|
|
||||||
ldy #8
|
ldy #8
|
||||||
jsr Pak.Out.PutYBits
|
jsr Pak.Out.PutYBits
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cpx Pak.Out.ByteCnt
|
cpx Pak.Out.StrLen
|
||||||
bne .1
|
bne .3
|
||||||
|
|
||||||
cpx Pak.Byte8.Longest
|
cpx Pak.Str.Longest
|
||||||
bcc .2
|
bcc .7
|
||||||
|
|
||||||
stx Pak.Byte8.Longest
|
stx Pak.Str.Longest
|
||||||
|
|
||||||
.2 stz Pak.Out.ByteCnt
|
ldx #S.PAKSTAT.STR
|
||||||
|
jsr Pak.UpdateStats
|
||||||
|
|
||||||
|
.7 stz Pak.Out.StrLen
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
@ -699,20 +742,21 @@ Pak.PrintStats lda Pak.BL.OfsBitsL
|
|||||||
>PUSHB Pak.BL.Longest
|
>PUSHB Pak.BL.Longest
|
||||||
>PUSHW Pak.Stat+S.PAKSTAT.BL
|
>PUSHW Pak.Stat+S.PAKSTAT.BL
|
||||||
|
|
||||||
|
>PUSHB Pak.REP.LenBits
|
||||||
>PUSHB Pak.REP.Longest
|
>PUSHB Pak.REP.Longest
|
||||||
>PUSHW Pak.Stat+S.PAKSTAT.REPN
|
>PUSHW Pak.Stat+S.PAKSTAT.REPN
|
||||||
|
|
||||||
>PUSHB Pak.Byte8.Longest
|
>PUSHB Pak.Str.Longest
|
||||||
>PUSHW Pak.Stat+S.PAKSTAT.BYTE8
|
>PUSHW Pak.Stat+S.PAKSTAT.STR
|
||||||
|
|
||||||
ldx #S.PAKSTAT.TOP24
|
ldx #S.PAKSTAT.BYTE8
|
||||||
|
|
||||||
.1 >PUSHW Pak.Stat,x
|
.1 >PUSHW Pak.Stat,x
|
||||||
dex
|
dex
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
>PUSHBI 23
|
>PUSHBI 26
|
||||||
>LDYA L.MSG.Stats
|
>LDYA L.MSG.Stats
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
@ -765,9 +809,10 @@ MSG.Stats .AS "\r\nPass 1 : %5D\r\n"
|
|||||||
.AS "Top 8 : %5D\r\n"
|
.AS "Top 8 : %5D\r\n"
|
||||||
.AS "Top 16 : %5D\r\n"
|
.AS "Top 16 : %5D\r\n"
|
||||||
.AS "Top 24 : %5D\r\n"
|
.AS "Top 24 : %5D\r\n"
|
||||||
.AS "Byte 8 : %5D, Longest : %d\r\n"
|
.AS "Byte 8 : %5D\r\n"
|
||||||
.AS "Rep N : %5D, Longest : %d\r\n"
|
.AS "String : %5D, Longest : %d\r\n"
|
||||||
.AZ "BLNK : %5D, Longest : %d (%d bits), Farest : %D (%d bits)\r\n"
|
.AS "Rep : %5D, Longest : %d (%d bits)\r\n"
|
||||||
|
.AZ "BL : %5D, Longest : %d (%d bits), Farest : %D (%d bits)\r\n"
|
||||||
MSG.Top24 .AZ "Top : %5d, %h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h\r\n"
|
MSG.Top24 .AZ "Top : %5d, %h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h\r\n"
|
||||||
TOP.Bits .DA #PAK.B.TOP8,PAK.B.TOP16,PAK.B.TOP24
|
TOP.Bits .DA #PAK.B.TOP8,PAK.B.TOP16,PAK.B.TOP24
|
||||||
TOP.BitCnt .DA #PAK.B.TOP8.W,#PAK.B.TOP16.W,#PAK.B.TOP24.W
|
TOP.BitCnt .DA #PAK.B.TOP8.W,#PAK.B.TOP16.W,#PAK.B.TOP24.W
|
||||||
@ -794,17 +839,19 @@ Pak.BestBL .BS 2
|
|||||||
Pak.Cnt .BS 2
|
Pak.Cnt .BS 2
|
||||||
Pak.bStop .BS 1
|
Pak.bStop .BS 1
|
||||||
|
|
||||||
Pak.Byte8.Longest .BS 1
|
Pak.Str.Longest .BS 1
|
||||||
Pak.Rep.Longest .BS 1
|
Pak.Rep.Longest .BS 1
|
||||||
|
|
||||||
|
Pak.Rep.LenBits .BS 1
|
||||||
|
|
||||||
Pak.RepCnt .BS 1
|
Pak.RepCnt .BS 1
|
||||||
Pak.LastByte .BS 1
|
Pak.LastByte .BS 1
|
||||||
|
|
||||||
Pak.Out.Byte .BS 1
|
Pak.Out.Byte .BS 1
|
||||||
Pak.Out.Mask .BS 1
|
Pak.Out.Mask .BS 1
|
||||||
|
|
||||||
Pak.Out.ByteCnt .BS 1
|
Pak.Out.StrLen .BS 1
|
||||||
Pak.Out.ByteBuf .BS BYTE8.MAX
|
Pak.Out.StrBuf .BS STR.MAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Pak.CntL .BS 256
|
Pak.CntL .BS 256
|
||||||
Pak.CntH .BS 256
|
Pak.CntH .BS 256
|
||||||
|
@ -122,7 +122,7 @@ K.SYSCALL .DA 0 $00
|
|||||||
.DA K.GetPWUID $D0
|
.DA K.GetPWUID $D0
|
||||||
.DA K.GetPWName
|
.DA K.GetPWName
|
||||||
.DA K.PutPW
|
.DA K.PutPW
|
||||||
.DA 0
|
.DA K.FlushEtcPasswd
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
@ -373,13 +373,13 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
|
|||||||
.DA #RRAMWRAMBNK2
|
.DA #RRAMWRAMBNK2
|
||||||
.DA #$80
|
.DA #$80
|
||||||
|
|
||||||
.DA #$C0 $D0 : PWD
|
.DA #$C0 $D0 : PWDX
|
||||||
.DA #$80
|
.DA #$80
|
||||||
.DA #$C0 PWD
|
.DA #$C0 PWDX
|
||||||
.DA #$80
|
.DA #$80
|
||||||
.DA #$C0 PWD
|
.DA #$C0 PWDX
|
||||||
.DA #$80
|
.DA #$80
|
||||||
.DA #RRAMWRAMBNK2
|
.DA #0 PWD
|
||||||
.DA #$80
|
.DA #$80
|
||||||
.DA #RRAMWRAMBNK2
|
.DA #RRAMWRAMBNK2
|
||||||
.DA #$80
|
.DA #$80
|
||||||
|
72
SYS/KERNEL.S.PWD.txt
Normal file
72
SYS/KERNEL.S.PWD.txt
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
K.FlushEtcPasswd
|
||||||
|
lda PWD.DBPtr
|
||||||
|
sta A1L
|
||||||
|
clc
|
||||||
|
adc PWD.DBSize
|
||||||
|
sta A2L
|
||||||
|
|
||||||
|
lda PWD.DBPtr+1
|
||||||
|
sta A1L+1
|
||||||
|
adc PWD.DBSize+1
|
||||||
|
sta A2L+1
|
||||||
|
|
||||||
|
>LDYA PWD.DBSize
|
||||||
|
>SYSCALL2 GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
stx .8+1
|
||||||
|
>STYA A4L Save Destination Address in MAIN
|
||||||
|
|
||||||
|
clc Aux To Main
|
||||||
|
jsr AuxMove
|
||||||
|
|
||||||
|
>PUSHWZ Aux type
|
||||||
|
>PUSHBI S.FI.T.TXT
|
||||||
|
>PUSHBI O.WRONLY+O.CREATE
|
||||||
|
>LDYAI PWD.FILE
|
||||||
|
ldx #SYS.FOpen
|
||||||
|
jsr K.SYSCALL2
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
pha
|
||||||
|
jsr .8
|
||||||
|
pla
|
||||||
|
sec
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
.1 sta .7+1
|
||||||
|
|
||||||
|
>PUSHW PWD.DBSize
|
||||||
|
lda .8+1
|
||||||
|
jsr K.getmemptr
|
||||||
|
>PUSHYA
|
||||||
|
lda .7+1
|
||||||
|
ldx #SYS.FWrite
|
||||||
|
jsr K.SYSCALL2
|
||||||
|
bcc .7
|
||||||
|
|
||||||
|
pha
|
||||||
|
jsr .7
|
||||||
|
pla
|
||||||
|
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.7 lda #$ff SELF MODIFIED
|
||||||
|
ldx #SYS.fclose
|
||||||
|
jsr K.SYSCALL2
|
||||||
|
.8 lda #$ff
|
||||||
|
jmp K.freemem SELF MODIFIED
|
||||||
|
*--------------------------------------
|
||||||
|
PWD.hDB .BS 1
|
||||||
|
PWD.DBPtr .BS 2
|
||||||
|
PWD.DBSize .BS 2
|
||||||
|
PWD.FILE .AZ "${ROOT}ETC/PASSWD"
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE USR/SRC/SYS/KERNEL.S.PWD
|
||||||
|
LOAD USR/SRC/SYS/KERNEL.S
|
||||||
|
ASM
|
@ -38,16 +38,19 @@ K.GetPWUID sta ZPPtr1+1
|
|||||||
jsr PWD.GetByte get UID
|
jsr PWD.GetByte get UID
|
||||||
cmp ZPPtr1+1
|
cmp ZPPtr1+1
|
||||||
beq PWD.GetPW.8
|
beq PWD.GetPW.8
|
||||||
|
|
||||||
jsr PWD.NextLine
|
jsr PWD.NextLine
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
PWD.GetPW.8 ldx ZPPtr2+1
|
PWD.GetPW.8 ldx ZPPtr2+1
|
||||||
beq .8 Dry run, no output
|
beq .8 Dry run, no output
|
||||||
jmp PWD.Record2PW
|
jmp PWD.Record2PW
|
||||||
|
|
||||||
.8 clc a = UID
|
.8 clc a = UID
|
||||||
rts
|
rts
|
||||||
|
|
||||||
PWD.GetPW.9 lda #E.IPWDDB
|
PWD.GetPW.9 lda #E.IPWDDB
|
||||||
sec
|
.HS 2C BIT ABS
|
||||||
rts
|
|
||||||
|
|
||||||
PWD.GetPW.99 lda #E.IUSR
|
PWD.GetPW.99 lda #E.IUSR
|
||||||
sec
|
sec
|
||||||
@ -83,16 +86,22 @@ K.GetPWName >STYA TXTPTR
|
|||||||
.2 iny
|
.2 iny
|
||||||
jsr SHARED.TXTPTR.GetY
|
jsr SHARED.TXTPTR.GetY
|
||||||
beq .4
|
beq .4
|
||||||
|
|
||||||
cmp (ZPPtr3),y
|
cmp (ZPPtr3),y
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
.3 jsr PWD.NextLine
|
.3 jsr PWD.NextLine
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.4 lda (ZPPtr3),y
|
.4 lda (ZPPtr3),y
|
||||||
cmp #':'
|
cmp #':'
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
ldx ZPPtr2+1
|
ldx ZPPtr2+1
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jmp PWD.Record2PW
|
jmp PWD.Record2PW
|
||||||
|
|
||||||
.8 iny
|
.8 iny
|
||||||
jsr PWD.NextString skip PASSWORD
|
jsr PWD.NextString skip PASSWORD
|
||||||
jmp PWD.GetByte get UID
|
jmp PWD.GetByte get UID
|
||||||
@ -113,9 +122,11 @@ K.PutPW >STYA ZPPtr2
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
lda PWD.hDB
|
lda PWD.hDB
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #S.PW.UID
|
ldy #S.PW.UID
|
||||||
jsr SHARED.TXTPTR.GetY
|
jsr SHARED.TXTPTR.GetY
|
||||||
bne PWD.GetPW.RTS Must be ROOT user
|
bne PWD.GetPW.RTS Must be ROOT user
|
||||||
|
|
||||||
jsr PWD.GetRecordLen
|
jsr PWD.GetRecordLen
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
@ -127,15 +138,19 @@ K.PutPW >STYA ZPPtr2
|
|||||||
>STYA PWD.DBPtr
|
>STYA PWD.DBPtr
|
||||||
stx PWD.hDB
|
stx PWD.hDB
|
||||||
jmp .8
|
jmp .8
|
||||||
|
|
||||||
.1 jsr K.GetmemPtr
|
.1 jsr K.GetmemPtr
|
||||||
>STYA PWD.DBPtr
|
>STYA PWD.DBPtr
|
||||||
|
|
||||||
ldy #S.PW.PASSWD
|
ldy #S.PW.PASSWD
|
||||||
jsr SHARED.TXTPTR.GetY
|
jsr SHARED.TXTPTR.GetY
|
||||||
bne .12
|
bne .12
|
||||||
|
|
||||||
jsr PWD.DeleteRecord
|
jsr PWD.DeleteRecord
|
||||||
bcc .80
|
bcc .80
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.12 jsr PWD.DeleteRecord
|
.12 jsr PWD.DeleteRecord
|
||||||
bcc .11 user exits..
|
bcc .11 user exits..
|
||||||
jsr PWD.GetUID new user, get UID
|
jsr PWD.GetUID new user, get UID
|
||||||
@ -180,71 +195,14 @@ K.PutPW >STYA ZPPtr2
|
|||||||
jsr K.Freemem
|
jsr K.Freemem
|
||||||
|
|
||||||
.8 jsr PWD.StoreRecord
|
.8 jsr PWD.StoreRecord
|
||||||
.80 inc PWD.bDirty
|
|
||||||
clc
|
.80 clc
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
.9 lda #E.IPWDDB
|
.9 lda #E.IPWDDB
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.Save lda PWD.bDirty
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
lda PWD.DBPtr
|
|
||||||
sta A1L
|
|
||||||
clc
|
|
||||||
adc PWD.DBSize
|
|
||||||
sta A2L
|
|
||||||
|
|
||||||
lda PWD.DBPtr+1
|
|
||||||
sta A1L+1
|
|
||||||
adc PWD.DBSize+1
|
|
||||||
sta A2L+1
|
|
||||||
>LDYA PWD.DBSize
|
|
||||||
>SYSCALL2 GetMem
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
stx .8+1
|
|
||||||
>STYA A4L Save Destination Address in MAIN
|
|
||||||
|
|
||||||
clc Aux To Main
|
|
||||||
jsr AuxMove
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>PUSHBI S.FI.T.TXT
|
|
||||||
>PUSHBI O.WRONLY+O.CREATE
|
|
||||||
>LDYAI PWD.FILE
|
|
||||||
ldx #SYS.FOpen
|
|
||||||
jsr K.SYSCALL2
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
pha
|
|
||||||
jsr .8
|
|
||||||
pla
|
|
||||||
sec
|
|
||||||
.9 rts
|
|
||||||
.1 sta .7+1
|
|
||||||
>PUSHW PWD.DBSize
|
|
||||||
lda .8+1
|
|
||||||
jsr K.getmemptr
|
|
||||||
>PUSHYA
|
|
||||||
lda .7+1
|
|
||||||
ldx #SYS.FWrite
|
|
||||||
jsr K.SYSCALL2
|
|
||||||
bcc .2
|
|
||||||
pha
|
|
||||||
jsr .7
|
|
||||||
pla
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.2 stz PWD.bDirty
|
|
||||||
|
|
||||||
.7 lda #$ff SELF MODIFIED
|
|
||||||
ldx #SYS.fclose
|
|
||||||
jsr K.SYSCALL2
|
|
||||||
.8 lda #$ff
|
|
||||||
jmp K.freemem SELF MODIFIED
|
|
||||||
*--------------------------------------
|
|
||||||
* PRIVATE
|
* PRIVATE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.GetUID >LDYA PWD.DBPtr
|
PWD.GetUID >LDYA PWD.DBPtr
|
||||||
|
@ -69,17 +69,12 @@ A2osX.E0 .PH $E000
|
|||||||
.INB USR/SRC/SYS/KERNEL.S.TERMLC
|
.INB USR/SRC/SYS/KERNEL.S.TERMLC
|
||||||
.INB USR/SRC/SYS/KERNEL.S.SHARED
|
.INB USR/SRC/SYS/KERNEL.S.SHARED
|
||||||
.INB USR/SRC/SYS/KERNEL.S.STDIO2
|
.INB USR/SRC/SYS/KERNEL.S.STDIO2
|
||||||
|
.INB USR/SRC/SYS/KERNEL.S.PWD
|
||||||
********* TMP ***** go to A2osX.D1
|
********* TMP ***** go to A2osX.D1
|
||||||
.INB USR/SRC/SYS/KERNEL.S.IO
|
.INB USR/SRC/SYS/KERNEL.S.IO
|
||||||
.INB USR/SRC/SYS/KERNEL.S.PIPE
|
.INB USR/SRC/SYS/KERNEL.S.PIPE
|
||||||
********* TMP ***** go to A2osX.D2
|
********* TMP ***** go to A2osX.D2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.bDirty .BS 1
|
|
||||||
PWD.hDB .BS 1
|
|
||||||
PWD.DBPtr .BS 2
|
|
||||||
PWD.DBSize .BS 2
|
|
||||||
PWD.FILE .AZ "${ROOT}ETC/PASSWD"
|
|
||||||
*--------------------------------------
|
|
||||||
DevMgr.Stat .DA DevMgr.FreeMem
|
DevMgr.Stat .DA DevMgr.FreeMem
|
||||||
DevMgr.Free .DA DevMgr.FreeMem
|
DevMgr.Free .DA DevMgr.FreeMem
|
||||||
.DA DevMgr.HiMem
|
.DA DevMgr.HiMem
|
||||||
|
Loading…
Reference in New Issue
Block a user