summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--data/keyboard.asm21
1 files changed, 16 insertions, 5 deletions
diff --git a/data/keyboard.asm b/data/keyboard.asm
index f85fa91..cf81165 100644
--- a/data/keyboard.asm
+++ b/data/keyboard.asm
@@ -378,13 +378,24 @@ kt_symbol
ktas_common
and #0x03
ld e,a
- ; D=0
- add ix,de
+ ; D=0; now DE = shift mode
+
+ ; If the strobe is currently active, lower
+ ; the strobe for 10 us *before* switching
+ ; to the new keysym
+ bit 7,b
+ jr z,ktas_strobeok
+ ld a,b
+ and #0x7F
+ out (#3),a
+ ld a,#10 ; Give it 10 us
+ call (udelay)
+
+ktas_strobeok
+ add ix,de ; IX->keysym
ld a,(ix+0)
out (#2),a
- ld a,b ; status_byte
- and #0x7F
- out (#3),a ; make sure strobe is pulsed
+ ld a,b
or #0x80 ; strobe
ld (status_byte),a
out (#3),a