home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c480 / 19.ddi / INCLUDE / BIOS.H_ / BIOS.H
Encoding:
C/C++ Source or Header  |  1993-02-08  |  5.7 KB  |  245 lines

  1. /***
  2. *bios.h - declarations for bios interface functions and supporting definitions
  3. *
  4. *   Copyright (c) 1987-1992, Microsoft Corporation. All rights reserved.
  5. *
  6. *Purpose:
  7. *   This file declares the constants, structures, and functions
  8. *   used for accessing and using various BIOS interfaces.
  9. *
  10. ****/
  11.  
  12. #ifndef _INC_BIOS
  13.  
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif 
  17.  
  18. #if (_MSC_VER <= 600)
  19. #define __cdecl     _cdecl
  20. #define __far       _far
  21. #endif 
  22.  
  23. #ifndef _MT
  24.  
  25. /* manifest constants for BIOS serial communications (RS-232) support */
  26.  
  27. /* serial port services */
  28.  
  29. #define _COM_INIT   0   /* init serial port */
  30. #define _COM_SEND   1   /* send character */
  31. #define _COM_RECEIVE    2   /* receive character */
  32. #define _COM_STATUS 3   /* get serial port status */
  33.  
  34. /* serial port initializers.  One and only one constant from each of the
  35.  * following four groups - character size, stop bit, parity, and baud rate -
  36.  * must be specified in the initialization byte.
  37.  */
  38.  
  39. /* character size initializers */
  40.  
  41. #define _COM_CHR7   2   /* 7 bits characters */
  42. #define _COM_CHR8   3   /* 8 bits characters */
  43.  
  44. /* stop bit values - on or off */
  45.  
  46. #define _COM_STOP1  0   /* 1 stop bit */
  47. #define _COM_STOP2  4   /* 2 stop bits */
  48.  
  49. /*  parity initializers */
  50.  
  51. #define _COM_NOPARITY   0   /* no parity */
  52. #define _COM_ODDPARITY  8   /* odd parity */
  53. #define _COM_EVENPARITY 24  /* even parity */
  54.  
  55. /*  baud rate initializers */
  56.  
  57. #define _COM_110    0   /* 110 baud */
  58. #define _COM_150    32  /* 150 baud */
  59. #define _COM_300    64  /* 300 baud */
  60. #define _COM_600    96  /* 600 baud */
  61. #define _COM_1200   128 /* 1200 baud */
  62. #define _COM_2400   160 /* 2400 baud */
  63. #define _COM_4800   192 /* 4800 baud */
  64. #define _COM_9600   224 /* 9600 baud */
  65.  
  66.  
  67. /* manifest constants for BIOS disk support */
  68.  
  69. /* disk services */
  70.  
  71. #define _DISK_RESET 0   /* reset disk controller */
  72. #define _DISK_STATUS    1   /* get disk status */
  73. #define _DISK_READ  2   /* read disk sectors */
  74. #define _DISK_WRITE 3   /* write disk sectors */
  75. #define _DISK_VERIFY    4   /* verify disk sectors */
  76. #define _DISK_FORMAT    5   /* format disk track */
  77.  
  78. /* struct used to send/receive information to/from the BIOS disk services */
  79.  
  80. #ifndef _DISKINFO_T_DEFINED
  81. #pragma pack(2)
  82.  
  83. struct _diskinfo_t {
  84.     unsigned drive;
  85.     unsigned head;
  86.     unsigned track;
  87.     unsigned sector;
  88.     unsigned nsectors;
  89.     void __far *buffer;
  90.     };
  91.  
  92. #ifndef __STDC__
  93. /* Non-ANSI name for compatibility */
  94. #define diskinfo_t _diskinfo_t
  95. #endif 
  96.  
  97. #pragma pack()
  98. #define _DISKINFO_T_DEFINED
  99. #endif 
  100.  
  101.  
  102. /* manifest constants for BIOS keyboard support */
  103.  
  104. /* keyboard services */
  105.  
  106. #define _KEYBRD_READ        0   /* read next character from keyboard */
  107. #define _KEYBRD_READY       1   /* check for keystroke */
  108. #define _KEYBRD_SHIFTSTATUS 2   /* get current shift key status */
  109.  
  110. /* services for enhanced keyboards */
  111.  
  112. #define _NKEYBRD_READ       0x10    /* read next character from keyboard */
  113. #define _NKEYBRD_READY      0x11    /* check for keystroke */
  114. #define _NKEYBRD_SHIFTSTATUS    0x12    /* get current shift key status */
  115.  
  116.  
  117. /* manifest constants for BIOS printer support */
  118.  
  119. /* printer services */
  120.  
  121. #define _PRINTER_WRITE  0   /* write character to printer */
  122. #define _PRINTER_INIT   1   /* intialize printer */
  123. #define _PRINTER_STATUS 2   /* get printer status */
  124.  
  125.  
  126. /* manifest constants for BIOS time of day support */
  127.  
  128. /* time of day services */
  129.  
  130. #define _TIME_GETCLOCK  0   /* get current clock count */
  131. #define _TIME_SETCLOCK  1   /* set current clock count */
  132.  
  133.  
  134. #ifndef _REGS_DEFINED
  135.  
  136. /* word registers */
  137.  
  138. struct _WORDREGS {
  139.     unsigned int ax;
  140.     unsigned int bx;
  141.     unsigned int cx;
  142.     unsigned int dx;
  143.     unsigned int si;
  144.     unsigned int di;
  145.     unsigned int cflag;
  146.     };
  147.  
  148. /* byte registers */
  149.  
  150. struct _BYTEREGS {
  151.     unsigned char al, ah;
  152.     unsigned char bl, bh;
  153.     unsigned char cl, ch;
  154.     unsigned char dl, dh;
  155.     };
  156.  
  157. /* general purpose registers union -
  158.  *  overlays the corresponding word and byte registers.
  159.  */
  160.  
  161. union _REGS {
  162.     struct _WORDREGS x;
  163.     struct _BYTEREGS h;
  164.     };
  165.  
  166. /* segment registers */
  167.  
  168. struct _SREGS {
  169.     unsigned int es;
  170.     unsigned int cs;
  171.     unsigned int ss;
  172.     unsigned int ds;
  173.     };
  174.  
  175. #ifndef __STDC__
  176. /* Non-ANSI names for compatibility */
  177.  
  178. struct WORDREGS {
  179.     unsigned int ax;
  180.     unsigned int bx;
  181.     unsigned int cx;
  182.     unsigned int dx;
  183.     unsigned int si;
  184.     unsigned int di;
  185.     unsigned int cflag;
  186.     };
  187.  
  188. struct BYTEREGS {
  189.     unsigned char al, ah;
  190.     unsigned char bl, bh;
  191.     unsigned char cl, ch;
  192.     unsigned char dl, dh;
  193.     };
  194.  
  195. union REGS {
  196.     struct WORDREGS x;
  197.     struct BYTEREGS h;
  198.     };
  199.  
  200. struct SREGS {
  201.     unsigned int es;
  202.     unsigned int cs;
  203.     unsigned int ss;
  204.     unsigned int ds;
  205.     };
  206.  
  207. #endif 
  208.  
  209. #define _REGS_DEFINED
  210. #endif 
  211.  
  212.  
  213. /* function prototypes */
  214.  
  215. #ifndef _WINDOWS
  216. unsigned __cdecl _bios_disk(unsigned, struct _diskinfo_t *);
  217. #endif 
  218. unsigned __cdecl _bios_equiplist(void);
  219. #ifndef _WINDOWS
  220. unsigned __cdecl _bios_keybrd(unsigned);
  221. #endif 
  222. unsigned __cdecl _bios_memsize(void);
  223. #ifndef _WINDOWS
  224. unsigned __cdecl _bios_printer(unsigned, unsigned, unsigned);
  225. unsigned __cdecl _bios_serialcom(unsigned, unsigned, unsigned);
  226. #endif 
  227. unsigned __cdecl _bios_timeofday(unsigned, long *);
  228. int __cdecl _int86(int, union _REGS *, union _REGS *);
  229. int __cdecl _int86x(int, union _REGS *, union _REGS *, struct _SREGS *);
  230.  
  231. #ifndef __STDC__
  232. /* Non-ANSI names for compatibility */
  233. int __cdecl int86(int, union REGS *, union REGS *);
  234. int __cdecl int86x(int, union REGS *, union REGS *, struct SREGS *);
  235. #endif 
  236.  
  237. #endif 
  238.  
  239. #ifdef __cplusplus
  240. }
  241. #endif 
  242.  
  243. #define _INC_BIOS
  244. #endif 
  245.