073ecbe
From 78d660da5571f29605dfdafe359527bf3c102823 Mon Sep 17 00:00:00 2001
073ecbe
From: Fabrizio Caruso <fabrizio_caruso@hotmail.com>
073ecbe
Date: Wed, 30 Oct 2019 09:14:17 +0100
a4f04fe
Subject: [PATCH 084/170] kbhit checks KBEDG and getc resets KBEDG
073ecbe
073ecbe
---
073ecbe
 libsrc/lynx/cgetc.s | 16 ++++++++++------
073ecbe
 libsrc/lynx/kbhit.s |  4 +++-
073ecbe
 2 files changed, 13 insertions(+), 7 deletions(-)
073ecbe
073ecbe
diff --git a/libsrc/lynx/cgetc.s b/libsrc/lynx/cgetc.s
073ecbe
index 17943e2d..368a0e8d 100644
073ecbe
--- a/libsrc/lynx/cgetc.s
073ecbe
+++ b/libsrc/lynx/cgetc.s
073ecbe
@@ -20,6 +20,7 @@
073ecbe
 ; So the keyboard returns '1', '2', '3', 'P', 'R', 'F' or '?'.
073ecbe
 
073ecbe
 _cgetc:
073ecbe
+        lda     KBEDG
073ecbe
         bne     _start     
073ecbe
         jsr     _kbhit          ; Check for char available
073ecbe
         beq     _cgetc
073ecbe
@@ -39,19 +40,19 @@ _start:
073ecbe
         bit     #$08
073ecbe
         beq     @L4                     ; Pause + Opt 2 = Flip
073ecbe
         lda     #'?'                    ; All buttons pressed
073ecbe
-        rts
073ecbe
+        bra     reset_and_exit
073ecbe
 @L2:
073ecbe
         lda     KBSTL           ; Pause alone was the last placed button
073ecbe
         and     #$0c
073ecbe
         bne     @L1
073ecbe
         lda     #'P'                    ; Pause pressed
073ecbe
-        rts
073ecbe
+        bra     reset_and_exit
073ecbe
 @L3:
073ecbe
         lda     #'R'                    ; Reset pressed
073ecbe
-        rts
073ecbe
+        bra     reset_and_exit
073ecbe
 @L4:
073ecbe
         lda     #'F'                    ; Flip pressed
073ecbe
-        rts
073ecbe
+        bra     reset_and_exit
073ecbe
 @L5:
073ecbe
         lda     KBEDG           ; No Pause pressed
073ecbe
         stz     KBEDG
073ecbe
@@ -61,10 +62,13 @@ _start:
073ecbe
         bit     #$04
073ecbe
         beq     @L6
073ecbe
         lda     #'3'                    ; opt 1 + opt 2 pressed
073ecbe
-        rts
073ecbe
+        bra     reset_and_exit
073ecbe
 @L6:
073ecbe
         lda     #'1'                    ; opt 1 pressed
073ecbe
-        rts
073ecbe
+        bra reset_and_exit
073ecbe
 @L7:
073ecbe
         lda     #'2'                    ; opt 2 pressed
073ecbe
+
073ecbe
+reset_and_exit:
073ecbe
+        stz     KBEDG
073ecbe
         rts
073ecbe
diff --git a/libsrc/lynx/kbhit.s b/libsrc/lynx/kbhit.s
073ecbe
index a5126a7d..a846c43e 100644
073ecbe
--- a/libsrc/lynx/kbhit.s
073ecbe
+++ b/libsrc/lynx/kbhit.s
073ecbe
@@ -29,6 +29,8 @@ KBNPR:          .byte   0
073ecbe
 
073ecbe
         .code
073ecbe
 _kbhit:
073ecbe
+        lda     KBEDG
073ecbe
+        bne     L1 
073ecbe
         lda     $FCB0           ; Read the Opt buttons
073ecbe
         and     #$0c
073ecbe
         sta     KBTMP
073ecbe
@@ -49,6 +51,6 @@ _kbhit:
073ecbe
         sta     KBNPR           ; inverted previous ones pressed
073ecbe
         stx     KBPRV
073ecbe
         lda     KBEDG
073ecbe
-@L1:    tax                     ; No new keys hit
073ecbe
+L1:     ldx     #$00                     
073ecbe
         rts
073ecbe
 
073ecbe
-- 
a4f04fe
2.26.0
073ecbe