Kernal SAVE routine now works

This commit is contained in:
FeralChild64 committed 2019-11-07 20:09:37 +01:00
1 parent dd09e2432e
commit 0e28f89806
13 files changed
+30 -49

No files matched your search

+11 -24
View File
@@ -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:
+9 -12
View File
@@ -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
+1 -4
View File
@@ -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