number-related syntax checking fix, small cleanup in BASIC
This commit is contained in:
1 parent
0436b5c62e
commit
8c4d705445
11 files changed
+89
-41
No files matched your search
File renamed without changes.
File renamed without changes.
@@ -73,7 +73,7 @@ basic_execute_statement:
|
||||
pha
|
||||
|
||||
// Now consume the character
|
||||
jsr basic_consume_character
|
||||
jsr consume_character
|
||||
|
||||
rts
|
||||
|
||||
@@ -92,38 +92,11 @@ not_a_token:
|
||||
jmp do_SYNTAX_error
|
||||
|
||||
basic_skip_char:
|
||||
jsr basic_consume_character
|
||||
jsr consume_character
|
||||
jmp basic_execute_statement
|
||||
|
||||
basic_fetch_and_consume_character:
|
||||
ldy #0
|
||||
|
||||
#if CONFIG_MEMORY_MODEL_60K
|
||||
ldx #<TXTPTR
|
||||
jsr peek_under_roms
|
||||
#else // CONFIG_MEMORY_MODEL_38K
|
||||
lda (TXTPTR),y
|
||||
#endif
|
||||
|
||||
// FALL THROUGH
|
||||
|
||||
basic_consume_character:
|
||||
// Advance basic text pointer
|
||||
inc TXTPTR+0
|
||||
bne !+
|
||||
inc TXTPTR+1
|
||||
!:
|
||||
rts
|
||||
|
||||
basic_unconsume_character:
|
||||
lda TXTPTR+0
|
||||
sec
|
||||
sbc #1
|
||||
sta TXTPTR+0
|
||||
lda TXTPTR+1
|
||||
sbc #0
|
||||
sta TXTPTR+1
|
||||
rts
|
||||
|
||||
basic_end_of_line:
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ end_of_statement_check:
|
||||
|
||||
cmp #$20
|
||||
bne !+
|
||||
jsr basic_consume_character
|
||||
jsr consume_character
|
||||
jmp end_of_statement_check
|
||||
!:
|
||||
cmp #$00
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Fetches a single character
|
||||
//
|
||||
|
||||
|
||||
fetch_character:
|
||||
|
||||
ldy #0
|
||||
|
||||
#if CONFIG_MEMORY_MODEL_60K
|
||||
|
||||
ldx #<TXTPTR
|
||||
jsr peek_under_roms
|
||||
|
||||
#else // CONFIG_MEMORY_MODEL_38K
|
||||
|
||||
lda (TXTPTR),y
|
||||
|
||||
#endif
|
||||
|
||||
// FALLTHROUGH
|
||||
|
||||
consume_character:
|
||||
|
||||
// Advance basic text pointer
|
||||
|
||||
inc TXTPTR+0
|
||||
bne !+
|
||||
inc TXTPTR+1
|
||||
!:
|
||||
rts
|
||||
@@ -14,6 +14,7 @@ fetch_device_secondary:
|
||||
jsr injest_comma
|
||||
bcs fetch_secondary
|
||||
|
||||
jsr injest_spaces
|
||||
jsr basic_parse_line_number
|
||||
lda LINNUM+1
|
||||
bne_16 do_ILLEGAL_QUANTITY_error
|
||||
@@ -30,6 +31,7 @@ fetch_secondary:
|
||||
jsr injest_comma
|
||||
bcs fetch_device_secondary_done
|
||||
|
||||
jsr injest_spaces
|
||||
jsr basic_parse_line_number
|
||||
lda LINNUM+1
|
||||
bne_16 do_ILLEGAL_QUANTITY_error
|
||||
|
||||
@@ -12,11 +12,11 @@ fetch_filename:
|
||||
// Check if end of statement
|
||||
|
||||
jsr end_of_statement_check
|
||||
bcs fetch_filename_rts
|
||||
bcs fetch_filename_done
|
||||
|
||||
// Search for opening quote
|
||||
|
||||
jsr basic_fetch_and_consume_character
|
||||
jsr fetch_character
|
||||
cmp #$22
|
||||
bne_16 do_SYNTAX_error
|
||||
|
||||
@@ -33,9 +33,9 @@ fetch_filename:
|
||||
lda #$00
|
||||
sta FNLEN
|
||||
!:
|
||||
jsr basic_fetch_and_consume_character
|
||||
jsr fetch_character
|
||||
cmp #$22
|
||||
beq fetch_filename_done
|
||||
beq fetch_filename_fail
|
||||
cmp #$00
|
||||
beq !+
|
||||
|
||||
@@ -43,16 +43,16 @@ fetch_filename:
|
||||
bne !-
|
||||
|
||||
!:
|
||||
jsr basic_unconsume_character
|
||||
jsr unconsume_character
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
fetch_filename_done:
|
||||
fetch_filename_fail:
|
||||
|
||||
clc
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
fetch_filename_rts:
|
||||
fetch_filename_done:
|
||||
|
||||
rts
|
||||
@@ -9,14 +9,14 @@
|
||||
|
||||
injest_comma:
|
||||
|
||||
jsr basic_fetch_and_consume_character
|
||||
jsr fetch_character
|
||||
cmp #$2C // comma character
|
||||
beq injest_comma_found
|
||||
cmp #$20 // space, can always be skipped
|
||||
beq injest_comma
|
||||
|
||||
// Not found
|
||||
jsr basic_unconsume_character
|
||||
jsr unconsume_character
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Injests all spaces.
|
||||
//
|
||||
|
||||
// XXX get rid of this when proper number parsing is completed
|
||||
|
||||
|
||||
injest_spaces:
|
||||
|
||||
jsr fetch_character
|
||||
cmp #$20 // space, can be skipped
|
||||
beq injest_spaces
|
||||
|
||||
jmp unconsume_character
|
||||
@@ -0,0 +1,20 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Reverses character fetch
|
||||
//
|
||||
|
||||
|
||||
unconsume_character:
|
||||
|
||||
lda TXTPTR+0
|
||||
sec
|
||||
sbc #$01
|
||||
sta TXTPTR+0
|
||||
lda TXTPTR+1
|
||||
sbc #$00
|
||||
sta TXTPTR+1
|
||||
|
||||
rts
|
||||
@@ -68,7 +68,7 @@ injest_number:
|
||||
sta FAC1_sign
|
||||
|
||||
// Skip over the minus sign
|
||||
jsr basic_consume_character
|
||||
jsr consume_character
|
||||
|
||||
ij_loop1:
|
||||
ldy #$00
|
||||
@@ -138,7 +138,7 @@ ij_loop2:
|
||||
|
||||
ij_consider_next_digit:
|
||||
// Consider next digit
|
||||
jsr basic_consume_character
|
||||
jsr consume_character
|
||||
jmp ij_loop1
|
||||
|
||||
rts
|
||||
|
||||
Reference in new issue
Block a user