aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Serpell <daniel.serpell@gmail.com>2020-05-11 20:55:01 -0400
committerDaniel Serpell <daniel.serpell@gmail.com>2020-05-11 20:55:01 -0400
commitcaa49053f601df1dbb62194d62f69b533e003608 (patch)
tree4451a316a2ea338c4d3471fab9c06d7a8ba20679
parentef46cac9c795acf9511c2337fc329f23fa2f057c (diff)
downloademu2-caa49053f601df1dbb62194d62f69b533e003608.tar.gz
Suspend raw keyboard handling before READ from CON.
-rw-r--r--src/dos.c1
-rw-r--r--src/keyb.c8
-rw-r--r--src/keyb.h1
3 files changed, 9 insertions, 1 deletions
diff --git a/src/dos.c b/src/dos.c
index 203eff0..eb55f87 100644
--- a/src/dos.c
+++ b/src/dos.c
@@ -1320,6 +1320,7 @@ void int21()
if(devinfo[cpuGetBX()] == 0x80D3)
{
int i, max = cpuGetCX(), cr = 0;
+ suspend_keyboard();
for(i = 0; i < max; i++)
{
int c = fgetc(f);
diff --git a/src/keyb.c b/src/keyb.c
index 0b4d0f5..f0e06c6 100644
--- a/src/keyb.c
+++ b/src/keyb.c
@@ -392,8 +392,14 @@ static void init_keyboard(void)
exit(1);
}
atexit(exit_keyboard);
- set_raw_term(1);
}
+ set_raw_term(1);
+}
+
+// Disables keyboard support - will be enabled again if needed
+void suspend_keyboard(void)
+{
+ set_raw_term(0);
}
int kbhit(void)
diff --git a/src/keyb.h b/src/keyb.h
index 3de5a21..2517ec6 100644
--- a/src/keyb.h
+++ b/src/keyb.h
@@ -6,3 +6,4 @@ int getch(int detect_brk);
int kbhit(void);
void int16(void);
uint8_t keyb_read_port(unsigned port);
+void suspend_keyboard(void);
Un proyecto texto-plano.xyz