From b2623f9ec80a9f0f5ec68b6fe92b62fd83d1e078 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Thu, 22 Oct 2020 15:20:58 +0200 Subject: [PATCH] for CRT ROM layout, moved tape support to external ROM --- src/,,config_generic_crt.s | 2 +- src/basic/board_m65/4000.interop | 1 + .../board_crt/8000.crt_vectable_kernal_1.s | 40 +++++++++++ src/kernal/board_crt/8000.interop | 1 + src/kernal/board_crt/crt_imports.s | 49 +++++++++++++ src/kernal/board_crt/crt_proxies.s | 72 +++++++++++++++++++ src/kernal/board_crt/crt_redirect_tape.s | 46 ++++++++++++ .../board_crt/crt_tape_normal_byte_store.s | 17 +++++ src/kernal/board_crt/dummy.s | 4 -- src/kernal/board_m65/4000.interop | 2 +- .../board_m65/4000.mega65_vectable_kernal_1.s | 1 - src/kernal/tape/load_tape_normal.s | 2 +- src/kernal/tape/load_tape_turbo.s | 2 +- src/kernal/tape/tape_common.s | 2 +- src/kernal/tape/tape_common_autodetect.s | 2 +- src/kernal/tape/tape_common_clean_sid.s | 2 +- src/kernal/tape/tape_common_ditch_verify.s | 2 +- src/kernal/tape/tape_common_get_pulse.s | 2 +- src/kernal/tape/tape_common_prepare_cia.s | 2 +- src/kernal/tape/tape_common_screen.s | 2 +- src/kernal/tape/tape_head_align.s | 2 +- src/kernal/tape/tape_head_align_gen_code.s | 2 +- src/kernal/tape/tape_head_align_get_pulse.s | 2 +- src/kernal/tape/tape_head_align_help.s | 2 +- src/kernal/tape/tape_head_align_irq.s | 2 +- src/kernal/tape/tape_normal_calibrate.s | 2 +- src/kernal/tape/tape_normal_get_bit.s | 2 +- src/kernal/tape/tape_normal_get_byte.s | 2 +- src/kernal/tape/tape_normal_get_data_1.s | 2 +- src/kernal/tape/tape_normal_get_data_2.s | 2 +- src/kernal/tape/tape_normal_get_marker.s | 2 +- src/kernal/tape/tape_normal_get_pilot.s | 2 +- src/kernal/tape/tape_normal_sync.s | 2 +- src/kernal/tape/tape_normal_update_checksum.s | 2 +- src/kernal/tape/tape_turbo_bytestore.s | 16 ++++- src/kernal/tape/tape_turbo_get_bit.s | 2 +- src/kernal/tape/tape_turbo_get_byte.s | 2 +- src/kernal/tape/tape_turbo_sync.s | 2 +- src/kernal/tape/tape_turbo_sync_first.s | 2 +- 39 files changed, 268 insertions(+), 37 deletions(-) create mode 100644 src/basic/board_m65/4000.interop create mode 100644 src/kernal/board_crt/8000.crt_vectable_kernal_1.s create mode 100644 src/kernal/board_crt/8000.interop create mode 100644 src/kernal/board_crt/crt_imports.s create mode 100644 src/kernal/board_crt/crt_proxies.s create mode 100644 src/kernal/board_crt/crt_redirect_tape.s create mode 100644 src/kernal/board_crt/crt_tape_normal_byte_store.s delete mode 100644 src/kernal/board_crt/dummy.s diff --git a/src/,,config_generic_crt.s b/src/,,config_generic_crt.s index b673a23f..75a312b4 100644 --- a/src/,,config_generic_crt.s +++ b/src/,,config_generic_crt.s @@ -109,7 +109,7 @@ ;; #CONFIG# PANIC_SCREEN YES ;; #CONFIG# DOS_WEDGE YES ;; #CONFIG# TAPE_WEDGE YES -;; #CONFIG# TAPE_HEAD_ALIGN NO +;; #CONFIG# TAPE_HEAD_ALIGN YES ;; #CONFIG# BCD_SAFE_INTERRUPTS YES diff --git a/src/basic/board_m65/4000.interop b/src/basic/board_m65/4000.interop new file mode 100644 index 00000000..7acd2a6f --- /dev/null +++ b/src/basic/board_m65/4000.interop @@ -0,0 +1 @@ +This particular address is not for interoperability - we had to choose some fixed location for the extended ROM jumptable, beginning of the mapped memory block is just sane. diff --git a/src/kernal/board_crt/8000.crt_vectable_kernal_1.s b/src/kernal/board_crt/8000.crt_vectable_kernal_1.s new file mode 100644 index 00000000..9b3a1c00 --- /dev/null +++ b/src/kernal/board_crt/8000.crt_vectable_kernal_1.s @@ -0,0 +1,40 @@ +;; #LAYOUT# CRT KERNAL_0 #TAKE-FLOAT +;; #LAYOUT# CRT KERNAL_1 #TAKE +;; #LAYOUT# * * #IGNORE + +; +; Definitions for communication with cartridge segment KERNAL_1 from KERNAL_0 +; + + +!ifdef SEGMENT_KERNAL_0 { + + ; Label definitions + + !addr JK1__load_tape_normal = $8000 + 3 * 0 + !addr JK1__load_tape_turbo = $8000 + 3 * 1 + !addr JK1__load_tape_auto = $8000 + 3 * 2 + !addr JK1__tape_head_align = $8000 + 3 * 3 + +} else { + + ; Jump table (Open ROMs private!) + +!ifdef CONFIG_TAPE_NORMAL { !ifndef CONFIG_TAPE_AUTODETECT { + jmp load_tape_normal +} else { !byte $00, $00, $00 } } else { !byte $00, $00, $00 } + +!ifdef CONFIG_TAPE_TURBO { !ifndef CONFIG_TAPE_AUTODETECT { + jmp load_tape_turbo +} else { !byte $00, $00, $00 } } else { !byte $00, $00, $00 } + +!ifdef CONFIG_TAPE_AUTODETECT { + jmp load_tape_auto +} else { !byte $00, $00, $00 } + +!ifdef CONFIG_TAPE_HEAD_ALIGN { + jmp tape_head_align +} else { !byte $00, $00, $00 } + + +} diff --git a/src/kernal/board_crt/8000.interop b/src/kernal/board_crt/8000.interop new file mode 100644 index 00000000..7acd2a6f --- /dev/null +++ b/src/kernal/board_crt/8000.interop @@ -0,0 +1 @@ +This particular address is not for interoperability - we had to choose some fixed location for the extended ROM jumptable, beginning of the mapped memory block is just sane. diff --git a/src/kernal/board_crt/crt_imports.s b/src/kernal/board_crt/crt_imports.s new file mode 100644 index 00000000..3da1707e --- /dev/null +++ b/src/kernal/board_crt/crt_imports.s @@ -0,0 +1,49 @@ +;; #LAYOUT# CRT KERNAL_1 #TAKE +;; #LAYOUT# * * #IGNORE + +;; #IMPORT# KERNAL_0 = KERNAL_0_combined.sym + +; +; Definitions for calling cartridge segment KERNAL_0 routines from KERNAL_1 +; + +;; #ALIAS# STOP = KERNAL_0.STOP +;; #ALIAS# IOINIT = KERNAL_0.proxy_K1_IOINIT +;; #ALIAS# xxx = KERNAL_0.xxx + +;; #ALIAS# map_NORMAL = KERNAL_0.map_NORMAL +;; #ALIAS# map_KERNAL_1 = KERNAL_0.map_KERNAL_1 + +;; #ALIAS# screen_on = KERNAL_0.screen_on +;; #ALIAS# screen_off = KERNAL_0.screen_off + +;; #ALIAS# hw_entry_reset = KERNAL_0.hw_entry_reset +;; #ALIAS# return_from_interrupt = KERNAL_0.return_from_interrupt +;; #ALIAS# udtim_keyboard = KERNAL_0.udtim_keyboard +;; #ALIAS# wait_x_bars = KERNAL_0.wait_x_bars + +;; #ALIAS# tape_motor_on = KERNAL_0.tape_motor_on +;; #ALIAS# tape_motor_off = KERNAL_0.tape_motor_off + +;; #ALIAS# lvs_display_loading_verifying = KERNAL_0.proxy_K1_lvs_display_loading_verifying +;; #ALIAS# lvs_display_done = KERNAL_0.proxy_K1_lvs_display_done +;; #ALIAS# lvs_return_last_address = KERNAL_0.proxy_K1_lvs_return_last_address +;; #ALIAS# lvs_device_not_found_error = KERNAL_0.proxy_K1_lvs_device_not_found_error +;; #ALIAS# lvs_load_verify_error = KERNAL_0.proxy_K1_lvs_load_verify_error +;; #ALIAS# lvs_check_EAL = KERNAL_0.lvs_check_EAL +;; #ALIAS# lvs_STAL_to_MEMUSS = KERNAL_0.lvs_STAL_to_MEMUSS +;; #ALIAS# lvs_advance_MEMUSS = KERNAL_0.lvs_advance_MEMUSS + +;; #ALIAS# kernalerror_ROUTINE_TERMINATED = KERNAL_0.proxy_K1_kernalerror_ROUTINE_TERMINATED + +;; #ALIAS# print_kernal_message = KERNAL_0.proxy_K1_print_kernal_message +;; #ALIAS# print_return = KERNAL_0.proxy_K1_print_return + +;; #ALIAS# __MSG_KERNAL_PRESS_PLAY = KERNAL_0.__MSG_KERNAL_PRESS_PLAY +;; #ALIAS# __MSG_KERNAL_OK = KERNAL_0.__MSG_KERNAL_OK +;; #ALIAS# __MSG_KERNAL_FOUND = KERNAL_0.__MSG_KERNAL_FOUND + +;; #ALIAS# tape_normal_byte_store = KERNAL_0.tape_normal_byte_store + +;; #ALIAS# CLALL = KERNAL_0.proxy_K1_CLALL +;; #ALIAS# nmi_lock = KERNAL_0.nmi_lock diff --git a/src/kernal/board_crt/crt_proxies.s b/src/kernal/board_crt/crt_proxies.s new file mode 100644 index 00000000..6db895d4 --- /dev/null +++ b/src/kernal/board_crt/crt_proxies.s @@ -0,0 +1,72 @@ +;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# * * #IGNORE + +; +; Proxies for calling cartridge segment KERNAL_0 routines from KERNAL_1 +; + + + +!ifdef HAS_TAPE { + +proxy_K1_kernalerror_ROUTINE_TERMINATED: + + jsr map_NORMAL + jmp kernalerror_ROUTINE_TERMINATED + +proxy_K1_lvs_display_loading_verifying: + + jsr map_NORMAL + jsr lvs_display_loading_verifying + jmp map_KERNAL_1 + +proxy_K1_lvs_display_done: + + jsr map_NORMAL + jsr lvs_display_done + jmp map_KERNAL_1 + +proxy_K1_lvs_return_last_address: + + jsr map_NORMAL + jmp lvs_return_last_address + +proxy_K1_lvs_device_not_found_error: + + jsr map_NORMAL + jmp lvs_device_not_found_error + +proxy_K1_lvs_load_verify_error: + + jsr map_NORMAL + jmp lvs_load_verify_error + +proxy_K1_print_kernal_message: + + jsr map_NORMAL + jsr print_kernal_message + jmp map_KERNAL_1 + +proxy_K1_print_return: + + jsr map_NORMAL + jsr print_return + jmp map_KERNAL_1 +} + + +!ifdef CONFIG_TAPE_HEAD_ALIGN { + +proxy_K1_CLALL: + + jsr map_NORMAL + jsr CLALL + jmp map_KERNAL_1 + +proxy_K1_IOINIT: + + jsr map_NORMAL + jsr IOINIT + jmp map_KERNAL_1 + +} diff --git a/src/kernal/board_crt/crt_redirect_tape.s b/src/kernal/board_crt/crt_redirect_tape.s new file mode 100644 index 00000000..c520c122 --- /dev/null +++ b/src/kernal/board_crt/crt_redirect_tape.s @@ -0,0 +1,46 @@ +;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# * * #IGNORE + +; +; ROM routine call redirect for tape routines +; + + +!ifdef CONFIG_TAPE_NORMAL { !ifndef CONFIG_TAPE_AUTODETECT { + +load_tape_normal: + + jsr map_KERNAL_1 + jsr JK1__load_tape_normal + jmp map_NORMAL +} } + + +!ifdef CONFIG_TAPE_TURBO { !ifndef CONFIG_TAPE_AUTODETECT { + +load_tape_turbo: + + jsr map_KERNAL_1 + jsr JK1__load_tape_turbo + jmp map_NORMAL +} } + + +!ifdef CONFIG_TAPE_AUTODETECT { + +load_tape_auto: + + jsr map_KERNAL_1 + jsr JK1__load_tape_auto + jmp map_NORMAL +} + + +!ifdef CONFIG_TAPE_HEAD_ALIGN { + +tape_head_align: + + jsr map_KERNAL_1 + jsr JK1__tape_head_align + jmp map_NORMAL +} diff --git a/src/kernal/board_crt/crt_tape_normal_byte_store.s b/src/kernal/board_crt/crt_tape_normal_byte_store.s new file mode 100644 index 00000000..9569548b --- /dev/null +++ b/src/kernal/board_crt/crt_tape_normal_byte_store.s @@ -0,0 +1,17 @@ +;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# * * #IGNORE + +; +; Tape (normal) helper routine - byte storage when banking change is needed +; + + +!ifdef CONFIG_TAPE_NORMAL { + + +tape_normal_byte_store: + + jsr map_NORMAL + sta (MEMUSS), y + jmp map_KERNAL_1 +} diff --git a/src/kernal/board_crt/dummy.s b/src/kernal/board_crt/dummy.s deleted file mode 100644 index 5d70472b..00000000 --- a/src/kernal/board_crt/dummy.s +++ /dev/null @@ -1,4 +0,0 @@ -;; #LAYOUT# CRT KERNAL_1 #TAKE -;; #LAYOUT# * * #IGNORE - - +nop diff --git a/src/kernal/board_m65/4000.interop b/src/kernal/board_m65/4000.interop index 7b399af5..7acd2a6f 100644 --- a/src/kernal/board_m65/4000.interop +++ b/src/kernal/board_m65/4000.interop @@ -1 +1 @@ -This particular address is not for interoperability - we had to choose some fixed location foor the extended ROM jumptable, beginning of the mapped memory block is just sane. +This particular address is not for interoperability - we had to choose some fixed location for the extended ROM jumptable, beginning of the mapped memory block is just sane. diff --git a/src/kernal/board_m65/4000.mega65_vectable_kernal_1.s b/src/kernal/board_m65/4000.mega65_vectable_kernal_1.s index 38f47421..68767abe 100644 --- a/src/kernal/board_m65/4000.mega65_vectable_kernal_1.s +++ b/src/kernal/board_m65/4000.mega65_vectable_kernal_1.s @@ -43,7 +43,6 @@ !word load_tape_turbo } else { !word $0000 } } else { !word $0000 } - !ifdef CONFIG_TAPE_AUTODETECT { !word load_tape_auto } else { !word $0000 } diff --git a/src/kernal/tape/load_tape_normal.s b/src/kernal/tape/load_tape_normal.s index f0fdf8f3..d8beed39 100644 --- a/src/kernal/tape/load_tape_normal.s +++ b/src/kernal/tape/load_tape_normal.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/load_tape_turbo.s b/src/kernal/tape/load_tape_turbo.s index 6634b13d..f4d205cd 100644 --- a/src/kernal/tape/load_tape_turbo.s +++ b/src/kernal/tape/load_tape_turbo.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_common.s b/src/kernal/tape/tape_common.s index 7c5e212b..2efb626f 100644 --- a/src/kernal/tape/tape_common.s +++ b/src/kernal/tape/tape_common.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_common_autodetect.s b/src/kernal/tape/tape_common_autodetect.s index f82a33e8..4f963dbe 100644 --- a/src/kernal/tape/tape_common_autodetect.s +++ b/src/kernal/tape/tape_common_autodetect.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_common_clean_sid.s b/src/kernal/tape/tape_common_clean_sid.s index 0b646f87..dc5cccbd 100644 --- a/src/kernal/tape/tape_common_clean_sid.s +++ b/src/kernal/tape/tape_common_clean_sid.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_common_ditch_verify.s b/src/kernal/tape/tape_common_ditch_verify.s index 9552c402..7db80ef6 100644 --- a/src/kernal/tape/tape_common_ditch_verify.s +++ b/src/kernal/tape/tape_common_ditch_verify.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_common_get_pulse.s b/src/kernal/tape/tape_common_get_pulse.s index 0e6607aa..ad99950b 100644 --- a/src/kernal/tape/tape_common_get_pulse.s +++ b/src/kernal/tape/tape_common_get_pulse.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_common_prepare_cia.s b/src/kernal/tape/tape_common_prepare_cia.s index b84de264..e07b5976 100644 --- a/src/kernal/tape/tape_common_prepare_cia.s +++ b/src/kernal/tape/tape_common_prepare_cia.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_common_screen.s b/src/kernal/tape/tape_common_screen.s index b2c538a6..9e039758 100644 --- a/src/kernal/tape/tape_common_screen.s +++ b/src/kernal/tape/tape_common_screen.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_head_align.s b/src/kernal/tape/tape_head_align.s index 33692845..71fec45e 100644 --- a/src/kernal/tape/tape_head_align.s +++ b/src/kernal/tape/tape_head_align.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_head_align_gen_code.s b/src/kernal/tape/tape_head_align_gen_code.s index 960864bb..66c13c5c 100644 --- a/src/kernal/tape/tape_head_align_gen_code.s +++ b/src/kernal/tape/tape_head_align_gen_code.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_head_align_get_pulse.s b/src/kernal/tape/tape_head_align_get_pulse.s index 2fea2213..df66d5b1 100644 --- a/src/kernal/tape/tape_head_align_get_pulse.s +++ b/src/kernal/tape/tape_head_align_get_pulse.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_head_align_help.s b/src/kernal/tape/tape_head_align_help.s index 6ece9b0a..ca970b98 100644 --- a/src/kernal/tape/tape_head_align_help.s +++ b/src/kernal/tape/tape_head_align_help.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_head_align_irq.s b/src/kernal/tape/tape_head_align_irq.s index e109051e..818d3d5e 100644 --- a/src/kernal/tape/tape_head_align_irq.s +++ b/src/kernal/tape/tape_head_align_irq.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_normal_calibrate.s b/src/kernal/tape/tape_normal_calibrate.s index 63e4e70c..260fbc0c 100644 --- a/src/kernal/tape/tape_normal_calibrate.s +++ b/src/kernal/tape/tape_normal_calibrate.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_normal_get_bit.s b/src/kernal/tape/tape_normal_get_bit.s index 4d9cddd0..f066f245 100644 --- a/src/kernal/tape/tape_normal_get_bit.s +++ b/src/kernal/tape/tape_normal_get_bit.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_normal_get_byte.s b/src/kernal/tape/tape_normal_get_byte.s index e4f40303..59e4b5ae 100644 --- a/src/kernal/tape/tape_normal_get_byte.s +++ b/src/kernal/tape/tape_normal_get_byte.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_normal_get_data_1.s b/src/kernal/tape/tape_normal_get_data_1.s index eade4958..2e27e66f 100644 --- a/src/kernal/tape/tape_normal_get_data_1.s +++ b/src/kernal/tape/tape_normal_get_data_1.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_normal_get_data_2.s b/src/kernal/tape/tape_normal_get_data_2.s index 57517a7c..c3c40dff 100644 --- a/src/kernal/tape/tape_normal_get_data_2.s +++ b/src/kernal/tape/tape_normal_get_data_2.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_normal_get_marker.s b/src/kernal/tape/tape_normal_get_marker.s index 96644c1e..450b1e7a 100644 --- a/src/kernal/tape/tape_normal_get_marker.s +++ b/src/kernal/tape/tape_normal_get_marker.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_normal_get_pilot.s b/src/kernal/tape/tape_normal_get_pilot.s index 12103c02..5f96c2bd 100644 --- a/src/kernal/tape/tape_normal_get_pilot.s +++ b/src/kernal/tape/tape_normal_get_pilot.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_normal_sync.s b/src/kernal/tape/tape_normal_sync.s index 5b389d05..183c63c2 100644 --- a/src/kernal/tape/tape_normal_sync.s +++ b/src/kernal/tape/tape_normal_sync.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_normal_update_checksum.s b/src/kernal/tape/tape_normal_update_checksum.s index 9749f6ea..dbc59f10 100644 --- a/src/kernal/tape/tape_normal_update_checksum.s +++ b/src/kernal/tape/tape_normal_update_checksum.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_turbo_bytestore.s b/src/kernal/tape/tape_turbo_bytestore.s index ab6c6ce2..8d5e4ad4 100644 --- a/src/kernal/tape/tape_turbo_bytestore.s +++ b/src/kernal/tape/tape_turbo_bytestore.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE @@ -21,6 +21,8 @@ !ifdef CONFIG_MB_M65 { !addr __tape_turbo_bytestore_defmap = __tape_turbo_bytestore + 10 +} else ifdef ROM_LAYOUT_CRT { +!addr __tape_turbo_bytestore_defmap = __tape_turbo_bytestore + 12 } else { !addr __tape_turbo_bytestore_defmap = __tape_turbo_bytestore + 7 } @@ -31,8 +33,11 @@ tape_turbo_bytestore_source: !ifdef CONFIG_MB_M65 { jsr map_NORMAL +} else ifdef ROM_LAYOUT_CRT { + ; 'jsr map_NORMAL' would take too much time + ldx #%00000010 + stx $DE00 } - ; Set all memory as RAM, tape motor ON ldx #$00 stx CPU_R6510 @@ -41,12 +46,17 @@ tape_turbo_bytestore_source: sta (MEMUSS), y ; Restore default memory layout - ldx #$00 ; value will be determined later, offset from start: 7 bytes + ldx #$00 ; value will be determined later, offset from start: 7/10/12 bytes stx CPU_R6510 !ifdef CONFIG_MB_M65 { ; Restore default map and quit jmp map_KERNAL_1 +} else ifdef ROM_LAYOUT_CRT { + ; Restore default map and quit; 'jsr map_KERNAL_1' would take too much time + ldx #%00010000 + stx $DE00 + rts } else { ; Go back rts diff --git a/src/kernal/tape/tape_turbo_get_bit.s b/src/kernal/tape/tape_turbo_get_bit.s index 26ac038f..208f50b9 100644 --- a/src/kernal/tape/tape_turbo_get_bit.s +++ b/src/kernal/tape/tape_turbo_get_bit.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_turbo_get_byte.s b/src/kernal/tape/tape_turbo_get_byte.s index c0a78007..e472371f 100644 --- a/src/kernal/tape/tape_turbo_get_byte.s +++ b/src/kernal/tape/tape_turbo_get_byte.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_turbo_sync.s b/src/kernal/tape/tape_turbo_sync.s index 2fd6ca8c..3c64f2e4 100644 --- a/src/kernal/tape/tape_turbo_sync.s +++ b/src/kernal/tape/tape_turbo_sync.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE diff --git a/src/kernal/tape/tape_turbo_sync_first.s b/src/kernal/tape/tape_turbo_sync_first.s index f5a42fd7..cd8d42df 100644 --- a/src/kernal/tape/tape_turbo_sync_first.s +++ b/src/kernal/tape/tape_turbo_sync_first.s @@ -1,5 +1,5 @@ ;; #LAYOUT# STD * #TAKE -;; #LAYOUT# CRT KERNAL_0 #TAKE +;; #LAYOUT# CRT KERNAL_1 #TAKE ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE