Skip to content

Pet load and save routines tested and seem to work ok please add #257

Description

@davejduke

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions