Kernal SAVE routine now works
This commit is contained in:
1 parent
dd09e2432e
commit
0e28f89806
13 files changed
+30
-49
No files matched your search
+11
-24
@@ -4,20 +4,12 @@
|
||||
//
|
||||
|
||||
|
||||
// XXX this is untested!
|
||||
// also test STAL/EAL - Open ROMs vs hybrid vs original
|
||||
|
||||
|
||||
|
||||
#if CONFIG_IEC
|
||||
|
||||
|
||||
save_iec_dev_not_found:
|
||||
jmp lvs_device_not_found_error
|
||||
|
||||
save_iec_error:
|
||||
jmp lvs_device_not_found_error // XXX find a better error
|
||||
|
||||
|
||||
save_iec:
|
||||
|
||||
@@ -40,7 +32,7 @@ save_iec:
|
||||
|
||||
// Send file name
|
||||
jsr iec_send_file_name
|
||||
bcs save_iec_error
|
||||
bcs save_iec_dev_not_found
|
||||
|
||||
// Call device to LISTEN once again
|
||||
lda FA
|
||||
@@ -50,9 +42,9 @@ save_iec:
|
||||
lda #$61 // open channel / data (p3) , required according to p13
|
||||
sta TBTCNT
|
||||
jsr iec_tx_command
|
||||
bcs save_iec_error
|
||||
bcs save_iec_dev_not_found
|
||||
|
||||
// Save start address XXX optimize this
|
||||
// Save start address
|
||||
lda STAL+0
|
||||
sta TBTCNT
|
||||
clc
|
||||
@@ -63,31 +55,26 @@ save_iec:
|
||||
clc
|
||||
jsr iec_tx_byte
|
||||
|
||||
jsr lvs_setup_MEMUSS
|
||||
ldy #$00
|
||||
iec_save_loop:
|
||||
|
||||
// Retrieve byte to send
|
||||
#if CONFIG_MEMORY_MODEL_60K
|
||||
ldx #<STAL+0
|
||||
ldx #<MEMUSS+0
|
||||
jsr peek_under_roms
|
||||
#else // CONFIG_MEMORY_MODEL_38K
|
||||
lda (STAL),y
|
||||
lda (MEMUSS),y
|
||||
#endif
|
||||
|
||||
// Check if end of saving
|
||||
ldx STAL+0
|
||||
cpx EAL+0
|
||||
bne !+
|
||||
ldx STAL+1
|
||||
cpx EAL+1
|
||||
beq iec_save_loop_end
|
||||
!:
|
||||
// Send the byte and do next iteration
|
||||
// Send the byte
|
||||
sta TBTCNT
|
||||
clc
|
||||
jsr iec_tx_byte
|
||||
jsr lvs_advance_STAL
|
||||
jmp iec_save_loop
|
||||
|
||||
// Next iteration
|
||||
jsr lvs_advance_MEMUSS_check_EAL
|
||||
bne iec_save_loop
|
||||
|
||||
iec_save_loop_end:
|
||||
|
||||
|
||||
@@ -77,16 +77,6 @@ lvs_handle_byte_verify:
|
||||
|
||||
#if CONFIG_IEC
|
||||
|
||||
lvs_advance_STAL:
|
||||
|
||||
// Advance pointer
|
||||
inc STAL+0
|
||||
bne !+
|
||||
inc STAL+1
|
||||
!:
|
||||
rts
|
||||
|
||||
|
||||
lvs_advance_EAL:
|
||||
|
||||
// Advance pointer
|
||||
@@ -98,7 +88,15 @@ lvs_advance_EAL:
|
||||
|
||||
#endif
|
||||
|
||||
#if CONFIG_TAPE_NORMAL || CONFIG_TAPE_TURBO
|
||||
#if CONFIG_TAPE_NORMAL || CONFIG_TAPE_TURBO || CONFIG_IEC
|
||||
|
||||
lvs_setup_MEMUSS:
|
||||
|
||||
lda STAL+0
|
||||
sta MEMUSS+0
|
||||
lda STAL+1
|
||||
sta MEMUSS+1
|
||||
rts
|
||||
|
||||
lvs_advance_MEMUSS_check_EAL:
|
||||
|
||||
@@ -224,7 +222,6 @@ lvs_display_saving:
|
||||
iny
|
||||
bne !- // jump alwayys
|
||||
!:
|
||||
jsr print_return
|
||||
rts
|
||||
|
||||
|
||||
|
||||
@@ -210,10 +210,7 @@ tape_handle_header:
|
||||
!:
|
||||
// Setup MEMUSS (see Mapping the C64, page 36)
|
||||
|
||||
lda STAL+0
|
||||
sta MEMUSS+0
|
||||
lda STAL+1
|
||||
sta MEMUSS+1
|
||||
jsr lvs_setup_MEMUSS
|
||||
|
||||
// Print LOADING and start address
|
||||
|
||||
|
||||
Reference in new issue
Block a user