A2osX/SYS/KERNEL.S.PWDX.txt

406 lines
5.7 KiB
Plaintext
Raw Normal View History

2019-04-09 15:47:33 +00:00
NEW
AUTO 3,1
*--------------------------------------
X.PWD jmp (.1-SYS.GetPWUID,x)
.1 .DA PWD.GetPWUID
.DA PWD.GetPWName
.DA PWD.PutPW
*--------------------------------------
2019-04-11 15:59:57 +00:00
* ZPPtr1 : UID / pName
* ZPPtr2 : pPW
* ZPPtr3 : pDB
* USERNAME:PASSWORD:UID:GID:GECOS:HOME:SHELL\CR
* ....\CR
* \0
2019-04-09 15:47:33 +00:00
*--------------------------------------
2019-04-12 15:41:05 +00:00
PWD.GetPWUID lda PWD.hDB
beq .9
jsr K.GetmemPtr
>STYA ZPPtr3
.1 lda (ZPPtr3)
beq .99
ldy #0
.2 lda (ZPPtr3),y
iny
cmp #':'
bne .2
.3 lda (ZPPtr3),y
iny
cmp #':'
bne .3
jsr PWD.GetByte
cmp ZPPtr1+1
beq .8
.4 iny
lda (ZPPtr3),y
cmp #C.CR
bne .4
tya
sec
adc ZPPtr3
sta ZPPtr3
bcc .1
inc ZPPtr3+1
bra .1
.8 jmp PWD.Record2PM
.9 lda #E.IPWDDB
sec
rts
.99 lda #E.IUSR
sec
rts
2019-04-09 15:47:33 +00:00
*--------------------------------------
2019-04-12 15:41:05 +00:00
PWD.GetPWName lda PWD.hDB
2019-04-09 15:47:33 +00:00
beq .9
2019-04-12 15:41:05 +00:00
jsr K.GetmemPtr
>STYA ZPPtr3
2019-04-15 05:40:13 +00:00
>LDYA ZPPtr1
>STYA TXTPTR
2019-04-12 15:41:05 +00:00
2019-04-15 05:40:13 +00:00
ldy #0
jsr MEM.TXTPTR.GetY
2019-04-12 15:41:05 +00:00
beq .99
2019-04-15 05:40:13 +00:00
.1 lda (ZPPtr3)
beq .99
2019-04-12 15:41:05 +00:00
ldy #$ff
.2 iny
2019-04-15 05:40:13 +00:00
jsr MEM.TXTPTR.GetY
2019-04-12 15:41:05 +00:00
beq .4
cmp (ZPPtr3),y
beq .2
.3 iny
lda (ZPPtr3),y
cmp #C.CR
bne .3
tya
sec
adc ZPPtr3
sta ZPPtr3
bcc .1
inc ZPPtr3+1
bra .1
.4 lda (ZPPtr3),y
cmp #':'
bne .3
jmp PWD.Record2PM
2019-04-09 15:47:33 +00:00
.9 lda #E.IPWDDB
sec
2019-04-12 15:41:05 +00:00
rts
.99 lda #E.IUSR
sec
rts
2019-04-09 15:47:33 +00:00
*--------------------------------------
2019-04-11 15:59:57 +00:00
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
2019-04-17 15:31:18 +00:00
.1
2019-04-11 15:59:57 +00:00
.9 lda #E.IPWDDB
sec
rts
*--------------------------------------
2019-04-12 15:41:05 +00:00
PWD.InitDB jsr PWD.GetRecordLen
2019-04-11 15:59:57 +00:00
>STYA PWD.DBSize
jsr K.getmem
bcs .9
>STYA ZPPtr3
2019-04-12 06:24:30 +00:00
>STYA PWD.DBPtr
2019-04-11 15:59:57 +00:00
stx PWD.hDB
jsr PWD.StoreRecord
inc PWD.bDirty
clc
.9 rts
*--------------------------------------
2019-04-15 05:40:13 +00:00
PWD.Record2PM sta CLRWRITEAUX
ldy #0
2019-04-12 15:41:05 +00:00
ldx #0 NAME
.1 lda (ZPPtr3),y
iny
cmp #':'
beq .2
jsr MEM.PutCharPtr2
inx
bra .1
.2 lda #0
jsr MEM.PutCharPtr2
inx
cpx #S.PW.PASSWD
bne .2
.3 lda (ZPPtr3),y
iny
cmp #':'
beq .4
jsr MEM.PutCharPtr2
inx
bra .3
.4 lda #0
jsr MEM.PutCharPtr2
inx
cpx #S.PW.UID
bne .4
jsr PWD.GetByte UID
jsr MEM.PutCharPtr2
jsr PWD.GetByte GID
jsr MEM.PutCharPtr2
ldx #S.PW.GECOS
.5 lda (ZPPtr3),y
iny
cmp #':'
beq .6
jsr MEM.PutCharPtr2
inx
bra .5
.6 lda #0
jsr MEM.PutCharPtr2
inx
cpx #S.PW.DIR
bne .6
.7 lda (ZPPtr3),y
iny
cmp #':'
beq .8
jsr MEM.PutCharPtr2
inx
bra .7
.8 lda #0
jsr MEM.PutCharPtr2
inx
cpx #S.PW.SHELL
bne .8
.9 lda (ZPPtr3),y
iny
cmp #C.CR
beq .10
jsr MEM.PutCharPtr2
inx
bra .9
.10 lda #0
jsr MEM.PutCharPtr2
2019-04-15 05:40:13 +00:00
sta SETWRITEAUX
2019-04-12 15:41:05 +00:00
clc
rts
*--------------------------------------
PWD.GetByte stz .8+1
.1 lda (ZPPtr3),y
iny
cmp #':'
beq .8
and #$f
pha
lda .8+1
asl
asl
clc
adc .8+1
asl
sta .8+1
pla
clc
adc .8+1
sta .8+1
bra .1
.8 lda #$ff
rts
2019-04-09 15:47:33 +00:00
*--------------------------------------
2019-04-11 15:59:57 +00:00
PWD.StoreRecord sec
.HS 90 BCC
*--------------------------------------
PWD.GetRecordLen
clc
ldx #0
ldy #S.PW.NAME-1
2019-04-12 15:41:05 +00:00
jsr PWD.StoreString
2019-04-11 15:59:57 +00:00
lda #':'
jsr PWD.StoreChar
ldy #S.PW.PASSWD-1
2019-04-12 15:41:05 +00:00
jsr PWD.StoreString
2019-04-11 15:59:57 +00:00
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
2019-04-12 15:41:05 +00:00
jsr PWD.StoreString
2019-04-11 15:59:57 +00:00
lda #':'
jsr PWD.StoreChar
ldy #S.PW.DIR-1
2019-04-12 15:41:05 +00:00
jsr PWD.StoreString
2019-04-11 15:59:57 +00:00
lda #':'
jsr PWD.StoreChar
ldy #S.PW.SHELL-1
2019-04-12 15:41:05 +00:00
jsr PWD.StoreString
2019-04-11 15:59:57 +00:00
lda #C.CR
jsr PWD.StoreChar
txa
tay
lda #0
rts
*--------------------------------------
2019-04-12 15:41:05 +00:00
PWD.StoreString iny
jsr MEM.TXTPTR.GetY
beq .8
jsr PWD.StoreChar
bra PWD.StoreString
2019-04-11 15:59:57 +00:00
2019-04-12 15:41:05 +00:00
.8 rts
*--------------------------------------
PWD.StoreByte php
2019-04-11 15:59:57 +00:00
phx
2019-04-12 15:41:05 +00:00
stz .2+1
stz .3+1
2019-04-11 15:59:57 +00:00
ldx #8
sed
2019-04-12 15:41:05 +00:00
2019-04-11 15:59:57 +00:00
.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
2019-04-12 15:41:05 +00:00
plp
2019-04-11 15:59:57 +00:00
lda .3+1
beq .4
jsr PWD.StoreChar30
.4 lda .2+1
2019-04-12 15:41:05 +00:00
beq PWD.StoreChar30
php
2019-04-11 15:59:57 +00:00
lsr
lsr
lsr
lsr
2019-04-12 15:41:05 +00:00
plp
and #$0f plp corrupt Z
2019-04-11 15:59:57 +00:00
beq .5
jsr PWD.StoreChar30
2019-04-12 15:41:05 +00:00
.5 lda .2+1
2019-04-11 15:59:57 +00:00
and #$0f
*--------------------------------------
PWD.StoreChar30 ora #$30
PWD.StoreChar inx
2019-04-12 15:41:05 +00:00
bcc .9 Dry run, no store
2019-04-11 15:59:57 +00:00
sta (ZPPtr3)
inc ZPPtr3
bne .9
inc ZPPtr3+1
2019-04-12 15:41:05 +00:00
.9 rts
2019-04-11 15:59:57 +00:00
*--------------------------------------
2019-04-09 15:47:33 +00:00
MAN
SAVE USR/SRC/SYS/KERNEL.S.PWDX
LOAD USR/SRC/SYS/KERNEL.S
ASM