From 136cb528f750759f6d57cf12a3d66cdbb53cb857 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Wed, 22 Jan 2020 20:58:06 +0100 Subject: [PATCH] small size optimization in tape support code --- c64/,,config_custom.s | 2 +- c64/,,config_generic.s | 2 +- c64/kernal/tape/load_tape_normal.s | 21 ++---------------- c64/kernal/tape/tape_normal_get_data.s | 8 ------- c64/kernal/tape/tape_normal_update_checksum.s | 22 +++++++++++++++++++ 5 files changed, 26 insertions(+), 29 deletions(-) create mode 100644 c64/kernal/tape/tape_normal_update_checksum.s diff --git a/c64/,,config_custom.s b/c64/,,config_custom.s index 60fa3d47..22206333 100644 --- a/c64/,,config_custom.s +++ b/c64/,,config_custom.s @@ -56,7 +56,7 @@ #define CONFIG_TAPE_NORMAL #define CONFIG_TAPE_TURBO -#define CONFIG_TAPE_AUTODETECT // mostly works, but not fullyy done yet! +#define CONFIG_TAPE_AUTODETECT // mostly works, but not fully done yet! // #define CONFIG_TAPE_NO_KEY_SENSE // #define CONFIG_TAPE_NO_MOTOR_CONTROL diff --git a/c64/,,config_generic.s b/c64/,,config_generic.s index 4195ef46..ef1c11d6 100644 --- a/c64/,,config_generic.s +++ b/c64/,,config_generic.s @@ -48,7 +48,7 @@ #define CONFIG_IEC_JIFFYDOS #define CONFIG_IEC_JIFFYDOS_BLANK -#define CONFIG_TAPE_NORMAL +// #define CONFIG_TAPE_NORMAL #define CONFIG_TAPE_TURBO // #define CONFIG_TAPE_NO_KEY_SENSE // #define CONFIG_TAPE_NO_MOTOR_CONTROL diff --git a/c64/kernal/tape/load_tape_normal.s b/c64/kernal/tape/load_tape_normal.s index 32d40b8f..383de31a 100644 --- a/c64/kernal/tape/load_tape_normal.s +++ b/c64/kernal/tape/load_tape_normal.s @@ -56,18 +56,11 @@ load_tape_normal_takeover: // entry point for turbo->normal takeover #endif - // Temporarily store MEMUSS in EAL - - lda MEMUSS+1 - sta EAL+1 - lda MEMUSS+0 - sta EAL+0 - // FALLTROUGH load_tape_normal_header: - // Try to load header into tape buffer + // Try to load header into tape buffer (we will restore MEMUSS later) lda TAPE1+1 sta MEMUSS+1 @@ -98,7 +91,7 @@ load_tape_normal_header: !: // Restore MEMUSS, handle header - jsr load_tape_normal_restore_MEMUSS + jsr lvs_setup_MEMUSS jsr tape_handle_header bcs load_tape_normal_header // if name does not match, look for other header @@ -119,14 +112,4 @@ load_tape_normal_payload: jmp tape_load_success -load_tape_normal_restore_MEMUSS: - - lda EAL+1 - sta MEMUSS+1 - lda EAL+0 - sta MEMUSS+0 - - rts - - #endif diff --git a/c64/kernal/tape/tape_normal_get_data.s b/c64/kernal/tape/tape_normal_get_data.s index ea7e811e..34e16f9d 100644 --- a/c64/kernal/tape/tape_normal_get_data.s +++ b/c64/kernal/tape/tape_normal_get_data.s @@ -138,12 +138,4 @@ tape_normal_get_data_fail: rts -tape_normal_update_checksum: - - lda INBIT - eor RIPRTY - sta RIPRTY - rts - - #endif diff --git a/c64/kernal/tape/tape_normal_update_checksum.s b/c64/kernal/tape/tape_normal_update_checksum.s new file mode 100644 index 00000000..d808f872 --- /dev/null +++ b/c64/kernal/tape/tape_normal_update_checksum.s @@ -0,0 +1,22 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * KERNAL_0 #TAKE +// #LAYOUT# * * #IGNORE + +// +// Tape (normal) helper routine - checksum calculation +// + + +#if CONFIG_TAPE_NORMAL + + +tape_normal_update_checksum: + + lda INBIT + eor RIPRTY + sta RIPRTY + + rts + + +#endif