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 CS.RUN.ZeroPtr1 >LDYA ZPPtr1
>STYA ZPPtr2 >STYA ZPPtr2
lda #0 lda #$AA
tay tay
.10 sta (ZPPtr2),y .10 sta (ZPPtr2),y

View File

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

View File

@ -135,6 +135,8 @@ CS.RUN.DUMP lda ArgFile
Mod2CSTR ldy #S.STAT.MODE+1 Mod2CSTR ldy #S.STAT.MODE+1
lda (pData),y lda (pData),y
lsr lsr
php
lsr lsr
lsr lsr
lsr lsr
@ -142,35 +144,29 @@ Mod2CSTR ldy #S.STAT.MODE+1
lda TYPES,x lda TYPES,x
>STA.G MOD >STA.G MOD
ldx #0 plp
ldx #8
ldy #S.STAT.MODE ldy #S.STAT.MODE
lda (pData),y lda (pData),y
ldy #MOD+1 ldy #MOD+1
.1 lsr .1 pha
pha
lda #'-' lda #'-'
bcc .2 bcc .2
lda ACCESS,x lda ACCESS,x
.2 sta (pData),y .2 sta (pData),y
iny iny
pla pla
inx asl
cpx #8
bne .1
.3 ldy #S.STAT.MODE+1 dex
lda (pData),y bpl .1
lsr
lda #'-'
bcc .4
lda ACCESS,x
.4 >STA.G MOD+9
rts rts
*-------------------------------------- *--------------------------------------
@ -257,7 +253,7 @@ CS.END
OptionList .AS "Cc" OptionList .AS "Cc"
OptionVars .DA #bFormatStr,#bFormatStr OptionVars .DA #bFormatStr,#bFormatStr
TYPES .AS "-dbclssp" TYPES .AS "-dbclssp"
ACCESS .AS "rwxrwxrwx" ACCESS .AS "xwrxwrxwr"
MSG.NODATE .AZ "<No-Date>" MSG.NODATE .AZ "<No-Date>"
FMT.DateTime .AZ "%d-%b-%y %H:%M:%S" 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.EL .EQ 4
S.FD.DIR.EPB .EQ 5 S.FD.DIR.EPB .EQ 5
S.FD.DIR.FC .EQ 6 word 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 S.FD.DIR .EQ 16
*-------------------------------------- *--------------------------------------
@ -604,14 +607,19 @@ S.STAT.MODE .EQ 0
S.STAT.MODE.XO .EQ $0001 S.STAT.MODE.XO .EQ $0001
S.STAT.MODE.WO .EQ $0002 S.STAT.MODE.WO .EQ $0002
S.STAT.MODE.RO .EQ $0004 S.STAT.MODE.RO .EQ $0004
S.STAT.MODE.FO .EQ $0007 S.STAT.MODE.FO .EQ $0007
S.STAT.MODE.XG .EQ $0008 S.STAT.MODE.XG .EQ $0008
S.STAT.MODE.WG .EQ $0010 S.STAT.MODE.WG .EQ $0010
S.STAT.MODE.RG .EQ $0020 S.STAT.MODE.RG .EQ $0020
S.STAT.MODE.FG .EQ $0038 S.STAT.MODE.FG .EQ $0038
S.STAT.MODE.XU .EQ $0040 S.STAT.MODE.XU .EQ $0040
S.STAT.MODE.WU .EQ $0080 S.STAT.MODE.WU .EQ $0080
S.STAT.MODE.RU .EQ $0100 S.STAT.MODE.RU .EQ $0100
S.STAT.MODE.FU .EQ $01C0 S.STAT.MODE.FU .EQ $01C0
*S.STAT.MODE.SST .EQ $0200 *S.STAT.MODE.SST .EQ $0200
*S.STAT.MODE.SGID .EQ $0400 *S.STAT.MODE.SGID .EQ $0400
@ -658,9 +666,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 0 16+1
S.GRP.NAME .EQ 1 16+1 S.GRP.GID .EQ 17
S.GRP.MEMBERS .EQ 18 *
S.GRP .EQ 18
*-------------------------------------- *--------------------------------------
S.SESSION.P .EQ 0 S.SESSION.P .EQ 0
S.SESSION.P.ROOT .EQ %10000000 S.SESSION.P.ROOT .EQ %10000000

View File

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

View File

@ -80,7 +80,7 @@ S.FIEX.AUXTYPE .EQ 31
S.FIEX.MTIME .EQ 33 S.FIEX.MTIME .EQ 33
S.FIEX.BLKPTR .EQ 37 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.UID .EQ 42
S.FIEX.ACL.GID .EQ 44 S.FIEX.ACL.GID .EQ 44
S.FIEX.ACL.MOD .EQ 46 S.FIEX.ACL.MOD .EQ 46

View File

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

View File

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

View File

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

View File

@ -23,21 +23,24 @@ K.OpenDir jsr PFT.CheckPathYA
lda K.Buf256+1 One char ("/") ? lda K.Buf256+1 One char ("/") ?
beq .8 No, Go open dir.... beq .8 No, Go open dir....
>MLICALL MLIGETFILEINFO jsr FS.Stat
bcs .98 file/dir does not exists....quit bcs .98 file/dir does not exists....quit
lda K.MLI.PARAMS+4
cmp #$0F Directory ? lda K.S.STAT+S.STAT.MODE+1
bne .98 and #$f0
cmp /S.STAT.MODE.DIR
bne .97
jsr IO.MLI.OPEN jsr IO.MLI.OPEN
bcs .98 bcs .98
.8 jsr STDIO.NewHFile .8 jsr STDIO.NewHFile
bcs .98
bcc K.ReadDir.RTS .9 rts
.97 lda #MLI.E.UNSUPST
.98 jmp UNISTD.Open.ERR .98 jmp UNISTD.Open.ERR
.9 >RET 2
*/-------------------------------------- */--------------------------------------
* # ReadDir * # ReadDir
* ## C * ## C
@ -55,12 +58,14 @@ K.OpenDir jsr PFT.CheckPathYA
* note : A = 0 means no more entry * note : A = 0 means no more entry
*\-------------------------------------- *\--------------------------------------
.DUMMY .DUMMY
.OR ZPTMP 8 Bytes .OR ZPTMP 9 Bytes
K.ReadDir.hBlk .BS 1 K.ReadDir.hBlk .BS 1
K.ReadDir.ECIB .BS 1 K.ReadDir.ECIB .BS 1
K.ReadDir.EL .BS 1 K.ReadDir.EL .BS 1
K.ReadDir.EPB .BS 1 K.ReadDir.EPB .BS 1
K.ReadDir.EC .BS 2 K.ReadDir.EC .BS 2
K.ReadDir.BufSize .BS 2 K.ReadDir.BufSize .BS 2
K.ReadDir.hBuf .BS 1 K.ReadDir.hBuf .BS 1
.ED .ED
@ -214,6 +219,31 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
dex dex
bpl .1 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 inc K.ReadDir.EC Add one to EC because we include VOL/DIR Header
bne .4 bne .4
@ -316,15 +346,14 @@ K.ReadDir.DIR2 jsr K.ReadDir.GetBuf
bne .3 bne .3
jsr K.ReadDir.ADD. jsr K.ReadDir.ADD.
jsr SHARED.DirEnt2Stat jsr K.ReadDir.AddStatACL
jsr K.ReadDir.AddStat
jsr K.ReadDir.ADD.. jsr K.ReadDir.ADD..
bra .4 bra .4
.3 jsr K.ReadDir.AddFNToBuf .3 jsr K.ReadDir.AddFNToBuf
.4 jsr SHARED.DirEnt2Stat .4 jsr K.ReadDir.AddStatACL
jsr K.ReadDir.AddStat
lda K.ReadDir.EC decrease global counter... lda K.ReadDir.EC decrease global counter...
sec sec
@ -450,6 +479,29 @@ K.ReadDir.AddToBuf
inc ZPPtr4+1 inc ZPPtr4+1
.8 rts .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 K.ReadDir.AddStat
ldy #0 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 sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
* clc * clc
.9 rts .9
*-------------------------------------- FS.OPEN.RTS 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
*-------------------------------------- *--------------------------------------
FS.Stat bit CORE.FSID FS.Stat bit CORE.FSID
bpl .1 bmi FS.StatEX
>MLICALL MLIGETFILEINFOEX >MLICALL MLIGETFILEINFO
bcs SHARED.ClrStat.RTS bcs FS.OPEN.RTS
>LDYAI K.MLI.PARAMS+3
>STYA ZPPtr3
jmp SHARED.DirEnt2Stat
.1 >MLICALL MLIGETFILEINFO
bcs SHARED.ClrStat.RTS
jsr SHARED.ClrStat jsr SHARED.ClrStat
lda K.MLI.PARAMS+S.FI.A lda K.MLI.PARAMS+S.FI.T
jsr SHARED.Access2Mode 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 lda K.MLI.PARAMS,y
ldy SHARED.Stat.Dst-1,x ldy FS.Stat.Dst-1,x
sta K.S.STAT,y sta K.S.STAT,y
dex dex
bne .3 bne .3
@ -203,8 +192,13 @@ FS.Stat bit CORE.FSID
ldx #K.S.STAT+S.STAT.MTIME ldx #K.S.STAT+S.STAT.MTIME
jmp SHARED.PTime2StatYAX jmp SHARED.PTime2StatYAX
*-------------------------------------- *--------------------------------------
SHARED.DirEnt2Stat FS.StatEX >MLICALL MLIGETFILEINFOEX
jsr SHARED.ClrStat bcs FS.OPEN.RTS
>LDYAI K.MLI.PARAMS+3
>STYA ZPPtr3
*--------------------------------------
FS.DirEnt2Stat jsr SHARED.ClrStat
lda (ZPPtr3) lda (ZPPtr3)
and #$F0 and #$F0
@ -214,62 +208,75 @@ SHARED.DirEnt2Stat
lda /S.STAT.MODE.DIR lda /S.STAT.MODE.DIR
sta K.S.STAT+S.STAT.MODE+1 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 lda (ZPPtr3),y
ldy SHARED.Stat.Dst-1,x ldy FS.Stat.Dst-1,x
sta K.S.STAT,y sta K.S.STAT,y
dex dex
bne .2 bne .2
ldy #$1E ProDOS Access ldy #S.FIEX.ACCESS
lda (ZPPtr3),y 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 ldx #K.S.STAT+S.STAT.CTIME
jsr SHARED.PTime2StatAX jsr SHARED.PTime2StatAX
lda #$21 mod Date/time lda #S.FIEX.MTIME
ldx #K.S.STAT+S.STAT.MTIME ldx #K.S.STAT+S.STAT.MTIME
jmp SHARED.PTime2StatAX jmp SHARED.PTime2StatAX
*-------------------------------------- *--------------------------------------
SHARED.Mode2Access SHARED.ClrStat ldx #S.STAT-1
clc
.1 stz K.S.STAT,x
dex
bpl .1
lda CORE.FSID
sta K.S.STAT+S.STAT.FSID
rts rts
*-------------------------------------- *--------------------------------------
SHARED.Access2Mode FS.Mode2Access clc
and #S.FI.A.FULL rts
*--------------------------------------
FS.Access2Mode and #S.FI.A.FULL
cmp #S.FI.A.FULL cmp #S.FI.A.FULL
beq .7 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 lda #S.STAT.MODE.XU
beq .1
txa
ora #S.STAT.MODE.WO
tax
tya
.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 .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 .8 sta K.S.STAT+S.STAT.MODE
lda /S.STAT.MODE.RU ??????R?? lda /S.STAT.MODE.RU
ora K.S.STAT+S.STAT.MODE+1 preserve DIR tsb K.S.STAT+S.STAT.MODE+1 preserve DIR
sta K.S.STAT+S.STAT.MODE+1
rts rts
*-------------------------------------- *--------------------------------------
@ -288,15 +295,16 @@ SHARED.PTime2StatYAX
>SYSCALL2 PTime2Time >SYSCALL2 PTime2Time
rts 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 .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 FS.DirEnt.Src .DA #S.FIEX.T,#S.FIEX.AUXTYPE,#S.FIEX.AUXTYPE+1
.HS 10.1f20.1314.151617 .DA #S.FIEX.BLKUSED,#S.FIEX.BLKUSED+1
SHARED.DirEnt.Cnt .EQ *-SHARED.DirEnt.Src .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.BLOCKS,#S.STAT.BLOCKS+1
.DA #S.STAT.SIZE,#S.STAT.SIZE+1,#S.STAT.SIZE+2 .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 sec
.99 rts .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 PWDX.GetGRName
@ -385,24 +415,6 @@ PWD.FindRecord lda PWD.hUsrDB
sec sec
rts 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 * USERNAME:PASSWORD:UID:GID:GECOS:HOME:SHELL\CR
*-------------------------------------- *--------------------------------------
PWD.Record2Session PWD.Record2Session
@ -412,9 +424,14 @@ PWD.Record2Session
jsr PWD.NextString skip PASSWORD jsr PWD.NextString skip PASSWORD
jsr PWD.GetByte get UID jsr PWD.GetByte get UID
sta ZPPtr1 sta ZPPtr1
iny
jsr PWD.GetByte get GID jsr PWD.GetByte get GID
sta ZPPtr1+1 sta ZPPtr1+1
iny
lda #0 lda #0
ldx ZPPtr1 ldx ZPPtr1
bne .1 bne .1
@ -475,9 +492,11 @@ PWD.Record2PW ldy #0
iny iny
cmp #':' cmp #':'
beq .2 beq .2
jsr SHARED.FORPNT.PutNext jsr SHARED.FORPNT.PutNext
inx inx
bra .1 bra .1
.2 lda #0 .2 lda #0
jsr SHARED.FORPNT.PutNext jsr SHARED.FORPNT.PutNext
inx inx
@ -502,9 +521,13 @@ PWD.Record2PW ldy #0
jsr PWD.GetByte UID jsr PWD.GetByte UID
jsr SHARED.FORPNT.PutNext jsr SHARED.FORPNT.PutNext
iny
jsr PWD.GetByte GID jsr PWD.GetByte GID
jsr SHARED.FORPNT.PutNext jsr SHARED.FORPNT.PutNext
iny
ldx #S.PW.GECOS ldx #S.PW.GECOS
.5 lda (ZPPtr3),y .5 lda (ZPPtr3),y
@ -546,10 +569,59 @@ PWD.Record2PW ldy #0
clc clc
rts rts
*-------------------------------------- *--------------------------------------
PWD.GetByte stz .8+1 PWD.Record2GR ldy #0
ldx #0 NAME
.1 lda (ZPPtr3),y .1 lda (ZPPtr3),y
iny 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 #':' cmp #':'
beq .8 beq .8
@ -566,6 +638,9 @@ PWD.GetByte stz .8+1
clc clc
adc .8+1 adc .8+1
sta .8+1 sta .8+1
iny
bra .1 bra .1
.8 lda #$ff SELF MODIFIED .8 lda #$ff SELF MODIFIED
@ -574,7 +649,6 @@ PWD.GetByte stz .8+1
rts rts
*-------------------------------------- *--------------------------------------
PWD.AppendRecord PWD.AppendRecord
.1 lda (ZPPtr3) .1 lda (ZPPtr3)
beq .8 beq .8
@ -636,10 +710,10 @@ PWD.GetRecordLen
PWD.GetRecordLen.RTS PWD.GetRecordLen.RTS
rts rts
*-------------------------------------- *--------------------------------------
PWD.StoreString iny PWD.StoreString jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTR.GetY
beq PWD.GetRecordLen.RTS beq PWD.GetRecordLen.RTS
jsr PWD.StoreChar jsr PWD.StoreChar
iny
bra PWD.StoreString bra PWD.StoreString
*-------------------------------------- *--------------------------------------
PWD.StoreByte php PWD.StoreByte php
@ -647,7 +721,9 @@ PWD.StoreByte php
jsr MATH32.A2STR10NP jsr MATH32.A2STR10NP
plx plx
plp plp
ldy #0 ldy #0
.1 lda A2osX.NumStrBuf,y .1 lda A2osX.NumStrBuf,y
beq PWD.GetRecordLen.RTS beq PWD.GetRecordLen.RTS
iny iny