/* Release 3.00 */ /*-------------------------------------------------------------------------* * * * conio.h - header file for console input and output. * * * * COPYRIGHT (C) 1989, 1990 Jensen and Partners. All Rights Reserved * * * *--------------------------------------------------------------------------*/ #include #ifndef _CONIO_INC_ #define _CONIO_INC_ #ifdef __cplusplus extern "C" { #endif extern char * cgets(char *_str); extern void cputs(const char *_str); extern int cprintf(const char *_format, ...); extern int cscanf(const char *_format, ...); extern int getch(void); extern int getche(void); extern int kbhit(void); extern int putch(int _ch); extern int ungetch(unsigned _ch); #ifndef _PORTIO_DEF #define _PORTIO_DEF #if (defined _IL_MTF) | ( defined __STDC__) extern unsigned char inportb(int _portid); extern void outportb(int _portid, unsigned char _value); extern unsigned int inportw(int _portid); extern void outportw(int _portid, unsigned int _value); extern void _disable(void); extern void _enable(void); #define inp(portid) inportb(portid) #define outp(portid, v) outportb(portid, v) #define inpw(portid) inportw(portid) #define outpw(portid, v) outportw(portid, v) #else #define RET 0xC3 #pragma save,call(reg_param=>(dx,ax),reg_saved=>(bx,cx,si,di,es,ds,st1,st2), inline=>on) static void __outportb__(int _port, unsigned char _byte) = { 0xEE, RET /* out dx,al */ }; static unsigned char __inportb__(int _port) = { 0xEC, RET /* in dx,al */ }; static void __outportw__(int _port, unsigned _word) = { 0xEF, RET /* out dx,ax */ }; static unsigned int __inportw__(int _port) = { 0xED, RET /* in dx,ax */ }; static void _enable(void)= { 0xFB, RET }; static void _disable(void)= { 0xFA, RET }; #pragma restore #define inportb(portid) __inportb__(portid) /* Byte IN instruction */ #define outportb(portid, v) __outportb__(portid,v) /* Byte OUT instruction */ #define inportw(portid) __inportw__(portid) /* Word IN instruction */ #define outportw(portid, v) __outportw__(portid,v) /* Word OUT instruction */ /* some compilers use inp, outp for inportb, outportb */ #define inp(portid) __inportb__(portid) #define outp(portid, v) __outportb__(portid, v) #define inpw(portid) __inportw__(portid) #define outpw(portid, v) __outportw__(portid, v) #endif #define enable() _enable() #define disable() _disable() #endif #ifdef __cplusplus } #endif #endif