mirror of https://github.com/A2osX/A2osX.git
Kernel version 0.8 : More API cleanup/reorg, fixed bug in READDIRYA crashing reading second block
This commit is contained in:
parent
79488f88fa
commit
0c91cddf37
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
|
@ -215,21 +215,21 @@ EXP.Compute dec
|
|||
.8 clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
EXP.Compute.EOR
|
||||
EXP.OP.EOR
|
||||
*---------------------------------------
|
||||
EXP.Compute.ORA
|
||||
EXP.OP.ORA
|
||||
*---------------------------------------
|
||||
EXP.Compute.AND
|
||||
EXP.OP.AND
|
||||
*---------------------------------------
|
||||
EXP.Compute.LOW
|
||||
EXP.OP.LOW
|
||||
*---------------------------------------
|
||||
EXP.Compute.EQU
|
||||
EXP.OP.EQU
|
||||
*---------------------------------------
|
||||
EXP.Compute.GRT
|
||||
EXP.OP.GRT
|
||||
clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
EXP.Compute.ADD ldx #0 ARG-ACC->ACC
|
||||
EXP.OP.ADD ldx #0 ARG-ACC->ACC
|
||||
ldy #4
|
||||
|
||||
clc
|
||||
|
@ -246,7 +246,7 @@ EXP.Compute.ADD ldx #0 ARG-ACC->ACC
|
|||
lda #ERR.VAL.TOO.BIG
|
||||
.8 rts
|
||||
*---------------------------------------
|
||||
EXP.Compute.SUB ldx #0 ARG-ACC->ACC
|
||||
EXP.OP.SUB ldx #0 ARG-ACC->ACC
|
||||
ldy #4
|
||||
|
||||
sec
|
||||
|
@ -267,9 +267,9 @@ EXP.Compute.SUB ldx #0 ARG-ACC->ACC
|
|||
.8 clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
EXP.Compute.MUL
|
||||
EXP.OP.MUL
|
||||
*---------------------------------------
|
||||
EXP.Compute.DIV
|
||||
EXP.OP.DIV
|
||||
clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
|
|
|
@ -5,7 +5,7 @@ INC 1
|
|||
AUTO 6
|
||||
.LIST OFF
|
||||
*---------------------------------------
|
||||
FIO.Init ldy #S.PS.hCMD
|
||||
FIO.Init ldy #S.PS.hCMDLINE
|
||||
lda (pPS),y
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
bcs .99
|
||||
|
@ -299,7 +299,7 @@ FIO.LOAD.ASM.T ldy #ASM.T.hMem
|
|||
>PUSHBI 6 S.FILEINFO.TYPE.BIN
|
||||
>PUSHBI SYS.FOPEN.R
|
||||
>PUSHW L.ASM.T.FILENAME
|
||||
>SYSCALL SYS.LoadFileYA
|
||||
>SYSCALL SYS.LoadFile
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
|
|
|
@ -72,8 +72,7 @@ CS.START cld
|
|||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBSTR .DA LIBSTR
|
||||
L.MSG.HELP1 .DA MSG.HELP1
|
||||
L.MSG.HELP2 .DA MSG.HELP2
|
||||
L.MSG.HELP .DA MSG.HELP
|
||||
L.MSG.SRCLINE .DA MSG.SRCLINE
|
||||
L.MSG.ERROR .DA MSG.ERROR
|
||||
L.MSG.SYMBOLS .DA MSG.SYMBOLS
|
||||
|
@ -139,29 +138,30 @@ J.LI .DA DIR.LI.CON
|
|||
.DA DIR.LI.XOFF
|
||||
.DA DIR.LI.ON
|
||||
.DA DIR.LI.OFF
|
||||
J.EXP.OP .DA EXP.Compute.EOR ^!|&<=>+-*/
|
||||
.DA EXP.Compute.ORA
|
||||
.DA EXP.Compute.ORA
|
||||
.DA EXP.Compute.AND
|
||||
.DA EXP.Compute.LOW
|
||||
.DA EXP.Compute.EQU
|
||||
.DA EXP.Compute.GRT
|
||||
.DA EXP.Compute.ADD
|
||||
.DA EXP.Compute.SUB
|
||||
.DA EXP.Compute.MUL
|
||||
.DA EXP.Compute.DIV
|
||||
J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/
|
||||
.DA EXP.OP.ORA
|
||||
.DA EXP.OP.ORA
|
||||
.DA EXP.OP.AND
|
||||
.DA EXP.OP.LOW
|
||||
.DA EXP.OP.EQU
|
||||
.DA EXP.OP.GRT
|
||||
.DA EXP.OP.ADD
|
||||
.DA EXP.OP.SUB
|
||||
.DA EXP.OP.MUL
|
||||
.DA EXP.OP.DIV
|
||||
.DA 0
|
||||
*---------------------------------------
|
||||
CS.INIT >LDYA L.LIBSTR
|
||||
>SYSCALL SYS.LoadLibYA
|
||||
sta hLIBSTR
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPs),y
|
||||
beq .99
|
||||
>SYSCALL SYS.GetArgC
|
||||
cmp #1
|
||||
beq .99 No arg, new file....
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>SYSCALL SYS.NewPStrYA
|
||||
lda #1
|
||||
>SYSCALL SYS.GetArgA
|
||||
>SYSCALL SYS.GetFullPathYA
|
||||
|
||||
txa
|
||||
ldy #SRC.hFILENAME
|
||||
|
@ -183,9 +183,7 @@ CS.INIT >LDYA L.LIBSTR
|
|||
clc
|
||||
rts
|
||||
|
||||
.99 >PUSHW L.MSG.HELP1
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
>PUSHW L.MSG.HELP2
|
||||
.99 >PUSHW L.MSG.HELP
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
lda #ERR.INV.ARGS
|
||||
sec
|
||||
|
@ -327,7 +325,7 @@ CS.QUIT jsr FIO.FileClose
|
|||
.INB BIN/ASM.S.SYM
|
||||
*---------------------------------------
|
||||
CS.END
|
||||
SRC.DIR.MAXLEN .EQ 5 (DUMMY)
|
||||
SRC.DIR.MAXLEN .EQ 5
|
||||
T.DIRECTIVES .HS 02
|
||||
.AS "AC"
|
||||
.HS 02
|
||||
|
@ -425,8 +423,7 @@ T.LI .HS 03
|
|||
.HS 00
|
||||
*---------------------------------------
|
||||
LIBSTR >PSTRING "libstr.o"
|
||||
MSG.HELP1 >CSTRING "A2osX-Macro Assembler (S-C MASM 3.0 Based)\n"
|
||||
MSG.HELP2 >CSTRING "Usage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\n"
|
||||
MSG.HELP >CSTRING "A2osX-Macro Assembler (S-C MASM 3.0 Based)\nUsage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\n"
|
||||
MSG.PASS >CSTRING "Pass:#%d\n"
|
||||
MSG.SRC.FILE >CSTRING "Reading SRC File:%S\n"
|
||||
MSG.OBJ.FILE >CSTRING "Writing OBJ File:%S, Type=%02x\n"
|
||||
|
|
239
BIN/LS.S.txt
239
BIN/LS.S.txt
|
@ -66,9 +66,9 @@ CS.INIT >LDYA L.LIBSTR
|
|||
>SYSCALL SYS.GetFullPathYA
|
||||
stx hFullPath
|
||||
|
||||
.2 >SYSCALL SYS.ListDirInitYA
|
||||
.2 >SYSCALL SYS.OPENDIRYA
|
||||
bcs .99
|
||||
ldy #hS.LISTDIR
|
||||
ldy #hDIR
|
||||
sta (pData),y
|
||||
|
||||
jsr .99
|
||||
|
@ -99,206 +99,43 @@ CS.RUN ldy #bCANCEL
|
|||
clc
|
||||
rts
|
||||
|
||||
.2 ldy #hS.LISTDIR
|
||||
.2 ldy #hDIR
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.ListDirNextA
|
||||
bcc .3
|
||||
>SYSCALL SYS.READDIRA
|
||||
bcs .9
|
||||
|
||||
jmp Push.Footer
|
||||
|
||||
.3 pha
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
phx Save hDIRENT
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
pha
|
||||
|
||||
and #$0F
|
||||
sta (ZPPtr1) Adjust Filename len
|
||||
.3 lda (ZPPtr1)
|
||||
|
||||
beq .8
|
||||
|
||||
pla
|
||||
and #$F0
|
||||
cmp #$F0 Volume ($F) HEADER ?
|
||||
bne .31
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL SYS.PStrOutYA
|
||||
|
||||
pla
|
||||
ldy #hVOLHEADER
|
||||
sta (pData),y
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW L.MSG.VOL.HEADER
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
lda ZPPtr1
|
||||
sec
|
||||
adc (ZPPtr1)
|
||||
sta ZPPtr1
|
||||
bcc .4
|
||||
inc ZPPtr1+1
|
||||
|
||||
.4 lda #13
|
||||
>SYSCALL SYS.COutA
|
||||
|
||||
.7 lda ZPPtr1
|
||||
clc
|
||||
rts
|
||||
adc #S.STAT
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
inc ZPPtr1+1
|
||||
bcs .3 Always
|
||||
|
||||
.31 cmp #$E0 Dir ($E) HEADER ?
|
||||
bne .4
|
||||
|
||||
pla
|
||||
ldy #hDIRHEADER
|
||||
sta (pData),y
|
||||
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW L.MSG.DIR.HEADER
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
clc
|
||||
rts
|
||||
|
||||
.4 cmp #$D0 Directory ?
|
||||
bne .5
|
||||
|
||||
jsr Push.Dates
|
||||
jsr Push.Dir
|
||||
>PUSHW L.MSG.DIR
|
||||
bra .8
|
||||
|
||||
.5 cmp #$C0 Volume Name ?
|
||||
bne .6
|
||||
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW L.MSG.VOL
|
||||
bra .8
|
||||
|
||||
.6 jsr Push.Dates File
|
||||
jsr Push.File
|
||||
>PUSHW L.MSG.FILE
|
||||
|
||||
.8 >LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
.9 pla
|
||||
.8 pla
|
||||
>SYSCALL SYS.FreeMemA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Push.Dir ldy #$1E get access mask
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
>PUSHW ZPPtr1
|
||||
rts
|
||||
*--------------------------------------
|
||||
Push.File >PUSHBI 0 4th byte of file len=0
|
||||
ldy #$17 get file len (3 bytes)
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
ldy #$1E get access mask
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
ldy #$20 get aux type
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
ldy #$10 get filetype
|
||||
|
||||
lda L.PRODOS.FT.TXT
|
||||
sta ZPPtr2
|
||||
lda L.PRODOS.FT.TXT+1
|
||||
sta ZPPtr2+1
|
||||
ldx #0
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
cmp PRODOS.FT.ID,x
|
||||
beq .3
|
||||
lda ZPPtr2
|
||||
clc
|
||||
adc #4
|
||||
sta ZPPtr2
|
||||
bcc .2
|
||||
inc ZPPtr2+1
|
||||
.2 inx
|
||||
cpx PRODOS.FT.COUNT
|
||||
bne .1
|
||||
|
||||
lda (ZPPtr1),y
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
tax
|
||||
lda HEXDIGIT,x
|
||||
sta PRODOS.FT.DFLT+2
|
||||
lda (ZPPtr1),y
|
||||
and #$0F
|
||||
tax
|
||||
lda HEXDIGIT,x
|
||||
sta PRODOS.FT.DFLT+3
|
||||
|
||||
.3 >PUSHW ZPPtr2
|
||||
>PUSHW ZPPtr1
|
||||
>LIBCALL hLIBSTR,LIBSTR.LCASEP
|
||||
>PUSHW ZPPtr1
|
||||
rts
|
||||
*--------------------------------------
|
||||
Push.Dates ldy #$24 get modification time
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
ldy #$22
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
ldy #$1B get creation time
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
ldy #$19
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
rts
|
||||
*--------------------------------------
|
||||
Push.Footer ldy #hVOLHEADER
|
||||
lda (pData),y
|
||||
beq .20
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #$22 file_count
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
>PUSHW L.MSG.VOL.END
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
.20 ldy #hDIRHEADER
|
||||
lda (pData),y
|
||||
beq .21
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #$22 file_count
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
>PUSHW L.MSG.DIR.END
|
||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||
|
||||
.21 sec
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||
lda (pEvent),y
|
||||
|
@ -338,22 +175,10 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
|||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT ldy #hVOLHEADER
|
||||
lda (pData),y
|
||||
beq .1
|
||||
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
.1 ldy #hDIRHEADER
|
||||
lda (pData),y
|
||||
beq .2
|
||||
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
.2 ldy #hS.LISTDIR
|
||||
CS.QUIT ldy #hDIR
|
||||
lda (pData),y
|
||||
|
||||
>SYSCALL SYS.ListDirCloseA
|
||||
>SYSCALL SYS.CLOSEDIRA
|
||||
|
||||
ldy #hDIRPATH
|
||||
lda (pData),y
|
||||
|
@ -395,7 +220,7 @@ hFullPath .BS 1
|
|||
.OR 0
|
||||
DS.START
|
||||
hDIRPATH .BS 1
|
||||
hS.LISTDIR .BS 1
|
||||
hDIR .BS 1
|
||||
hVOLHEADER .BS 1
|
||||
hDIRHEADER .BS 1
|
||||
bSTOP .BS 1
|
||||
|
|
|
@ -445,34 +445,16 @@ S.EVT.DATAW2 .EQ 6
|
|||
*
|
||||
S.EVT .EQ 8
|
||||
*--------------------------------------
|
||||
* S.LISTDIR STRUCT (Obsolete)
|
||||
*--------------------------------------
|
||||
S.LISTDIR.hONLINE .EQ 0
|
||||
S.LISTDIR.ONLINEPTR .EQ 1
|
||||
S.LISTDIR.REFNUM .EQ 2 ref_num file
|
||||
S.LISTDIR.hIOBUF .EQ 3 hMem to ProDOS IO buffer
|
||||
S.LISTDIR.hREADBUF .EQ 4 hMem to 512 Read Buffer
|
||||
S.LISTDIR.EL .EQ 5 entry_length
|
||||
S.LISTDIR.EIB .EQ 6 ENTRY_INDEX in block
|
||||
S.LISTDIR.EPB .EQ 7 entry_per_block
|
||||
S.LISTDIR.BLKPTR .EQ 8 entry PTR in block
|
||||
S.LISTDIR.FI .EQ 10 FILE_INDEX in DIR
|
||||
S.LISTDIR.FC .EQ 12 file_count
|
||||
S.LISTDIR.hPATH .EQ 14 Base path for file filtering
|
||||
S.LISTDIR.hPATTERN .EQ 15 Pattern for file filtering
|
||||
S.TIME.CENTURY .EQ 0 19,20,21....
|
||||
S.TIME.YEAR .EQ 1 0.99
|
||||
S.TIME.MONTH .EQ 2 1..12
|
||||
S.TIME.DAY .EQ 3 1..31
|
||||
S.TIME.HOUR .EQ 4 0..23
|
||||
S.TIME.MINUTE .EQ 5 0..59
|
||||
S.TIME.SECOND .EQ 6 0..61
|
||||
S.TIME.WDAY .EQ 7 1..7
|
||||
*
|
||||
S.LISTDIR.SIZE .EQ 16
|
||||
*--------------------------------------
|
||||
S.Time.CENTURY .EQ 0 19,20,21....
|
||||
S.Time.YEAR .EQ 1 0.99
|
||||
S.Time.MONTH .EQ 2 1..12
|
||||
S.Time.DAY .EQ 3 1..31
|
||||
S.Time.HOUR .EQ 4 0..23
|
||||
S.Time.MINUTE .EQ 5 0..59
|
||||
S.Time.SECOND .EQ 6 0..61
|
||||
S.Time.WDAY .EQ 7 1..7
|
||||
*
|
||||
S.Time .EQ 8
|
||||
S.TIME .EQ 8
|
||||
*--------------------------------------
|
||||
* S.STAT
|
||||
*--------------------------------------
|
||||
|
|
|
@ -12,7 +12,7 @@ AUTO 6
|
|||
* CC : Y,A = PTR to S.DIR
|
||||
* CS : A = EC
|
||||
*--------------------------------------
|
||||
K.OPENDIRYA jsr S.PFTCHECKPATHYA
|
||||
K.OPENDIRYA jsr K.PFTCheckPathYA
|
||||
>STYA ZPQuickPtr2
|
||||
>STYA MLICALL.PARAMS+1 For MLIOPEN
|
||||
|
||||
|
@ -71,7 +71,7 @@ hDIR .BS 1
|
|||
* CC : X = hDIREND, Y,A = PTR to S.DIRENT
|
||||
* CS : A = EC, A = 0 : no more entry
|
||||
*--------------------------------------
|
||||
K.READDIRA jsr S.PFTCHECKDIRA
|
||||
K.READDIRA jsr K.PFTCheckDirA
|
||||
jsr K.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
|
@ -267,10 +267,12 @@ K.READDIRA.DIR ldy #S.DIR.PRODOS.REF
|
|||
.99 rts
|
||||
|
||||
.2 ldy #S.DIR.PRODOS.EL+3
|
||||
ldx #3
|
||||
|
||||
.3 lda(ZPQuickPtr1),y get this session parameters from S.DIR
|
||||
sta EntryLength-S.DIR.PRODOS.EL,y
|
||||
.3 lda (ZPQuickPtr1),y get this session parameters from S.DIR
|
||||
sta EntryLength,x
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
.4 ldx EntryCount
|
||||
|
@ -336,10 +338,13 @@ K.READDIRA.DIR ldy #S.DIR.PRODOS.REF
|
|||
* lda #0 S.MEM.F.INIT0 already did this
|
||||
* sta (ZPQuickPtr4) Ending 0
|
||||
|
||||
ldx #3
|
||||
ldy #S.DIR.PRODOS.EL+3
|
||||
.8 lda EntryLength-S.DIR.PRODOS.EL,y Store back this session prameters to S.DIR
|
||||
|
||||
.8 lda EntryLength,x Store back this session prameters to S.DIR
|
||||
sta (ZPQuickPtr1),y
|
||||
dey
|
||||
dex
|
||||
bpl .8
|
||||
|
||||
jsr .98 Discard READBUFFER
|
||||
|
@ -383,7 +388,7 @@ K.READDIRA.ADD and #$F0
|
|||
|
||||
lda #1
|
||||
jsr K.READDIRA.AddToBuf
|
||||
lda #'.'
|
||||
lda #'.' filename="1."
|
||||
jsr K.READDIRA.AddToBuf
|
||||
|
||||
ldy #$25 total_blocks
|
||||
|
@ -398,35 +403,27 @@ K.READDIRA.ADD and #$F0
|
|||
txa
|
||||
sta (ZPQuickPtr4),y
|
||||
|
||||
bra .80
|
||||
|
||||
.10 cmp #$E0 directory header ?
|
||||
bne .20
|
||||
|
||||
lda #2
|
||||
jsr K.READDIRA.AddToBuf
|
||||
lda #'.'
|
||||
lda #'.' filename="2.."
|
||||
jsr K.READDIRA.AddToBuf
|
||||
jsr K.READDIRA.AddToBuf
|
||||
|
||||
|
||||
bra .80
|
||||
|
||||
|
||||
.20 cmp #$D0 directory ?
|
||||
bne .30
|
||||
jsr K.READDIRA.AddFNToBuf
|
||||
|
||||
lda (ZPQuickPtr3)
|
||||
and #$0F get filename len
|
||||
tax
|
||||
jsr K.READDIRA.AddToBuf
|
||||
ldy #1
|
||||
bra .80
|
||||
|
||||
.21 lda (ZPQuickPtr3),y
|
||||
jsr K.READDIRA.AddToBuf
|
||||
iny
|
||||
dex
|
||||
bne .21
|
||||
|
||||
|
||||
.30
|
||||
.30 jsr K.READDIRA.AddFNToBuf
|
||||
|
||||
.80 lda ZPQuickPtr4
|
||||
clc
|
||||
|
@ -444,6 +441,21 @@ K.READDIRA.AddBufSize
|
|||
inc BufSize+1
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
K.READDIRA.AddFNToBuf
|
||||
lda (ZPQuickPtr3)
|
||||
and #$0F get filename len
|
||||
tax
|
||||
jsr K.READDIRA.AddToBuf
|
||||
|
||||
ldy #1
|
||||
|
||||
.1 lda (ZPQuickPtr3),y
|
||||
jsr K.READDIRA.AddToBuf
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.READDIRA.AddToBuf
|
||||
sta (ZPQuickPtr4)
|
||||
inc ZPQuickPtr4
|
||||
|
@ -467,8 +479,8 @@ K.READDIRA.hDIR .BS 1
|
|||
* In :
|
||||
* A = hDIR
|
||||
*--------------------------------------
|
||||
K.CLOSEDIRA jsr S.PFTCHECKDIRA
|
||||
sta hDIR
|
||||
K.CLOSEDIRA jsr K.PFTCheckDirA
|
||||
pha
|
||||
jsr K.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
|
@ -483,12 +495,12 @@ K.CLOSEDIRA.1 ldy #S.DIR.PRODOS.REF
|
|||
beq .2
|
||||
jsr K.FreeMemA
|
||||
|
||||
.2 lda hDIR
|
||||
.2 pla
|
||||
jsr K.FreeMemA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.MKDIRYA jsr S.PFTCHECKPATHYA
|
||||
K.MKDIRYA jsr K.PFTCheckPathYA
|
||||
>STYA MLICALL.PARAMS+1
|
||||
lda #S.FILEINFO.ACCESS.FULL
|
||||
sta MLICALL.PARAMS+S.FILEINFO.ACCESS
|
||||
|
|
|
@ -7,7 +7,7 @@ AUTO 6
|
|||
*--------------------------------------
|
||||
* For All SYS.xxxx calls, X = #SYSCall
|
||||
* Must be kept in X before calling
|
||||
* S.PFTCheckXYZ
|
||||
* K.PFTCheck*
|
||||
*--------------------------------------
|
||||
* K.FOPEN
|
||||
* In :
|
||||
|
@ -24,7 +24,7 @@ AUTO 6
|
|||
* CC : A = hFILE
|
||||
* CS : A = EC
|
||||
*--------------------------------------
|
||||
K.FOPEN jsr S.PFTCHECKPATHSTK
|
||||
K.FOPEN jsr K.PFTCheckPathSTK
|
||||
>PULLW MLICALL.PARAMS+1
|
||||
>PULLB K.FOPEN.MODE
|
||||
>PULLB K.FOPEN.TYPE
|
||||
|
@ -114,7 +114,7 @@ hFILE .BS 1
|
|||
* In :
|
||||
* A = hFILE
|
||||
*--------------------------------------
|
||||
K.FCLOSEA jsr S.PFTCHECKFILEA
|
||||
K.FCLOSEA jsr K.PFTCheckFileA
|
||||
sta hFILE
|
||||
jsr K.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
|
@ -142,7 +142,7 @@ K.FCLOSEA.1 ldy #S.FILE.PRODOS.REF
|
|||
* Out :
|
||||
* Y,A = Bytes Read
|
||||
*--------------------------------------
|
||||
K.FREAD jsr S.PFTCHECKFILESTK
|
||||
K.FREAD jsr K.PFTCheckFileSTK
|
||||
>PULLA
|
||||
jsr FIL.SetupPrt1A
|
||||
>PULLW MLICALL.PARAMS+4
|
||||
|
@ -160,7 +160,7 @@ K.FREAD jsr S.PFTCHECKFILESTK
|
|||
* Out :
|
||||
* Y,A = Bytes Written
|
||||
*--------------------------------------
|
||||
K.FWRITE jsr S.PFTCHECKFILESTK
|
||||
K.FWRITE jsr K.PFTCheckFileSTK
|
||||
>PULLA
|
||||
jsr FIL.SetupPrt1A
|
||||
>PULLW MLICALL.PARAMS+4
|
||||
|
@ -174,7 +174,7 @@ K.FWRITE jsr S.PFTCHECKFILESTK
|
|||
* In :
|
||||
* A = hFILE
|
||||
*--------------------------------------
|
||||
K.FFLUSHA jsr S.PFTCHECKFILEA
|
||||
K.FFLUSHA jsr K.PFTCheckFileA
|
||||
jsr FIL.SetupPrt1A
|
||||
>MLICALL MLIFLUSH
|
||||
rts
|
||||
|
@ -186,27 +186,35 @@ K.FFLUSHA jsr S.PFTCHECKFILEA
|
|||
* PULLW = OffsetLo
|
||||
* PULLW = OffsetHi
|
||||
*--------------------------------------
|
||||
K.FSEEK jsr S.PFTCHECKFILESTK
|
||||
K.FSEEK jsr K.PFTCheckFileSTK
|
||||
>PULLA
|
||||
jsr FIL.SetupPrt1A
|
||||
>PULLB K.FSEEK.FROM
|
||||
>PULLW K.FSEEK.OFFSET
|
||||
>PULLW K.FSEEK.OFFSET+2
|
||||
|
||||
lda K.FSEEK.FROM
|
||||
beq .3 cmp #SYS.FSEEK.SET
|
||||
|
||||
cmp #SYS.FSEEK.CUR
|
||||
* cmp #SYS.FSEEK.SET =0
|
||||
|
||||
bne .1
|
||||
>MLICALL MLIGETMARK
|
||||
bcs .9
|
||||
bcc .2
|
||||
stz MLICALL.PARAMS+2
|
||||
stz MLICALL.PARAMS+3
|
||||
stz MLICALL.PARAMS+4
|
||||
bra .8
|
||||
|
||||
.1 cmp #SYS.FSEEK.END
|
||||
bne .3
|
||||
.1 cmp #SYS.FSEEK.CUR
|
||||
bne .2
|
||||
>MLICALL MLIGETMARK
|
||||
bcc .8
|
||||
rts
|
||||
|
||||
.2 cmp #SYS.FSEEK.END
|
||||
bne .98
|
||||
>MLICALL MLIGETEOF
|
||||
bcs .9
|
||||
|
||||
.2 lda MLICALL.PARAMS+2
|
||||
.8 lda MLICALL.PARAMS+2
|
||||
adc K.FSEEK.OFFSET
|
||||
sta MLICALL.PARAMS+2
|
||||
lda MLICALL.PARAMS+3
|
||||
|
@ -215,13 +223,14 @@ K.FSEEK jsr S.PFTCHECKFILESTK
|
|||
lda MLICALL.PARAMS+4
|
||||
adc K.FSEEK.OFFSET+2
|
||||
sta MLICALL.PARAMS+4
|
||||
bcs .99 Offset out of range!
|
||||
bcs .99 Offset out of range!
|
||||
|
||||
|
||||
.3 >MLICALL MLISETMARK
|
||||
>MLICALL MLISETMARK
|
||||
|
||||
.9 rts
|
||||
|
||||
.98 lda #SYSMGR.ERRSYN
|
||||
.HS 2C bit abs
|
||||
.99 lda #SYSMGR.ERRFTB
|
||||
sec
|
||||
rts
|
||||
|
@ -235,7 +244,7 @@ K.FSEEK.OFFSET .BS 4
|
|||
* Out :
|
||||
* Y,A,X = Offset
|
||||
*--------------------------------------
|
||||
K.FTELLA jsr S.PFTCHECKFILEA
|
||||
K.FTELLA jsr K.PFTCheckFileA
|
||||
K.FTELLA.1 jsr FIL.SetupPrt1A
|
||||
>MLICALL MLIGETMARK
|
||||
bcs .9
|
||||
|
@ -252,7 +261,7 @@ K.FTELLA.1 jsr FIL.SetupPrt1A
|
|||
* A !=0 NOT EOF
|
||||
* CS :
|
||||
*--------------------------------------
|
||||
K.FEOFA jsr S.PFTCHECKFILEA
|
||||
K.FEOFA jsr K.PFTCheckFileA
|
||||
jsr FIL.SetupPrt1A
|
||||
jsr K.FTELLA.1
|
||||
bcs .9
|
||||
|
@ -277,7 +286,7 @@ K.FEOFA.MARK .BS 3
|
|||
*--------------------------------------
|
||||
* K.REMOVEYA
|
||||
*--------------------------------------
|
||||
K.REMOVEYA jsr S.PFTCHECKPATHYA
|
||||
K.REMOVEYA jsr K.PFTCheckPathYA
|
||||
>STYA MLICALL.PARAMS+1
|
||||
>MLICALL MLIDESTROY
|
||||
rts
|
||||
|
@ -287,7 +296,7 @@ K.REMOVEYA jsr S.PFTCHECKPATHYA
|
|||
* PULLW = Old Name
|
||||
* PULLW = New Name
|
||||
*--------------------------------------
|
||||
K.RENAME jsr S.PFTCHECKPATHYA
|
||||
K.RENAME jsr K.PFTCheckPathSTK
|
||||
>PULLW MLICALL.PARAMS+1
|
||||
>PULLW MLICALL.PARAMS+3
|
||||
>MLICALL MLIRENAME
|
||||
|
@ -298,7 +307,7 @@ K.RENAME jsr S.PFTCHECKPATHYA
|
|||
* PULLB = hFILE
|
||||
* PULLW = PTR to S.STAT buffer
|
||||
*--------------------------------------
|
||||
K.STAT jsr S.PFTCHECKFILEA
|
||||
K.STAT jsr K.PFTCheckFileA
|
||||
>PULLA
|
||||
jsr FIL.SetupPrt1A
|
||||
>PULLW ZPQuickPtr2
|
||||
|
@ -316,7 +325,7 @@ K.STAT jsr S.PFTCHECKFILEA
|
|||
* PULLW = PTR to Filename
|
||||
* PULLW = PTR to S.STAT buffer
|
||||
*--------------------------------------
|
||||
K.FSTAT jsr S.PFTCHECKPATHYA
|
||||
K.FSTAT jsr K.PFTCheckPathSTK
|
||||
>PULLW MLICALL.PARAMS+1
|
||||
>PULLW ZPQuickPtr2
|
||||
>MLICALL MLIGETFILEINFO
|
||||
|
|
|
@ -143,8 +143,7 @@ K.GetFullPathYA >STYA ZPQuickPtr3 Ptr1 & 2 used by StrCpy
|
|||
* Y,A = File Length
|
||||
* X = hMem of Loaded File
|
||||
*--------------------------------------
|
||||
K.LoadFile >DEBUG
|
||||
jsr K.FOPEN
|
||||
K.LoadFile jsr K.FOPEN
|
||||
bcs .9
|
||||
|
||||
sta K.LoadFile.hFile
|
||||
|
@ -201,65 +200,6 @@ K.LoadFile.Seek >PUSHWI 0
|
|||
>PUSHB K.LoadFile.hFile
|
||||
jmp K.FSEEK
|
||||
*--------------------------------------
|
||||
* K.LoadFileYA
|
||||
* in :
|
||||
* Y,A = FilePath (PSTRING)
|
||||
* out :
|
||||
* Y,A = File Length
|
||||
* X = hMem of Loaded File
|
||||
*--------------------------------------
|
||||
K.LoadFileYA jsr K.MLIOpenYA
|
||||
bcc .10
|
||||
rts
|
||||
|
||||
.10 sta K.LoadFile.hRef save ref_num
|
||||
stx K.LoadFile.hBuf save Prodos Buffer for freemem
|
||||
jsr K.MLIGetEOFA
|
||||
bcs .98
|
||||
|
||||
phx Larger than 64k?
|
||||
plx
|
||||
beq .1 File too big!!!!
|
||||
lda #SYSMGR.ERRFTB
|
||||
bra .98
|
||||
|
||||
.1 >STYA K.LoadFile.Len save Length
|
||||
>PUSHYA Push Length for K.GetMem
|
||||
>PUSHBI 0
|
||||
jsr K.GetMem
|
||||
bcs .98
|
||||
|
||||
>STYA K.LoadFile.Mem
|
||||
|
||||
stx K.LoadFile.hMem save Segment hMem
|
||||
>PUSHW K.LoadFile.Len Push Length for K.MLIRead
|
||||
>PUSHW K.LoadFile.Mem Push PTR
|
||||
>PUSHB K.LoadFile.hRef Push ref_num
|
||||
jsr K.MLIRead
|
||||
bcs .97
|
||||
|
||||
jsr .98 Close File....
|
||||
|
||||
>LDYA K.LoadFile.Len Return File Length...
|
||||
ldx K.LoadFile.hMem ...and hMem to Caller
|
||||
clc
|
||||
rts
|
||||
|
||||
.97 pha
|
||||
lda K.LoadFile.hMem
|
||||
jsr K.FreeMemA freemem because of failed load
|
||||
pla
|
||||
|
||||
.98 pha
|
||||
lda K.LoadFile.hRef
|
||||
jsr K.MLICloseA
|
||||
lda K.LoadFile.hBuf
|
||||
jsr K.FreeMemA ProDOS IO Buffer
|
||||
pla
|
||||
|
||||
.99 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* PULLW = SrcPtr
|
||||
* PULLW = SrcLen
|
||||
* PULLW = PATH (Handled by....
|
||||
|
|
|
@ -9,13 +9,13 @@ AUTO 6
|
|||
* PULLW/Y,A = PATH (PSTR)
|
||||
* Out :
|
||||
*--------------------------------------
|
||||
S.PFTCHECKPATHSTK
|
||||
K.PFTCheckPathSTK
|
||||
lda (pStack) read PTR.LO on top of stack
|
||||
pha
|
||||
ldy #1
|
||||
lda (pStack),y read PTR.HI on top of stack
|
||||
ply
|
||||
S.PFTCHECKPATHYA
|
||||
K.PFTCheckPathYA
|
||||
stx S.PFT.SYSCALL save #SYSCALL
|
||||
>STYA ZPQuickPtr1
|
||||
|
||||
|
@ -67,10 +67,10 @@ S.PFTCHECKPATHYA
|
|||
* PULLB/A = hFILE/hDIR
|
||||
* Out :
|
||||
*--------------------------------------
|
||||
S.PFTCHECKFILESTK
|
||||
K.PFTCheckFileSTK
|
||||
lda (pStack) read hFILE on top of stack
|
||||
S.PFTCHECKFILEA
|
||||
S.PFTCHECKDIRA stx S.PFT.SYSCALL save #SYSCALL
|
||||
K.PFTCheckFileA
|
||||
K.PFTCheckDirA stx S.PFT.SYSCALL save #SYSCALL
|
||||
sta S.PFT.hFILE
|
||||
jsr K.GetMemPtrA X = unmidified
|
||||
>STYA ZPQuickPtr1
|
||||
|
|
|
@ -79,7 +79,7 @@ A2osX.D001.END .EQ *
|
|||
A2osX.D002 .EQ *
|
||||
.PH $D000
|
||||
.INB SYS/KERNEL.S.REL
|
||||
.INB SYS/KERNEL.S.Time
|
||||
.INB SYS/KERNEL.S.TIME
|
||||
.EP
|
||||
A2osX.D002.END .EQ *
|
||||
*--------------------------------------
|
||||
|
|
Loading…
Reference in New Issue