summaryrefslogtreecommitdiff
path: root/libc/conio/conio.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/conio/conio.c')
-rw-r--r--libc/conio/conio.c101
1 files changed, 101 insertions, 0 deletions
diff --git a/libc/conio/conio.c b/libc/conio/conio.c
new file mode 100644
index 0000000..c0e9cbb
--- /dev/null
+++ b/libc/conio/conio.c
@@ -0,0 +1,101 @@
+/* Copyright (C) 1999 Robert de Bath <rdebath@cix.compulink.co.uk>
+ * This file is part of the Linux-8086 C library and is distributed
+ * under the GNU Library General Public License.
+ */
+
+#include <conio.h>
+
+/*
+ * I'm not sure if these should be BIOS or dos calls, so I'll assume they're
+ * BIOS calls but I may have to do something about Ctrl-C.
+ *
+ * These functions are also compiled for __STANDALONE__ so if ^C or DOS
+ * versions are made this will have to be addressed.
+ */
+
+#ifdef L_getch
+getch()
+{
+#asm
+ xor ax,ax
+ int $16
+#endasm
+}
+#endif
+
+#ifdef L_getche
+getche()
+{
+ int i = getch();
+ if( i & 0xFF ) putch(i);
+ return i;
+}
+#endif
+
+#ifdef L_kbhit
+kbhit()
+{
+#asm
+ mov ah,#1
+ int $16
+ jz nokey
+ cmp ax,#0
+ jnz dort
+ mov ax,#3
+dort:
+ ret
+nokey:
+ xor ax,ax
+#endasm
+}
+#endif
+
+#ifdef L_putch
+putch()
+{
+#asm
+#if !__FIRST_ARG_IN_AX__
+ mov bx,sp
+ mov ax,[bx+2]
+#endif
+ cmp al,#$0A
+ jne not_nl
+ mov ax,#$0E0D
+ mov bx,#7
+ int $10
+ mov al,#$0A
+not_nl:
+ mov ah,#$0E
+ mov bx,#7
+ int $10
+#endasm
+}
+#endif
+
+#ifdef L_cputs
+cputs(str)
+char * str;
+{
+ while(*str) putch(*str++);
+}
+#endif
+
+#if 0
+
+cgets()
+{
+}
+
+cscanf()
+{
+}
+
+getpass()
+{
+}
+
+gotoxy()
+{
+}
+
+#endif