From 8a4f4928e5b9c6eec5ccee8574d9dc2f0b948d74 Mon Sep 17 00:00:00 2001 From: Paul Gardner-Stephen Date: Sat, 20 Apr 2019 02:06:31 +0930 Subject: [PATCH] begin implementing chrin to read from keyboard buffer --- c64/kernal/chrin.s | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/c64/kernal/chrin.s b/c64/kernal/chrin.s index 44999288..3d48373b 100644 --- a/c64/kernal/chrin.s +++ b/c64/kernal/chrin.s @@ -5,8 +5,27 @@ ;; Repeated calls after that read out the successive bytes of the line of input. chrin: ;; XXX - Not yet implemented, so infinite loop for now - inc $d020 - jmp chrin + lda keys_in_key_buffer + beq chrin + + ;; Print character + lda keyboard_buffer + jsr chrout + + ;; Pop key out of keyboard buffer + ;; Disable interrupts while reading from keyboard buffer + ;; so that no race conditions can occur + sei + ldx #$00 + ldy #$01 +* lda keyboard_buffer,y + sta keyboard_buffer,x + inx + iny + cpy keys_in_key_buffer + bne - + dec keys_in_key_buffer + cli lda #$00 clc