From 201f1a378fb1797e25eb7d4670ccead2c55faf25 Mon Sep 17 00:00:00 2001 From: Paul Gardner-Stephen Date: Tue, 23 Apr 2019 09:44:03 +0930 Subject: [PATCH] fix errors with multi-key detection, including cursor left/up in VICE. Issue #6. --- c64/kernal/scan_keyboard.s | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/c64/kernal/scan_keyboard.s b/c64/kernal/scan_keyboard.s index 604fdb77..14bcb351 100644 --- a/c64/kernal/scan_keyboard.s +++ b/c64/kernal/scan_keyboard.s @@ -283,7 +283,6 @@ skip0: lsr lsr and #$01 - sta $044f ora key_bucky_state sta key_bucky_state @@ -326,7 +325,7 @@ no_case_toggle: lda ScanResult+7 cmp #$ff - beq + + beq + jsr KeyInRow * ldx #8 @@ -384,19 +383,22 @@ no_case_toggle: RecordKeypress: ;; // New Key Detected ldy BufferQuantity - cpy #MaxKeyRollover - bcc TooManyNewKeys - + cpy #$ff + beq + + cpy #MaxKeyRollover-1 + bcs TooManyNewKeys +* iny sty BufferQuantity sta Buffer,y + Exist: dex bpl - ;; // Anything in Buffer? ldy BufferQuantity - bmi BufferEmpty + bmi BufferEmpty ;; // Yes: Then return it and tidy up the buffer dec BufferQuantity lda Buffer