mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-02 11:41:30 +00:00
Add UPDFB: update FILEBLK after LOADFILE/SAVEFILE.
This commit is contained in:
parent
8d12c531cc
commit
ac256afdfd
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
56
mainmem.s
56
mainmem.s
|
@ -473,7 +473,8 @@ LOADFILE >>> ENTMAIN
|
||||||
:EOF2 LDA OPENPL+5 ; File ref num
|
:EOF2 LDA OPENPL+5 ; File ref num
|
||||||
STA CLSPL+1
|
STA CLSPL+1
|
||||||
JSR CLSFILE
|
JSR CLSFILE
|
||||||
:EXIT JSR COPYFB ; Copy FILEBLK to auxmem
|
:EXIT JSR UPDFB ; Update FILEBLK
|
||||||
|
JSR COPYFB ; Copy FILEBLK to auxmem
|
||||||
>>> XF2AUX,OSFILERET
|
>>> XF2AUX,OSFILERET
|
||||||
:BLOCKS DB $00
|
:BLOCKS DB $00
|
||||||
|
|
||||||
|
@ -516,9 +517,9 @@ SAVEFILE >>> ENTMAIN
|
||||||
STA CREATEPL+3
|
STA CREATEPL+3
|
||||||
LDA #$06 ; Filetype BIN
|
LDA #$06 ; Filetype BIN
|
||||||
STA CREATEPL+4
|
STA CREATEPL+4
|
||||||
LDA FBLOAD ; Auxtype = start address
|
LDA FBSTRT ; Auxtype = start address
|
||||||
STA CREATEPL+5
|
STA CREATEPL+5
|
||||||
LDA FBLOAD+1
|
LDA FBSTRT+1
|
||||||
STA CREATEPL+6
|
STA CREATEPL+6
|
||||||
LDA #$01 ; Storage type - file
|
LDA #$01 ; Storage type - file
|
||||||
STA CREATEPL+7
|
STA CREATEPL+7
|
||||||
|
@ -538,11 +539,9 @@ SAVEFILE >>> ENTMAIN
|
||||||
LDA FBEND
|
LDA FBEND
|
||||||
SBC FBSTRT
|
SBC FBSTRT
|
||||||
STA :LENREM
|
STA :LENREM
|
||||||
STA FILELEN
|
|
||||||
LDA FBEND+1
|
LDA FBEND+1
|
||||||
SBC FBSTRT+1
|
SBC FBSTRT+1
|
||||||
STA :LENREM+1
|
STA :LENREM+1
|
||||||
STA FILELEN+1
|
|
||||||
:L1 LDA FBSTRT ; Setup for first block
|
:L1 LDA FBSTRT ; Setup for first block
|
||||||
STA A1L
|
STA A1L
|
||||||
STA A2L
|
STA A2L
|
||||||
|
@ -639,26 +638,57 @@ SAVEFILE >>> ENTMAIN
|
||||||
DW GINFOPL
|
DW GINFOPL
|
||||||
BCS :EXIT
|
BCS :EXIT
|
||||||
LDA #$02 ; Write error
|
LDA #$02 ; Write error
|
||||||
:EXIT JSR UPDLENFB ; Update length in FILEBLK
|
:EXIT JSR UPDFB ; Update FILEBLK
|
||||||
JSR COPYFB ; Copy FILEBLK to aux mem
|
JSR COPYFB ; Copy FILEBLK to aux mem
|
||||||
>>> XF2AUX,OSFILERET
|
>>> XF2AUX,OSFILERET
|
||||||
:BLOCKS DB $00
|
:BLOCKS DB $00
|
||||||
:LENREM DW $0000 ; Remaining length
|
:LENREM DW $0000 ; Remaining length
|
||||||
FILELEN DW $0000 ; Total length
|
|
||||||
|
|
||||||
* Update file length in FILEBLK
|
* Update FILEBLK before returning to aux memory
|
||||||
UPDLENFB LDA FILELEN ; Update CB with file len
|
UPDFB LDA #<MOSFILE
|
||||||
|
STA OPENPL+1
|
||||||
|
STA GINFOPL+1
|
||||||
|
LDA #>MOSFILE
|
||||||
|
STA OPENPL+2
|
||||||
|
STA GINFOPL+2
|
||||||
|
JSR MLI ; Call GET_FILE_INFO
|
||||||
|
DB GINFOCMD
|
||||||
|
DW GINFOPL
|
||||||
|
BCS :ERR
|
||||||
|
LDA GINFOPL+5 ; Aux type LSB
|
||||||
|
STA FBLOAD
|
||||||
|
STA FBEXEC
|
||||||
|
LDA GINFOPL+6 ; Aux type MSB
|
||||||
|
STA FBLOAD+1
|
||||||
|
STA FBEXEC+1
|
||||||
|
STZ FBLOAD+2
|
||||||
|
STZ FBLOAD+3
|
||||||
|
STZ FBEXEC+2
|
||||||
|
STZ FBEXEC+3
|
||||||
|
JSR OPENFILE ; Open file
|
||||||
|
BCS :ERR
|
||||||
|
LDA OPENPL+5 ; File ref number
|
||||||
|
STA GMARKPL+1
|
||||||
|
JSR MLI ; Call GET_EOF MLI
|
||||||
|
DB GEOFCMD
|
||||||
|
DW GMARKPL ; MARK parms same as EOF
|
||||||
|
LDA GMARKPL+2
|
||||||
STA FBSTRT+0
|
STA FBSTRT+0
|
||||||
LDA FILELEN+1
|
LDA GMARKPL+3
|
||||||
STA FBSTRT+1
|
STA FBSTRT+1
|
||||||
STZ FBSTRT+2
|
LDA GMARKPL+4
|
||||||
|
STA FBSTRT+2
|
||||||
STZ FBSTRT+3
|
STZ FBSTRT+3
|
||||||
|
LDA #$33 ; 'W/R' attribs
|
||||||
|
STA FBEND+0
|
||||||
STZ FBEND+1
|
STZ FBEND+1
|
||||||
STZ FBEND+2
|
STZ FBEND+2
|
||||||
STZ FBEND+3
|
STZ FBEND+3
|
||||||
LDA #$33 ; W/R attributes
|
LDA #$33 ; W/R attributes
|
||||||
STA FBEND
|
LDA OPENPL+5 ; File ref numbre
|
||||||
RTS
|
STA CLSPL+1
|
||||||
|
JSR CLSFILE
|
||||||
|
:ERR RTS
|
||||||
|
|
||||||
* Quit to ProDOS
|
* Quit to ProDOS
|
||||||
QUIT INC $3F4 ; Invalidate powerup byte
|
QUIT INC $3F4 ; Invalidate powerup byte
|
||||||
|
|
Loading…
Reference in New Issue
Block a user