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