The code is for basic 4, the comments shows calls for basic 2.
working code is
"LOAD" sample
LDA #FNTABLE.LO ;PLACE POINTER TO FILE NAME IN ($DA)
STA $DA
LDA #FNTABLE.HI
STA $DB
LDA #$00 ; SPECIFY ADDRESS TO LOAD TO (IGNORE ADDRESS IN FILE)
STA $FB ; IN THIS SAMPLE LOAD DIRECTLY TO THE SCREEN ($8000)
LDA #$80
STA $FC
LDA #FNTABLE.LENGTH ; SET FILENAME LENGTH (5 IN THIS CASE)
STA $D1
LDA #$08 ; SET DEVICE ADDRESS (8 IS DISK DRIVE)
STA $D4
LDA #$00
STA $9D ; SPECIFY LOAD (AS OPPOSED TO LOAD/VERIFY)
STA $96 ; CLEAR THE STATUS BYTE
LDA #$60 ; SET SECONDARY ADDRESS TO 0 (OR'ED WITH #60)
STA $D3
JSR $F4A5 ; SEND NAME TO IEEE (F466 IN BASIC 2)
JSR $F0D2 ; SEND 'TALK' (F0B6 IN BASIC 2)
LDA $D3
JSR $F193 ; SEND SECONDARY ADDRESS (F128 IN BASIC 2)
JSR $F1C0 ; GET LOW BYTE OF ADDRESS (F18C IN BASIC 2) - USE IT IF YOU WANT, GOES INTO $FB
LDA $96 ; CHECK STATUS BIT (2ND FROM RIGHT)
LSR A
LSR A
BCC CNT ; STATUS OK, SKIP ERROR OUT
JMP $F3C1 ; ABORT FILES, PRINT ?FILE NOT FOUND ERROR AND EXIT (F56E IN BASIC 2)
CNT JSR $F1C0 ; GET HIGH BYTE OF ADDRESS
JSR $F1C0 ; READ 1 MORE BYTE TO SETUP FOR LOAD ROUTINE
JSR $F391 ; REJOIN LOAD (WITHOUT PRINTING 'LOADING ...'). (F355 IN BASIC 2)
RTS
.FNTABLE "FILE1" ($46 $49 $4C $45 $31)
"SAVE" sample
LDA #FNTABLE.LO ;PLACE POINTER TO FILE NAME IN ($DA)
STA $DA
LDA #FNTABLE.HI
STA $DB
LDA #$00 ; SPECIFY SAVE START ADDRESS
STA $FB ; IN THIS SAMPLE SAVE DIRECTLY FROM THE SCREEN ($8000)
LDA #$80
STA $FC
LDA #$E9 ; SPECIFY SAVE END ADDRESS +1 (BOTTOM RIGHT OF SCREEN)
STA $C9 ; IN THIS SAMPLE SAVE DIRECTLY FROM THE SCREEN ($83E8)
LDA #$83
STA $CA
LDA #FNTABLE.LENGTH ; SET FILENAME LENGTH (5 IN THIS CASE)
STA $D1
LDA #$08 ; SET DEVICE ADDRESS (8 IS DISK DRIVE)
STA $D4
LDA #$00
STA $96 ; CLEAR THE STATUS BYTE
LDA #$61 ; SET SECONDARY ADDRESS TO 1 (OR'ED WITH #60)
STA $D3
JSR $F6E3 ; PREFORM "SAVE" (F6A4 IN BASIC 2)
RTS
.FNTABLE "FILE1" ($46 $49 $4C $45 $31)
The code is for basic 4, the comments shows calls for basic 2.
working code is
"LOAD" sample
CNT JSR $F1C0 ; GET HIGH BYTE OF ADDRESS
JSR $F1C0 ; READ 1 MORE BYTE TO SETUP FOR LOAD ROUTINE
JSR $F391 ; REJOIN LOAD (WITHOUT PRINTING 'LOADING ...'). (F355 IN BASIC 2)
RTS
.FNTABLE "FILE1" ($46 $49 $4C $45 $31)
"SAVE" sample
.FNTABLE "FILE1" ($46 $49 $4C $45 $31)