From fa82939cc5318a7b11af91d043f28c00da0480d7 Mon Sep 17 00:00:00 2001 From: Paul Gardner-Stephen Date: Sat, 20 Apr 2019 02:38:23 +0930 Subject: [PATCH] fix handling of printing $00 chars, and scanning $00 from keyboard matrix --- c64/kernal/chrout.s | 5 +++++ c64/kernal/scan_keyboard.s | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/c64/kernal/chrout.s b/c64/kernal/chrout.s index ab3588b7..fde6a608 100644 --- a/c64/kernal/chrout.s +++ b/c64/kernal/chrout.s @@ -19,6 +19,11 @@ chrout: ;; Check for special characters + cmp #$00 + bne not_00 + jmp chrout_done +not_00: + ;; Linefeed (simply ignored) ;; Trivia: BASIC does CRLF with READY. prompt cmp #$0a diff --git a/c64/kernal/scan_keyboard.s b/c64/kernal/scan_keyboard.s index 6b7bd3af..7fa2cc00 100644 --- a/c64/kernal/scan_keyboard.s +++ b/c64/kernal/scan_keyboard.s @@ -78,6 +78,8 @@ scan_keyboard: and #$3f tax lda keyboard_matrixes,x + ;; But don't insert $00 characters + beq + ;; Stash key into keyboard buffer ldx keys_in_key_buffer @@ -87,7 +89,6 @@ scan_keyboard: inc keys_in_key_buffer * - lda keys_in_key_buffer rts