Help wanted: saving files for Sedoric in asm
Posted: Sun Jun 28, 2015 2:23 pm
Related to my post about BigMac for Oric, I have quieston:
How to save file to Sedoric dsk from assembler, but to change the default load address?
I tried to use the 'Execution address' as additional parameter - it works as expected, but this is not my case .
To be more specific here is the problem:
I want to save memory area $9C00-$9CFF as binary executable file 'TEST', but when executed it need to be loaded at address $1000.
I.e. typing: !TEST - need to load the file at $1000 and jump to $1000.
Here is the code I use:
Used variables:
_sed_exe_begin, _sed_exe_end - memory area to be saved
_sed_exe - address to be jumped to when loaded
This routine works, but it loads the file at $9C00, and jumps to $1000 - which obviously lead to crash...
I looked in 'Sedoric 3.0 a Nu' - but my French is to far from usable.
Any ideas and help are highly appreciated!
How to save file to Sedoric dsk from assembler, but to change the default load address?
I tried to use the 'Execution address' as additional parameter - it works as expected, but this is not my case .
To be more specific here is the problem:
I want to save memory area $9C00-$9CFF as binary executable file 'TEST', but when executed it need to be loaded at address $1000.
I.e. typing: !TEST - need to load the file at $1000 and jump to $1000.
Here is the code I use:
Code: Select all
_sed_savefile_exe
.(
; -- sei ; disable interrupts
lda _sed_fname
sta $e9 ; Filename lo
lda _sed_fname+1
sta $ea ; Filename hi
jsr _dosrom ; enable OverlayRAM
lda #$00
jsr $d454 ; verify filename and copy it to BUFNOM
;Setup Areas
lda _sed_exe_begin
sta $c052 ; Start Address Lo
lda _sed_exe_begin+1
sta $c053 ; Start Address Hi
lda _sed_exe_end
sta $c054 ; End Address Lo
lda _sed_exe_end+1
sta $c055 ; End Address Hi
lda _sed_exe
sta $c056 ; Execution Address Lo
lda _sed_exe+1
sta $c057 ; Execution Address Hi
lda #$00 ; #$00 - SAVEO, #$C0 - SAVEU
sta $c04d
lda #$00 ; 0 here means no params
sta $c04e
lda #$41 ; file type - program and auto
sta $c051
jsr $de0b ; set LGSAL0 and call XSAVEB
jsr _dosrom ; disable Overlay RAM
; -- cli ; re-enable interrupts
ldx _doserr ; Get result (low byte)
lda #0 ; Get result (high byte)
rts
.)
_sed_exe_begin, _sed_exe_end - memory area to be saved
_sed_exe - address to be jumped to when loaded
This routine works, but it loads the file at $9C00, and jumps to $1000 - which obviously lead to crash...
I looked in 'Sedoric 3.0 a Nu' - but my French is to far from usable.
Any ideas and help are highly appreciated!