PRINT now accepts multiple expressions without comma separator
This commit is contained in:
1 parent
153b34a58a
commit
e8e78baa7f
2 files changed
+24
-13
No files matched your search
@@ -9,17 +9,21 @@ cmd_print:
|
||||
// First check if we have anything to print
|
||||
|
||||
jsr end_of_statement_check
|
||||
bcs cmd_print_new_line
|
||||
bcs cmd_print_new_line_done
|
||||
|
||||
jsr fetch_character
|
||||
cmp #$3B // semicolon
|
||||
beq cmd_print_done
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
cmd_print_loop:
|
||||
|
||||
jsr unconsume_character
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
cmd_print_loop:
|
||||
cmd_print_after_comma:
|
||||
|
||||
// Now evaluate the expression
|
||||
|
||||
@@ -38,7 +42,17 @@ cmd_print_string:
|
||||
cpy __FAC1 + 0
|
||||
beq cmd_print_next_arg
|
||||
|
||||
lda (__FAC1 + 1), y // XXX read from under ROM
|
||||
#if CONFIG_MEMORY_MODEL_60K
|
||||
|
||||
ldx #<(__FAC1 + 1)
|
||||
jsr peek_under_roms
|
||||
|
||||
#else // CONFIG_MEMORY_MODEL_38K
|
||||
|
||||
lda (__FAC1 + 1), y
|
||||
|
||||
#endif
|
||||
|
||||
jsr JCHROUT
|
||||
iny
|
||||
jmp !-
|
||||
@@ -55,19 +69,15 @@ cmd_print_next_arg:
|
||||
// Look for the next argument
|
||||
|
||||
jsr end_of_statement_check
|
||||
bcs cmd_print_new_line
|
||||
bcs cmd_print_new_line_done
|
||||
|
||||
jsr fetch_character
|
||||
cmp #$2C // comma
|
||||
beq cmd_print_loop
|
||||
cmp #$2C // comma XXX on C64 behavior is more complicated, fix it
|
||||
beq cmd_print_after_comma
|
||||
cmp #$3B // semicolon
|
||||
beq cmd_print_done
|
||||
bne cmd_print_loop
|
||||
|
||||
// Something unexpected
|
||||
|
||||
jmp do_SYNTAX_error
|
||||
|
||||
cmd_print_new_line:
|
||||
cmd_print_new_line_done:
|
||||
|
||||
jsr print_return
|
||||
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
// - for float: FAC1
|
||||
// - for string: __FAC1 + 0 = length, __FAC1 + 1 = pointer to string
|
||||
|
||||
// XXX provide documentation and implementation
|
||||
// XXX finish the implementation
|
||||
|
||||
|
||||
FRMEVL:
|
||||
|
||||
|
||||
Reference in new issue
Block a user