From 01775af002cb623c8dfeea35bb92a313decc0367 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Sun, 28 Jun 2020 21:09:01 +0200 Subject: [PATCH] more cleanup in BASIC --- src/basic/basic_commands_CC/cmd_old.s | 43 ++---------------------- src/basic/basic_shift_mem_down.s | 6 ++-- src/basic/basic_shift_mem_up.s | 4 +-- src/basic/{ => editor}/a533.interop | 0 src/basic/{ => editor}/a533.linkprg.s | 0 src/basic/editor/calculate_vartab.s | 47 +++++++++++++++++++++++++++ 6 files changed, 54 insertions(+), 46 deletions(-) rename src/basic/{ => editor}/a533.interop (100%) rename src/basic/{ => editor}/a533.linkprg.s (100%) create mode 100644 src/basic/editor/calculate_vartab.s diff --git a/src/basic/basic_commands_CC/cmd_old.s b/src/basic/basic_commands_CC/cmd_old.s index ff601281..210ed801 100644 --- a/src/basic/basic_commands_CC/cmd_old.s +++ b/src/basic/basic_commands_CC/cmd_old.s @@ -11,53 +11,14 @@ cmd_old: inx bne_16 do_DIRECT_MODE_ONLY_error - // Now try to restore program linkage + // Now try to restore program linkage and VARTAB ldy #$01 tya sta (TXTTAB),y jsr LINKPRG - - // Now we have to restore VARTAB XXX deduplicate this with line editor - - lda TXTTAB+0 - sta OLDTXT+0 - lda TXTTAB+1 - sta OLDTXT+1 -!: - lda OLDTXT+0 - sta VARTAB+0 - lda OLDTXT+1 - sta VARTAB+1 - - jsr basic_follow_link_to_next_line - - lda OLDTXT+0 - ora OLDTXT+1 - bne !- // branch if pointer not NULL - - // Correct VARTAB by 2 bytes NULL pointer - -#if HAS_OPCODES_65CE02 - - inw VARTAB - inw VARTAB - -#else - - clc - lda VARTAB+0 - adc #$02 - sta VARTAB+0 - bcc !+ - inc VARTAB+1 -!: -#endif - - // Call CLR to restore remaining variables - - jsr do_clr + jsr calculate_VARTAB // Quit diff --git a/src/basic/basic_shift_mem_down.s b/src/basic/basic_shift_mem_down.s index b3594092..7def6575 100644 --- a/src/basic/basic_shift_mem_down.s +++ b/src/basic/basic_shift_mem_down.s @@ -114,9 +114,9 @@ basic_shift_mem_down_and_relink: relink_down_next_line: - // inc $d020 - // jmp relink_down_next_line - + + // XXX reuse code from cmd_old + // Subtract __tokenise_work3 from the pointer ldy #0 diff --git a/src/basic/basic_shift_mem_up.s b/src/basic/basic_shift_mem_up.s index 68d1b317..9b203555 100644 --- a/src/basic/basic_shift_mem_up.s +++ b/src/basic/basic_shift_mem_up.s @@ -128,8 +128,8 @@ basic_shift_mem_up_and_relink: #endif relink_up_next_line: - // inc $d020 - // jmp relink_up_next_line + + // XXX reuse code from cmd_old // Advance pointer by tokenise_word3 bytes ldy #0 diff --git a/src/basic/a533.interop b/src/basic/editor/a533.interop similarity index 100% rename from src/basic/a533.interop rename to src/basic/editor/a533.interop diff --git a/src/basic/a533.linkprg.s b/src/basic/editor/a533.linkprg.s similarity index 100% rename from src/basic/a533.linkprg.s rename to src/basic/editor/a533.linkprg.s diff --git a/src/basic/editor/calculate_vartab.s b/src/basic/editor/calculate_vartab.s new file mode 100644 index 00000000..b883a335 --- /dev/null +++ b/src/basic/editor/calculate_vartab.s @@ -0,0 +1,47 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + +// +// Calculate the VARTAB value - to mark the end of BASIC program code +// + +calculate_VARTAB: + + lda TXTTAB+0 + sta OLDTXT+0 + lda TXTTAB+1 + sta OLDTXT+1 +!: + lda OLDTXT+0 + sta VARTAB+0 + lda OLDTXT+1 + sta VARTAB+1 + + jsr basic_follow_link_to_next_line + + lda OLDTXT+0 + ora OLDTXT+1 + bne !- // branch if pointer not NULL + + // Correct VARTAB by 2 bytes NULL pointer + +#if HAS_OPCODES_65CE02 + + inw VARTAB + inw VARTAB + +#else + + clc + lda VARTAB+0 + adc #$02 + sta VARTAB+0 + bcc !+ + inc VARTAB+1 +!: +#endif + + // Call CLR to set-up remaining variables + + jmp do_clr