diff --git a/src/basic/engine/end_of_statement.s b/src/basic/engine/end_of_statement.s index 197ada21..3e3ca00d 100644 --- a/src/basic/engine/end_of_statement.s +++ b/src/basic/engine/end_of_statement.s @@ -9,10 +9,7 @@ end_of_statement: - jsr fetch_character - - cmp #$20 // check for space - beq end_of_statement + jsr fetch_character_skip_spaces cmp #$3A // check for colon beq_16 execute_statements diff --git a/src/basic/engine/end_of_statement_check.s b/src/basic/engine/end_of_statement_check.s index 8a4c7011..e8b3b6ea 100644 --- a/src/basic/engine/end_of_statement_check.s +++ b/src/basic/engine/end_of_statement_check.s @@ -9,6 +9,8 @@ end_of_statement_check: + // XXX consider optimized version for 46K/56K memory models + ldy #$00 #if CONFIG_MEMORY_MODEL_60K diff --git a/src/basic/engine/execute_line_statements.s b/src/basic/engine/execute_line_statements.s index e63e952c..c0da724a 100644 --- a/src/basic/engine/execute_line_statements.s +++ b/src/basic/engine/execute_line_statements.s @@ -16,9 +16,7 @@ execute_statements: // Skip over any white spaces and colons (':') !: - jsr fetch_character - cmp #$20 // space, can be skipped - beq !- + jsr fetch_character_skip_spaces cmp #$3A // colon, can be skipped beq !- diff --git a/src/basic/engine/fetch_character_skip_spaces.s b/src/basic/engine/fetch_character_skip_spaces.s new file mode 100644 index 00000000..c17eeab7 --- /dev/null +++ b/src/basic/engine/fetch_character_skip_spaces.s @@ -0,0 +1,15 @@ +// #LAYOUT# STD * #TAKE +// #LAYOUT# * BASIC_0 #TAKE +// #LAYOUT# * * #IGNORE + +// +// Fetches a single character, but skips spaces +// + +fetch_character_skip_spaces: + + jsr fetch_character + cmp #$20 + beq fetch_character_skip_spaces + + rts diff --git a/src/basic/engine/fetch_uint16.s b/src/basic/engine/fetch_uint16.s index d6bd568a..5768588c 100644 --- a/src/basic/engine/fetch_uint16.s +++ b/src/basic/engine/fetch_uint16.s @@ -18,9 +18,7 @@ fetch_uint16: // Fetch the first character (skip spaces), check if 0-9 - jsr fetch_character - cmp #$20 - beq fetch_uint16 + jsr fetch_character_skip_spaces jsr convert_PETSCII_to_digit bcs fetch_uint16_rts diff --git a/src/basic/engine/fetch_uint8.s b/src/basic/engine/fetch_uint8.s index 2660ea0f..75d8c685 100644 --- a/src/basic/engine/fetch_uint8.s +++ b/src/basic/engine/fetch_uint8.s @@ -16,7 +16,6 @@ fetch_coma_uint8: fetch_uint8: - jsr injest_spaces lda #IDX__EV2_0E // 'ILLEGAL QUANTITY ERROR' jsr fetch_uint16 bcs !+ diff --git a/src/basic/engine/fetch_variable.s b/src/basic/engine/fetch_variable.s index 9dc6438a..b6ba663b 100644 --- a/src/basic/engine/fetch_variable.s +++ b/src/basic/engine/fetch_variable.s @@ -11,11 +11,8 @@ fetch_variable: sta VARNAM+1 // Fetch the first character -!: - jsr fetch_character - cmp #$20 // ignore all the spaces - beq !- + jsr fetch_character_skip_spaces jsr is_AZ bcs_16 do_SYNTAX_error diff --git a/src/basic/engine/injest_assign.s b/src/basic/engine/injest_assign.s index c07898a7..e9cc7330 100644 --- a/src/basic/engine/injest_assign.s +++ b/src/basic/engine/injest_assign.s @@ -9,11 +9,9 @@ injest_assign: - jsr fetch_character + jsr fetch_character_skip_spaces cmp #$B2 // assign operator character beq injest_assign_found - cmp #$20 // space, can always be skipped - beq injest_assign // Not found jsr unconsume_character diff --git a/src/basic/engine/injest_spaces.s b/src/basic/engine/injest_spaces.s deleted file mode 100644 index fb018def..00000000 --- a/src/basic/engine/injest_spaces.s +++ /dev/null @@ -1,18 +0,0 @@ -// #LAYOUT# STD * #TAKE -// #LAYOUT# * BASIC_0 #TAKE -// #LAYOUT# * * #IGNORE - -// -// Injests all spaces -// - -// XXX get rid of this when proper number parsing is implemented - - -injest_spaces: - - jsr fetch_character - cmp #$20 // space, can be skipped - beq injest_spaces - - jmp unconsume_character diff --git a/src/basic/wedge/wedge_tape.s b/src/basic/wedge/wedge_tape.s index 951ced7e..e90c6c4e 100644 --- a/src/basic/wedge/wedge_tape.s +++ b/src/basic/wedge/wedge_tape.s @@ -37,8 +37,7 @@ wedge_arrow_H: // Make sure the syntax is correct - jsr injest_spaces - jsr fetch_character + jsr fetch_character_skip_spaces cmp #$00 bne_16 do_SYNTAX_error diff --git a/src/basic/wedge/wedge_tape_prepare_load.s b/src/basic/wedge/wedge_tape_prepare_load.s index cac50b40..b31f0aa3 100644 --- a/src/basic/wedge/wedge_tape_prepare_load.s +++ b/src/basic/wedge/wedge_tape_prepare_load.s @@ -13,9 +13,8 @@ wedge_tape_prepare_load: // Make sure the syntax is correct - jsr injest_spaces - jsr fetch_character - + jsr fetch_character_skip_spaces + cmp #$00 beq wedge_tape_prepare_load_no_filename // branch if no file name given cmp #$22