diff --git a/c64/basic/commands/cmd_print.s b/c64/basic/commands/cmd_print.s index eb37e79f..799a35ad 100644 --- a/c64/basic/commands/cmd_print.s +++ b/c64/basic/commands/cmd_print.s @@ -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 diff --git a/c64/basic/engine/ad9e.frmevl.s b/c64/basic/engine/ad9e.frmevl.s index 40062716..da1f3f16 100644 --- a/c64/basic/engine/ad9e.frmevl.s +++ b/c64/basic/engine/ad9e.frmevl.s @@ -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: