Subj : Re: Closing a file in Assembly on the VIC-20
To : Lawrence Woodman
From : Tilmann Hentze
Date : Thu Jun 17 2021 11:29 am
Lawrence Woodman <
[email protected]> wrote:
> I have created a piece of code which replicates the problem below if
> anyone has any ideas where I'm going wrong I'd be very grateful.
> ; Basic Stub
> TOK_SYS = $9E ; SYS token
> .byt $01, $10 ; Load address ($1001)
> * = $1001
> .word basicEnd ; Next Line link, here end of Basic program
> .word 1 ; The line number for the SYS statement
> .byt TOK_SYS ; SYS token
> .asc " "
> .asc "4110" ; Start of machine language
> .byt 0 ; End of Basic line
> basicEnd .word 0 ; End of Basic program
> ; KERNEL/BASIC ROM Routines
> CLOSE = $FFC3
> SAVE = $FFD8
> SETLFS = $FFBA
> SETNAM = $FFBD
> main
> lda #$07 ; Length of file name
> ldx #<filename ; Low byte of file name location
> ldy #>filename ; High byte of file name location
> jsr SETNAM ; Set the name
> lda #$08 ; Logical file number
> ldx #$08 ; Device number
> ldy #$01 ; Secondary address - $01 because saving
> jsr SETLFS ; Set above parameters
I'd switch the two previous blocks around, so that you first set up the
channel and then set the file name.
> lda #<flash ; Low byte of start of memory block to save
> sta $C1
> lda #>flash ; High byte of start of memory block to save
> sta $C2
> lda #$C1 ; Pointer to location of start address
> ldx #<(flashend+1) ; Low byte of (end of memory block + 1)
> ldy #>(flashend+1) ; High byte of (end of memory block + 1)
The high byte should probaly only increment, when the low byte is $ff.
> jsr SAVE ; Perform save
> lda #$08 ; Logical file number
> jsr CLOSE ; Close the file
Looks good to me. Perhaps it will work with the first mentioned change?
Best regards,
Tilmann.
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)