From 5db25db3b503e72014c8e03088fef04821ebb9cd Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Sun, 28 Jun 2020 04:05:32 +0200 Subject: [PATCH] some cleanup, BASIC line finding now properly uses stack --- Makefile | 2 +- src/basic/basic_commands/cmd_list.s | 2 +- src/basic/basic_commands/cmd_load_verify.s | 2 +- src/basic/basic_commands/cmd_new.s | 2 +- src/basic/basic_commands/cmd_run_goto.s | 2 +- src/basic/basic_commands/cmd_stop_end.s | 2 +- .../basic_commands_CC/cmd_bload_bverify.s | 2 +- src/basic/basic_commands_CC/cmd_merge.s | 2 +- src/basic/basic_delete_line.s | 2 +- .../{basic_find_line.s => editor/find_line.s} | 69 +++++++----- .../{basic_main_loop.s => editor/shell.s} | 101 +++++++++++------- src/basic/{tokenizer => editor}/tk_cut_away.s | 0 src/basic/{tokenizer => editor}/tk_pack.s | 0 src/basic/{tokenizer => editor}/tk_search.s | 0 src/basic/{tokenizer => editor}/tk_shorten.s | 0 .../{tokenizer => editor}/tokenise_line.s | 0 src/basic/engine/do_error.s | 2 +- src/basic/engine/execute_line_statements.s | 6 +- src/basic/init/basic_warm_start_internal.s | 2 +- src/basic/wedge/wedge_dos.s | 4 +- 20 files changed, 116 insertions(+), 86 deletions(-) rename src/basic/{basic_find_line.s => editor/find_line.s} (60%) rename src/basic/{basic_main_loop.s => editor/shell.s} (64%) rename src/basic/{tokenizer => editor}/tk_cut_away.s (100%) rename src/basic/{tokenizer => editor}/tk_pack.s (100%) rename src/basic/{tokenizer => editor}/tk_search.s (100%) rename src/basic/{tokenizer => editor}/tk_shorten.s (100%) rename src/basic/{tokenizer => editor}/tokenise_line.s (100%) diff --git a/Makefile b/Makefile index 92dff008..7dcd2041 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ SRCDIR_BASIC = $(SRCDIR_COMMON) \ src/basic/basic_functions \ src/basic/board_m65 \ src/basic/board_x16 \ + src/basic/editor \ src/basic/engine \ src/basic/init \ src/basic/math \ @@ -28,7 +29,6 @@ SRCDIR_BASIC = $(SRCDIR_COMMON) \ src/basic/memory \ src/basic/print \ src/basic/rom_revision \ - src/basic/tokenizer \ src/basic/wedge SRCDIR_KERNAL = $(SRCDIR_COMMON) \ diff --git a/src/basic/basic_commands/cmd_list.s b/src/basic/basic_commands/cmd_list.s index be79ad4c..d1b8b75b 100644 --- a/src/basic/basic_commands/cmd_list.s +++ b/src/basic/basic_commands/cmd_list.s @@ -31,7 +31,7 @@ list_loop: // LIST terminates any running program, // because it has fiddled with the current line pointer. // (Confirmed by testing on a C64) - jmp basic_main_loop + jmp shell_main_loop list_more_lines: lda STKEY diff --git a/src/basic/basic_commands/cmd_load_verify.s b/src/basic/basic_commands/cmd_load_verify.s index aab37558..868c7406 100644 --- a/src/basic/basic_commands/cmd_load_verify.s +++ b/src/basic/basic_commands/cmd_load_verify.s @@ -80,4 +80,4 @@ cmd_load_no_error: cmd_load_end: - jmp basic_main_loop + jmp shell_main_loop diff --git a/src/basic/basic_commands/cmd_new.s b/src/basic/basic_commands/cmd_new.s index ce879826..d2186c3f 100644 --- a/src/basic/basic_commands/cmd_new.s +++ b/src/basic/basic_commands/cmd_new.s @@ -9,4 +9,4 @@ cmd_new: // NEW command terminates execution (confirmed on a C64) - jmp basic_main_loop + jmp shell_main_loop diff --git a/src/basic/basic_commands/cmd_run_goto.s b/src/basic/basic_commands/cmd_run_goto.s index 65570149..dc93da96 100644 --- a/src/basic/basic_commands/cmd_run_goto.s +++ b/src/basic/basic_commands/cmd_run_goto.s @@ -18,7 +18,7 @@ cmd_goto: bcs !+ jsr basic_parse_line_number - jsr basic_find_line + jsr find_line bcc !+ // Line does not exist, so report error jmp do_UNDEFD_STATEMENT_error diff --git a/src/basic/basic_commands/cmd_stop_end.s b/src/basic/basic_commands/cmd_stop_end.s index 51c4906e..3cf6f64c 100644 --- a/src/basic/basic_commands/cmd_stop_end.s +++ b/src/basic/basic_commands/cmd_stop_end.s @@ -27,4 +27,4 @@ cmd_stop: cmd_end: - jmp basic_main_loop + jmp shell_main_loop diff --git a/src/basic/basic_commands_CC/cmd_bload_bverify.s b/src/basic/basic_commands_CC/cmd_bload_bverify.s index a85891f5..2b6db9fb 100644 --- a/src/basic/basic_commands_CC/cmd_bload_bverify.s +++ b/src/basic/basic_commands_CC/cmd_bload_bverify.s @@ -39,4 +39,4 @@ cmd_bload: // XXX when number parsing is done, change to continue execution - jmp basic_main_loop + jmp shell_main_loop diff --git a/src/basic/basic_commands_CC/cmd_merge.s b/src/basic/basic_commands_CC/cmd_merge.s index 5734b68d..bf157798 100644 --- a/src/basic/basic_commands_CC/cmd_merge.s +++ b/src/basic/basic_commands_CC/cmd_merge.s @@ -50,4 +50,4 @@ cmd_merge_no_error: // XXX when number parsing is done, change to continue execution - jmp basic_main_loop + jmp shell_main_loop diff --git a/src/basic/basic_delete_line.s b/src/basic/basic_delete_line.s index 864fd0c7..fdeff539 100644 --- a/src/basic/basic_delete_line.s +++ b/src/basic/basic_delete_line.s @@ -3,7 +3,7 @@ // #LAYOUT# * * #IGNORE // Delete the current BASIC line, which is assumed to have already -// been found with basic_find_line. +// been found with find_line. // Really only consists of copying memory down. // The only complication is that we have to do the copy with ROMs // banked out. Oh, yes, and we have to update all the links in diff --git a/src/basic/basic_find_line.s b/src/basic/editor/find_line.s similarity index 60% rename from src/basic/basic_find_line.s rename to src/basic/editor/find_line.s index be9a962e..a98cc91c 100644 --- a/src/basic/basic_find_line.s +++ b/src/basic/editor/find_line.s @@ -5,19 +5,24 @@ // Find the BASIC line with number LINNUM +// XXX it should be possible to start from the current line (OLDTXT), or from the startup, +// depending on the current and target line number + + +find_line: -basic_find_line: // Get pointer to start of BASIC text lda TXTTAB+0 sta OLDTXT+0 lda TXTTAB+1 sta OLDTXT+1 -basic_find_line_loop: - // Then search for line number - // Line number - - ldy #3 + // FALLTROUGH + +find_line_loop: + + // Fetch the high byte of line number and compare + ldy #$03 #if CONFIG_MEMORY_MODEL_60K ldx #