From 135ac012352c3cb6c92d0c6e46d94c994d7abf9c Mon Sep 17 00:00:00 2001 From: Paul Gardner-Stephen Date: Sun, 21 Apr 2019 21:33:52 +0930 Subject: [PATCH] implement shift + Vendor key to toggle case --- c64/kernal/cint.s | 2 ++ c64/kernal/scan_keyboard.s | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/c64/kernal/cint.s b/c64/kernal/cint.s index c3571afc..987e3682 100644 --- a/c64/kernal/cint.s +++ b/c64/kernal/cint.s @@ -36,6 +36,8 @@ cint: ;; Set maximum keyboard buffer size (Compute's Mapping the 64 p215) lda #10 sta key_buffer_size + ;; Put non-zero value in enable_case_switch + sta enable_case_switch ;; Fallthrough/jump to screen clear routine (Compute's Mapping the 64 p215) jmp clear_screen diff --git a/c64/kernal/scan_keyboard.s b/c64/kernal/scan_keyboard.s index cd5996dc..88a48ac7 100644 --- a/c64/kernal/scan_keyboard.s +++ b/c64/kernal/scan_keyboard.s @@ -304,6 +304,22 @@ skip0: ora key_bucky_state sta key_bucky_state + ;; Chick for shift + Vendor + cmp #$05 + bne no_case_toggle + lda key_last_bucky_state + cmp #$05 + beq no_case_toggle + + lda enable_case_switch + beq no_case_toggle + + lda $D018 + eor #$02 + sta $d018 + +no_case_toggle: + ;; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;; // Check for pressed key(s)