Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-07-22 17:51:03 +02:00
parent 6868cce481
commit ce13c00070
8 changed files with 73 additions and 60 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -23,6 +23,8 @@ ZPFileName .BS 2
ZPFileStat .BS 2
ZPFullPath .BS 2
ZPMode .BS 2
ArgIndex .BS 1
StrMode .BS 1
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
@ -54,7 +56,8 @@ L.MSG.ERR .DA MSG.ERR
CS.INIT clc
rts
*--------------------------------------
CS.RUN >INC.G ArgIndex
CS.RUN inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
bcs .8
@ -85,28 +88,34 @@ CS.RUN >INC.G ArgIndex
sta (pData),y
bra CS.RUN
*--------------------------------------
.4 >LDA.G StrMode
.4 lda StrMode
bne .5
>LDA.G ArgIndex
>STA.G StrMode
lda ArgIndex
sta StrMode
bra CS.RUN
.5 >LDA.G hSrcBasePath
bne .9
>LDYA ZPPtr1
jsr InitSrcDirYA
bcc CS.RUN
rts
.8 >LDA.G StrMode
.8 lda StrMode
beq .9
jsr CS.RUN.Str2Mode
bcs .9
>LDA.G hSrcBasePath
beq .9
>LDYAI 256
>SYSCALL GetMem
bcs .99
>STYA ZPFullPath
txa
>STA.G hSrcFullPath
@ -176,10 +185,7 @@ CS.RUN.LEAVE jsr LeaveSubDir
sec
.99 rts
*--------------------------------------
CS.RUN.DIR >LDA.G bRecurse
bpl .8
lda (ZPFileName)
CS.RUN.DIR lda (ZPFileName)
cmp #'.'
bne .1
@ -194,7 +200,10 @@ CS.RUN.DIR >LDA.G bRecurse
lda (ZPFileName),y
beq .8
.1 jsr CS.RUN.GetFilePath
.1 jsr FilterMatch
bcs .8
jsr CS.RUN.GetFilePath
>PUSHW L.MSG.DIR
>PUSHW ZPFullPath
>PUSHBI 2
@ -206,6 +215,11 @@ CS.RUN.DIR >LDA.G bRecurse
>SYSCALL chmod
jsr CS.RUN.CheckErr
bcs .9
>LDA.G bRecurse
bpl .8
>LDYA ZPFileName
jmp EnterSubDirYA
@ -233,20 +247,28 @@ CS.RUN.FILE jsr FilterMatch
*--------------------------------------
CS.RUN.Str2Mode >SYSCALL ArgV
>STYA ZPPtr1
ldy #$ff
.1 iny
lda (ZPPtr1),y
bne .1
cpy #3
bne .9
stz ZPMode
stz ZPMode+1
dey
.2 lda (ZPPtr1),y
cmp #'0'
bcc .9
cmp #'7'+1
bcs .9
asl ZPMode
rol ZPMode+1
asl ZPMode
@ -258,7 +280,9 @@ CS.RUN.Str2Mode >SYSCALL ArgV
adc ZPMode
sta ZPMode
bcc .3
inc ZPMode+1
.3 dey
bpl .2
@ -329,14 +353,10 @@ MSG.FILE .AZ "File:%s..."
.DUMMY
.OR 0
DS.START
ArgIndex .BS 1
bContinue .BS 1
bRecurse .BS 1
StrMode .BS 1
bPause .BS 1
hSrcFullPath .BS 1
.INB usr/src/bin/x.fileenum.g

View File

@ -21,6 +21,8 @@ XDOS.FindFileOrVol
cmp #MLI.E.INVPATH
bne fnderr
clc
rts
moventry ldy h_entln Get FileInfo From Directory Block Buffer

View File

@ -525,7 +525,7 @@ L58D3 lda XRW.EndDataMark,y (4) dm4, dm5, dm6 and turn off byte.
clc (2,9)
wexit lda IO.D2.ReadMode,x out of write mode
lda IO.D2.ReadMode,x out of write mode
lda IO.D2.WShift,x to read mode.
rts return from write.
@ -886,7 +886,7 @@ XRW.ReadAddr ldy #$FC
cmp #$AA
bne rderr
ldy XRW.UnitIndex Succesfull Read, update Drive table
ldy XRW.UnitIndex Successful Read, update Drive table
lda XRW.AddrField.V
sta XRW.D2VolNum-1,y

View File

@ -158,7 +158,7 @@ IO.MLI.OPEN >LDYAI 1024 get a ProDOS IOBUF
FS.OPEN.RTS rts
*--------------------------------------
FS.Stat bit CORE.FSID
bmi FS.StatEX
bmi FS.Stat.FX
>MLICALL MLIGETFILEINFO
bcs FS.OPEN.RTS
@ -192,7 +192,7 @@ FS.Stat bit CORE.FSID
ldx #K.S.STAT+S.STAT.MTIME
jmp SHARED.PTime2StatYAX
*--------------------------------------
FS.StatEX >MLICALL MLIGETFILEINFOEX
FS.Stat.FX >MLICALL MLIGETFILEINFOEX
bcs FS.OPEN.RTS
>LDYAI K.MLI.PARAMS+3
@ -261,9 +261,6 @@ FS.ClrStat ldx #S.STAT-1
rts
*--------------------------------------
FS.Mode2Access clc
rts
*--------------------------------------
FS.Access2Mode and #S.FI.A.FULL
cmp #S.FI.A.FULL
beq .7

View File

@ -33,63 +33,57 @@ K.ChTyp jsr PFT.CheckPath1
* `>SYSCALL chmod`
* ## RETURN VALUE
*--------------------------------------
* only 777-555
* ProDOS203 :
* -w------- access = $C2
* r-------- access = $01
* --------- access = $00
*--------------------------------------
K.ChMod jsr PFT.CheckPath2
bcs K.ChMod.RET4
jsr STAT.PullPathAndMode
lda K.S.STAT+S.STAT.MODE+1
and /S.STAT.MODE.RU
beq .9
lda K.S.STAT+S.STAT.MODE
and #S.STAT.MODE.XO+S.STAT.MODE.RO+S.STAT.MODE.XG+S.STAT.MODE.RG+S.STAT.MODE.XU+S.STAT.MODE.RU
cmp #S.STAT.MODE.XO+S.STAT.MODE.RO+S.STAT.MODE.XG+S.STAT.MODE.RG+S.STAT.MODE.XU+S.STAT.MODE.RU
bne .9
bit CORE.FSID
bmi K.ChMod.FX
>MLICALL MLIGETFILEINFO
bcs .90
bcs .9
lda K.MLI.PARAMS+S.FI.A
and #$3D not S.FI.A.RN+S.FI.A.D+S.FI.A.W
ora #S.FI.A.R
tax
lda K.S.STAT+S.STAT.MODE
tay
bit #S.STAT.MODE.WG
ldx #0
lda K.S.STAT+S.STAT.MODE+1
and /S.STAT.MODE.RU
beq .1
inx
txa
ora #S.FI.A.RN
tax
tya
.1 bit #S.STAT.MODE.WU
beq .2
.1 lda K.S.STAT+S.STAT.MODE
bpl .2
txa
ora #S.FI.A.D
tax
tya
ora #$C2
.2 bit #S.STAT.MODE.WO
beq .3
txa
ora #S.FI.A.W
tax
.3 stx K.MLI.PARAMS+S.FI.A
.2 stx K.MLI.PARAMS+S.FI.A
>MLICALL MLISETFILEINFO
rts
.9 lda #E.SYN
sec
.90 rts
.9 rts
K.ChMod.RET4 >RET 4 discard statbuf
K.ChMod.FX stz K.MLI.PARAMS+3+S.FIEX.ACL read mode
>MLICALL MLIACL
bcs .9
>LDYA K.S.STAT+S.STAT.MODE
>STYA K.MLI.PARAMS+3+S.FIEX.ACL.MOD
lda #$57 write mode
sta K.MLI.PARAMS+3+S.FIEX.ACL
>MLICALL MLIACL
.9 rts
K.ChMod.RET4 >RET 4
*--------------------------------------
* # FStat
* Return information about a hFILE