From 2338bd8a98d87b5f2449943b35e381499a1efb45 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Thu, 3 Sep 2020 19:58:47 +0200 Subject: [PATCH] implemented 'IF' BASIC command --- src/basic/basic_commands/cmd__unimplemented.s | 2 -- src/basic/basic_commands/cmd_if.s | 29 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 src/basic/basic_commands/cmd_if.s diff --git a/src/basic/basic_commands/cmd__unimplemented.s b/src/basic/basic_commands/cmd__unimplemented.s index dc96a1c2..9b76d5f6 100644 --- a/src/basic/basic_commands/cmd__unimplemented.s +++ b/src/basic/basic_commands/cmd__unimplemented.s @@ -21,8 +21,6 @@ cmd_input: nop cmd_read: nop -cmd_if: - nop cmd_gosub: nop cmd_return: diff --git a/src/basic/basic_commands/cmd_if.s b/src/basic/basic_commands/cmd_if.s new file mode 100644 index 00000000..1c52ad63 --- /dev/null +++ b/src/basic/basic_commands/cmd_if.s @@ -0,0 +1,29 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + + +cmd_if: + + // Calculate expression + + jsr FRMEVL + + // Check the result - either string size or floating point 0 vs non-0 + + lda FAC1_exponent + beq_16 cmd_rem + + // Condition fulfilled - look for GOTO or THEN + + jsr fetch_character_skip_spaces + cmp #$89 // 'GOTO' + beq_16 cmd_goto + + cmp #$A7 // 'THEN' + bne_16 do_SYNTAX_error + + pla + pla + + jmp execute_statements