From b9bf1251da924253cdf6c76f3834cb24146031da Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Sun, 12 Jul 2020 13:03:37 +0200 Subject: [PATCH] code size optimization for Mega65 --- .../engine/fetch_character_m65_46K_50K.s | 63 ------------------- .../{engine => memory}/fetch_character.s | 0 .../fetch_character_skip_spaces.s | 0 ...k_50k.s => under_rom_peek_fetch_46k_50k.s} | 48 ++++++++++++++ 4 files changed, 48 insertions(+), 63 deletions(-) delete mode 100644 src/basic/engine/fetch_character_m65_46K_50K.s rename src/basic/{engine => memory}/fetch_character.s (100%) rename src/basic/{engine => memory}/fetch_character_skip_spaces.s (100%) rename src/basic/memory/{under_rom_peek_46k_50k.s => under_rom_peek_fetch_46k_50k.s} (72%) diff --git a/src/basic/engine/fetch_character_m65_46K_50K.s b/src/basic/engine/fetch_character_m65_46K_50K.s deleted file mode 100644 index 78908e7a..00000000 --- a/src/basic/engine/fetch_character_m65_46K_50K.s +++ /dev/null @@ -1,63 +0,0 @@ -// #LAYOUT# M65 BASIC_0 #TAKE-HIGH -// #LAYOUT# * * #IGNORE - -// -// Fetches a single character (depending on version - also skips spaces) - optimized version -// - - -#if CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K - - -fetch_character: - - ldy #0 - - // Unmap BASIC lower ROM - - lda #$26 - sta CPU_R6510 - - // Retrieve value from under ROMs, advance text pointer - - lda (TXTPTR), y - inw TXTPTR - - // FALLTROUGH - -fetch_character_end: - - // Restore memory mapping - - pha - lda #$27 - sta CPU_R6510 - pla - - rts - -fetch_character_skip_spaces: - - ldy #0 - - // Unmap BASIC lower ROM - - lda #$26 - sta CPU_R6510 - - // Retrieve value from under ROMs, advance text pointer -!: - lda (TXTPTR), y - inw TXTPTR - - // Skip space characters - - cmp #$20 - beq !- - - // Restore memory mapping - - bra fetch_character_end - - -#endif diff --git a/src/basic/engine/fetch_character.s b/src/basic/memory/fetch_character.s similarity index 100% rename from src/basic/engine/fetch_character.s rename to src/basic/memory/fetch_character.s diff --git a/src/basic/engine/fetch_character_skip_spaces.s b/src/basic/memory/fetch_character_skip_spaces.s similarity index 100% rename from src/basic/engine/fetch_character_skip_spaces.s rename to src/basic/memory/fetch_character_skip_spaces.s diff --git a/src/basic/memory/under_rom_peek_46k_50k.s b/src/basic/memory/under_rom_peek_fetch_46k_50k.s similarity index 72% rename from src/basic/memory/under_rom_peek_46k_50k.s rename to src/basic/memory/under_rom_peek_fetch_46k_50k.s index c2a31424..43e3e7bf 100644 --- a/src/basic/memory/under_rom_peek_46k_50k.s +++ b/src/basic/memory/under_rom_peek_fetch_46k_50k.s @@ -103,4 +103,52 @@ peek_under_roms_via_FAC1_PLUS_1: #endif +#if ROM_LAYOUT_M65 + + +fetch_character: + + ldy #0 + + // Unmap BASIC lower ROM + + lda #$26 + sta CPU_R6510 + + // Retrieve value from under ROMs, advance text pointer + + lda (TXTPTR), y + inw TXTPTR + + // Restore memory mapping + + bra peek_under_roms_finalize + + +fetch_character_skip_spaces: + + ldy #0 + + // Unmap BASIC lower ROM + + lda #$26 + sta CPU_R6510 + + // Retrieve value from under ROMs, advance text pointer +!: + lda (TXTPTR), y + inw TXTPTR + + // Skip space characters + + cmp #$20 + beq !- + + // Restore memory mapping + + bra peek_under_roms_finalize + + +#endif + #endif