From 5a2f847cb6a72a6440ec8aa612c72b7958840c39 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Mon, 8 Jun 2020 17:36:25 +0200 Subject: [PATCH] shortened BASIC commands jumptable handling --- c64/basic/commands/command_jumptable.s | 90 ++++------------------ c64/basic/engine/execute_line_statements.s | 20 +++++ 2 files changed, 34 insertions(+), 76 deletions(-) diff --git a/c64/basic/commands/command_jumptable.s b/c64/basic/commands/command_jumptable.s index f15a5a84..dd64cb47 100644 --- a/c64/basic/commands/command_jumptable.s +++ b/c64/basic/commands/command_jumptable.s @@ -50,7 +50,7 @@ cmd_sys, cmd_open, - // $A0-$AF + // $A0-$A9 cmd_close, cmd_get, @@ -62,19 +62,18 @@ cmd_then, cmd_not, cmd_step, - cmd_plus, - cmd_minus, - cmd_mult, - cmd_div, - cmd_exponent, - cmd_and, - // $B0-$BF + // $CB, but remapped to $A9 + + cmd_go +) + +/* + XXX we need a separate function dispatch table for the following ones: + + + // $B4-$BF - cmd_or, - cmd_greater, - cmd_equal, - cmd_less, cmd_sgn, cmd_int, cmd_abs, @@ -88,7 +87,7 @@ cmd_cos, cmd_sin, - // $C0-$CF + // $C0-$CA cmd_tan, cmd_atn, @@ -100,70 +99,9 @@ cmd_chr, cmd_left, cmd_right, - cmd_mid, - cmd_go, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, + cmd_mid +*/ - // $D0-$DF - - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - - // $E0-$EF - - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - - // $F0-$FF - - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented, - cmd_unimplemented -) diff --git a/c64/basic/engine/execute_line_statements.s b/c64/basic/engine/execute_line_statements.s index 5b0e39a3..8d70b130 100644 --- a/c64/basic/engine/execute_line_statements.s +++ b/c64/basic/engine/execute_line_statements.s @@ -32,6 +32,11 @@ execute_statements: cmp #$7F bcc_16 do_SYNTAX_error // branch if not a token XXX here we should handle variable assignments + cmp #$A9 + bcs execute_statements_extended + +execute_statements_run_token: + // Initialize temporary string stack - just about any statement might need it // XXX original C64 ROM initializes this during the startup too - not sure where to put this @@ -63,6 +68,21 @@ execute_statements: #endif +execute_statements_extended: + + cmp #$CB + bne !+ + + // 'GO' command has a strande token, after functions + + lda #$A9 + bne execute_statements_run_token +!: + // XXX here is the place for possible extended BASIC command set + + jmp do_SYNTAX_error + + execute_statements_end_of_line: // First check, if we are in direct mode - if so,