mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-18 00:30:40 +00:00
Kernel 0.93
This commit is contained in:
parent
f414fe39ee
commit
49d81f333f
Binary file not shown.
190
SBIN/LOGIN.S.txt
190
SBIN/LOGIN.S.txt
@ -21,6 +21,7 @@ ZPBufPtr .BS 2
|
|||||||
|
|
||||||
ZPRetryCnt .BS 1
|
ZPRetryCnt .BS 1
|
||||||
ZPbValidUser .BS 1
|
ZPbValidUser .BS 1
|
||||||
|
ZPUID .BS 1
|
||||||
|
|
||||||
ZPhGetLine .BS 1
|
ZPhGetLine .BS 1
|
||||||
ZPGetLinePtr .BS 2
|
ZPGetLinePtr .BS 2
|
||||||
@ -75,7 +76,7 @@ L.SHELL .DA SHELL
|
|||||||
CS.INIT clc
|
CS.INIT clc
|
||||||
CS.INIT.RTS rts
|
CS.INIT.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN >LDYAI 32
|
CS.RUN >LDYAI 33 Enough for HASH
|
||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
@ -85,19 +86,21 @@ CS.RUN >LDYAI 32
|
|||||||
>LDYA L.ETCISSUE
|
>LDYA L.ETCISSUE
|
||||||
jsr CS.RUN.DUMPFILE
|
jsr CS.RUN.DUMPFILE
|
||||||
|
|
||||||
>LDYAI S.PW
|
|
||||||
>SYSCALL getmem
|
|
||||||
bcs CS.INIT.RTS
|
|
||||||
|
|
||||||
>STYA ZPPWPtr
|
|
||||||
stx ZPhPW
|
|
||||||
|
|
||||||
>PUSHWI 0 Dry Run, no output
|
>PUSHWI 0 Dry Run, no output
|
||||||
* lda #0 ROOT user
|
* lda #0 ROOT user
|
||||||
>SYSCALL GetPWUID
|
>SYSCALL GetPWUID
|
||||||
bcc CS.RUN.AUTH
|
bcc CS.RUN.AUTH
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.NOAUTH >PUSHBI 0
|
||||||
|
>LDYA L.MSG.NOAUTH
|
||||||
|
>SYSCALL printf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
jmp CS.RUN.NOAUTH
|
jsr CS.RUN.SetRootSession
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jmp CS.RUN.EXEC
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.AUTH >LDYA L.LIBCRYPT
|
CS.RUN.AUTH >LDYA L.LIBCRYPT
|
||||||
>SYSCALL LoadLib
|
>SYSCALL LoadLib
|
||||||
@ -118,10 +121,11 @@ CS.RUN.AUTH >LDYA L.LIBCRYPT
|
|||||||
jsr CS.RUN.GetLine
|
jsr CS.RUN.GetLine
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHW ZPPWPtr
|
>PUSHWI 0 Dry Run
|
||||||
>LDYA ZPGetLinePtr
|
>LDYA ZPGetLinePtr
|
||||||
>SYSCALL GetPWName
|
>SYSCALL GetPWName
|
||||||
ror ZPbValidUser
|
ror ZPbValidUser
|
||||||
|
sta ZPUID
|
||||||
|
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>LDYA L.MSG.PASSWORD
|
>LDYA L.MSG.PASSWORD
|
||||||
@ -139,9 +143,14 @@ CS.RUN.AUTH >LDYA L.LIBCRYPT
|
|||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CS.RUN.CHECKPWD
|
jsr CS.RUN.CHECKPWD
|
||||||
bcc CS.RUN.LOGIN
|
bcs .8
|
||||||
|
|
||||||
>PUSHBI 0
|
jsr CS.RUN.SetUserSession
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jmp CS.RUN.EXEC
|
||||||
|
|
||||||
|
.8 >PUSHBI 0
|
||||||
>LDYA L.MSG.BAD
|
>LDYA L.MSG.BAD
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
bcs .9
|
bcs .9
|
||||||
@ -155,85 +164,6 @@ CS.RUN.AUTH >LDYA L.LIBCRYPT
|
|||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CHECKPWD rol ZPbValidUser
|
|
||||||
bcs CS.RUN.CHECK.9
|
|
||||||
|
|
||||||
>PUSHW ZPGetlinePtr
|
|
||||||
>PUSHW ZPGetlinePtr
|
|
||||||
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
|
|
||||||
|
|
||||||
lda ZPPWPtr
|
|
||||||
clc
|
|
||||||
adc #S.PW.PASSWD
|
|
||||||
tay
|
|
||||||
lda ZPPWPtr+1
|
|
||||||
adc /S.PW.PASSWD
|
|
||||||
>PUSHYA
|
|
||||||
|
|
||||||
>LDYA ZPGetlinePtr
|
|
||||||
>SYSCALL strcmp
|
|
||||||
|
|
||||||
CS.RUN.CHECK.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.LOGIN jsr CS.RUN.SetUserSession
|
|
||||||
|
|
||||||
bcc CS.RUN.EXEC
|
|
||||||
CS.RUN.LOGIN.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.NOAUTH >PUSHBI 0
|
|
||||||
>LDYA L.MSG.NOAUTH
|
|
||||||
>SYSCALL printf
|
|
||||||
bcs CS.RUN.CHECK.9
|
|
||||||
|
|
||||||
jsr CS.RUN.SetRootSession
|
|
||||||
bcs CS.RUN.LOGIN.9
|
|
||||||
|
|
||||||
CS.RUN.EXEC ldx #1
|
|
||||||
|
|
||||||
.1 lda S.Table.hSession-1,x
|
|
||||||
beq .2
|
|
||||||
inx
|
|
||||||
cpx #K.USR.MAX+1
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
lda #E.OOH
|
|
||||||
* sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.2 stx ZPUsrID
|
|
||||||
txa
|
|
||||||
|
|
||||||
ldy #S.PS.hSID
|
|
||||||
sta (pPS),y
|
|
||||||
|
|
||||||
lda ZPhSID
|
|
||||||
ldx ZPUsrID
|
|
||||||
sta S.Table.hSession-1,x
|
|
||||||
|
|
||||||
ldy #S.PS.hStdIn
|
|
||||||
lda (pPS),y
|
|
||||||
sta S.Table.hFILE-1,x
|
|
||||||
|
|
||||||
>LDYA L.ETCMOTD
|
|
||||||
jsr CS.RUN.DumpFile
|
|
||||||
|
|
||||||
jsr CS.CLEANUP
|
|
||||||
|
|
||||||
>PUSHBI S.PS.F.HOLD
|
|
||||||
>LDYA L.SHELL
|
|
||||||
>SYSCALL ExecL
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>SLEEP
|
|
||||||
|
|
||||||
ldx ZPUsrID
|
|
||||||
lda S.Table.hSession-1,x
|
|
||||||
stz S.Table.hSession-1,x
|
|
||||||
stz S.Table.hFILE-1,x
|
|
||||||
>SYSCALL freemem
|
|
||||||
sec
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.SetRootSession
|
CS.RUN.SetRootSession
|
||||||
>LDYA L.SESSION.ROOT
|
>LDYA L.SESSION.ROOT
|
||||||
>STYA ZPStrPtr
|
>STYA ZPStrPtr
|
||||||
@ -331,6 +261,84 @@ CS.RUN.SetUserSession
|
|||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CS.RUN.CHECKPWD rol ZPbValidUser
|
||||||
|
bcs CS.RUN.CHECK.9
|
||||||
|
|
||||||
|
>LDYAI S.PW
|
||||||
|
>SYSCALL getmem
|
||||||
|
bcs CS.RUN.CHECK.9
|
||||||
|
|
||||||
|
>STYA ZPPWPtr
|
||||||
|
stx ZPhPW
|
||||||
|
|
||||||
|
>PUSHYA
|
||||||
|
lda ZPUID
|
||||||
|
>SYSCALL GetPWUID
|
||||||
|
bcs CS.RUN.CHECK.9
|
||||||
|
|
||||||
|
>PUSHW ZPGetlinePtr
|
||||||
|
>PUSHW ZPGetlinePtr
|
||||||
|
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
|
||||||
|
|
||||||
|
lda ZPPWPtr
|
||||||
|
clc
|
||||||
|
adc #S.PW.PASSWD
|
||||||
|
tay
|
||||||
|
lda ZPPWPtr+1
|
||||||
|
adc /S.PW.PASSWD
|
||||||
|
>PUSHYA
|
||||||
|
|
||||||
|
>LDYA ZPGetlinePtr
|
||||||
|
>SYSCALL strcmp
|
||||||
|
|
||||||
|
CS.RUN.CHECK.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.EXEC ldx #1
|
||||||
|
|
||||||
|
.1 lda S.Table.hSession-1,x
|
||||||
|
beq .2
|
||||||
|
inx
|
||||||
|
cpx #K.USR.MAX+1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #E.OOH
|
||||||
|
* sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 stx ZPUsrID
|
||||||
|
txa
|
||||||
|
|
||||||
|
ldy #S.PS.hSID
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
|
lda ZPhSID
|
||||||
|
ldx ZPUsrID
|
||||||
|
sta S.Table.hSession-1,x
|
||||||
|
|
||||||
|
ldy #S.PS.hStdIn
|
||||||
|
lda (pPS),y
|
||||||
|
sta S.Table.hFILE-1,x
|
||||||
|
|
||||||
|
>LDYA L.ETCMOTD
|
||||||
|
jsr CS.RUN.DumpFile
|
||||||
|
|
||||||
|
jsr CS.CLEANUP
|
||||||
|
|
||||||
|
>PUSHBI S.PS.F.HOLD
|
||||||
|
>LDYA L.SHELL
|
||||||
|
>SYSCALL ExecL
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>SLEEP
|
||||||
|
|
||||||
|
ldx ZPUsrID
|
||||||
|
lda S.Table.hSession-1,x
|
||||||
|
stz S.Table.hSession-1,x
|
||||||
|
stz S.Table.hFILE-1,x
|
||||||
|
>SYSCALL freemem
|
||||||
|
sec
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
CS.RUN.AddStrLen
|
CS.RUN.AddStrLen
|
||||||
.1 inx
|
.1 inx
|
||||||
iny
|
iny
|
||||||
|
@ -14,51 +14,45 @@ X.PWD jmp (.1-SYS.GetPWUID,x)
|
|||||||
* \0
|
* \0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.GetPWUID lda PWD.hDB
|
PWD.GetPWUID lda PWD.hDB
|
||||||
beq .9
|
beq PWD.GetPW.9
|
||||||
|
|
||||||
jsr K.GetmemPtr
|
jsr K.GetmemPtr
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
|
|
||||||
.1 lda (ZPPtr3)
|
.1 lda (ZPPtr3)
|
||||||
beq .99 EOF
|
beq PWD.GetPW.99 EOF
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.2 lda (ZPPtr3),y
|
jsr PWD.NextString skip USERNAME
|
||||||
iny
|
|
||||||
cmp #':'
|
|
||||||
bne .2 skip USERNAME
|
|
||||||
|
|
||||||
.3 lda (ZPPtr3),y
|
jsr PWD.NextString skip PASSWORD
|
||||||
iny
|
|
||||||
cmp #':'
|
|
||||||
bne .3 skip PASSWORD
|
|
||||||
|
|
||||||
jsr PWD.GetByte get UID
|
jsr PWD.GetByte get UID
|
||||||
cmp ZPPtr1+1
|
cmp ZPPtr1+1
|
||||||
beq .8
|
beq PWD.GetPW.8
|
||||||
|
|
||||||
jsr PWD.NextLine
|
jsr PWD.NextLine
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 lda ZPPtr2+1
|
PWD.GetPW.8 ldx ZPPtr2+1
|
||||||
beq .80 Dry run, no output
|
beq .8 Dry run, no output
|
||||||
|
|
||||||
jmp PWD.Record2PW
|
jmp PWD.Record2PW
|
||||||
|
|
||||||
.80 clc
|
.8 clc a = UID
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.IPWDDB
|
PWD.GetPW.9 lda #E.IPWDDB
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #E.IUSR
|
PWD.GetPW.99 lda #E.IUSR
|
||||||
sec
|
sec
|
||||||
rts
|
PWD.GetPW.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.GetPWName lda PWD.hDB
|
PWD.GetPWName lda PWD.hDB
|
||||||
beq .9
|
beq PWD.GetPW.9
|
||||||
|
|
||||||
jsr K.GetmemPtr
|
jsr K.GetmemPtr
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
@ -68,10 +62,10 @@ PWD.GetPWName lda PWD.hDB
|
|||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
jsr MEM.TXTPTR.GetY
|
jsr MEM.TXTPTR.GetY
|
||||||
beq .99
|
beq PWD.GetPW.99
|
||||||
|
|
||||||
.1 lda (ZPPtr3)
|
.1 lda (ZPPtr3)
|
||||||
beq .99
|
beq PWD.GetPW.99
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
|
||||||
@ -89,16 +83,15 @@ PWD.GetPWName lda PWD.hDB
|
|||||||
cmp #':'
|
cmp #':'
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
|
ldx ZPPtr2+1
|
||||||
|
beq .8
|
||||||
|
|
||||||
jmp PWD.Record2PW
|
jmp PWD.Record2PW
|
||||||
|
|
||||||
.9 lda #E.IPWDDB
|
.8 iny
|
||||||
sec
|
jsr PWD.NextString skip PASSWORD
|
||||||
rts
|
iny
|
||||||
|
jmp PWD.GetByte get UID
|
||||||
.99 lda #E.IUSR
|
|
||||||
sec
|
|
||||||
PWD.GetPWName.RTS
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ZPPtr2 : pPW (Input)
|
* ZPPtr2 : pPW (Input)
|
||||||
* ZPPtr3 : pDB
|
* ZPPtr3 : pDB
|
||||||
@ -111,7 +104,7 @@ PWD.PutPW >LDYA ZPPtr2
|
|||||||
|
|
||||||
ldy #S.PW.UID
|
ldy #S.PW.UID
|
||||||
jsr MEM.TXTPTR.GetY
|
jsr MEM.TXTPTR.GetY
|
||||||
bne PWD.GetPWName.RTS Must be ROOT user
|
bne PWD.GetPW.RTS Must be ROOT user
|
||||||
|
|
||||||
jsr PWD.GetRecordLen
|
jsr PWD.GetRecordLen
|
||||||
tay
|
tay
|
||||||
@ -119,7 +112,7 @@ PWD.PutPW >LDYA ZPPtr2
|
|||||||
>STYA PWD.DBSize
|
>STYA PWD.DBSize
|
||||||
|
|
||||||
jsr K.getmem
|
jsr K.getmem
|
||||||
bcs PWD.GetPWName.RTS
|
bcs PWD.GetPW.RTS
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
>STYA PWD.DBPtr
|
>STYA PWD.DBPtr
|
||||||
stx PWD.hDB
|
stx PWD.hDB
|
||||||
@ -211,15 +204,9 @@ PWD.GetUID >LDYA PWD.DBPtr
|
|||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.2 lda (ZPPtr3),y
|
jsr PWD.NextString skip name
|
||||||
iny
|
|
||||||
cmp #':'
|
|
||||||
bne .2 skip name
|
|
||||||
|
|
||||||
.3 lda (ZPPtr3),y
|
jsr PWD.NextString skip password
|
||||||
iny
|
|
||||||
cmp #':'
|
|
||||||
bne .3 skip password
|
|
||||||
|
|
||||||
jsr PWD.GetByte
|
jsr PWD.GetByte
|
||||||
cmp .8+1
|
cmp .8+1
|
||||||
@ -309,6 +296,12 @@ PWD.FindRecord >LDYA PWD.DBPtr
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
PWD.NextString lda (ZPPtr3),y
|
||||||
|
iny
|
||||||
|
cmp #':'
|
||||||
|
bne PWD.NextString
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
PWD.NextLine iny
|
PWD.NextLine iny
|
||||||
lda (ZPPtr3),y
|
lda (ZPPtr3),y
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
@ -437,6 +430,7 @@ PWD.GetByte stz ZPPtr4
|
|||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 lda ZPPtr4
|
.8 lda ZPPtr4
|
||||||
|
* clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.StoreRecord sec
|
PWD.StoreRecord sec
|
||||||
|
Loading…
x
Reference in New Issue
Block a user