Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-07-13 21:29:31 +02:00
parent 975a731fa9
commit 691fa6a923
15 changed files with 420 additions and 271 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -518,7 +518,7 @@ CS.RUN.SeekToX >PUSHB DSSS0000
CS.RUN.ZeroPtr1 >LDYA ZPPtr1
>STYA ZPPtr2
lda #0
lda #$AA
tay
.10 sta (ZPPtr2),y

View File

@ -5,10 +5,10 @@ NEW
.OR $2000
.TF bin/ls
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/MLI.I
.INB INC/MLI.E.I
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------
X.ENTER.SUBDIR .EQ 1
X.COPY.TO.DEST .EQ 0
@ -59,9 +59,8 @@ L.MSG.CRLF .DA MSG.CRLF
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
L.FMT.Date .DA FMT.Date
L.FMT.Time .DA FMT.Time
L.FMT.string6 .DA FMT.string6
L.FMT.int16 .DA FMT.int16
L.MSG.Users .DA MSG.Users
L.MSG.Root .DA MSG.Root
J.CS.RUN.PRINT .DA CS.RUN.PRINT.REG
.DA CS.RUN.PRINT.DIR
.DA CS.RUN.PRINT.CDEV
@ -166,6 +165,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
.4 ldy #S.STAT.MODE+1
lda (ZPFileStat),y
and #$70
lsr
lsr
@ -225,7 +225,8 @@ CS.RUN.PRINT.REG
.1 >PUSHW L.MSG.REGEXT
jsr Mod2CSTR (2)
jsr CS.RUN.PushGidUid (4)
jsr CS.RUN.PushUidGid (4)
ldy #S.STAT.SIZE+3
ldx #4
@ -312,7 +313,7 @@ CS.RUN.PRINT.DIR
jsr Mod2CSTR
jsr CS.RUN.PushGidUid
jsr CS.RUN.PushUidGid
jsr CS.RUN.PUSHDATES
>PUSHW ZPFileName
>PUSHBI 12
@ -432,35 +433,19 @@ CS.RUN.PRINT.SRCPATH
>SYSCALL PrintF
rts
*--------------------------------------
CS.RUN.PushGidUid
>PUSHW L.MSG.Root
>PUSHW L.MSG.Root
clc
rts
ldy #S.STAT.GID
lda (ZPFileStat),y
beq .1
>LDYA L.MSG.Users
bra .2
.1 >LDYA L.MSG.Root
.2 >PUSHYA
CS.RUN.PushUidGid
ldy #S.STAT.UID
lda (ZPFileStat),y
>PUSHA
>PUSHW ZPPW
>SYSCALL GetPWUID
bcs .3
bcs .2
>PUSHW ZPPW
* clc
rts
>PUSHEA.G USER
jsr CS.RUN.PushUidGidStr
bra .3
.3 >PUSHEA.G UID
.2 >PUSHEA.G USER
>PUSHW L.FMT.int16
ldy #S.STAT.UID+1
@ -472,9 +457,41 @@ CS.RUN.PushGidUid
>PUSHBI 2
>SYSCALL sprintf
>PUSHEA.G UID
.3 ldy #S.STAT.GID
lda (ZPFileStat),y
>PUSHA
>PUSHW ZPPW
>SYSCALL GetGRGID
bcs .5
>PUSHEA.G GROUP
jsr CS.RUN.PushUidGidStr
bra .8
.5 >PUSHEA.G GROUP
>PUSHW L.FMT.int16
ldy #S.STAT.GID+1
lda (ZPFileStat),y
>PUSHA
dey
lda (ZPFileStat),y
>PUSHA
>PUSHBI 2
>SYSCALL sprintf
.8 >PUSHEA.G USER
>PUSHEA.G GROUP
clc
rts
CS.RUN.PushUidGidStr
>PUSHW L.FMT.string6
>PUSHW ZPPW
>PUSHBI 2
>SYSCALL sprintf
rts
*--------------------------------------
CS.RUN.PUSHDATES
ldy #TIME.Mod-1 Set NODATE as default
@ -647,35 +664,38 @@ FileType2PSTR ldy #0
Mod2CSTR ldy #S.STAT.MODE+1
lda (ZPFileStat),y
lsr
php C = RU
lsr
lsr
lsr
tax
lda TYPES,x
>STA.G MOD
ldx #0
plp
ldx #8
ldy #S.STAT.MODE
lda (ZPFileStat),y
ldy #MOD+1
.1 lsr
pha
.1 pha
lda #'-'
bcc .2
lda ACCESS,x
.2 sta (pData),y
iny
pla
inx
cpx #8
bne .1
.3 ldy #S.STAT.MODE+1
lda (ZPFileStat),y
lsr
lda #'-'
bcc .4
lda ACCESS,x
.4 >STA.G MOD+9
asl
dex
bpl .1
>PUSHEA.G MOD
rts
@ -708,14 +728,13 @@ PRODOS.FT.TXT >PSTR "txt"
>PSTR "pak"
>PSTR "sys"
PRODOS.FT.DFLT >PSTR "$ "
MSG.Users .AZ "users"
MSG.Root .AZ "root"
MSG.NODATE .AZ "<no-date>"
FMT.Date .AZ "%d-%b-%y"
FMT.Time .AZ "%H:%M:%S "
FMT.int16 .AZ "%i"
FMT.string6 .AZ "%6s"
FMT.int16 .AZ "%6D"
TYPES .AS "-dbclssp"
ACCESS .AS "rwxrwxrwx"
ACCESS .AS "xwrxwrxwr"
*--------------------------------------
.DUMMY
.OR 0
@ -723,10 +742,12 @@ DS.START
ArgCount .BS 1
MOD .BS 11 drwxrwxrwx0
USER .BS 7
GROUP .BS 7
TIME.Create .BS 20
TIME.Mod .BS 20
TIME.SysTime .BS S.TIME
UID .BS 6
bPause .BS 1
bAllmostAll .BS 1
@ -738,10 +759,10 @@ bRecurse .BS 1
ColCount .BS 1
hPW .BS 1
.INB USR/SRC/BIN/X.FILEENUM.G
.INB usr/src/bin/x.fileenum.g
DS.END
.ED
*--------------------------------------
MAN
SAVE USR/SRC/BIN/LS.S
SAVE usr/src/bin/ls.s
ASM

View File

@ -135,6 +135,8 @@ CS.RUN.DUMP lda ArgFile
Mod2CSTR ldy #S.STAT.MODE+1
lda (pData),y
lsr
php
lsr
lsr
lsr
@ -142,35 +144,29 @@ Mod2CSTR ldy #S.STAT.MODE+1
lda TYPES,x
>STA.G MOD
ldx #0
plp
ldx #8
ldy #S.STAT.MODE
lda (pData),y
ldy #MOD+1
.1 lsr
pha
.1 pha
lda #'-'
bcc .2
lda ACCESS,x
.2 sta (pData),y
iny
pla
inx
cpx #8
bne .1
asl
.3 ldy #S.STAT.MODE+1
lda (pData),y
lsr
lda #'-'
bcc .4
lda ACCESS,x
.4 >STA.G MOD+9
dex
bpl .1
rts
*--------------------------------------
@ -257,7 +253,7 @@ CS.END
OptionList .AS "Cc"
OptionVars .DA #bFormatStr,#bFormatStr
TYPES .AS "-dbclssp"
ACCESS .AS "rwxrwxrwx"
ACCESS .AS "xwrxwrxwr"
MSG.NODATE .AZ "<No-Date>"
FMT.DateTime .AZ "%d-%b-%y %H:%M:%S"
*--------------------------------------

View File

@ -477,7 +477,10 @@ S.FD.REG .EQ 4
S.FD.DIR.EL .EQ 4
S.FD.DIR.EPB .EQ 5
S.FD.DIR.FC .EQ 6 word
S.FD.DIR.ACL .EQ 8
S.FD.DIR.ACL .EQ 8 57.00
S.FD.DIR.UID .EQ 10
S.FD.DIR.GID .EQ 12
S.FD.DIR.MODE .EQ 14
*
S.FD.DIR .EQ 16
*--------------------------------------
@ -604,14 +607,19 @@ S.STAT.MODE .EQ 0
S.STAT.MODE.XO .EQ $0001
S.STAT.MODE.WO .EQ $0002
S.STAT.MODE.RO .EQ $0004
S.STAT.MODE.FO .EQ $0007
S.STAT.MODE.XG .EQ $0008
S.STAT.MODE.WG .EQ $0010
S.STAT.MODE.RG .EQ $0020
S.STAT.MODE.FG .EQ $0038
S.STAT.MODE.XU .EQ $0040
S.STAT.MODE.WU .EQ $0080
S.STAT.MODE.RU .EQ $0100
S.STAT.MODE.FU .EQ $01C0
*S.STAT.MODE.SST .EQ $0200
*S.STAT.MODE.SGID .EQ $0400
@ -658,9 +666,10 @@ S.PW.SHELL .EQ 182 64+1
*
S.PW .EQ 247
*--------------------------------------
S.GRP.GID .EQ 0
S.GRP.NAME .EQ 1 16+1
S.GRP.MEMBERS .EQ 18
S.GRP.NAME .EQ 0 16+1
S.GRP.GID .EQ 17
*
S.GRP .EQ 18
*--------------------------------------
S.SESSION.P .EQ 0
S.SESSION.P.ROOT .EQ %10000000

View File

@ -2,7 +2,7 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
IO.D2.SeekTime .EQ 200
IO.D2.SeekTime .EQ 60
*--------------------------------------
IO.D2.Ph0Off .EQ $C080
IO.D2.Ph0On .EQ $C081

View File

@ -80,7 +80,7 @@ S.FIEX.AUXTYPE .EQ 31
S.FIEX.MTIME .EQ 33
S.FIEX.BLKPTR .EQ 37
S.FIEX.ACL .EQ 40 75.00
S.FIEX.ACL .EQ 40 57.00
S.FIEX.ACL.UID .EQ 42
S.FIEX.ACL.GID .EQ 44
S.FIEX.ACL.MOD .EQ 46

View File

@ -16,18 +16,6 @@ D2MotorControl >PULLB MotorOn
tax
lda $C000,x
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
clc
.9 rts
@ -41,21 +29,10 @@ D2Recalibrate >PULLB DrvSlt
lda IO.D2.DrvOn,x
ldy #30
.10 jsr D2.Wait25600usec
dey
bne .10
ldy #168
* ldx Slotn0
.1 lda IO.D2.Ph0Off,x
* lda #IO.D2.SeekTime
* jsr D2.Wait100usecA
dey
dey
@ -72,17 +49,11 @@ D2Recalibrate >PULLB DrvSlt
tya
bne .1
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
ldx Slotn0
lda IO.D2.Ph0Off,x
jsr D2.Wait25600usec
jsr D2.Wait25600usec
jsr D2.Wait25600usec
clc
.9 rts
*/--------------------------------------
@ -114,14 +85,18 @@ D2MoveHead.1
tay
lda IO.D2.Ph0On,x
nop
nop
lda IO.D2.Ph0On,y
nop
nop
lda #IO.D2.SeekTime
jsr D2.Wait100usecA
pla
cmp MoveTo
beq .8
beq .7
bcs .2
@ -137,17 +112,17 @@ D2MoveHead.1
sta MoveFrom
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y
jsr .8
bra .1
.8 jsr D2.Wait25600usec
*--------------------------------------
D2.AllPhasesOff ldx Slotn0
.7 jsr D2.Wait25600usec
.8 lda IO.D2.Ph0Off,y
nop
nop
lda IO.D2.Ph0Off,x
lda IO.D2.Ph1Off,x
lda IO.D2.Ph2Off,x
lda IO.D2.Ph3Off,x
nop
nop
rts
*--------------------------------------
D2.Wait25600usec
@ -210,13 +185,6 @@ D2TrkWrite16s >PULLW ZPPtr1
jsr CheckDiskII
bcs .9
ldx Slotn0
lda IO.D2.Ph0Off,x
lda IO.D2.Ph1Off,x
lda IO.D2.Ph2Off,x
lda IO.D2.Ph3Off,x
>LDYAI TRACK16.LEN+1
>SYSCALL2 getmem
bcs .9
@ -432,10 +400,11 @@ PutData stz Checksum
pla
ora D2.0000XX00,x
tax
eor Checksum
sta Checksum
tax
lda FC2Nib,x
jsr PutBytePtr2
@ -446,10 +415,14 @@ PutData stz Checksum
.4 lda (ZPPtr1),y
and #$FC
tax
eor Checksum
sta Checksum
tax
lda FC2Nib,x
jsr PutBytePtr2
iny

View File

@ -166,22 +166,27 @@ L386C asl
movhead jsr movhed0 move directory info.
jmp lookfil0 do next local pathname.
movhed0 .DO ACL=1
ldx #9+8
.ELSE
ldx #9 move this directory info
.FIN
movhed0 ldx #9 move this directory info
.1 .DO ACL=1
lda gbuf+$14,x
sta h_acl,x
.ELSE
lda gbuf+1C,x
.1 lda gbuf+$1C,x
sta h_credt,x
.FIN
dex
bpl .1
.DO ACL=1
lda gbuf+$14
cmp #$57
bne .20
ldx #7
.2 lda gbuf+$14,x
sta h_acl,x
dex
bpl .2
.20 .FIN
lda gbuf+4 if this is root, then nothing to do
and #$F0
eor #$F0 test header type.
@ -189,10 +194,10 @@ movhed0 .DO ACL=1
ldx #$03 otherwise, save owner info about
.2 lda gbuf+$27,x this header.
.3 lda gbuf+$27,x this header.
sta own_blk,x
dex
bpl .2
bpl .3
.8 rts
*--------------------------------------
@ -628,7 +633,7 @@ L3ACE .DO LOWERCASE=1
* cpy #4
* bne .1
lda gbuf+39,y save address of the 1st bitmap.
lda gbuf+39 save address of the 1st bitmap.
sta VCBs+VCB.BMAP,x
lda gbuf+40
sta VCBs+VCB.BMAP+1,x

View File

@ -758,13 +758,15 @@ XRW.Seek ldx XRW.UnitIndex
tay
lda IO.D2.Ph0On,x
nop
nop
lda IO.D2.Ph0On,y
jsr XRW.WaitSeekTime
pla
cmp XRW.TargetQTrack
beq .8
beq .7
bcs .2
@ -780,11 +782,18 @@ XRW.Seek ldx XRW.UnitIndex
sta XRW.CurrentQTrack
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y
jsr .8
bra .1
.8 jsr XRW.Wait25600usec
.7 jsr XRW.Wait25600usec
.8 lda IO.D2.Ph0Off,y
nop
nop
lda IO.D2.Ph0Off,x
nop
nop
rts
*--------------------------------------
XRW.AllPhasesOff
ldx A2L

View File

@ -23,21 +23,24 @@ K.OpenDir jsr PFT.CheckPathYA
lda K.Buf256+1 One char ("/") ?
beq .8 No, Go open dir....
>MLICALL MLIGETFILEINFO
jsr FS.Stat
bcs .98 file/dir does not exists....quit
lda K.MLI.PARAMS+4
cmp #$0F Directory ?
bne .98
lda K.S.STAT+S.STAT.MODE+1
and #$f0
cmp /S.STAT.MODE.DIR
bne .97
jsr IO.MLI.OPEN
bcs .98
.8 jsr STDIO.NewHFile
bcs .98
bcc K.ReadDir.RTS
.9 rts
.97 lda #MLI.E.UNSUPST
.98 jmp UNISTD.Open.ERR
.9 >RET 2
*/--------------------------------------
* # ReadDir
* ## C
@ -55,12 +58,14 @@ K.OpenDir jsr PFT.CheckPathYA
* note : A = 0 means no more entry
*\--------------------------------------
.DUMMY
.OR ZPTMP 8 Bytes
.OR ZPTMP 9 Bytes
K.ReadDir.hBlk .BS 1
K.ReadDir.ECIB .BS 1
K.ReadDir.EL .BS 1
K.ReadDir.EPB .BS 1
K.ReadDir.EC .BS 2
K.ReadDir.BufSize .BS 2
K.ReadDir.hBuf .BS 1
.ED
@ -214,6 +219,31 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
dex
bpl .1
ldx #8
ldy #16
.10 lda (ZPPtr2),y
pha
iny
dex
bne .10
ldx #8
ldy #S.FD.DIR.ACL+7
.20 pla
cpy #S.FD.DIR.MODE+1
bne .30
and #$0F
.30 sta (pFD),y
dey
dex
bne .20
inc K.ReadDir.EC Add one to EC because we include VOL/DIR Header
bne .4
@ -316,15 +346,14 @@ K.ReadDir.DIR2 jsr K.ReadDir.GetBuf
bne .3
jsr K.ReadDir.ADD.
jsr SHARED.DirEnt2Stat
jsr K.ReadDir.AddStat
jsr K.ReadDir.AddStatACL
jsr K.ReadDir.ADD..
bra .4
.3 jsr K.ReadDir.AddFNToBuf
.4 jsr SHARED.DirEnt2Stat
jsr K.ReadDir.AddStat
.4 jsr K.ReadDir.AddStatACL
lda K.ReadDir.EC decrease global counter...
sec
@ -450,6 +479,29 @@ K.ReadDir.AddToBuf
inc ZPPtr4+1
.8 rts
*--------------------------------------
K.ReadDir.AddStatACL
jsr FS.DirEnt2Stat
ldy #S.FD.DIR.UID
ldx #S.STAT.UID
.1 lda (pFD),y
sta K.S.STAT,x
iny
inx
cpx #S.STAT.GID+2
bne .1
ldy #S.FD.DIR.MODE+1
ldx #1
.2 lda (pFD),y
ora K.S.STAT+S.STAT.MODE,x
sta K.S.STAT+S.STAT.MODE,x
dey
dex
bpl .2
K.ReadDir.AddStat
ldy #0

View File

@ -154,43 +154,32 @@ IO.MLI.OPEN >LDYAI 1024 get a ProDOS IOBUF
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
* clc
.9 rts
*--------------------------------------
SHARED.ClrStat ldx #S.STAT-1
.1 stz K.S.STAT,x
dex
bpl .1
lda CORE.FSID
sta K.S.STAT+S.STAT.FSID
SHARED.ClrStat.RTS
rts
.9
FS.OPEN.RTS rts
*--------------------------------------
FS.Stat bit CORE.FSID
bpl .1
bmi FS.StatEX
>MLICALL MLIGETFILEINFOEX
bcs SHARED.ClrStat.RTS
>LDYAI K.MLI.PARAMS+3
>STYA ZPPtr3
jmp SHARED.DirEnt2Stat
.1 >MLICALL MLIGETFILEINFO
bcs SHARED.ClrStat.RTS
>MLICALL MLIGETFILEINFO
bcs FS.OPEN.RTS
jsr SHARED.ClrStat
lda K.MLI.PARAMS+S.FI.A
jsr SHARED.Access2Mode
lda K.MLI.PARAMS+S.FI.T
cmp #S.FI.T.DIR
bne .1
ldx #SHARED.GFI.Cnt
lda /S.STAT.MODE.DIR
sta K.S.STAT+S.STAT.MODE+1
.3 ldy SHARED.GFI.Src-1,x
.1 lda K.MLI.PARAMS+S.FI.A
jsr FS.Access2Mode
ldx #FS.GFI.Cnt
.3 ldy FS.GFI.Src-1,x
lda K.MLI.PARAMS,y
ldy SHARED.Stat.Dst-1,x
ldy FS.Stat.Dst-1,x
sta K.S.STAT,y
dex
bne .3
@ -203,8 +192,13 @@ FS.Stat bit CORE.FSID
ldx #K.S.STAT+S.STAT.MTIME
jmp SHARED.PTime2StatYAX
*--------------------------------------
SHARED.DirEnt2Stat
jsr SHARED.ClrStat
FS.StatEX >MLICALL MLIGETFILEINFOEX
bcs FS.OPEN.RTS
>LDYAI K.MLI.PARAMS+3
>STYA ZPPtr3
*--------------------------------------
FS.DirEnt2Stat jsr SHARED.ClrStat
lda (ZPPtr3)
and #$F0
@ -214,62 +208,75 @@ SHARED.DirEnt2Stat
lda /S.STAT.MODE.DIR
sta K.S.STAT+S.STAT.MODE+1
.1 ldx #SHARED.DirEnt.Cnt
.1 ldx #FS.DirEnt.Cnt
.2 ldy SHARED.DirEnt.Src-1,x
.2 ldy FS.DirEnt.Src-1,x
lda (ZPPtr3),y
ldy SHARED.Stat.Dst-1,x
ldy FS.Stat.Dst-1,x
sta K.S.STAT,y
dex
bne .2
ldy #$1E ProDOS Access
ldy #S.FIEX.ACCESS
lda (ZPPtr3),y
jsr SHARED.Access2Mode
jsr FS.Access2Mode
lda #$18 creation Date/time
ldy #S.FIEX.ACL
lda (ZPPtr3),y
cmp #$57
bne .7
ldy #S.FIEX.ACL.UID
lda (ZPPtr3),y
sta K.S.STAT+S.STAT.UID
ldy #S.FIEX.ACL.GID
lda (ZPPtr3),y
sta K.S.STAT+S.STAT.GID
ldy #S.FIEX.ACL.MOD
lda (ZPPtr3),y
tsb K.S.STAT+S.STAT.MODE
iny
lda (ZPPtr3),y
tsb K.S.STAT+S.STAT.MODE+1
.7 lda #S.FIEX.CTIME
ldx #K.S.STAT+S.STAT.CTIME
jsr SHARED.PTime2StatAX
lda #$21 mod Date/time
lda #S.FIEX.MTIME
ldx #K.S.STAT+S.STAT.MTIME
jmp SHARED.PTime2StatAX
*--------------------------------------
SHARED.Mode2Access
clc
SHARED.ClrStat ldx #S.STAT-1
.1 stz K.S.STAT,x
dex
bpl .1
lda CORE.FSID
sta K.S.STAT+S.STAT.FSID
rts
*--------------------------------------
SHARED.Access2Mode
and #S.FI.A.FULL
FS.Mode2Access clc
rts
*--------------------------------------
FS.Access2Mode and #S.FI.A.FULL
cmp #S.FI.A.FULL
beq .7
tay
ldx #S.STAT.MODE.RO+S.STAT.MODE.RG+S.STAT.MODE.RU+S.STAT.MODE.XO+S.STAT.MODE.XG+S.STAT.MODE.XU
bit #S.FI.A.W
beq .1
txa
ora #S.STAT.MODE.WO
tax
tya
lda #S.STAT.MODE.XU
.1 asl D in C
bpl .2 RN in N
txa
ora #S.STAT.MODE.WG
tax
.2 txa
bcc .8
ora #S.STAT.MODE.WU
.HS 2C BIT ABS
.7 lda #S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU rwxrwxrwx
.7 lda #S.STAT.MODE.FU
.8 sta K.S.STAT+S.STAT.MODE
lda /S.STAT.MODE.RU ??????R??
ora K.S.STAT+S.STAT.MODE+1 preserve DIR
sta K.S.STAT+S.STAT.MODE+1
lda /S.STAT.MODE.RU
tsb K.S.STAT+S.STAT.MODE+1 preserve DIR
rts
*--------------------------------------
@ -288,15 +295,16 @@ SHARED.PTime2StatYAX
>SYSCALL2 PTime2Time
rts
*--------------------------------------
SHARED.GFI.Src .DA #S.FI.T,#S.FI.AUXTYPE,#S.FI.AUXTYPE+1
FS.GFI.Src .DA #S.FI.T,#S.FI.AUXTYPE,#S.FI.AUXTYPE+1
.DA #S.FI.UBLKS,#S.FI.UBLKS+1
SHARED.GFI.Cnt .EQ *-SHARED.GFI.Src
FS.GFI.Cnt .EQ *-FS.GFI.Src
*--------------------------------------
SHARED.DirEnt.Src
.HS 10.1f20.1314.151617
SHARED.DirEnt.Cnt .EQ *-SHARED.DirEnt.Src
FS.DirEnt.Src .DA #S.FIEX.T,#S.FIEX.AUXTYPE,#S.FIEX.AUXTYPE+1
.DA #S.FIEX.BLKUSED,#S.FIEX.BLKUSED+1
.DA #S.FIEX.EOF,#S.FIEX.EOF+1,#S.FIEX.EOF+2
FS.DirEnt.Cnt .EQ *-FS.DirEnt.Src
*--------------------------------------
SHARED.Stat.Dst .DA #S.STAT.P.TYPE,#S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
FS.Stat.Dst .DA #S.STAT.P.TYPE,#S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
.DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1
.DA #S.STAT.SIZE,#S.STAT.SIZE+1,#S.STAT.SIZE+2
*--------------------------------------

View File

@ -203,8 +203,38 @@ PWDX.PutPW.1 jsr K.GetmemPtr
sec
.99 rts
*--------------------------------------
PWDX.GetGRGID
PWDX.GetGRGID lda PWD.hGrpDB
beq PWD.GetGR.9
jsr K.GetmemPtr
>STYA ZPPtr3
.1 lda (ZPPtr3)
beq PWD.GetGR.99 EOF
ldy #0
jsr PWD.NextString skip USERNAME
jsr PWD.GetByte get UID
cmp ZPPtr1+1
beq PWD.GetGR.8
jsr PWD.NextLine
bra .1
PWD.GetGR.8 ldx FORPNT+1
beq .8 Dry run, no output
jmp PWD.Record2GR
.8 clc a = UID
rts
PWD.GetGR.9 lda #E.IPWDDB
.HS 2C BIT ABS
PWD.GetGR.99 lda #E.IUSR
sec
PWD.GetGR.RTS rts
*--------------------------------------
PWDX.GetGRName
@ -385,24 +415,6 @@ PWD.FindRecord lda PWD.hUsrDB
sec
rts
*--------------------------------------
PWD.NextString lda (ZPPtr3),y
iny
cmp #':'
bne PWD.NextString
rts
*--------------------------------------
PWD.NextLine iny
lda (ZPPtr3),y
cmp #C.CR
bne PWD.NextLine
tya
sec
adc ZPPtr3
sta ZPPtr3
bcc .8
inc ZPPtr3+1
.8 rts
*--------------------------------------
* USERNAME:PASSWORD:UID:GID:GECOS:HOME:SHELL\CR
*--------------------------------------
PWD.Record2Session
@ -412,9 +424,14 @@ PWD.Record2Session
jsr PWD.NextString skip PASSWORD
jsr PWD.GetByte get UID
sta ZPPtr1
iny
jsr PWD.GetByte get GID
sta ZPPtr1+1
iny
lda #0
ldx ZPPtr1
bne .1
@ -475,9 +492,11 @@ PWD.Record2PW ldy #0
iny
cmp #':'
beq .2
jsr SHARED.FORPNT.PutNext
inx
bra .1
.2 lda #0
jsr SHARED.FORPNT.PutNext
inx
@ -502,9 +521,13 @@ PWD.Record2PW ldy #0
jsr PWD.GetByte UID
jsr SHARED.FORPNT.PutNext
iny
jsr PWD.GetByte GID
jsr SHARED.FORPNT.PutNext
iny
ldx #S.PW.GECOS
.5 lda (ZPPtr3),y
@ -546,10 +569,59 @@ PWD.Record2PW ldy #0
clc
rts
*--------------------------------------
PWD.GetByte stz .8+1
PWD.Record2GR ldy #0
ldx #0 NAME
.1 lda (ZPPtr3),y
iny
cmp #':'
beq .2
jsr SHARED.FORPNT.PutNext
inx
bra .1
.2 lda #0
jsr SHARED.FORPNT.PutNext
jsr PWD.GetByte UID
jsr SHARED.FORPNT.PutNext
clc
rts
*--------------------------------------
PWD.NextString lda (ZPPtr3),y
beq .8
iny
cmp #':'
bne PWD.NextString
.8 rts
*--------------------------------------
PWD.NextLine lda (ZPPtr3),y
beq .8
iny
cmp #C.CR
bne PWD.NextLine
tya
clc
adc ZPPtr3
sta ZPPtr3
bcc .8
inc ZPPtr3+1
.8 rts
*--------------------------------------
PWD.GetByte stz .8+1
.1 lda (ZPPtr3),y
beq .8
cmp #C.CR
beq .8
cmp #':'
beq .8
@ -566,6 +638,9 @@ PWD.GetByte stz .8+1
clc
adc .8+1
sta .8+1
iny
bra .1
.8 lda #$ff SELF MODIFIED
@ -574,7 +649,6 @@ PWD.GetByte stz .8+1
rts
*--------------------------------------
PWD.AppendRecord
.1 lda (ZPPtr3)
beq .8
@ -636,10 +710,10 @@ PWD.GetRecordLen
PWD.GetRecordLen.RTS
rts
*--------------------------------------
PWD.StoreString iny
jsr SHARED.TXTPTR.GetY
PWD.StoreString jsr SHARED.TXTPTR.GetY
beq PWD.GetRecordLen.RTS
jsr PWD.StoreChar
iny
bra PWD.StoreString
*--------------------------------------
PWD.StoreByte php
@ -647,7 +721,9 @@ PWD.StoreByte php
jsr MATH32.A2STR10NP
plx
plp
ldy #0
.1 lda A2osX.NumStrBuf,y
beq PWD.GetRecordLen.RTS
iny