small cleanup in BASIC
This commit is contained in:
1 parent
580cd65941
commit
0436b5c62e
13 files changed
+319
-278
No files matched your search
@@ -0,0 +1,41 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Check for end of statement, sets Carry if so. Injests all spaces.
|
||||
//
|
||||
|
||||
|
||||
end_of_statement_check:
|
||||
|
||||
ldy #0
|
||||
|
||||
#if CONFIG_MEMORY_MODEL_60K
|
||||
ldx #<TXTPTR
|
||||
jsr peek_under_roms
|
||||
#else // CONFIG_MEMORY_MODEL_38K
|
||||
lda (TXTPTR),y
|
||||
#endif
|
||||
|
||||
// Injest any spaces
|
||||
|
||||
cmp #$20
|
||||
bne !+
|
||||
jsr basic_consume_character
|
||||
jmp end_of_statement_check
|
||||
!:
|
||||
cmp #$00
|
||||
beq !+
|
||||
cmp #$3a
|
||||
beq !+
|
||||
|
||||
// Not end of statement
|
||||
|
||||
clc
|
||||
rts
|
||||
!:
|
||||
// End of statement
|
||||
|
||||
sec
|
||||
rts
|
||||
@@ -0,0 +1,44 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Fetches device number and secondary address - if they are present
|
||||
//
|
||||
|
||||
|
||||
fetch_device_secondary:
|
||||
|
||||
// Fetch the device number
|
||||
|
||||
jsr injest_comma
|
||||
bcs fetch_secondary
|
||||
|
||||
jsr basic_parse_line_number
|
||||
lda LINNUM+1
|
||||
bne_16 do_ILLEGAL_QUANTITY_error
|
||||
|
||||
lda LINNUM+0
|
||||
sta FA
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
fetch_secondary:
|
||||
|
||||
// Fetch secondary address
|
||||
|
||||
jsr injest_comma
|
||||
bcs fetch_device_secondary_done
|
||||
|
||||
jsr basic_parse_line_number
|
||||
lda LINNUM+1
|
||||
bne_16 do_ILLEGAL_QUANTITY_error
|
||||
|
||||
lda LINNUM+0
|
||||
sta SA
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
fetch_device_secondary_done:
|
||||
|
||||
rts
|
||||
@@ -0,0 +1,58 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Fetches file name, Carry set if not found
|
||||
//
|
||||
|
||||
|
||||
fetch_filename:
|
||||
|
||||
// Check if end of statement
|
||||
|
||||
jsr end_of_statement_check
|
||||
bcs fetch_filename_rts
|
||||
|
||||
// Search for opening quote
|
||||
|
||||
jsr basic_fetch_and_consume_character
|
||||
cmp #$22
|
||||
bne_16 do_SYNTAX_error
|
||||
|
||||
// Filename starts here so set pointer
|
||||
|
||||
lda TXTPTR+0
|
||||
sta FNADDR+0
|
||||
lda TXTPTR+1
|
||||
sta FNADDR+1
|
||||
|
||||
// Now search for end of line or closing quote
|
||||
// so that we know the length of the filename
|
||||
|
||||
lda #$00
|
||||
sta FNLEN
|
||||
!:
|
||||
jsr basic_fetch_and_consume_character
|
||||
cmp #$22
|
||||
beq fetch_filename_done
|
||||
cmp #$00
|
||||
beq !+
|
||||
|
||||
inc FNLEN
|
||||
bne !-
|
||||
|
||||
!:
|
||||
jsr basic_unconsume_character
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
fetch_filename_done:
|
||||
|
||||
clc
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
fetch_filename_rts:
|
||||
|
||||
rts
|
||||
@@ -0,0 +1,27 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# * BASIC_0 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Consummes a comma in a BASIC code, Carry set if not found. Injests all spaces.
|
||||
//
|
||||
|
||||
|
||||
injest_comma:
|
||||
|
||||
jsr basic_fetch_and_consume_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
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
injest_comma_found:
|
||||
|
||||
clc
|
||||
rts
|
||||
Reference in new issue
Block a user