home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c221 / 5.ddi / MWHC.005 / N4 < prev    next >
Encoding:
Text File  |  1992-12-09  |  3.3 KB  |  143 lines

  1. /*   bios.h -- extra-ANSI 
  2.  *
  3.  *   Functions, structures and constants needed to access
  4.  *   the BIOS services.
  5.  *
  6.  *   Copyright (c) 1990,1991 MetaWare Incorporated
  7.  */
  8. #ifndef _BIOS_H
  9. #define _BIOS_H
  10. #pragma push_align_members(64);
  11.  
  12. #ifdef __CPLUSPLUS__
  13. extern "C" {
  14. #endif
  15.  
  16. #define _COM_INIT 0
  17. #define _COM_SEND 1
  18. #define _COM_RECEIVE 2
  19. #define _COM_STATUS 3
  20.  
  21. #define _COM_CHR7 2
  22. #define _COM_CHR8 3
  23.  
  24. #define _COM_STOP1 0
  25. #define _COM_STOP2 4
  26.  
  27. #define _COM_NOPARITY 0
  28. #define _COM_ODDPARITY 8
  29. #define _COM_EVENPARITY 24
  30.  
  31. #define _COM_110 0
  32. #define _COM_150 32
  33. #define _COM_300 64
  34. #define _COM_600 96
  35. #define _COM_1200 128
  36. #define _COM_2400 160
  37. #define _COM_4800 192
  38. #define _COM_9600 224
  39.  
  40. #define _DISK_RESET 0
  41. #define _DISK_STATUS 1
  42. #define _DISK_READ 2
  43. #define _DISK_WRITE 3
  44. #define _DISK_VERIFY 4
  45. #define _DISK_FORMAT 5
  46.  
  47. #define _KEYBRD_READ 0
  48. #define _KEYBRD_READY 1
  49. #define _KEYBRD_SHIFTSTATUS 2
  50.  
  51. #define _NKEYBRD_READ 0x10
  52. #define _NKEYBRD_READY 0x11
  53. #define _NKEYBRD_SHIFTSTATUS 0x12
  54.  
  55. #define _PRINTER_WRITE 0
  56. #define _PRINTER_INIT 1
  57. #define _PRINTER_STATUS 2
  58.  
  59. #define _TIME_GETCLOCK 0
  60. #define _TIME_SETCLOCK 1
  61.  
  62. extern unsigned _bios_equiplist(void);
  63. extern unsigned _bios_keybrd(unsigned __service);
  64. extern unsigned _bios_memsize(void);
  65. extern unsigned _bios_printer(unsigned __service, unsigned __port, unsigned __data);
  66. extern unsigned _bios_serialcom(unsigned __service, unsigned __port, unsigned __data);
  67. extern unsigned _bios_timeofday(unsigned __service, long * __timeticks);
  68.  
  69.  
  70. #ifndef _REGS_DEFINED
  71. #define _REGS_DEFINED
  72.  
  73. struct _WORDREGS {
  74.     unsigned int ax;
  75.     unsigned int bx;
  76.     unsigned int cx;
  77.     unsigned int dx;
  78.     unsigned int si;
  79.     unsigned int di;
  80.     unsigned int cflag;
  81.     };
  82.  
  83. struct _BYTEREGS {
  84.     unsigned char al, ah, xax[sizeof(int)-2];
  85.     unsigned char bl, bh, xbx[sizeof(int)-2];
  86.     unsigned char cl, ch, xcx[sizeof(int)-2];
  87.     unsigned char dl, dh, xdx[sizeof(int)-2];
  88.     };
  89.  
  90. union _REGS {
  91.     struct _WORDREGS x;
  92.     struct _BYTEREGS h;
  93.     struct _BYTEREGS l;
  94.     };
  95.  
  96. struct _SREGS {
  97.     unsigned short int es;
  98.     unsigned short int cs;
  99.     unsigned short int ss;
  100.     unsigned short int ds;
  101.     };
  102.  
  103. #endif /* _REGS_DEFINED */
  104.  
  105. #ifndef DISKINFO_T_DEFINED
  106. #define DISKINFO_T_DEFINED
  107.  
  108. _Packed struct _diskinfo_t {
  109.     unsigned short drive;
  110.     unsigned short head;
  111.     unsigned short track;
  112.     unsigned short sector;
  113.     unsigned short nsectors;
  114.     _Far void *buffer;
  115.     };
  116.  
  117. #endif /* DISKINFO_T_DEFINED */
  118.  
  119. extern int _int86(int __number, union _REGS * __before, union _REGS * __after);
  120. extern int _int86x(int __number, union _REGS * __before, union _REGS * __after, struct _SREGS * __segregs);
  121.  
  122. /*  _bios_disk is not fully supported by some dos extenders  */
  123. /*  some options cause hard machine hangs  */
  124. extern unsigned _bios_disk(unsigned __service, struct _diskinfo_t * __info);
  125.  
  126. #if __HIGHC__
  127. #define REGS _REGS
  128. #define SREGS _SREGS
  129. #define WORDREGS _WORDREGS
  130. #define BYTEREGS _BYTEREGS
  131. #define diskinfo_t _diskinfo_t
  132.  
  133. extern int int86(int __number, union REGS * __before, union REGS * __after);
  134. extern int int86x(int __number, union REGS * __before, union REGS * __after, struct SREGS * __segregs);
  135.  
  136. #endif /* __HIGHC__ */
  137.  
  138. #ifdef __CPLUSPLUS__
  139. }
  140. #endif
  141. #pragma push_align_members();
  142. #endif /* _BIOS_H */
  143.