number-related syntax checking fix, small cleanup in BASIC

This commit is contained in:
FeralChild64 committed 2020-06-05 22:47:22 +02:00
1 parent 0436b5c62e
commit 8c4d705445
11 files changed
+89 -41

No files matched your search

File renamed without changes.
File renamed without changes.
+2 -29
View File
@@ -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:
+1 -1
View File
@@ -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
+35
View File
@@ -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
+7 -7
View File
@@ -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
+2 -2
View File
@@ -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
+18
View File
@@ -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
+20
View File
@@ -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
+2 -2
View File
@@ -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