Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-07-31 12:28:04 +02:00
parent 04e5bc3e77
commit 4ca0e321ad
4 changed files with 42 additions and 135 deletions

Binary file not shown.

View File

@ -52,8 +52,8 @@ 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.MISMATCH .DA MSG.MISMATCH
L.MSG.BS .DA MSG.BS
L.MSG.CRLF .DA MSG.CRLF L.MSG.CRLF .DA MSG.CRLF
L.MSG.BS .DA MSG.BS
J.CS.RUN.CheckArg J.CS.RUN.CheckArg
.DA CS.RUN.CheckArg.C .DA CS.RUN.CheckArg.C
.DA CS.RUN.CheckArg.D .DA CS.RUN.CheckArg.D
@ -392,12 +392,12 @@ MSG.USAGE .AS "Usage : USERADD username\r\n"
.AS " -c : Comment (GECOS)\r\n" .AS " -c : Comment (GECOS)\r\n"
.AS " -d : Home Directory\r\n" .AS " -d : Home Directory\r\n"
.AS " -p : Password\r\n" .AS " -p : Password\r\n"
.AS " -s : Shell\r\n" .AS " -s : Shell"
MSG.CRLF .AZ "\r\n" MSG.CRLF .AZ "\r\n"
MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
MSG.ROOTPWD1 .AZ "\r\nPlease enter ROOT password : " MSG.ROOTPWD1 .AZ "\r\nPlease enter ROOT password : "
MSG.ROOTPWD2 .AZ "\r\nPlease retype ROOT password : " MSG.ROOTPWD2 .AZ "\r\nPlease retype ROOT password : "
MSG.MISMATCH .AZ "\r\nPasswords mismatch...\r\n" MSG.MISMATCH .AZ "\r\nPasswords mismatch...\r\n"
MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
*-------------------------------------- *--------------------------------------
PW.ROOT .AS "root" PW.ROOT .AS "root"
.BS 17-4 .BS 17-4
@ -427,8 +427,7 @@ PW.DEFAULT .BS 17 NAME
.OR 0 .OR 0
DS.START DS.START
PW .BS S.PW PW .BS S.PW
DS.END DS.END .ED
.ED
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/bin/useradd.s SAVE usr/src/bin/useradd.s

View File

@ -16,12 +16,6 @@ PASS.MAX .EQ 64
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPPWPtr .BS 2
ZPhPW .BS 1
ZPhStr .BS 1
ZPbStrSecret .BS 1
ZPStrLen .BS 1
ZPStrMax .BS 1
ArgIndex .BS 1 ArgIndex .BS 1
ArgUsername .BS 1 ArgUsername .BS 1
ZPStrPtr .BS 2 ZPStrPtr .BS 2
@ -46,10 +40,11 @@ CS.START cld
*-------------------------------------- *--------------------------------------
.1 .DA CS.INIT .1 .DA CS.INIT
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.CRLF .DA MSG.CRLF L.MSG.CRLF .DA MSG.CRLF
L.MSG.BS .DA MSG.BS
J.CS.RUN.CheckArg J.CS.RUN.CheckArg
.DA CS.RUN.CheckArg.C .DA CS.RUN.CheckArg.C
.DA CS.RUN.CheckArg.D .DA CS.RUN.CheckArg.D
@ -66,33 +61,17 @@ CS.INIT clc
* Called until exit with CS * Called until exit with CS
* if RUN exits with CC, RN entered again * if RUN exits with CC, RN entered again
*-------------------------------------- *--------------------------------------
CS.RUN >LDYAI S.PW CS.RUN ldy #S.PS.ARGC
>SYSCALL GetMem lda (pPS),y
bcs .99 beq .9
>STYA ZPPWPtr
stx ZPhPW
>LDYAI 256
>SYSCALL GetMem
bcs .99
>STYA ZPStrPtr
stx ZPhStr
lda #0
>PUSHA
>PUSHW ZPPWPtr
>SYSCALL GetPWUID
bcs .9
jsr CS.RUN.CheckArg jsr CS.RUN.CheckArg
bcs .9 bcs .99
>PUSHW pData >PUSHW pData
>SYSCALL putpw >SYSCALL putpw
bcs .99 bcs .99
lda #0 lda #0
sec sec
rts rts
@ -104,49 +83,6 @@ CS.RUN >LDYAI S.PW
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
CS.RUN.GetStr stz ZPStrLen
.1 >SYSCALL getchar
bcs .9
cmp #C.SPACE
bcc .2
ldy ZPStrLen
cpy ZPStrMax
beq .1
sta (ZPStrPtr),y
iny
sty ZPStrLen
bit ZPbStrSecret
bmi .1
>SYSCALL putchar
bra .1
.2 cmp #3 Ctrl-C
beq .9
cmp #C.CR
beq .8
cmp #C.BS
bne .1
ldy ZPStrLen
beq .1
dec ZPStrLen
bit ZPbStrSecret
bmi .1
>PUSHW L.MSG.BS
>PUSHBI 0
>SYSCALL PrintF
bra .1
.8 ldy ZPStrLen
lda #0
sta (ZPStrPtr),y
>PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
.9 rts
*--------------------------------------
CS.RUN.CheckArg inc ArgIndex CS.RUN.CheckArg inc ArgIndex
lda ArgIndex lda ArgIndex
>SYSCALL ArgV >SYSCALL ArgV
@ -156,12 +92,15 @@ CS.RUN.CheckArg inc ArgIndex
lda (ZPStrPtr) lda (ZPStrPtr)
cmp #'-' cmp #'-'
bne .4 bne .4
lda ArgUsername
beq CS.RUN.CheckArg.9
ldy #1 ldy #1
lda (ZPStrPtr),y lda (ZPStrPtr),y
ldx #OptionCnt-1 ldx #OptionCnt-1
.2 cmp OptionList,x .2 cmp OptionList,x
beq .3 beq .3
dex dex
@ -170,7 +109,7 @@ CS.RUN.CheckArg inc ArgIndex
lda #E.SYN lda #E.SYN
sec sec
rts rts
.3 txa .3 txa
and #$fe and #$fe
tax tax
@ -178,48 +117,24 @@ CS.RUN.CheckArg inc ArgIndex
*-------------------------------------- *--------------------------------------
.4 lda ArgUsername .4 lda ArgUsername
bne CS.RUN.CheckArg.9 bne CS.RUN.CheckArg.9
lda pData
clc
adc #S.PW.DIR+11
sta ZPTmpPtr
lda pData+1
adc /S.PW.DIR+11
sta ZPTmpPtr+1
ldy #0
.5 lda (ZPStrPtr),y
sta (pData),y
sta (ZPTmpPtr),y
beq .6
iny
cpy #16
bne .5
bra CS.RUN.CheckArg.9
.6 lda #'/'
sta (ZPTmpPtr),y
lda ArgIndex lda ArgIndex
sta ArgUsername sta ArgUsername
>SYSCALL ArgV >SYSCALL ArgV
>PUSHYA >PUSHYA
>PUSHW ZPPWPtr >PUSHW pData
>SYSCALL GetPWName >SYSCALL GetPWName
bcc .9 bcs .9
bra CS.RUN.CheckArg bra CS.RUN.CheckArg
.8 lda ArgUsername .8 lda ArgUsername
beq CS.RUN.CheckArg.9 beq CS.RUN.CheckArg.9
clc clc
rts rts
.9 lda #E.DUPUSR .9 lda #E.IUSR
sec sec
rts rts
CS.RUN.CheckArg.9 CS.RUN.CheckArg.9
@ -258,11 +173,11 @@ CS.RUN.CheckArg.S
lda ArgIndex lda ArgIndex
>SYSCALL ArgV >SYSCALL ArgV
bcs CS.RUN.CheckArg.9 bcs CS.RUN.CheckArg.9
ldx #S.PW.SHELL ldx #S.PW.SHELL
CS.RUN.CheckArg.Next CS.RUN.CheckArg.Next
>STYA ZPStrPtr >STYA ZPStrPtr
* clc * clc
txa txa
adc pData adc pData
@ -270,7 +185,7 @@ CS.RUN.CheckArg.Next
lda pData+1 lda pData+1
adc #0 adc #0
sta ZPTmpPtr+1 sta ZPTmpPtr+1
ldy #$ff ldy #$ff
.1 iny .1 iny
@ -283,7 +198,7 @@ CS.RUN.CheckArg.Next
lda #0 lda #0
sta (ZPTmpPtr),y sta (ZPTmpPtr),y
.8 jmp CS.RUN.CheckArg .8 jmp CS.RUN.CheckArg
*-------------------------------------- *--------------------------------------
CS.RUN.MkDir >PUSHEA.G S.PW.DIR CS.RUN.MkDir >PUSHEA.G S.PW.DIR
@ -301,13 +216,7 @@ CS.DOEVENT sec
* Called once, when RUN exited with CS * Called once, when RUN exited with CS
* Put code for unloading LIB here * Put code for unloading LIB here
*-------------------------------------- *--------------------------------------
CS.QUIT lda ZPhStr CS.QUIT clc
beq .1
>SYSCALL FreeMem
.1 lda ZPhPW
beq .2
>SYSCALL FreeMem
.2 clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
@ -321,15 +230,15 @@ MSG.USAGE .AS "Usage : USERMOD username\r\n"
.AS " -c : Comment (GECOS)\r\n" .AS " -c : Comment (GECOS)\r\n"
.AS " -d : Home Directory\r\n" .AS " -d : Home Directory\r\n"
.AS " -p : Password\r\n" .AS " -p : Password\r\n"
.AS " -s : Shell\r\n" .AS " -s : Shell"
MSG.CRLF .AZ "\r\n" MSG.CRLF .AZ "\r\n"
MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
PW .BS S.PW PW .BS S.PW
DS.END DS.END .ED
.ED
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/bin/usermod.s SAVE usr/src/bin/usermod.s

View File

@ -137,14 +137,16 @@ PWDX.PutPW.1 jsr K.GetmemPtr
jsr SHARED.TXTPTR.GetY jsr SHARED.TXTPTR.GetY
bne .12 bne .12
jsr PWD.FindRecord
bcs .99
jmp PWD.DeleteRecord jmp PWD.DeleteRecord
*-------------------------------------- *--------------------------------------
.12 jsr PWD.FindRecord .12 jsr PWD.FindRecord
bcs .11 bcs .11
lda #E.DUPUSR user already exits. jsr PWD.DeleteRecord
sec bcs .99
rts bra .13
*-------------------------------------- *--------------------------------------
.11 jsr PWD.GetUID new user, get UID .11 jsr PWD.GetUID new user, get UID
bcs .99 bcs .99
@ -154,7 +156,7 @@ PWDX.PutPW.1 jsr K.GetmemPtr
sta (TXTPTR),y sta (TXTPTR),y
sta SETWRITEAUX sta SETWRITEAUX
jsr PWD.GetRecordLen .13 jsr PWD.GetRecordLen
clc clc
adc PWD.UsrDBSize adc PWD.UsrDBSize
@ -388,9 +390,6 @@ PWD.GetUID lda PWD.hUsrDB
rts rts
*-------------------------------------- *--------------------------------------
PWD.DeleteRecord PWD.DeleteRecord
jsr PWD.FindRecord
bcs .9
.1 iny .1 iny
lda (ZPPtr3),y lda (ZPPtr3),y
cmp #C.CR cmp #C.CR