diff --git a/arch/z80/trs80/blk.fs b/arch/z80/trs80/blk.fs index a5eda0b..cef0143 100644 --- a/arch/z80/trs80/blk.fs +++ b/arch/z80/trs80/blk.fs @@ -11,10 +11,10 @@ There is also the RECV program at B612. ( ----- 602 ) 1 8 LOADR+ ( ----- 603 ) -CODE (key?) ( -- c? f ) ( TODO: make non-blocking ) - A 0x01 LDri, ( @KEY ) +CODE (key?) ( -- c? f ) + A 0x08 LDri, ( @KBD ) 0x28 RST, - PUSHA, PUSH1, + IFZ, PUSHA, THEN, PUSHZ, ;CODE CODE (emit) EXX, ( protect BC ) BC POP, ( c == @DSP arg ) chkPS, diff --git a/emul/z80/trs80.c b/emul/z80/trs80.c index 5e32857..b9022a1 100644 --- a/emul/z80/trs80.c +++ b/emul/z80/trs80.c @@ -41,6 +41,11 @@ static void pchookfunc(Machine *m) wmove(w, y, x-1); } break; + case 0x08: // @KBD TODO: make non-blocking + debug_panel(); + m->cpu.R1.br.A = wgetch(w); + m->cpu.R1.br.F |= F_Z; + break; case 0x0f: // @VDCTL wmove(w, m->cpu.R1.br.H, m->cpu.R1.br.L); break;