mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-12 04:29:31 +00:00
Kernel 0.94
This commit is contained in:
parent
9f04a028d4
commit
da4f7c05e3
Binary file not shown.
|
@ -160,7 +160,7 @@ CS.RUN.ROOT ldy #0
|
||||||
>SYSCALL strcmp
|
>SYSCALL strcmp
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDYA pData
|
>PUSHW pData
|
||||||
>SYSCALL putpw
|
>SYSCALL putpw
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
|
|
@ -5,16 +5,18 @@ NEW
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF bin/who
|
.TF bin/who
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB inc/macros.i
|
||||||
.INB INC/MLI.I
|
.INB inc/io.i
|
||||||
.INB INC/A2OSX.I
|
.INB inc/mli.i
|
||||||
.INB INC/KERNEL.I
|
.INB inc/a2osx.i
|
||||||
|
.INB inc/kernel.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
ZS.START
|
ZS.START
|
||||||
SessionID .BS 1
|
SessionID .BS 1
|
||||||
ZPSessionPtr .BS 2
|
ZPSessionPtr .BS 2
|
||||||
|
ZPCODE .BS 9
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
|
@ -43,45 +45,51 @@ L.MSG1 .DA MSG1
|
||||||
CS.INIT clc
|
CS.INIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN >LDYA L.MSG0
|
CS.RUN ldy #8
|
||||||
|
|
||||||
|
.10 lda ZPCODE.START,y
|
||||||
|
sta ZPCODE,y
|
||||||
|
dey
|
||||||
|
bpl .10
|
||||||
|
|
||||||
|
>LDYA L.MSG0
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
|
|
||||||
ldx #1
|
ldx #1
|
||||||
stx SessionID
|
stx SessionID
|
||||||
|
|
||||||
.1 lda S.Table.hSession-1,x
|
.1 lda S.Table.hSID-1,x
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
>SYSCALL GetMemPtr
|
jsr CS.RUN.GetSession
|
||||||
>STYA ZPSessionPtr
|
|
||||||
|
|
||||||
>PUSHW L.MSG1 format
|
>PUSHW L.MSG1 format
|
||||||
>PUSHB SessionID 1 byte SID
|
>PUSHB SessionID 1 byte SID
|
||||||
|
|
||||||
ldx SessionID
|
ldx SessionID
|
||||||
lda S.Table.hSession-1,x
|
lda S.Table.hSID-1,x
|
||||||
>PUSHA 1 byte hSession
|
>PUSHA 1 byte hSession
|
||||||
|
|
||||||
>PUSHB (ZPSessionPtr) 1 byte PRIVILEGE
|
>PUSHB (pData) 1 byte PRIVILEGE
|
||||||
|
|
||||||
ldy #S.SESSION.UID
|
ldy #S.SESSION.UID
|
||||||
>PUSHB (ZPSessionPtr),y 1 byte UID
|
>PUSHB (pData),y 1 byte UID
|
||||||
|
|
||||||
iny #S.SESSION.UID
|
iny #S.SESSION.UID
|
||||||
>PUSHB (ZPSessionPtr),y 1 byte GID
|
>PUSHB (pData),y 1 byte GID
|
||||||
|
|
||||||
lda ZPSessionPtr
|
lda pData
|
||||||
clc
|
clc
|
||||||
adc #S.SESSION.NAME
|
adc #S.SESSION.NAME
|
||||||
tay
|
tay
|
||||||
lda ZPSessionPtr+1
|
lda pData+1
|
||||||
adc /S.SESSION.NAME
|
adc /S.SESSION.NAME
|
||||||
>PUSHYA 2 bytes NAME
|
>PUSHYA 2 bytes NAME
|
||||||
|
|
||||||
ldx SessionID
|
ldx SessionID
|
||||||
lda S.Table.hFile-1,x
|
lda S.Table.hFile-1,x
|
||||||
tax
|
tax
|
||||||
jsr CS.RUN.GETIO
|
jsr CS.RUN.GetDevName
|
||||||
>PUSHYA 2 bytes DEV
|
>PUSHYA 2 bytes DEV
|
||||||
|
|
||||||
>PUSHBI 9 total = 9 ... bytes
|
>PUSHBI 9 total = 9 ... bytes
|
||||||
|
@ -98,7 +106,28 @@ CS.RUN >LDYA L.MSG0
|
||||||
sec we do not want to stay in memory
|
sec we do not want to stay in memory
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.GETIO lda OF.Table.hPath-1,x
|
CS.RUN.GetSession
|
||||||
|
>SYSCALL GetStkObjPtr
|
||||||
|
>STYA ZPSessionPtr
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 jsr ZPCODE
|
||||||
|
sta (pData),y
|
||||||
|
iny
|
||||||
|
cpy #S.SESSION.NAME
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.2 jsr ZPCODE
|
||||||
|
sta (pData),y
|
||||||
|
iny
|
||||||
|
tax
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.GetDevName
|
||||||
|
lda OF.Table.hPath-1,x
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda OF.Table.hFD-1,x
|
lda OF.Table.hFD-1,x
|
||||||
|
@ -125,15 +154,21 @@ CS.QUIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
|
ZPCODE.START sta SETREADAUX
|
||||||
|
lda (ZPSessionPtr),y
|
||||||
|
sta CLRREADAUX
|
||||||
|
rts
|
||||||
|
|
||||||
MSG0 .AZ "SID hSD Privilege UID GID Name Dev"
|
MSG0 .AZ "SID hSD Privilege UID GID Name Dev"
|
||||||
MSG1 .AZ "%3d $%0h %b %3d %3d %16s %s\r\n"
|
MSG1 .AZ "%3d $%0h %b %3d %3d %16s %s\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
|
BUF .BS 240
|
||||||
DS.END
|
DS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/WHO.S
|
SAVE usr/src/bin/who.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -138,6 +138,7 @@ E.DATALEN .EQ $6C Data Length Mismatch
|
||||||
|
|
||||||
E.IPWDDB .EQ $68 Invalid PWD database
|
E.IPWDDB .EQ $68 Invalid PWD database
|
||||||
E.IUSR .EQ $67 Invalid User
|
E.IUSR .EQ $67 Invalid User
|
||||||
|
E.DUPUSR .EQ $66 Duplicate User
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A2osX.SYSCALL Constants
|
* A2osX.SYSCALL Constants
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
218
SBIN/LOGIN.S.txt
218
SBIN/LOGIN.S.txt
|
@ -20,7 +20,6 @@ ZPRetryCnt .BS 1
|
||||||
ZPbValidUser .BS 1
|
ZPbValidUser .BS 1
|
||||||
ZPUID .BS 1
|
ZPUID .BS 1
|
||||||
|
|
||||||
ZPhGetLine .BS 1
|
|
||||||
ZPGetLinePtr .BS 2
|
ZPGetLinePtr .BS 2
|
||||||
ZPbGetLineSecret .BS 1
|
ZPbGetLineSecret .BS 1
|
||||||
ZPbEsc .BS 1
|
ZPbEsc .BS 1
|
||||||
|
@ -34,7 +33,6 @@ ZPNewSession .BS 1
|
||||||
ZPOldSession .BS 1
|
ZPOldSession .BS 1
|
||||||
|
|
||||||
ZPhFile .BS 1
|
ZPhFile .BS 1
|
||||||
ZPStrPtr .BS 2
|
|
||||||
ZS.END
|
ZS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -72,15 +70,9 @@ L.SHELL .DA SHELL
|
||||||
CS.INIT clc
|
CS.INIT clc
|
||||||
CS.INIT.RTS rts
|
CS.INIT.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN >LDYAI 33 Enough for HASH
|
CS.RUN >LDYA L.ETCISSUE
|
||||||
>SYSCALL GetMem
|
|
||||||
bcs CS.INIT.RTS
|
|
||||||
|
|
||||||
>STYA ZPGetLinePtr
|
|
||||||
stx ZPhGetLine
|
|
||||||
|
|
||||||
>LDYA L.ETCISSUE
|
|
||||||
jsr CS.RUN.DUMPFILE
|
jsr CS.RUN.DUMPFILE
|
||||||
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
>PUSHA ROOT user
|
>PUSHA ROOT user
|
||||||
|
@ -91,89 +83,9 @@ CS.RUN >LDYAI 33 Enough for HASH
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
>LDYA L.MSG.NOAUTH
|
>LDYA L.MSG.NOAUTH
|
||||||
jsr CS.RUN.StrOut
|
jsr CS.RUN.StrOut
|
||||||
bcs .9
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
ldy #S.PS.hSession
|
|
||||||
lda (pPS),y
|
|
||||||
tax
|
|
||||||
|
|
||||||
lda S.Table.hSID-1,x
|
|
||||||
sta ZPNewSID
|
|
||||||
|
|
||||||
jmp CS.RUN.EXEC
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.AUTH lda #3
|
CS.RUN.EXECPS >LDYA L.ETCMOTD
|
||||||
sta ZPRetryCnt
|
|
||||||
|
|
||||||
.1 >LDYA L.MSG.LOGIN
|
|
||||||
jsr CS.RUN.StrOut
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
lda #16
|
|
||||||
clc
|
|
||||||
jsr CS.RUN.GetLine
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>LDYA L.MSG.PASSWORD
|
|
||||||
jsr CS.RUN.StrOut
|
|
||||||
bcs .9
|
|
||||||
lda #32
|
|
||||||
sec
|
|
||||||
jsr CS.RUN.GetLine
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>LDYA L.MSG.CRLF
|
|
||||||
jsr CS.RUN.StrOut
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
bra *
|
|
||||||
|
|
||||||
jmp CS.RUN.EXEC
|
|
||||||
|
|
||||||
.8 >LDYA L.MSG.BAD
|
|
||||||
>SYSCALL PutS
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
dec ZPRetryCnt
|
|
||||||
beq .99
|
|
||||||
|
|
||||||
jmp .1
|
|
||||||
|
|
||||||
.99 lda #E.IUSR
|
|
||||||
sec
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.EXEC ldx #1
|
|
||||||
|
|
||||||
*.1 lda S.Table.hSID-1,x
|
|
||||||
* beq .2
|
|
||||||
|
|
||||||
* inx
|
|
||||||
* cpx #K.USR.MAX+1
|
|
||||||
* bne .1
|
|
||||||
|
|
||||||
* lda #E.OOH
|
|
||||||
** sec
|
|
||||||
* rts
|
|
||||||
|
|
||||||
.2
|
|
||||||
* stx ZPNewSession
|
|
||||||
* ldy #S.PS.hSession
|
|
||||||
* lda (pPS),y
|
|
||||||
* sta ZPOldSession
|
|
||||||
|
|
||||||
* txa
|
|
||||||
* sta (pPS),y
|
|
||||||
|
|
||||||
* lda ZPNewSID
|
|
||||||
* sta S.Table.hSID-1,x
|
|
||||||
|
|
||||||
* ldy #S.PS.hStdIn
|
|
||||||
* lda (pPS),y
|
|
||||||
* sta S.Table.hFILE-1,x
|
|
||||||
|
|
||||||
>LDYA L.ETCMOTD
|
|
||||||
jsr CS.RUN.DumpFile
|
jsr CS.RUN.DumpFile
|
||||||
jsr CS.CLEANUP
|
jsr CS.CLEANUP
|
||||||
|
|
||||||
|
@ -183,29 +95,114 @@ CS.RUN.EXEC ldx #1
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>SLEEP
|
>SLEEP
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.AUTH lda #3
|
||||||
|
sta ZPRetryCnt
|
||||||
|
|
||||||
|
.1 >LDYA L.MSG.LOGIN
|
||||||
|
jsr CS.RUN.StrOut
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LEA.G USername
|
||||||
|
ldx #16
|
||||||
|
clc
|
||||||
|
jsr CS.RUN.GetLine
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LDYA L.MSG.PASSWORD
|
||||||
|
jsr CS.RUN.StrOut
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LDYA pData >LEA.G Password
|
||||||
|
ldx #32
|
||||||
|
sec
|
||||||
|
jsr CS.RUN.GetLine
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LDYA L.MSG.CRLF
|
||||||
|
jsr CS.RUN.StrOut
|
||||||
|
bcs .9
|
||||||
|
|
||||||
* lda ZPOldSID
|
>PUSHW pData >PUSHEA.G Password
|
||||||
* beq .8
|
>PUSHW pData >PUSHEA.G Password
|
||||||
|
|
||||||
* >SYSCALL CloseSession
|
>SYSCALL MD5
|
||||||
|
|
||||||
* stz ZPOldSID
|
jmp CS.RUN.EXEC
|
||||||
|
|
||||||
|
>LDYA L.MSG.BAD
|
||||||
|
>SYSCALL PutS
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
dec ZPRetryCnt
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #E.IUSR
|
||||||
|
sec
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.EXEC >PUSHEA.G Username
|
||||||
|
>PUSHW pData >PUSHEA.G Password
|
||||||
|
|
||||||
|
>SYSCALL OpenSession
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
sta ZPNewSID
|
||||||
|
|
||||||
|
ldx #1
|
||||||
|
|
||||||
|
.1 lda S.Table.hSID-1,x
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
inx
|
||||||
|
cpx #K.USR.MAX+1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #E.OOH
|
||||||
|
* sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 stx ZPNewSession
|
||||||
|
ldy #S.PS.hSession
|
||||||
|
lda (pPS),y
|
||||||
|
sta ZPOldSession
|
||||||
|
|
||||||
*.8 ldx ZPNewSession
|
txa
|
||||||
* lda S.Table.hSID-1,x
|
sta (pPS),y
|
||||||
* stz S.Table.hSID-1,x
|
|
||||||
* stz S.Table.hFILE-1,x
|
lda ZPNewSID
|
||||||
* >SYSCALL FreeMem
|
sta S.Table.hSID-1,x
|
||||||
|
|
||||||
|
ldy #S.PS.hStdIn
|
||||||
|
lda (pPS),y
|
||||||
|
sta S.Table.hFILE-1,x
|
||||||
|
|
||||||
|
jsr CS.RUN.EXECPS
|
||||||
|
|
||||||
* ldy #S.PS.hSession
|
lda ZPNewSID
|
||||||
* lda ZPOldSession
|
|
||||||
* sta (pPS),y
|
>SYSCALL CloseSession
|
||||||
|
|
||||||
|
stz ZPNewSID
|
||||||
|
|
||||||
|
.8 ldx ZPNewSession
|
||||||
|
lda S.Table.hSID-1,x
|
||||||
|
stz S.Table.hSID-1,x
|
||||||
|
stz S.Table.hFILE-1,x
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
ldy #S.PS.hSession
|
||||||
|
lda ZPOldSession
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.GetLine sta ZPGetLineMax
|
CS.RUN.GetLine >STYA ZPGetLinePtr
|
||||||
|
stx ZPGetLineMax
|
||||||
ror ZPbGetLineSecret
|
ror ZPbGetLineSecret
|
||||||
|
|
||||||
stz ZPGetLineLen
|
stz ZPGetLineLen
|
||||||
stz ZPbEsc
|
stz ZPbEsc
|
||||||
|
|
||||||
|
@ -326,12 +323,7 @@ CS.DOEVENT
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT
|
CS.QUIT
|
||||||
CS.CLEANUP lda ZPhGetLine
|
CS.CLEANUP
|
||||||
beq .8
|
|
||||||
|
|
||||||
stz ZPhGetLine
|
|
||||||
>SYSCALL FreeMem
|
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -350,7 +342,9 @@ SHELL .AZ "${SHELL}"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
|
Password .BS 33
|
||||||
|
Username .BS 17
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -1274,6 +1274,6 @@ SmartPort.OFS .HS 010305
|
||||||
SmartPort.SIG .HS 200003
|
SmartPort.SIG .HS 200003
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.INIT
|
SAVE usr/src/sys/kernel.s.init
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -60,7 +60,7 @@ K.GetGRName >PULLW FORPNT
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.PutPW >PULLW TXTPTR
|
K.PutPW >PULLW TXTPTR
|
||||||
|
|
||||||
jsr K.SYSCALL.JMPX
|
jsr K.SYSCALL.JMPX
|
||||||
bcc K.FlushEtcPasswd
|
bcc K.FlushEtcPasswd
|
||||||
rts
|
rts
|
||||||
|
@ -152,14 +152,12 @@ K.CloseSession >PULLA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.ETCPASSWD .AZ "${ROOT}etc/passwd"
|
PWD.ETCPASSWD .AZ "${ROOT}etc/passwd"
|
||||||
PWD.hUsrDB .BS 1
|
PWD.hUsrDB .BS 1
|
||||||
PWD.UsrDBPtr .BS 2
|
|
||||||
PWD.UsrDBSize .BS 2
|
PWD.UsrDBSize .BS 2
|
||||||
PWD.ETCGROUP .AZ "${ROOT}etc/group"
|
PWD.ETCGROUP .AZ "${ROOT}etc/group"
|
||||||
PWD.hGrpDB .BS 1
|
PWD.hGrpDB .BS 1
|
||||||
PWD.GrpDBPtr .BS 2
|
|
||||||
PWD.GrpDBSize .BS 2
|
PWD.GrpDBSize .BS 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.PWD
|
SAVE usr/src/sys/kernel.s.pwd
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD usr/src/sys/kernel.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -81,7 +81,7 @@ PWDX.GetPWName lda PWD.hUsrDB
|
||||||
jsr PWD.NextString skip PASSWORD
|
jsr PWD.NextString skip PASSWORD
|
||||||
jmp PWD.GetByte get UID
|
jmp PWD.GetByte get UID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* FORPNT : pPW (Output)
|
* TXTPTR : pPW (Input)
|
||||||
* ZPPtr3 : pDB
|
* ZPPtr3 : pDB
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWDX.PutPW lda PWD.hUsrDB
|
PWDX.PutPW lda PWD.hUsrDB
|
||||||
|
@ -98,26 +98,35 @@ PWDX.PutPW lda PWD.hUsrDB
|
||||||
|
|
||||||
jsr K.getmem
|
jsr K.getmem
|
||||||
bcs PWD.GetPW.RTS
|
bcs PWD.GetPW.RTS
|
||||||
>STYA ZPPtr3
|
|
||||||
>STYA PWD.UsrDBPtr
|
|
||||||
stx PWD.hUsrDB
|
|
||||||
jmp .8
|
|
||||||
|
|
||||||
|
>STYA ZPPtr3
|
||||||
|
stx PWD.hUsrDB
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta (ZPPtr3)
|
||||||
|
|
||||||
|
jsr PWD.AppendRecord
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
.1 jsr K.GetmemPtr
|
.1 jsr K.GetmemPtr
|
||||||
>STYA PWD.UsrDBPtr
|
>STYA ZPPtr3
|
||||||
|
|
||||||
ldy #S.PW.PASSWD
|
ldy #S.PW.PASSWD
|
||||||
jsr SHARED.TXTPTR.GetY
|
jsr SHARED.TXTPTR.GetY
|
||||||
bne .12
|
bne .12
|
||||||
|
|
||||||
jsr PWD.DeleteRecord
|
jmp PWD.DeleteRecord
|
||||||
bcc .80
|
*--------------------------------------
|
||||||
|
.12 jsr PWD.FindRecord
|
||||||
|
bcs .11
|
||||||
|
|
||||||
|
lda #E.DUPUSR user already exits.
|
||||||
|
sec
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
.12 jsr PWD.DeleteRecord
|
.11 jsr PWD.GetUID new user, get UID
|
||||||
bcc .11 user exits..
|
|
||||||
jsr PWD.GetUID new user, get UID
|
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldy #S.PW.UID
|
ldy #S.PW.UID
|
||||||
|
@ -125,48 +134,33 @@ PWDX.PutPW lda PWD.hUsrDB
|
||||||
sta (TXTPTR),y
|
sta (TXTPTR),y
|
||||||
sta SETWRITEAUX
|
sta SETWRITEAUX
|
||||||
|
|
||||||
.11 jsr PWD.GetRecordLen
|
jsr PWD.GetRecordLen
|
||||||
|
|
||||||
clc
|
clc
|
||||||
adc PWD.UsrDBSize
|
adc PWD.UsrDBSize
|
||||||
sta PWD.UsrDBSize
|
sta PWD.UsrDBSize
|
||||||
bcc .2
|
sta MEM.NewSize
|
||||||
inc PWD.UsrDBSize+1
|
|
||||||
.2 >LDYA PWD.UsrDBPtr
|
lda #0
|
||||||
>STYA ZPPtr4
|
adc PWD.UsrDBSize+1
|
||||||
>LDYA PWD.UsrDBSize
|
sta PWD.UsrDBSize+1
|
||||||
|
sta MEM.NewSize+1
|
||||||
jsr K.Getmem
|
|
||||||
|
lda PWD.hUsrDB
|
||||||
|
jsr K.Realloc.I
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
>STYA PWD.UsrDBPtr
|
|
||||||
ldy #0
|
|
||||||
.3 lda (ZPPtr4),y
|
|
||||||
sta (ZPPtr3),y
|
|
||||||
beq .4
|
|
||||||
iny
|
|
||||||
bne .3
|
|
||||||
inc ZPPtr4
|
|
||||||
inc ZPPtr3
|
|
||||||
bra .3
|
|
||||||
.4 tya
|
|
||||||
clc
|
|
||||||
adc ZPPtr3
|
|
||||||
sta ZPPtr3
|
|
||||||
bcc .5
|
|
||||||
inc ZPPtr3+1
|
|
||||||
.5 lda PWD.hUsrDB
|
|
||||||
stx PWD.hUsrDB
|
stx PWD.hUsrDB
|
||||||
jsr K.Freemem
|
|
||||||
|
|
||||||
.8 jsr PWD.StoreRecord
|
jsr PWD.AppendRecord
|
||||||
|
|
||||||
.80 clc
|
clc
|
||||||
.99 rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.IPWDDB
|
.9 lda #E.IPWDDB
|
||||||
sec
|
sec
|
||||||
rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWDX.GetGRGID
|
PWDX.GetGRGID
|
||||||
|
|
||||||
|
@ -184,11 +178,11 @@ PWDX.OpenSession
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
lda TXTPTR+1
|
lda TXTPTR+1
|
||||||
bne .9
|
bne .3
|
||||||
|
|
||||||
.1 >LDYAI PWDX.ROOT.Size
|
.1 >LDYAI PWDX.ROOT.Size
|
||||||
jsr K.GetMem
|
jsr K.GetMem
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
@ -202,9 +196,45 @@ PWDX.OpenSession
|
||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.3 jsr PWD.FindRecord
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
tya Y = Name length +1
|
||||||
|
|
||||||
|
* clc
|
||||||
|
adc ZPPtr3
|
||||||
|
sta ZPPtr4
|
||||||
|
|
||||||
.9 sec
|
lda ZPPtr3+1
|
||||||
.99 rts
|
adc #0
|
||||||
|
sta ZPPtr4+1
|
||||||
|
|
||||||
|
ldy #31
|
||||||
|
|
||||||
|
.5 jsr SHARED.FORPNT.getY
|
||||||
|
cmp (ZPPtr4),y Check MD5
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
dey
|
||||||
|
bpl .5
|
||||||
|
|
||||||
|
>LDYAI 256 TODO: compute S.SESSION size
|
||||||
|
jsr K.Getmem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPPtr2
|
||||||
|
stx .8+1
|
||||||
|
|
||||||
|
jsr PWD.Record2Session
|
||||||
|
|
||||||
|
.8 lda #$ff SELF MODIFIED
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
sec
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWDX.CloseSession
|
PWDX.CloseSession
|
||||||
sec
|
sec
|
||||||
|
@ -212,25 +242,34 @@ PWDX.CloseSession
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PRIVATE
|
* PRIVATE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.GetUID >LDYA PWD.UsrDBPtr
|
PWD.GetUID lda PWD.hUsrDB
|
||||||
|
|
||||||
|
jsr K.GetmemPtr
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
|
|
||||||
stz .8+1
|
stz .8+1
|
||||||
.1 lda (ZPPtr3)
|
.1 lda (ZPPtr3)
|
||||||
beq .8 End of DB
|
beq .8 End of DB
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
jsr PWD.NextString skip name
|
jsr PWD.NextString skip name
|
||||||
jsr PWD.NextString skip password
|
jsr PWD.NextString skip password
|
||||||
jsr PWD.GetByte
|
jsr PWD.GetByte
|
||||||
cmp .8+1
|
cmp .8+1
|
||||||
bcc .4
|
bcc .4
|
||||||
|
|
||||||
sta .8+1
|
sta .8+1
|
||||||
|
|
||||||
.4 jsr PWD.NextLine
|
.4 jsr PWD.NextLine
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 lda #$ff SELF MODIFIED
|
.8 lda #$ff SELF MODIFIED
|
||||||
inc
|
inc
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.IUSR
|
.9 lda #E.IUSR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -238,10 +277,12 @@ PWD.GetUID >LDYA PWD.UsrDBPtr
|
||||||
PWD.DeleteRecord
|
PWD.DeleteRecord
|
||||||
jsr PWD.FindRecord
|
jsr PWD.FindRecord
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.1 iny
|
.1 iny
|
||||||
lda (ZPPtr3),y
|
lda (ZPPtr3),y
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
sty .3+1
|
sty .3+1
|
||||||
tya
|
tya
|
||||||
sec
|
sec
|
||||||
|
@ -250,7 +291,9 @@ PWD.DeleteRecord
|
||||||
lda ZPPtr3+1
|
lda ZPPtr3+1
|
||||||
adc #0
|
adc #0
|
||||||
sta ZPPtr4+1
|
sta ZPPtr4+1
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPPtr4),y
|
lda (ZPPtr4),y
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
|
@ -261,31 +304,42 @@ PWD.DeleteRecord
|
||||||
.3 sbc #$ff SELF MODIFIED
|
.3 sbc #$ff SELF MODIFIED
|
||||||
sta PWD.UsrDBSize
|
sta PWD.UsrDBSize
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
dec PWD.UsrDBSize+1
|
dec PWD.UsrDBSize+1
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.FindRecord >LDYA PWD.UsrDBPtr
|
PWD.FindRecord lda PWD.hUsrDB
|
||||||
|
jsr K.GetmemPtr
|
||||||
|
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
|
|
||||||
.2 lda (ZPPtr3)
|
.2 lda (ZPPtr3)
|
||||||
beq .9 End of DB
|
beq .9 End of DB
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
|
||||||
.3 iny
|
.3 iny
|
||||||
jsr SHARED.TXTPTR.GetY
|
jsr SHARED.TXTPTR.GetY
|
||||||
beq .4
|
beq .4
|
||||||
|
|
||||||
cmp (ZPPtr3),y
|
cmp (ZPPtr3),y
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
.5 jsr PWD.NextLine
|
.5 jsr PWD.NextLine
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
.4 lda (ZPPtr3),y
|
.4 lda (ZPPtr3),y
|
||||||
cmp #':'
|
cmp #':'
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
|
iny skip ":"
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.IUSR
|
.9 lda #E.IUSR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -308,6 +362,70 @@ PWD.NextLine iny
|
||||||
inc ZPPtr3+1
|
inc ZPPtr3+1
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* USERNAME:PASSWORD:UID:GID:GECOS:HOME:SHELL\CR
|
||||||
|
*--------------------------------------
|
||||||
|
PWD.Record2Session
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
jsr PWD.NextString skip USERNAME
|
||||||
|
jsr PWD.NextString skip PASSWORD
|
||||||
|
jsr PWD.GetByte get UID
|
||||||
|
sta ZPPtr1
|
||||||
|
jsr PWD.GetByte get GID
|
||||||
|
sta ZPPtr1+1
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
ldx ZPPtr1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
ora #S.SESSION.P.ROOT
|
||||||
|
|
||||||
|
.1 ldx ZPPtr1+1
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
ora #S.SESSION.P.SYSADMIN
|
||||||
|
|
||||||
|
.2 jsr SHARED.PutCharPtr2
|
||||||
|
|
||||||
|
lda ZPPtr1
|
||||||
|
jsr SHARED.PutCharPtr2 UID
|
||||||
|
|
||||||
|
lda ZPPtr1+1
|
||||||
|
jsr SHARED.PutCharPtr2 GID
|
||||||
|
|
||||||
|
phy
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
|
.3 iny
|
||||||
|
lda (ZPPtr3),y
|
||||||
|
cmp #':'
|
||||||
|
beq .4
|
||||||
|
|
||||||
|
jsr SHARED.PutCharPtr2
|
||||||
|
bra .3
|
||||||
|
|
||||||
|
.4 lda #0
|
||||||
|
jsr SHARED.PutCharPtr2
|
||||||
|
|
||||||
|
ply
|
||||||
|
|
||||||
|
.5 lda (ZPPtr3),y
|
||||||
|
cmp #C.CR
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
cmp #':'
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
.6 jsr SHARED.PutCharPtr2
|
||||||
|
iny
|
||||||
|
bra .5
|
||||||
|
|
||||||
|
.8 lda #0
|
||||||
|
jmp SHARED.PutCharPtr2
|
||||||
|
*--------------------------------------
|
||||||
PWD.Record2PW ldy #0
|
PWD.Record2PW ldy #0
|
||||||
|
|
||||||
ldx #0 NAME
|
ldx #0 NAME
|
||||||
|
@ -387,31 +505,44 @@ PWD.Record2PW ldy #0
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.GetByte stz ZPPtr4
|
PWD.GetByte stz .8+1
|
||||||
|
|
||||||
.1 lda (ZPPtr3),y
|
.1 lda (ZPPtr3),y
|
||||||
iny
|
iny
|
||||||
cmp #':'
|
cmp #':'
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
and #$f
|
and #$f
|
||||||
pha
|
pha
|
||||||
lda ZPPtr4
|
lda .8+1
|
||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
clc
|
clc
|
||||||
adc ZPPtr4
|
adc .8+1
|
||||||
asl
|
asl
|
||||||
sta ZPPtr4
|
sta .8+1
|
||||||
pla
|
pla
|
||||||
clc
|
clc
|
||||||
adc ZPPtr4
|
adc .8+1
|
||||||
sta ZPPtr4
|
sta .8+1
|
||||||
bra .1
|
bra .1
|
||||||
.8 lda ZPPtr4
|
|
||||||
|
.8 lda #$ff SELF MODIFIED
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.StoreRecord sec
|
PWD.AppendRecord
|
||||||
|
|
||||||
|
.1 lda (ZPPtr3)
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
inc ZPPtr3
|
||||||
|
bne .1
|
||||||
|
inc ZPPtr3+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 sec
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.GetRecordLen
|
PWD.GetRecordLen
|
||||||
|
|
Loading…
Reference in New Issue
Block a user