Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-02-17 17:55:02 +01:00
parent fe193891d1
commit 8c89a474c3
29 changed files with 733 additions and 289 deletions

View File

@ -540,11 +540,11 @@ CS : not found
# GetPWUID # GetPWUID
## C ## C
`int getpwuid(short int uid, S.PW* passwd );` `int getpwuid(short int uid, S.PW *passwd);`
## ASM ## ASM
`PUSHB uid`
`>PUSHW passwd` `>PUSHW passwd`
`lda uid`
`>SYSCALL getpwuid` `>SYSCALL getpwuid`
## RETURN VALUE ## RETURN VALUE
@ -552,11 +552,11 @@ CS : not found
# GetPWName # GetPWName
## C ## C
`int getpwname(const char* name, S.PW* passwd );` `int getpwname(const char* name, S.PW *passwd);`
## ASM ## ASM
`>PUSHW name`
`>PUSHW passwd` `>PUSHW passwd`
`>LDYA name`
`>SYSCALL getpwname` `>SYSCALL getpwname`
## RETURN VALUE ## RETURN VALUE
@ -567,11 +567,46 @@ CS : not found
`int putpw( S.PW* passwd );` `int putpw( S.PW* passwd );`
## ASM ## ASM
`>LDYA passwd` `>PUSHW passwd`
`>SYSCALL putpw` `>SYSCALL putpw`
## RETURN VALUE ## RETURN VALUE
# GetGRGID
## C
`int getgrgid(short int gid, S.GRP *group);`
## ASM
`>PUSHB gid`
`>PUSHW group`
`>SYSCALL getpwname`
## RETURN VALUE
# GetGRName
## C
`int getgrgid(const char* name, S.GRP *group);`
## ASM
`>PUSHW name`
`>PUSHW group`
`>SYSCALL getpwname`
## RETURN VALUE
# PutGR
## C
`int putgr(S.GRP *group);`
## ASM
`>PUSHW group`
`>SYSCALL putgr`
## RETURN VALUE
# SListGetData # SListGetData
## ASM ## ASM

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -381,9 +381,10 @@ CS.RUN.PushGidUid
.2 >PUSHYA .2 >PUSHYA
>PUSHW ZPPW
ldy #S.STAT.UID ldy #S.STAT.UID
lda (ZPFileStat),y lda (ZPFileStat),y
>PUSHA
>PUSHW ZPPW
>SYSCALL GetPWUID >SYSCALL GetPWUID
bcs .3 bcs .3

View File

@ -85,8 +85,9 @@ CS.RUN >LDYAI S.PW
>STYA ZPStrPtr >STYA ZPStrPtr
stx ZPhStr stx ZPhStr
>PUSHW ZPPWPtr
lda #0 lda #0
>PUSHA
>PUSHW ZPPWPtr
>SYSCALL GetPWUID >SYSCALL GetPWUID
bcc .1 bcc .1
@ -109,9 +110,6 @@ CS.RUN >LDYAI S.PW
>SYSCALL putpw >SYSCALL putpw
bcs .99 bcs .99
>SYSCALL FlushEtcPasswd
bcs .99
lda #0 lda #0
sec sec
rts rts
@ -165,9 +163,6 @@ CS.RUN.ROOT ldy #0
>SYSCALL putpw >SYSCALL putpw
bcs .9 bcs .9
>SYSCALL FlushEtcPasswd
bcs .9
lda #0 lda #0
sec sec
.9 rts .9 rts

View File

@ -80,9 +80,6 @@ CS.RUN >LDYAI S.PW
>SYSCALL putpw >SYSCALL putpw
bcs .99 bcs .99
>SYSCALL FlushEtcPasswd
bcs .99
jsr CS.RUN.RmDir jsr CS.RUN.RmDir
bcs .99 bcs .99

339
DRV/MKBOARD.DRV.S.txt Normal file
View File

@ -0,0 +1,339 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF drv/mkboard.drv
*--------------------------------------
S.DCB.SND .EQ 16
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/MLI.E.I
*--------------------------------------
ZPArgPtr .EQ ZPBIN
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp Dev.Detect cld,jmp abs=DRV
.DA #$61 6502,Level 1 (65c02)
.DA #1 DRV Layout Version 1
.DA 0
.DA CS.END-CS.START Code Length
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
L.MSG.DETECT.OK .DA MSG.DETECT.OK
L.MSG.DETECT.KO .DA MSG.DETECT.KO
L.DRV.CS.START .DA DRV.CS.START
L.FD.DEV .DA FD.DEV
L.FD.DEV.NAME .DA FD.DEV.NAME
.DA 0 End Of Reloc Table
*--------------------------------------
Dev.Detect >STYA ARGS
stz ZPArgPtr
lda #$C1
sta ZPArgPtr+1
.1 and #$0f
tay
lda A2osX.S,y
bne .3
ldy #4
sec
lda (ZPArgPtr),y
sbc (ZPArgPtr),y
cmp #5
beq .4
.3 inc FD.DEV.NAME+3
inc ZPArgPtr+1 no match, try next slot....
lda ZPArgPtr+1
cmp #$C8
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL puts
lda #MLI.E.NODEV Not Found in any slot, exiting
sec
rts
.4 lda ZPArgPtr+1
and #$0F
pha
tay
lda #A2osX.S.SND
sta A2osX.S,y
pla
asl
asl
asl
asl
clc
adc #$8F
sta DEVSLOTn08F
jsr Dev.ParseArgs
bcs .9
.8 >PUSHW L.MSG.DETECT.OK
>PUSHW L.FD.DEV.NAME
>PUSHBI 2
>SYSCALL printf
>PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START
>PUSHWI DRV.CS.START
>LDYA L.DRV.CS.START
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV.NAME
>LDYA L.FD.DEV
>SYSCALL MKDEV
.9 rts
*--------------------------------------
Dev.ParseArgs >LDYA ARGS
>STYA ZPArgPTR
lda (ZPArgPTR)
bne .1
clc
rts
.1
.92 lda #E.SYN
sec
rts
*--------------------------------------
CS.END
MSG.DETECT.OK .AZ "MockingBoard Installed As Device : %s\r\n"
MSG.DETECT.KO .AZ "HW Not Found."
ARGS .BS 2
*--------------------------------------
FD.DEV .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #0 DEVID
.DA 0 BUSPTR
.BS 2 DRVPTR
.DA 0 DCBPTR
.DA 0 BUFPTR
FD.DEV.NAME .AZ "snd1"
*--------------------------------------
* Driver Code
*--------------------------------------
ZPIOCTL .EQ ZPDRV
ZPBufPtr .EQ ZPDRV+2
ZPCount .EQ ZPDRV+4
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA CONTROL
.DA A2osX.BADCALL
.DA OPEN
.DA CLOSE
.DA READ
.DA WRITE
.DA IRQ
.DA 0 end or relocation
*--------------------------------------
STATUS jsr STATUS.CONTROL.Init
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
.HS 2C bit abs
.1 ldy #3
.2 lda DIB,y
sta (ZPBufPtr),y
dey
bpl .2
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
bne .3
ldy #S.DCB.SND-1
.2 lda DCB,y
sta (ZPBufPtr),y
dey
bpl .2
clc
rts
.3 cmp #S.IOCTL.STATCODE.EOF
bne STATUS.9
lda DIB+S.DIB.S
and #S.DIB.S.OPENED
beq OPEN.E
.8 clc
rts
STATUS.9 lda #MLI.E.BADCTL
sec
rts
*--------------------------------------
CONTROL jsr STATUS.CONTROL.Init
ldy #S.IOCTL.CTRLCODE
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
bne STATUS.9
ldy #S.DCB.SND-1
.2 lda (ZPBufPtr),y
sta DCB,y
dey
bpl .2
*--------------------------------------
OPEN lda DIB+S.DIB.S
bit #S.DIB.S.OPENED
beq OPEN.1
OPEN.E lda #MLI.E.OPEN
sec
rts
OPEN.1 php
sei
ldx DEVSLOTn08F
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
plp
clc
rts
*--------------------------------------
CLOSE php
sei
ldx DEVSLOTn08F
lda #S.DIB.S.OPENED
trb DIB+S.DIB.S
plp
clc
rts
*--------------------------------------
READ php
sei
.8 plp
clc
rts
.9 lda #MLI.E.IO
.HS 2C BIT ABS
.99 lda #E.NODATA
plp
sec
rts
*--------------------------------------
WRITE php
sei
.8 plp
clc
rts
.9 lda #MLI.E.IO
.HS 2C BIT ABS
.99 lda #E.NODATA
plp
sec
rts
*--------------------------------------
READ.WRITE.Init ldx DEVSLOTn08F
STATUS.CONTROL.Init
>STYA ZPIOCTL
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
iny #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
eor #$ff
sta ZPCount
iny
lda (ZPIOCTL),y
eor #$ff
sta ZPCount+1
rts
*--------------------------------------
* IRQ Handler
* on exit, CC if handled
*--------------------------------------
IRQ ldx DEVSLOTn08F
bra .9
.8 clc
rts
.9 sec
rts
*--------------------------------------
DRV.CS.END
DEVSLOTn08F .BS 1
*--------------------------------------
DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ+S.DIB.S.IRQ
.DA #0,#0,#0
>PSTR "MockingBoard "
.DA #S.DIB.T.CHAR
.DA #0
.DA K.VER
*--------------------------------------
DCB .DA #S.DCB.T.SND
.DA #0 FLAGS
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
*--------------------------------------
DRV.END
MAN
SAVE USR/SRC/DRV/MKBOARD.DRV.S
ASM

View File

@ -91,6 +91,7 @@ A2osX.S.COM .EQ $E0
A2osX.S.XY .EQ $E1 A2osX.S.XY .EQ $E1
A2osX.S.NIC .EQ $E2 A2osX.S.NIC .EQ $E2
A2osX.S.CLK .EQ $E3 A2osX.S.CLK .EQ $E3
A2osX.S.SND .EQ $E4
A2osX.S.DISABLE .EQ $FF A2osX.S.DISABLE .EQ $FF
*-------------------------------------- *--------------------------------------
* NON BLOCKING Entry point (From libs) * NON BLOCKING Entry point (From libs)
@ -221,17 +222,16 @@ SYS.SScanF .EQ $52
* .EQ $5A * .EQ $5A
* .EQ $5C * .EQ $5C
* .EQ $5E * .EQ $5E
*--------------------------------------D2
* .EQ $60 * .EQ $60
* .EQ $62 * .EQ $62
* .EQ $64 * .EQ $64
* .EQ $66 * .EQ $66
* ARG
* .EQ $68 SYS.Shift .EQ $68
* .EQ $6A SYS.ArgV .EQ $6A
* .EQ $6C SYS.ArgVDup .EQ $6C
* .EQ $6E * .EQ $6E
*--------------------------------------D2
* STDLIB * STDLIB
SYS.AToF .EQ $70 SYS.AToF .EQ $70
SYS.AToI .EQ $72 SYS.AToI .EQ $72
@ -269,12 +269,12 @@ SYS.LoadFile .EQ $A8
SYS.LoadTxtFile .EQ $AA SYS.LoadTxtFile .EQ $AA
SYS.FileSearch .EQ $AC SYS.FileSearch .EQ $AC
SYS.GetMemStat .EQ $AE SYS.GetMemStat .EQ $AE
* ARG
SYS.Shift .EQ $B0
SYS.ArgV .EQ $B2
SYS.ArgVDup .EQ $B4
* .EQ $B6
*--------------------------------------E0/AUX *--------------------------------------E0/AUX
* STRV / STRVX
SYS.StrVShift .EQ $B0
SYS.StrVGet .EQ $B2
SYS.StrVAdd .EQ $B4
* .EQ $B6
* ENV / ENVX * ENV / ENVX
SYS.PutEnv .EQ $B8 SYS.PutEnv .EQ $B8
SYS.SetEnv .EQ $BA SYS.SetEnv .EQ $BA
@ -294,33 +294,32 @@ SYS.MD5Finalize .EQ $CE
SYS.GetPWUID .EQ $D0 SYS.GetPWUID .EQ $D0
SYS.GetPWName .EQ $D2 SYS.GetPWName .EQ $D2
SYS.PutPW .EQ $D4 SYS.PutPW .EQ $D4
SYS.FlushEtcPasswd .EQ $D6 SYS.GetGRGID .EQ $D6
* STRV / STRVX SYS.GetGRName .EQ $D8
SYS.StrVShift .EQ $D8 SYS.PutGR .EQ $DA
SYS.StrVGet .EQ $DA * .EQ $DC
SYS.StrVAdd .EQ $DC
* .EQ $DE * .EQ $DE
*--------------------------------------E0
* MEM
SYS.GetMem .EQ $E0
SYS.Realloc .EQ $E2
SYS.GetMemPtr .EQ $E4
SYS.FreeMem .EQ $E6
SYS.NewStkObj .EQ $E8
SYS.LoadStkObj .EQ $EA
SYS.GetStkObjPtr .EQ $EC
SYS.FreeStkObj .EQ $EE
* SLISTX * SLISTX
SYS.SListGetData .EQ $F0 SYS.SListGetData .EQ $E0
SYS.SListAddData .EQ $F2 SYS.SListAddData .EQ $E2
SYS.SListSetData .EQ $F4 SYS.SListSetData .EQ $E4
SYS.SListGetByID .EQ $F6 SYS.SListGetByID .EQ $E6
SYS.SListNewKey .EQ $F8 SYS.SListNewKey .EQ $E8
SYS.SListLookup .EQ $FA SYS.SListLookup .EQ $EA
SYS.SListNew .EQ $FC SYS.SListNew .EQ $EC
SYS.SListFree .EQ $FE SYS.SListFree .EQ $EE
*--------------------------------------F0
* MEM
SYS.GetMem .EQ $F0
SYS.Realloc .EQ $F2
SYS.GetMemPtr .EQ $F4
SYS.FreeMem .EQ $F6
SYS.NewStkObj .EQ $F8
SYS.LoadStkObj .EQ $FA
SYS.GetStkObjPtr .EQ $FC
SYS.FreeStkObj .EQ $FE
*-------------------------------------- *--------------------------------------
* MEM STRUCT * MEM STRUCT
*-------------------------------------- *--------------------------------------
@ -397,6 +396,7 @@ S.DCB.T .EQ 0
S.DCB.T.NIC .EQ $81 S.DCB.T.NIC .EQ $81
S.DCB.T.COM .EQ $82 S.DCB.T.COM .EQ $82
S.DCB.T.GFX .EQ $83 S.DCB.T.GFX .EQ $83
S.DCB.T.SND .EQ $84
*-------------------------------------- *--------------------------------------
S.DIB.S .EQ 0 S.DIB.S .EQ 0
S.DIB.S.BLOCK .EQ %10000000 S.DIB.S.BLOCK .EQ %10000000
@ -432,7 +432,7 @@ S.DIB.T.NIC .EQ $12 Network Interface Card
S.DIB.T.XY .EQ $13 X,Y Pointing Device S.DIB.T.XY .EQ $13 X,Y Pointing Device
S.DIB.T.CHAR .EQ $14 S.DIB.T.CHAR .EQ $14
S.DIB.T.GFX .EQ $15 S.DIB.T.GFX .EQ $15
*S.DIB.T.SND .EQ $17 S.DIB.T.SND .EQ $16
S.DIB.ST .EQ 22 S.DIB.ST .EQ 22
S.DIB.ST.EXT .EQ $80 S.DIB.ST.EXT .EQ $80
S.DIB.ST.DSKSW .EQ $40 S.DIB.ST.DSKSW .EQ $40
@ -642,6 +642,10 @@ S.PW.SHELL .EQ 182 64+1
* *
S.PW .EQ 247 S.PW .EQ 247
*-------------------------------------- *--------------------------------------
S.GRP.GID .EQ 0
S.GRP.NAME .EQ 1 16+1
S.GRP.MEMBERS .EQ 18
*--------------------------------------
S.SESSION.P .EQ 0 S.SESSION.P .EQ 0
S.SESSION.P.ROOT .EQ %10000000 S.SESSION.P.ROOT .EQ %10000000
S.SESSION.P.SYSADMIN .EQ %01000000 S.SESSION.P.SYSADMIN .EQ %01000000

View File

@ -2,11 +2,24 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
IO.IIC.RDVBLMSK .EQ $C041 R, B7=1: VBL interrupts enabled
*--------------------------------------
* The action taken for the soft switches * The action taken for the soft switches
* from $C058 ... $C05F is only taken if access * from $C058 ... $C05F is only taken if access
* has first been enabled by writing to IOUDISOFF ($C07F).] * has first been enabled by writing to IOUDISOFF ($C07F)
*--------------------------------------
* Apple IIc Tech Note #9 : Detecting VBL
* Written by Dan Strnad (November 1989)
* This Technical Note describes how the VBLInt flag at $C019 behaves differently
* than documented in the Apple IIc Technical Reference Manual, Second Edition, when being polled.
* The Apple IIc Technical Reference Manual, Second Edition, claims that reading
* $C019 reads and resets the VBLInt flag. This is not correct.
*
* After reading $C019 once the high bit has been set to flag VBL,
* the high bit remains set. A program polling VBL at $C019 would have to access
* either PTrig at $C070 or RdIOUDis at $C07E to reset the high-bit for $C019.
* Note that IOUDis must have been turned off by writing to $C07F
* then ENVBL accessed at $C05B in order to poll for $C019 on the IIc.
*--------------------------------------
IO.IIC.RDVBLMSK .EQ $C041 R, B7=1: VBL interrupts enabled
*-------------------------------------- *--------------------------------------
IO.IIC.DISVBL .EQ $C05A W, Disable VBL interrupts IO.IIC.DISVBL .EQ $C05A W, Disable VBL interrupts
IO.IIC.ENVBL .EQ $C05B W, Enable VBL interrupts IO.IIC.ENVBL .EQ $C05B W, Enable VBL interrupts

View File

@ -83,8 +83,9 @@ CS.RUN >LDYAI 33 Enough for HASH
>LDYA L.ETCISSUE >LDYA L.ETCISSUE
jsr CS.RUN.DUMPFILE jsr CS.RUN.DUMPFILE
lda #0
>PUSHA ROOT user
>PUSHWZ Dry Run, no output >PUSHWZ Dry Run, no output
* lda #0 ROOT user
>SYSCALL GetPWUID >SYSCALL GetPWUID
bcc CS.RUN.AUTH bcc CS.RUN.AUTH
@ -218,8 +219,10 @@ CS.RUN.CHECKPWD rol ZPbValidUser
>STYA ZPPWPtr >STYA ZPPWPtr
stx ZPhPW stx ZPhPW
pha
>PUSHB ZPUID
pla
>PUSHYA >PUSHYA
lda ZPUID
>SYSCALL GetPWUID >SYSCALL GetPWUID
bcs CS.RUN.CHECK.9 bcs CS.RUN.CHECK.9

View File

@ -456,29 +456,34 @@ CPU.Init.6502 >PUSHWI MSG.CPU
bne .1 bne .1
sec sec
.1 ror ZPPtr1 save //c flag .1 ror ZPPtr1 save //c flag
bpl .11 bpl .11
sta CLRIOUDIS sta CLRIOUDIS
lda IO.IIC.RDVBLMSK lda IO.IIC.RDVBLMSK
sta ZPPtr1+1 Save VBLIRQ enable sta ZPPtr1+1 Save VBLIRQ enable
sta IO.IIC.ENVBL sta IO.IIC.ENVBL
.11 bit VBL .11 bit VBL
bpl .11 bpl .11
bit ZPPtr1 //c ?
bpl .2
lda IO.IIC.CLRVBLIRQ yes, clear IRQ
.2 lda VBL .2 lda VBL
bmi .2 bmi .2
ldx #2 ldx #2
.20 bit ZPPtr1 //c ? .20 bit ZPPtr1 //c ?
bpl .3 bpl .3
lda IO.IIC.CLRVBLIRQ yes, clear IRQ lda IO.IIC.CLRVBLIRQ yes, clear IRQ
lda #0 wait for UP again lda #0 wait for UP again
.3 ldy #4 (2) .3 ldy #4 (2)
@ -999,9 +1004,9 @@ TskMgrInit >LDYAI MSG.TSK
>SYSCALL2 puts >SYSCALL2 puts
>LDYAI K.ENV.SIZE get a buffer for ENV >LDYAI K.ENV.SIZE get a buffer for ENV
ldx #SYS.NewStkObj >SYSCALL NewStkObj Buffer in AUX mem
jsr K.SYSCALL2.AUX Buffer in AUX mem
bcs EvtMgrInit.RTS bcs EvtMgrInit.RTS
>STYA ZPPtr1 >STYA ZPPtr1
txa txa
@ -1119,7 +1124,7 @@ MSG.KCREAD.KO .AZ "\nError While Reading Kernel Config File, Using Default.\n"
MSG.PRODOSFX .AZ "!!!Running under ProDOS.FX!!! Enabling lowercase mode.\n" MSG.PRODOSFX .AZ "!!!Running under ProDOS.FX!!! Enabling lowercase mode.\n"
MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n" MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n"
*-------------------------------------- *--------------------------------------
SYSSCREEN.TOP .AZ "A2osX 0.93 Console" SYSSCREEN.TOP .AZ "A2osX 0.94 Console"
MSG.Init3 .AS "A2osX[Stage3]:Init" MSG.Init3 .AS "A2osX[Stage3]:Init"
.AZ "\r\n*** Press Ctrl-R for ROOT Mode ***\r\n" .AZ "\r\n*** Press Ctrl-R for ROOT Mode ***\r\n"
MSG.DEV .AZ "Device Manager..." MSG.DEV .AZ "Device Manager..."

View File

@ -58,18 +58,18 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
*--------------------------------------
* Bank 2
*--------------------------------------
.DA 0 $60 .DA 0 $60
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
.DA K.Shift $68 : ARG
.DA K.ArgV
.DA K.ArgVDup
.DA 0 .DA 0
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Bank 2
*--------------------------------------
.DA K.AToF $70 : STDLIB .DA K.AToF $70 : STDLIB
.DA K.AToI .DA K.AToI
.DA K.AToL .DA K.AToL
@ -105,23 +105,23 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
.DA K.LoadTxtFile .DA K.LoadTxtFile
.DA K.FileSearch .DA K.FileSearch
.DA K.GetMemStat .DA K.GetMemStat
.DA K.Shift $B0 : ARG
.DA K.ArgV
.DA K.ArgVDup
.DA 0
.DA K.PutEnv ENV
.DA K.SetEnv
.DA K.GetEnv
.DA K.UnsetEnv
*-------------------------------------- *--------------------------------------
* AUX * AUX
*-------------------------------------- *--------------------------------------
.DA K.StrVShift $B0 : STRV
.DA K.StrVGet
.DA K.StrVAdd
.DA 0
.DA K.PutEnv $B8 : ENV
.DA K.SetEnv
.DA K.GetEnv
.DA K.UnsetEnv
.DA K.Time $C0 : TIME .DA K.Time $C0 : TIME
.DA K.StrFTime .DA K.StrFTime
.DA K.PTime2Time .DA K.PTime2Time
.DA K.CTime2Time .DA K.CTime2Time
.DA K.MD5 .DA K.MD5 $C8 : MD5
.DA K.MD5Init .DA K.MD5Init
.DA K.MD5Update .DA K.MD5Update
.DA K.MD5Finalize .DA K.MD5Finalize
@ -129,25 +129,13 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
.DA K.GetPWUID $D0 : PWD .DA K.GetPWUID $D0 : PWD
.DA K.GetPWName .DA K.GetPWName
.DA K.PutPW .DA K.PutPW
.DA K.FlushEtcPasswd .DA K.GetGRGID
.DA K.StrVShift .DA K.GetGRName
.DA K.StrVGet .DA K.PutGR
.DA K.StrVAdd .DA 0
.DA 0 .DA 0
*--------------------------------------
* $E000
*--------------------------------------
.DA K.GetMem $E0
.DA K.Realloc
.DA K.GetMemPtr
.DA K.FreeMem
.DA K.GetMem K.NewStkObj .DA K.SListGetData $E0 : SLIST
.DA K.LoadStkObj
.DA K.GetMemPtr K.GetStkObjPtr
.DA K.FreeMem K.FreeStkObj
*--------------------------------------
.DA K.SListGetData $F0
.DA K.SListAddData .DA K.SListAddData
.DA K.SListSetData .DA K.SListSetData
.DA K.SListGetByID .DA K.SListGetByID
@ -157,131 +145,143 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
.DA K.SListNew .DA K.SListNew
.DA K.SListFree .DA K.SListFree
*-------------------------------------- *--------------------------------------
* $E000
*--------------------------------------
.DA K.GetMem $F0
.DA K.Realloc
.DA K.GetMemPtr
.DA K.FreeMem
.DA K.GetMem K.NewStkObj
.DA K.LoadStkObj
.DA K.GetMemPtr K.GetStkObjPtr
.DA K.FreeMem K.FreeStkObj
*--------------------------------------
* LO Byte : * LO Byte :
* #RRAMWRAMBNK1,#RRAMWRAMBNK2 * #RRAMWRAMBNK1,#RRAMWRAMBNK2
* HI Byte : * HI Byte :
* Flags (ROOT....) * Flags (ROOT....)
*-------------------------------------- *--------------------------------------
K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 $10 .DA #RRAMWRAMBNK1 $10
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 $20 .DA #RRAMWRAMBNK1 $20
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 $30 .DA #RRAMWRAMBNK1 $30
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 $40 .DA #RRAMWRAMBNK1 $40
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 $50 .DA #RRAMWRAMBNK1 $50
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.DA #$80 .DA #0
.DA #RRAMWRAMBNK1 $60
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80
.DA #RRAMWRAMBNK1
.DA #$80
*-------------------------------------- *--------------------------------------
.DA #RRAMWRAMBNK2 $70 .DA #RRAMWRAMBNK2 $60
.DA #0
.DA #RRAMWRAMBNK2
.DA #0
.DA #RRAMWRAMBNK2
.DA #0
.DA #RRAMWRAMBNK2
.DA #0
.DA #RRAMWRAMBNK2 $68 : ARG
.DA #0
.DA #RRAMWRAMBNK2
.DA #0
.DA #RRAMWRAMBNK2
.DA #0
.DA #RRAMWRAMBNK2
.DA #0
.DA #RRAMWRAMBNK2 $70 : STDLIB
.DA #0 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #0 .DA #0
@ -298,65 +298,65 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #0 .DA #0
.DA #RRAMWRAMBNK2 $80 .DA #RRAMWRAMBNK2 $80 : STRING
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 $90 .DA #RRAMWRAMBNK2 $90 : DEV
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 $98 : BIN
.DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2 $A0 .DA #RRAMWRAMBNK2 $A0 : PS
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 $B0 .DA #0 $B0 : STRV
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #0
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #0
.DA #$80 .DA #0
.DA #RRAMWRAMBNK2 .DA #0
.DA #$80 .DA #0
.DA #0 $B8 : ENV .DA #0 $B8 : ENV
.DA #0 .DA #0
.DA #0 .DA #0
@ -367,32 +367,31 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #0 .DA #0
.DA #0 $C0 : TIME .DA #0 $C0 : TIME
.DA #$80
.DA #0 .DA #0
.DA #$80
.DA #0 .DA #0
.DA #$80
.DA #0 .DA #0
.DA #$80 .DA #0
.DA #0
.DA #0
.DA #0
.DA #0 $C8 : MD5 .DA #0 $C8 : MD5
.DA #$80
.DA #0 .DA #0
.DA #$80
.DA #0 .DA #0
.DA #$80
.DA #0 .DA #0
.DA #$80 .DA #0
.DA #0
.DA #0
.DA #0
.DA #$C0 $D0 : PWDX .DA #$C0 $D0 : PWDX
.DA #$80 .DA #0
.DA #$C0 PWDX .DA #$C0 PWDX
.DA #$80 .DA #0
.DA #$C0 PWDX .DA #$C0 PWDX
.DA #$80 .DA #0
.DA #0 PWD .DA #0 PWD
.DA #$80 .DA #0
.DA #0 $D8 : StrV
.DA #0 .DA #0
.DA #0 .DA #0
.DA #0 .DA #0
@ -400,40 +399,41 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #0 .DA #0
.DA #0 .DA #0
.DA #0 .DA #0
.DA #0
.DA #$C0 $E0 : SLIST
.DA #0
.DA #$C0
.DA #0
.DA #$C0
.DA #0
.DA #$C0
.DA #0
.DA #$C0
.DA #0
.DA #$C0
.DA #0
.DA #$C0
.DA #0
.DA #$C0
.DA #0
*-------------------------------------- *--------------------------------------
.DA #0 $E0 : MemMgr at $E000 .DA #0 $E0 : MemMgr at $E000
.DA #$80
.DA #0 .DA #0
.DA #$80
.DA #0 .DA #0
.DA #$80
.DA #0 .DA #0
.DA #$80 .DA #0
.DA #0
.DA #0
.DA #0
.DA #$C0 NewStkObj .DA #$C0 NewStkObj
.DA #$80
.DA #0 .DA #0
.DA #$80 .DA #0 LoadStkObj
.DA #0
.DA #$C0 GetStkObjPtr .DA #$C0 GetStkObjPtr
.DA #$80 .DA #0
.DA #$C0 FreeStkObj .DA #$C0 FreeStkObj
.DA #$80 .DA #0
*--------------------------------------
.DA #$C0 $F0 : SLIST
.DA #$80
.DA #$C0
.DA #$80
.DA #$C0
.DA #$80
.DA #$C0
.DA #$80
.DA #$C0
.DA #$80
.DA #$C0
.DA #$80
.DA #$C0
.DA #$80
.DA #$C0
.DA #$80
*-------------------------------------- *--------------------------------------
* K.SYSCALL2 : From KERNEL (MAIN,AUX), LIB * K.SYSCALL2 : From KERNEL (MAIN,AUX), LIB
*-------------------------------------- *--------------------------------------
@ -488,9 +488,14 @@ K.SYSCALL.JMPX sta SETREADAUX
sta CLRWRITEAUX sta CLRWRITEAUX
rts rts
.1 jmp (.2-SYS.PutEnv,x) .1 jmp (.2-SYS.StrVShift,x)
.2 .DA ENVX.PutEnv .2 .DA STRVX.StrVShift
.DA STRVX.StrVGet
.DA STRVX.StrVAdd
.DA 0
.DA ENVX.PutEnv
.DA ENVX.SetEnv .DA ENVX.SetEnv
.DA ENVX.GetEnv .DA ENVX.GetEnv
.DA ENVX.UnsetEnv .DA ENVX.UnsetEnv
@ -508,11 +513,9 @@ K.SYSCALL.JMPX sta SETREADAUX
.DA PWDX.GetPWUID .DA PWDX.GetPWUID
.DA PWDX.GetPWName .DA PWDX.GetPWName
.DA PWDX.PutPW .DA PWDX.PutPW
.DA 0 FlushEtcPasswd .DA PWDX.GetGRGID
.DA PWDX.GetGRName
.DA STRVX.StrVShift .DA PWDX.PutGR
.DA STRVX.StrVGet
.DA STRVX.StrVAdd
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.JMP SAVE USR/SRC/SYS/KERNEL.S.JMP

View File

@ -3,44 +3,47 @@ NEW
*/-------------------------------------- */--------------------------------------
* # GetPWUID * # GetPWUID
* ## C * ## C
* `int getpwuid(short int uid, S.PW* passwd );` * `int getpwuid(short int uid, S.PW *passwd);`
* ## ASM * ## ASM
* `PUSHB uid`
* `>PUSHW passwd` * `>PUSHW passwd`
* `lda uid`
* `>SYSCALL getpwuid` * `>SYSCALL getpwuid`
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.GetPWUID sta ZPPtr1+1 K.GetPWUID
>PULLW ZPPtr2 K.GetGRGID >PULLW FORPNT
>PULLB ZPPtr1+1
jmp K.SYSCALL.JMPX jmp K.SYSCALL.JMPX
*/-------------------------------------- */--------------------------------------
* # GetPWName * # GetPWName
* ## C * ## C
* `int getpwname(const char* name, S.PW* passwd );` * `int getpwname(const char* name, S.PW *passwd);`
* ## ASM * ## ASM
* `>PUSHW name`
* `>PUSHW passwd` * `>PUSHW passwd`
* `>LDYA name`
* `>SYSCALL getpwname` * `>SYSCALL getpwname`
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.GetPWName >STYA TXTPTR K.GetPWName
>PULLW ZPPtr2 K.GetGRName >PULLW FORPNT
>PULLW TXTPTR
jmp K.SYSCALL.JMPX jmp K.SYSCALL.JMPX
*/-------------------------------------- */--------------------------------------
* # PutPW * # PutPW
* ## C * ## C
* `int putpw( S.PW* passwd );` * `int putpw( S.PW* passwd );`
* ## ASM * ## ASM
* `>LDYA passwd` * `>PUSHW passwd`
* `>SYSCALL putpw` * `>SYSCALL putpw`
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.PutPW >STYA ZPPtr2 K.PutPW >PULLW TXTPTR
>STYA TXTPTR
jmp K.SYSCALL.JMPX jsr K.SYSCALL.JMPX
bcc K.FlushEtcPasswd
rts
*-------------------------------------- *--------------------------------------
K.FlushEtcPasswd K.FlushEtcPasswd
>LDYA PWD.DBSize >LDYA PWD.DBSize
@ -50,7 +53,7 @@ K.FlushEtcPasswd
stx .8+1 stx .8+1
>PUSHWI PWD.FILE >PUSHWI PWD.PWFILE
>PUSHBI O.WRONLY+O.CREATE >PUSHBI O.WRONLY+O.CREATE
>PUSHBI S.FI.T.TXT >PUSHBI S.FI.T.TXT
>PUSHWZ Aux type >PUSHWZ Aux type
@ -85,11 +88,48 @@ K.FlushEtcPasswd
.8 lda #$ff .8 lda #$ff
jmp K.freemem SELF MODIFIED jmp K.freemem SELF MODIFIED
*/--------------------------------------
* # GetGRGID
* ## C
* `int getgrgid(short int gid, S.GRP *group);`
* ## ASM
* `>PUSHB gid`
* `>PUSHW group`
* `>SYSCALL getpwname`
* ## RETURN VALUE
*\--------------------------------------
*/--------------------------------------
* # GetGRName
* ## C
* `int getgrgid(const char* name, S.GRP *group);`
* ## ASM
* `>PUSHW name`
* `>PUSHW group`
* `>SYSCALL getpwname`
* ## RETURN VALUE
*\--------------------------------------
*/--------------------------------------
* # PutGR
* ## C
* `int putgr(S.GRP *group);`
* ## ASM
* `>PUSHW group`
* `>SYSCALL putgr`
* ## RETURN VALUE
*\--------------------------------------
K.PutGR >PULLW TXTPTR
jsr K.SYSCALL.JMPX
bcc K.FlushEtcGroup
rts
*--------------------------------------
K.FlushEtcGroup rts
*-------------------------------------- *--------------------------------------
PWD.hDB .BS 1 PWD.hDB .BS 1
PWD.DBPtr .BS 2 PWD.DBPtr .BS 2
PWD.DBSize .BS 2 PWD.DBSize .BS 2
PWD.FILE .AZ "${ROOT}etc/passwd" PWD.PWFILE .AZ "${ROOT}etc/passwd"
PWD.GRFILE .AZ "${ROOT}etc/group"
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.PWD SAVE USR/SRC/SYS/KERNEL.S.PWD

View File

@ -1,8 +1,9 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
* ZPPtr1 : UID / pName (Input) * ZPPtr1 : UID
* ZPPtr2 : pPW (Output) * TXTPTR : pName (Input)
* FORPNT : pPW (Output)
* ZPPtr3 : pDB * ZPPtr3 : pDB
* USERNAME:PASSWORD:UID:GID:GECOS:HOME:SHELL\CR * USERNAME:PASSWORD:UID:GID:GECOS:HOME:SHELL\CR
* ....\CR * ....\CR
@ -28,7 +29,7 @@ PWDX.GetPWUID lda PWD.hDB
jsr PWD.NextLine jsr PWD.NextLine
bra .1 bra .1
PWD.GetPW.8 ldx ZPPtr2+1 PWD.GetPW.8 ldx FORPNT+1
beq .8 Dry run, no output beq .8 Dry run, no output
jmp PWD.Record2PW jmp PWD.Record2PW
@ -70,7 +71,7 @@ PWDX.GetPWName lda PWD.hDB
cmp #':' cmp #':'
bne .3 bne .3
ldx ZPPtr2+1 ldx FORPNT+1
beq .8 beq .8
jmp PWD.Record2PW jmp PWD.Record2PW
@ -79,7 +80,7 @@ PWDX.GetPWName lda PWD.hDB
jsr PWD.NextString skip PASSWORD jsr PWD.NextString skip PASSWORD
jmp PWD.GetByte get UID jmp PWD.GetByte get UID
*-------------------------------------- *--------------------------------------
* ZPPtr2 : pPW (Input) * FORPNT : pPW (Output)
* ZPPtr3 : pDB * ZPPtr3 : pDB
*-------------------------------------- *--------------------------------------
PWDX.PutPW lda PWD.hDB PWDX.PutPW lda PWD.hDB
@ -166,6 +167,14 @@ PWDX.PutPW lda PWD.hDB
sec sec
rts rts
*-------------------------------------- *--------------------------------------
PWDX.GetGRGID
*--------------------------------------
PWDX.GetGRName
*--------------------------------------
PWDX.PutGR
*--------------------------------------
* PRIVATE * PRIVATE
*-------------------------------------- *--------------------------------------
PWD.GetUID >LDYA PWD.DBPtr PWD.GetUID >LDYA PWD.DBPtr
@ -225,9 +234,6 @@ PWD.DeleteRecord
PWD.FindRecord >LDYA PWD.DBPtr PWD.FindRecord >LDYA PWD.DBPtr
>STYA ZPPtr3 >STYA ZPPtr3
>LDYA ZPPtr2
>STYA TXTPTR
.2 lda (ZPPtr3) .2 lda (ZPPtr3)
beq .9 End of DB beq .9 End of DB
@ -267,9 +273,7 @@ PWD.NextLine iny
inc ZPPtr3+1 inc ZPPtr3+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
PWD.Record2PW sta CLRWRITEAUX PWD.Record2PW ldy #0
ldy #0
ldx #0 NAME ldx #0 NAME
@ -277,11 +281,11 @@ PWD.Record2PW sta CLRWRITEAUX
iny iny
cmp #':' cmp #':'
beq .2 beq .2
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
inx inx
bra .1 bra .1
.2 lda #0 .2 lda #0
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
inx inx
cpx #S.PW.PASSWD cpx #S.PW.PASSWD
bne .2 bne .2
@ -291,21 +295,21 @@ PWD.Record2PW sta CLRWRITEAUX
cmp #':' cmp #':'
beq .4 beq .4
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
inx inx
bra .3 bra .3
.4 lda #0 .4 lda #0
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
inx inx
cpx #S.PW.UID cpx #S.PW.UID
bne .4 bne .4
jsr PWD.GetByte UID jsr PWD.GetByte UID
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
jsr PWD.GetByte GID jsr PWD.GetByte GID
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
ldx #S.PW.GECOS ldx #S.PW.GECOS
@ -313,11 +317,11 @@ PWD.Record2PW sta CLRWRITEAUX
iny iny
cmp #':' cmp #':'
beq .6 beq .6
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
inx inx
bra .5 bra .5
.6 lda #0 .6 lda #0
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
inx inx
cpx #S.PW.DIR cpx #S.PW.DIR
bne .6 bne .6
@ -326,11 +330,11 @@ PWD.Record2PW sta CLRWRITEAUX
iny iny
cmp #':' cmp #':'
beq .8 beq .8
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
inx inx
bra .7 bra .7
.8 lda #0 .8 lda #0
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
inx inx
cpx #S.PW.SHELL cpx #S.PW.SHELL
bne .8 bne .8
@ -339,12 +343,12 @@ PWD.Record2PW sta CLRWRITEAUX
iny iny
cmp #C.CR cmp #C.CR
beq .10 beq .10
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
inx inx
bra .9 bra .9
.10 lda #0 .10 lda #0
jsr SHARED.PutCharPtr2 jsr SHARED.FORPNT.PutNext
sta SETWRITEAUX
clc clc
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -599,6 +599,11 @@ ENV.GetSession ldy #S.PS.hSID
lda S.Table.hSession-1,y lda S.Table.hSession-1,y
jsr K.GetMemPtr jsr K.GetMemPtr
>STYA ZPPtr3 >STYA ZPPtr3
* ldy #S.SESSION.UID
* lda (ZPPtr3),y
rts rts
*-------------------------------------- *--------------------------------------
ENV.AddYAToBuf >STYA ZPPtr3 ENV.AddYAToBuf >STYA ZPPtr3

View File

@ -45,11 +45,11 @@ A2osX.AUX .DA #0
A2osX.AUX.B .PH Mem.XHiMem A2osX.AUX.B .PH Mem.XHiMem
.INB USR/SRC/SYS/KERNEL.S.TERMX .INB USR/SRC/SYS/KERNEL.S.TERMX
.INB USR/SRC/SYS/KERNEL.S.STRVX
.INB USR/SRC/SYS/KERNEL.S.ENVX .INB USR/SRC/SYS/KERNEL.S.ENVX
.INB USR/SRC/SYS/KERNEL.S.TIMEX .INB USR/SRC/SYS/KERNEL.S.TIMEX
.INB USR/SRC/SYS/KERNEL.S.MD5X .INB USR/SRC/SYS/KERNEL.S.MD5X
.INB USR/SRC/SYS/KERNEL.S.PWDX .INB USR/SRC/SYS/KERNEL.S.PWDX
.INB USR/SRC/SYS/KERNEL.S.STRVX
.INB USR/SRC/SYS/KERNEL.S.SLISTX .INB USR/SRC/SYS/KERNEL.S.SLISTX
.EP .EP
A2osX.AUX.S .EQ *-A2osX.AUX.B A2osX.AUX.S .EQ *-A2osX.AUX.B
@ -82,12 +82,12 @@ A2osX.D2 .DA #0
A2osX.D2.B .PH $D000 A2osX.D2.B .PH $D000
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.INB USR/SRC/SYS/KERNEL.S.ARG
.INB USR/SRC/SYS/KERNEL.S.STDLIB .INB USR/SRC/SYS/KERNEL.S.STDLIB
.INB USR/SRC/SYS/KERNEL.S.STRING .INB USR/SRC/SYS/KERNEL.S.STRING
.INB USR/SRC/SYS/KERNEL.S.DEV .INB USR/SRC/SYS/KERNEL.S.DEV
.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.ARG
.EP .EP
A2osX.D2.S .EQ *-A2osX.D2.B A2osX.D2.S .EQ *-A2osX.D2.B
@ -99,13 +99,13 @@ A2osX.E0.B .PH $E000
.INB USR/SRC/SYS/KERNEL.S.IRQ .INB USR/SRC/SYS/KERNEL.S.IRQ
.INB USR/SRC/SYS/KERNEL.S.SHARED .INB USR/SRC/SYS/KERNEL.S.SHARED
.INB USR/SRC/SYS/KERNEL.S.MATH .INB USR/SRC/SYS/KERNEL.S.MATH
.INB USR/SRC/SYS/KERNEL.S.TERM .INB USR/SRC/SYS/KERNEL.S.TERM
.INB USR/SRC/SYS/KERNEL.S.STRV
.INB USR/SRC/SYS/KERNEL.S.ENV .INB USR/SRC/SYS/KERNEL.S.ENV
.INB USR/SRC/SYS/KERNEL.S.TIME .INB USR/SRC/SYS/KERNEL.S.TIME
.INB USR/SRC/SYS/KERNEL.S.MD5 .INB USR/SRC/SYS/KERNEL.S.MD5
.INB USR/SRC/SYS/KERNEL.S.PWD .INB USR/SRC/SYS/KERNEL.S.PWD
.INB USR/SRC/SYS/KERNEL.S.STRV
.INB USR/SRC/SYS/KERNEL.S.MEM .INB USR/SRC/SYS/KERNEL.S.MEM
* go to A2osX.D1 * go to A2osX.D1
.INB USR/SRC/SYS/KERNEL.S.PIPE .INB USR/SRC/SYS/KERNEL.S.PIPE