====== Loading a file to memory at address stored in file ======
BASIC code:
LOAD "JUST A FILENAME",8,1
Assembler code:
LDA #fname_end-fname
LDX #fname
JSR $FFBD ; call SETNAM
LDA #$01
LDX $BA ; last used device number
BNE .skip
LDX #$08 ; default to device 8
.skip LDY #$01 ; not $01 means: load to address stored in file
JSR $FFBA ; call SETLFS
LDA #$00 ; $00 means: load to memory (not verify)
JSR $FFD5 ; call LOAD
BCS .error ; if carry set, a load error has happened
RTS
.error
; Accumulator contains BASIC error code
; most likely errors:
; A = $05 (DEVICE NOT PRESENT)
; A = $04 (FILE NOT FOUND)
; A = $1D (LOAD ERROR)
; A = $00 (BREAK, RUN/STOP has been pressed during loading)
... error handling ...
RTS
fname: .TEXT "JUST A FILENAME"
fname_end:
====== Loading a file to memory at a specified address======
BASIC code:
LOAD "JUST A FILENAME",8
Assembler code:
load_address = $2000 ; just an example
LDA #fname_end-fname
LDX #fname
JSR $FFBD ; call SETNAM
LDA #$01
LDX $BA ; last used device number
BNE .skip
LDX #$08 ; default to device 8
.skip LDY #$00 ; $00 means: load to new address
JSR $FFBA ; call SETLFS
LDX #load_address
LDA #$00 ; $00 means: load to memory (not verify)
JSR $FFD5 ; call LOAD
BCS .error ; if carry set, a load error has happened
RTS
.error
; Accumulator contains BASIC error code
; most likely errors:
; A = $05 (DEVICE NOT PRESENT)
; A = $04 (FILE NOT FOUND)
; A = $1D (LOAD ERROR)
; A = $00 (BREAK, RUN/STOP has been pressed during loading)
... error handling ...
RTS
fname: .TEXT "JUST A FILENAME"
fname_end: