mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-19 23:29:29 +00:00
Kernel 0.93
This commit is contained in:
parent
4ce904d060
commit
76e20b8b72
@ -50,6 +50,7 @@ L.LIBCRYPT .DA LIBCRYPT
|
|||||||
L.MSG.USAGE .DA MSG.USAGE
|
L.MSG.USAGE .DA MSG.USAGE
|
||||||
L.MSG.ROOTPWD1 .DA MSG.ROOTPWD1
|
L.MSG.ROOTPWD1 .DA MSG.ROOTPWD1
|
||||||
L.MSG.ROOTPWD2 .DA MSG.ROOTPWD2
|
L.MSG.ROOTPWD2 .DA MSG.ROOTPWD2
|
||||||
|
L.MSG.MISMATCH .DA MSG.MISMATCH
|
||||||
L.MSG.BS .DA MSG.BS
|
L.MSG.BS .DA MSG.BS
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -96,7 +97,15 @@ CS.RUN >LDYAI S.PW
|
|||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.ROOT sec
|
CS.RUN.ROOT ldy #0
|
||||||
|
|
||||||
|
.1 lda ROOT.PW,y
|
||||||
|
sta (pData),y PW
|
||||||
|
iny
|
||||||
|
cpy #S.PW
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sec
|
||||||
ror ZPbStrSecret
|
ror ZPbStrSecret
|
||||||
lda #127
|
lda #127
|
||||||
sta ZPStrMax
|
sta ZPStrMax
|
||||||
@ -104,22 +113,47 @@ CS.RUN.ROOT sec
|
|||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>LDYA L.MSG.ROOTPWD1
|
>LDYA L.MSG.ROOTPWD1
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
bcs .9
|
bcs .90
|
||||||
|
|
||||||
jsr CS.RUN.GetStr
|
jsr CS.RUN.GetStr
|
||||||
bcs .9
|
bcs .90
|
||||||
|
|
||||||
>PUSHEA.G PW+S.PW.PASSWD
|
>PUSHEA.G PW+S.PW.PASSWD
|
||||||
>PUSHW ZPStrPtr
|
>PUSHW ZPStrPtr
|
||||||
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
|
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
|
||||||
|
|
||||||
|
>PUSHBI 0
|
||||||
|
>LDYA L.MSG.ROOTPWD2
|
||||||
|
>SYSCALL printf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CS.RUN.GetStr
|
||||||
|
.90 bcs .9
|
||||||
|
|
||||||
|
>PUSHW ZPStrPtr
|
||||||
|
>PUSHW ZPStrPtr
|
||||||
|
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
|
||||||
|
|
||||||
|
>PUSHW ZPStrPtr
|
||||||
>LEA.G PW+S.PW.PASSWD
|
>LEA.G PW+S.PW.PASSWD
|
||||||
>SYSCALL puts
|
>SYSCALL strcmp
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>LDYA pData
|
||||||
|
>SYSCALL putpw
|
||||||
|
bcs .9
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sec
|
sec
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
.99 >PUSHBI 0
|
||||||
|
>LDYA L.MSG.MISMATCH
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
|
lda #E.SYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.GetStr stz ZPStrLen
|
CS.RUN.GetStr stz ZPStrLen
|
||||||
|
|
||||||
@ -204,20 +238,38 @@ CS.END
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Initialized DATA
|
* Initialized DATA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE .AZ "Usage : USERADD username\r\n"
|
|
||||||
MSG.ROOTPWD1 .AZ "\r\nPlease enter ROOT password : "
|
|
||||||
MSG.ROOTPWD2 .AZ "\r\nPlease retype ROOT password : "
|
|
||||||
MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
|
|
||||||
*--------------------------------------
|
|
||||||
LIBCRYPT .AZ "libcrypt"
|
LIBCRYPT .AZ "libcrypt"
|
||||||
hLIBCRYPT .BS 1
|
hLIBCRYPT .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MSG.USAGE .AS "Usage : USERADD username\r\n"
|
||||||
|
.AS " -c : Comment\r\n"
|
||||||
|
.AS " -d : Home Directory\r\n"
|
||||||
|
.AS " -p : Password\r\n"
|
||||||
|
.AS " -s : Shell\r\n"
|
||||||
|
MSG.CRLF .AZ "\r\n"
|
||||||
|
MSG.ROOTPWD1 .AZ "\r\nPlease enter ROOT password : "
|
||||||
|
MSG.ROOTPWD2 .AZ "\r\nPlease retype ROOT password : "
|
||||||
|
MSG.MISMATCH .AZ "\r\nPasswords mismatch...\r\n"
|
||||||
|
MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
|
||||||
|
*--------------------------------------
|
||||||
|
ROOT.PW .AS "ROOT"
|
||||||
|
.BS 17-4
|
||||||
|
.BS 33 PASSWD
|
||||||
|
.DA #0 UID
|
||||||
|
.DA #0 GID
|
||||||
|
.AS "Root User"
|
||||||
|
.BS 65-9
|
||||||
|
.AS "${ROOT}ROOT/"
|
||||||
|
.BS 65-12
|
||||||
|
.AS "${ROOT}BIN/SH"
|
||||||
|
.BS 65-13
|
||||||
|
*--------------------------------------
|
||||||
* Per Process DATA segment
|
* Per Process DATA segment
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
PW .DA S.PW
|
PW .BS S.PW
|
||||||
DS.END
|
DS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -1076,8 +1076,8 @@ PwdMgrInit >LDYAI MSG.PWD
|
|||||||
>LDYAI ETCPASSWD
|
>LDYAI ETCPASSWD
|
||||||
>SYSCALL LoadStkObj
|
>SYSCALL LoadStkObj
|
||||||
bcs .9
|
bcs .9
|
||||||
sta PWD.hDB
|
stx PWD.hDB
|
||||||
|
>STYA PWD.DBSize
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Modified CHARGET/CHARGOT for ROM CALL
|
* Modified CHARGET/CHARGOT for ROM CALL
|
||||||
|
@ -539,6 +539,8 @@ MEM.Kernel.JMP jmp (SYS.Kernel.JMP,x)
|
|||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.LoadStkObj >SYSCALL LoadFile
|
K.LoadStkObj >SYSCALL LoadFile
|
||||||
bcs .99
|
bcs .99
|
||||||
|
sty .81+1
|
||||||
|
sta .82+1
|
||||||
|
|
||||||
stx .8+1 Save MAIN hMem
|
stx .8+1 Save MAIN hMem
|
||||||
iny
|
iny
|
||||||
@ -576,7 +578,10 @@ K.LoadStkObj >SYSCALL LoadFile
|
|||||||
.8 lda #$ff SELF MODIFIED
|
.8 lda #$ff SELF MODIFIED
|
||||||
jsr K.FreeMem release MAIN memory
|
jsr K.FreeMem release MAIN memory
|
||||||
|
|
||||||
.80 lda #$ff Returns AUX hMem
|
.80 ldx #$ff Returns AUX hMem
|
||||||
|
.81 ldy #$ff and file len in Y,A
|
||||||
|
.82 lda #$ff
|
||||||
|
* clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 pha
|
.9 pha
|
||||||
@ -722,6 +727,11 @@ MEM.SetDataByte.1
|
|||||||
inc ZPSListDataPtr+1
|
inc ZPSListDataPtr+1
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MEM.TXTPTR.GetY sta CLRREADAUX
|
||||||
|
lda (TXTPTR),y
|
||||||
|
sta SETREADAUX
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
MEM.TXTPTR.GetNext
|
MEM.TXTPTR.GetNext
|
||||||
sta CLRREADAUX
|
sta CLRREADAUX
|
||||||
lda (TXTPTR)
|
lda (TXTPTR)
|
||||||
|
@ -34,7 +34,7 @@ K.GetPWName jsr MEM.SPtr1PPtr2
|
|||||||
* `>SYSCALL putpw`
|
* `>SYSCALL putpw`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.PutPW >STYA ZPPtr1
|
K.PutPW >STYA ZPPtr2
|
||||||
|
|
||||||
K.PutPW.1 sta SETREADAUX
|
K.PutPW.1 sta SETREADAUX
|
||||||
sta SETWRITEAUX
|
sta SETWRITEAUX
|
||||||
@ -43,9 +43,79 @@ K.PutPW.1 sta SETREADAUX
|
|||||||
|
|
||||||
sta CLRREADAUX
|
sta CLRREADAUX
|
||||||
sta CLRWRITEAUX
|
sta CLRWRITEAUX
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda PWD.bDirty
|
||||||
|
bne PWD.Store
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
PWD.Store >LDYA PWD.DBSize
|
||||||
|
jsr K.getmem
|
||||||
|
bcs .9
|
||||||
|
stx .8+1
|
||||||
|
>STYA A4L Save Destination Address in MAIN
|
||||||
|
|
||||||
|
pha
|
||||||
|
* clc
|
||||||
|
adc PWD.DBSize
|
||||||
|
sta A2L
|
||||||
|
pla
|
||||||
|
adc PWD.DBSize+1
|
||||||
|
sta A2L+1
|
||||||
|
|
||||||
|
lda PWD.hDB
|
||||||
|
jsr K.getmemptr
|
||||||
|
>STYA A1L Save AUX base Ptr
|
||||||
|
|
||||||
|
clc Aux To Main
|
||||||
|
jsr AuxMove
|
||||||
|
|
||||||
|
>PUSHWI 0 Aux type
|
||||||
|
>PUSHBI S.FI.T.TXT
|
||||||
|
>PUSHBI O.WRONLY+O.CREATE
|
||||||
|
>LDYAI PWD.FILE
|
||||||
|
>SYSCALL FOpen
|
||||||
|
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
|
||||||
|
>SYSCALL FWrite
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
jsr .7
|
||||||
|
stz PWD.bDirty
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 pha
|
||||||
|
jsr .7
|
||||||
|
pla
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.7 lda #$ff
|
||||||
|
>SYSCALL fclose
|
||||||
|
|
||||||
|
.8 lda #$ff
|
||||||
|
jsr K.freemem
|
||||||
|
|
||||||
|
* clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
PWD.bDirty .BS 1
|
||||||
PWD.hDB .BS 1
|
PWD.hDB .BS 1
|
||||||
|
PWD.DBSize .BS 2
|
||||||
|
PWD.FILE .AZ "${ROOT}ETC/PASSWD"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.PWD
|
SAVE USR/SRC/SYS/KERNEL.S.PWD
|
||||||
|
@ -6,21 +6,199 @@ X.PWD jmp (.1-SYS.GetPWUID,x)
|
|||||||
.DA PWD.GetPWName
|
.DA PWD.GetPWName
|
||||||
.DA PWD.PutPW
|
.DA PWD.PutPW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* USERNAME:PASSWORD:UID:GID:GECOS:HOME:SHELL
|
* ZPPtr1 : UID / pName
|
||||||
|
* ZPPtr2 : pPW
|
||||||
|
* ZPPtr3 : pDB
|
||||||
|
* USERNAME:PASSWORD:UID:GID:GECOS:HOME:SHELL\CR
|
||||||
|
* ....\CR
|
||||||
|
* \0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.GetPWUID
|
PWD.GetPWUID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PWD.GetPWName
|
PWD.GetPWName
|
||||||
*--------------------------------------
|
lda PWD.hDB
|
||||||
PWD.PutPW lda PWD.hDB
|
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
.9 lda #E.IPWDDB
|
.9 lda #E.IPWDDB
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
PWD.PutPW >LDYA ZPPtr2
|
||||||
|
>STYA TXTPTR
|
||||||
|
|
||||||
|
lda PWD.hDB
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
ldy #S.PW.UID
|
||||||
|
jsr MEM.TXTPTR.GetY
|
||||||
|
bne .9 Must be ROOT user
|
||||||
|
|
||||||
|
jmp PWD.InitDB
|
||||||
|
|
||||||
|
.1
|
||||||
|
|
||||||
|
.9 lda #E.IPWDDB
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
PWD.InitDB
|
||||||
|
jsr PWD.GetRecordLen
|
||||||
|
>STYA PWD.DBSize
|
||||||
|
|
||||||
|
jsr K.getmem
|
||||||
|
bcs .9
|
||||||
|
>STYA ZPPtr3
|
||||||
|
stx PWD.hDB
|
||||||
|
|
||||||
|
jsr PWD.StoreRecord
|
||||||
|
|
||||||
|
inc PWD.bDirty
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
PWD.FindByID
|
PWD.FindByID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
PWD.StoreRecord sec
|
||||||
|
.HS 90 BCC
|
||||||
|
*--------------------------------------
|
||||||
|
PWD.GetRecordLen
|
||||||
|
clc
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
ldy #S.PW.NAME-1
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
jsr MEM.TXTPTR.GetY
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #':'
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
|
||||||
|
ldy #S.PW.PASSWD-1
|
||||||
|
|
||||||
|
.2 iny
|
||||||
|
jsr MEM.TXTPTR.GetY
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
lda #':'
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
|
||||||
|
ldy #S.PW.UID
|
||||||
|
jsr MEM.TXTPTR.GetY
|
||||||
|
jsr PWD.StoreByte
|
||||||
|
|
||||||
|
lda #':'
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
|
||||||
|
iny S.PW.UID
|
||||||
|
|
||||||
|
jsr MEM.TXTPTR.GetY
|
||||||
|
jsr PWD.StoreByte
|
||||||
|
|
||||||
|
lda #':'
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
|
||||||
|
* iny S.PW.GECOS
|
||||||
|
|
||||||
|
.3 iny
|
||||||
|
jsr MEM.TXTPTR.GetY
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
lda #':'
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
|
||||||
|
ldy #S.PW.DIR-1
|
||||||
|
|
||||||
|
.4 iny
|
||||||
|
jsr MEM.TXTPTR.GetY
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
lda #':'
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
|
||||||
|
ldy #S.PW.SHELL-1
|
||||||
|
|
||||||
|
.5 iny
|
||||||
|
jsr MEM.TXTPTR.GetY
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
bne .5
|
||||||
|
|
||||||
|
lda #C.CR
|
||||||
|
jsr PWD.StoreChar
|
||||||
|
|
||||||
|
txa
|
||||||
|
tay
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
PWD.StoreByte stz .2+1
|
||||||
|
stz .3+1
|
||||||
|
|
||||||
|
phx
|
||||||
|
ldx #8
|
||||||
|
|
||||||
|
sed
|
||||||
|
|
||||||
|
.1 asl
|
||||||
|
pha
|
||||||
|
.2 lda #$ff Self Modified
|
||||||
|
adc .2+1
|
||||||
|
sta .2+1
|
||||||
|
|
||||||
|
.3 lda #$ff Self Modified
|
||||||
|
adc .3+1
|
||||||
|
sta .3+1
|
||||||
|
|
||||||
|
pla
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
cld
|
||||||
|
plx
|
||||||
|
|
||||||
|
lda .3+1
|
||||||
|
beq .4
|
||||||
|
|
||||||
|
jsr PWD.StoreChar30
|
||||||
|
|
||||||
|
.4 lda .2+1
|
||||||
|
pha
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
jsr PWD.StoreChar30
|
||||||
|
|
||||||
|
.5 pla
|
||||||
|
|
||||||
|
and #$0f
|
||||||
|
|
||||||
|
.8 jsr PWD.StoreChar30
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
PWD.StoreChar30 ora #$30
|
||||||
|
|
||||||
|
PWD.StoreChar inx
|
||||||
|
pha
|
||||||
|
|
||||||
|
bcc .9 Dry run no store
|
||||||
|
sta (ZPPtr3)
|
||||||
|
inc ZPPtr3
|
||||||
|
bne .9
|
||||||
|
inc ZPPtr3+1
|
||||||
|
|
||||||
|
.9 pla
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.PWDX
|
SAVE USR/SRC/SYS/KERNEL.S.PWDX
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD USR/SRC/SYS/KERNEL.S
|
||||||
|
@ -55,7 +55,6 @@ A2osX.D2 .PH $D000
|
|||||||
.INB USR/SRC/SYS/KERNEL.S.TIME
|
.INB USR/SRC/SYS/KERNEL.S.TIME
|
||||||
.INB USR/SRC/SYS/KERNEL.S.BIN
|
.INB USR/SRC/SYS/KERNEL.S.BIN
|
||||||
.INB USR/SRC/SYS/KERNEL.S.PS
|
.INB USR/SRC/SYS/KERNEL.S.PS
|
||||||
.INB USR/SRC/SYS/KERNEL.S.PWD
|
|
||||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||||
.INB USR/SRC/SYS/KERNEL.S.ENV
|
.INB USR/SRC/SYS/KERNEL.S.ENV
|
||||||
.INB USR/SRC/SYS/KERNEL.S.MATH
|
.INB USR/SRC/SYS/KERNEL.S.MATH
|
||||||
@ -69,6 +68,7 @@ A2osX.E0 .PH $E000
|
|||||||
.INB USR/SRC/SYS/KERNEL.S.PFT
|
.INB USR/SRC/SYS/KERNEL.S.PFT
|
||||||
.INB USR/SRC/SYS/KERNEL.S.IO
|
.INB USR/SRC/SYS/KERNEL.S.IO
|
||||||
********* TMP ***** go to A2osX.D2
|
********* TMP ***** go to A2osX.D2
|
||||||
|
.INB USR/SRC/SYS/KERNEL.S.PWD
|
||||||
.LIST ON
|
.LIST ON
|
||||||
DevMgr.FreeMem .EQ *
|
DevMgr.FreeMem .EQ *
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
Loading…
x
Reference in New Issue
Block a user