Added OSARGS call to support EXT# in BASIC (file length)

This commit is contained in:
Bobbi Webber-Manners 2021-08-01 15:52:11 -04:00
parent 6daa528396
commit a5a61f82d0
3 changed files with 18 additions and 8 deletions

Binary file not shown.

View File

@ -398,22 +398,29 @@ ARGSHND PHA
STA $C004 ; Write main memory
STZ MOSFILE ; Zero means flush all
STA $C005 ; Write aux memory
BRA :FLUSH
BRA :IFLUSH
:HASFILE STA $C004 ; Write main memory
STY MOSFILE ; File ref num
STX MOSFILE+1 ; Pointer to ZP control block
STA $C005 ; Write aux memory
CMP #$00 ; Y!=0,A=0 => read seq ptr
BNE :S3
STA $C004 ; Write main
STZ MOSFILE+2 ; 0 means get pos
STA $C005 ; Write aux
>>> XF2MAIN,TELL
:IEXIT BRA :EXIT
:IFLUSH BRA :FLUSH
:S3 CMP #$01 ; Y!=0,A=1 => write seq ptr
BNE :S4
>>> XF2MAIN,SEEK
BRA :EXIT
:S4 CMP #$02 ; Y!=0,A=2 => read file len
BNE :S5
>>> XF2MAIN,STAT
STA $C004 ; Write main
STA MOSFILE+2 ; Non-zero means get len
STA $C005 ; Write aux
>>> XF2MAIN,TELL
:S5 CMP #$FF ; Y!=0,A=FF => flush file
BNE :EXIT
:FLUSH >>> XF2MAIN,FLUSH

View File

@ -294,24 +294,27 @@ FLUSH >>> ENTMAIN
DW FLSHPL
>>> XF2AUX,OSARGSRET
* ProDOS file handling for OSARGS get len command
STAT >>> ENTMAIN
LDA MOSFILE ; File ref number
>>> XF2AUX,OSARGSRET
* ProDOS file handling for OSARGS set ptr command
SEEK >>> ENTMAIN
LDA MOSFILE ; File ref number
>>> XF2AUX,OSARGSRET
* ProDOS file handling for OSARGS get ptr command
* and for OSARGs get length command
TELL >>> ENTMAIN
LDA MOSFILE ; File ref number
STA GMARKPL+1
LDA MOSFILE+2 ; Mode (0=pos, otherwise len)
CMP #$00
BEQ :POS
JSR MLI
DB GEOFCMD
DW GMARKPL ; MARK parms same as EOF parms
BRA :S1
:POS JSR MLI
DB GMARKCMD
DW GMARKPL
LDX MOSFILE+1 ; Pointer to ZP control block
:S1 LDX MOSFILE+1 ; Pointer to ZP control block
BCS :ERR
LDA $C08B ; R/W LC RAM, bank 1
LDA $C08B