mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2025-02-02 06:30:04 +00:00
SAVEFILE now updates file length in OSFILE CB.
This commit is contained in:
parent
8bcaa79ec2
commit
8ac9b5e2a6
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
50
mainmem.s
50
mainmem.s
@ -516,9 +516,9 @@ SAVEFILE >>> ENTMAIN
|
|||||||
STA CREATEPL+3
|
STA CREATEPL+3
|
||||||
LDA #$06 ; Filetype BIN
|
LDA #$06 ; Filetype BIN
|
||||||
STA CREATEPL+4
|
STA CREATEPL+4
|
||||||
LDA FBSTRT ; Auxtype = start address
|
LDA FBLOAD ; Auxtype = start address
|
||||||
STA CREATEPL+5
|
STA CREATEPL+5
|
||||||
LDA FBSTRT+1
|
LDA FBLOAD+1
|
||||||
STA CREATEPL+6
|
STA CREATEPL+6
|
||||||
LDA #$01 ; Storage type - file
|
LDA #$01 ; Storage type - file
|
||||||
STA CREATEPL+7
|
STA CREATEPL+7
|
||||||
@ -537,10 +537,11 @@ SAVEFILE >>> ENTMAIN
|
|||||||
SEC ; Compute file length
|
SEC ; Compute file length
|
||||||
LDA FBEND
|
LDA FBEND
|
||||||
SBC FBSTRT
|
SBC FBSTRT
|
||||||
STA :LEN
|
STA FILELEN
|
||||||
LDA FBEND+1
|
LDA FBEND+1
|
||||||
SBC FBSTRT+1
|
SBC FBSTRT+1
|
||||||
STA :LEN+1
|
STA FILELEN+1
|
||||||
|
JSR UPDLENCB ; Update file len in CB
|
||||||
:L1 LDA FBSTRT ; Setup for first block
|
:L1 LDA FBSTRT ; Setup for first block
|
||||||
STA A1L
|
STA A1L
|
||||||
STA A2L
|
STA A2L
|
||||||
@ -567,12 +568,12 @@ SAVEFILE >>> ENTMAIN
|
|||||||
|
|
||||||
:FWD1 BRA :CANTOPEN ; Forwarding call from above
|
:FWD1 BRA :CANTOPEN ; Forwarding call from above
|
||||||
|
|
||||||
:S1 LDA :LEN+1 ; MSB of length remaining
|
:S1 LDA FILELEN+1 ; MSB of length remaining
|
||||||
CMP #$02
|
CMP #$02
|
||||||
BCS :S2 ; MSB of len >= 2 (not last)
|
BCS :S2 ; MSB of len >= 2 (not last)
|
||||||
CMP #$00 ; If no bytes left ...
|
CMP #$00 ; If no bytes left ...
|
||||||
BNE :S3
|
BNE :S3
|
||||||
LDA :LEN
|
LDA FILELEN
|
||||||
BNE :S3
|
BNE :S3
|
||||||
BRA :NORMALEND
|
BRA :NORMALEND
|
||||||
|
|
||||||
@ -580,9 +581,9 @@ SAVEFILE >>> ENTMAIN
|
|||||||
STA A2L
|
STA A2L
|
||||||
LDA FBEND+1
|
LDA FBEND+1
|
||||||
STA A2H
|
STA A2H
|
||||||
LDA :LEN
|
LDA FILELEN
|
||||||
STA WRITEPL+4 ; Remaining bytes to write
|
STA WRITEPL+4 ; Remaining bytes to write
|
||||||
LDA :LEN+1
|
LDA FILELEN+1
|
||||||
STA WRITEPL+5
|
STA WRITEPL+5
|
||||||
|
|
||||||
:S2 LDA #<BLKBUF
|
:S2 LDA #<BLKBUF
|
||||||
@ -604,12 +605,12 @@ SAVEFILE >>> ENTMAIN
|
|||||||
BRA :L1
|
BRA :L1
|
||||||
|
|
||||||
:UPDLEN SEC ; Update length remaining
|
:UPDLEN SEC ; Update length remaining
|
||||||
LDA :LEN
|
LDA FILELEN
|
||||||
SBC WRITEPL+4
|
SBC WRITEPL+4
|
||||||
STA :LEN
|
STA FILELEN
|
||||||
LDA :LEN+1
|
LDA FILELEN+1
|
||||||
SBC WRITEPL+5
|
SBC WRITEPL+5
|
||||||
STA :LEN+1
|
STA FILELEN+1
|
||||||
BRA :ENDLOOP
|
BRA :ENDLOOP
|
||||||
|
|
||||||
:CANTOPEN
|
:CANTOPEN
|
||||||
@ -628,10 +629,33 @@ SAVEFILE >>> ENTMAIN
|
|||||||
LDA #$00 ; Success!
|
LDA #$00 ; Success!
|
||||||
BCC :EXIT ; If close OK
|
BCC :EXIT ; If close OK
|
||||||
LDA #$02 ; Write error
|
LDA #$02 ; Write error
|
||||||
|
LDA #<MOSFILE
|
||||||
|
STA GINFOPL+1
|
||||||
|
LDA #>MOSFILE
|
||||||
|
STA GINFOPL+2
|
||||||
|
JSR MLI ; Call GET_FILE_INFO
|
||||||
|
DB GINFOCMD
|
||||||
|
DW GINFOPL
|
||||||
|
BCS :EXIT
|
||||||
|
LDA #$02 ; Write error
|
||||||
:EXIT JSR COPYFB ; Copy FILEBLK to aux mem
|
:EXIT JSR COPYFB ; Copy FILEBLK to aux mem
|
||||||
>>> XF2AUX,OSFILERET
|
>>> XF2AUX,OSFILERET
|
||||||
:LEN DW $0000
|
|
||||||
:BLOCKS DB $00
|
:BLOCKS DB $00
|
||||||
|
FILELEN DW $0000
|
||||||
|
|
||||||
|
* Update file length in copy of OSFILE CB in main mem
|
||||||
|
UPDLENCB LDA FILELEN ; Update CB with file len
|
||||||
|
STA FBSTRT+0
|
||||||
|
LDA FILELEN+1
|
||||||
|
STA FBSTRT+1
|
||||||
|
STZ FBSTRT+2
|
||||||
|
STZ FBSTRT+3
|
||||||
|
STZ FBEND+1
|
||||||
|
STZ FBEND+2
|
||||||
|
STZ FBEND+3
|
||||||
|
LDA #$33 ; WHY?
|
||||||
|
STA FBEND
|
||||||
|
RTS
|
||||||
|
|
||||||
* Quit to ProDOS
|
* Quit to ProDOS
|
||||||
QUIT INC $3F4 ; Invalidate powerup byte
|
QUIT INC $3F4 ; Invalidate powerup byte
|
||||||
|
Loading…
x
Reference in New Issue
Block a user