mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2025-02-08 15:30:41 +00:00
OSARGS 'Get Pointer' function now works (PTR# in BASIC)
This commit is contained in:
parent
f68f268806
commit
6daa528396
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
21
auxmem.s
21
auxmem.s
@ -392,34 +392,35 @@ ARGSHND PHA
|
||||
BNE :S2
|
||||
* TODO: Implement this for *RUN and *command
|
||||
JSR BEEP
|
||||
BRA :EXIT
|
||||
BRA :IEXIT
|
||||
:S2 CMP #$FF ; Y=0,A=FF => flush all files
|
||||
BNE :IEXIT
|
||||
STA $C004 ; Write main memory
|
||||
STZ MOSFILE ; Zero means flush all
|
||||
STA $C005 ; Write aux memory
|
||||
BRA :FLUSH
|
||||
:HASFILE CMP #$00 ; Y!=0,A=0 => read seq ptr
|
||||
: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
|
||||
*TODO READ SEQ PTR
|
||||
BRA :EXIT
|
||||
>>> XF2MAIN,TELL
|
||||
:IEXIT BRA :EXIT
|
||||
:S3 CMP #$01 ; Y!=0,A=1 => write seq ptr
|
||||
BNE :S4
|
||||
*TODO WRT SEQ PTR
|
||||
>>> XF2MAIN,SEEK
|
||||
BRA :EXIT
|
||||
:S4 CMP #$02 ; Y!=0,A=2 => read file len
|
||||
BNE :S5
|
||||
*TODO READ FILE LEN
|
||||
>>> XF2MAIN,STAT
|
||||
:S5 CMP #$FF ; Y!=0,A=FF => flush file
|
||||
BNE :EXIT
|
||||
STA $C004 ; Write main memory
|
||||
STY MOSFILE ; File ref num
|
||||
STA $C005 ; Write aux memory
|
||||
:FLUSH >>> XF2MAIN,FLUSH
|
||||
:EXIT PLY
|
||||
PLX
|
||||
PLA
|
||||
RTS
|
||||
|
||||
OSARGSRET
|
||||
>>> ENTAUX
|
||||
PLY
|
||||
|
46
mainmem.s
46
mainmem.s
@ -294,6 +294,52 @@ 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
|
||||
TELL >>> ENTMAIN
|
||||
LDA MOSFILE ; File ref number
|
||||
STA GMARKPL+1
|
||||
JSR MLI
|
||||
DB GMARKCMD
|
||||
DW GMARKPL
|
||||
LDX MOSFILE+1 ; Pointer to ZP control block
|
||||
BCS :ERR
|
||||
LDA $C08B ; R/W LC RAM, bank 1
|
||||
LDA $C08B
|
||||
STA $C009 ; Alt ZP on
|
||||
LDA GMARKPL+2
|
||||
STA $00,X
|
||||
LDA GMARKPL+3
|
||||
STA $01,X
|
||||
LDA GMARKPL+4
|
||||
STA $02,X
|
||||
STZ $03,X
|
||||
STA $C008 ; Alt ZP off
|
||||
LDA $C081 ; Bank the ROM back in
|
||||
LDA $C081
|
||||
:EXIT >>> XF2AUX,OSARGSRET
|
||||
:ERR LDX MOSFILE+1 ; Address of ZP control block
|
||||
LDA $C08B
|
||||
LDA $C08B
|
||||
STA $C009
|
||||
STZ $00,X
|
||||
STZ $01,X
|
||||
STZ $02,X
|
||||
STZ $03,X
|
||||
STZ $C008
|
||||
LDA $C081
|
||||
LDA $C081
|
||||
BRA :EXIT
|
||||
|
||||
* ProDOS file handling for MOS OSFILE LOAD call
|
||||
* Return A=0 if successful
|
||||
* A=1 if file not found
|
||||
|
Loading…
x
Reference in New Issue
Block a user