home *** CD-ROM | disk | FTP | other *** search
- /* bios.h - BIOS functions
- * $Version: 1.1 $
- * Copyright 1990,91 Intel Corporation, ALL RIGHTS RESERVED.
- */
-
- #ifndef _biosh
- #define _biosh
-
- #pragma fixedparams("_bios_disk", "_bios_equiplist", "_bios_keybrd")
- #pragma fixedparams("_bios_memsize", "_bios_printer", "_bios_serialcom")
- #pragma fixedparams("_bios_timeofday")
-
- /* BIOS COM port configuration constants */
- #define _COM_INIT 0x00 /* Initialize the com port */
- #define _COM_SEND 0x01 /* Send a byte to the com port */
- #define _COM_RECEIVE 0x02 /* Get a byte from the com port */
- #define _COM_STATUS 0x03 /* Get status from the com port */
-
- #define _COM_110 0x00 /* Baud rate: 110 */
- #define _COM_150 0x20 /* Baud rate: 150 */
- #define _COM_300 0x40 /* Baud rate: 300 */
- #define _COM_600 0x60 /* Baud rate: 600 */
- #define _COM_1200 0x80 /* Baud rate: 1200 */
- #define _COM_2400 0xA0 /* Baud rate: 2400 */
- #define _COM_4800 0xC0 /* Baud rate: 4800 */
- #define _COM_9600 0xE0 /* Baud rate: 9600 */
-
- #define _COM_CHR7 0x02 /* Seven data bits per character */
- #define _COM_CHR8 0x03 /* Eight data bits per character */
-
- #define _COM_NOPARITY 0x00 /* No parity check */
- #define _COM_ODDPARITY 0x08 /* Check for odd parity */
- #define _COM_EVENPARITY 0x18 /* Check for even parity */
-
- #define _COM_STOP1 0x00 /* One stop bit */
- #define _COM_STOP2 0x04 /* Two stop bits */
-
- /* BIOS disk operations */
- #define _DISK_RESET 0x00 /* Reset the disk controller */
- #define _DISK_STATUS 0x01 /* Get status from the disk */
- #define _DISK_READ 0x02 /* Read sectors from the disk */
- #define _DISK_WRITE 0x03 /* Write sectors to the disk */
- #define _DISK_VERIFY 0x04 /* Verify disk sectors */
- #define _DISK_FORMAT 0x05 /* Format a disk track */
-
- #ifndef _FAR
- #define _FAR
- #define _HUGE
- #define _NEAR
- #endif
-
- /* BIOS disk structure */
- #ifndef _diskinfo_t
- #pragma align (diskinfo_t)
- struct diskinfo_t {
- unsigned short drive;
- unsigned short head;
- unsigned short track;
- unsigned short sector;
- unsigned short nsectors;
- void _FAR *buffer;
- };
- #define _diskinfo_t
- #define _DISKINFO_T_DEFINED
- #endif /* _diskinfo_t */
-
- /* BIOS keyboard operations */
- #define _KEYBRD_READ 0x00 /* Get next character from keyboard */
- #define _KEYBRD_READY 0x01 /* See if a keystroke is ready */
- #define _KEYBRD_SHIFTSTATUS 0x02 /* Get status of shift key */
-
- /* BIOS enhanced keyboards operations */
- #define _NKEYBRD_READ 0x10 /* Get next character from keyboard */
- #define _NKEYBRD_READY 0x11 /* See if a keystroke is ready */
- #define _NKEYBRD_SHIFTSTATUS 0x12 /* Get status of Shift key */
-
- /* BIOS printer operations */
- #define _PRINTER_WRITE 0x00 /* Write characters to the printer */
- #define _PRINTER_INIT 0x01 /* Initialize the printer */
- #define _PRINTER_STATUS 0x02 /* Get status from the printer */
-
- /* BIOS clock operations */
- #define _TIME_GETCLOCK 0x00 /* Get the clock counter */
- #define _TIME_SETCLOCK 0x01 /* Set the clock counter */
-
- /* Registers union - overlay the DWORD, WORD, and BYTE register
- * structures into the same memory area. Declaration of "eax" and "ax"
- * entries the same (unsigned) for ease of porting code using "ax". Also,
- * note the optional 16-bit implementation of 'x' field.
- */
- #ifndef _regs
- #pragma align (DWORDREGS)
- #pragma align (WORDREGS)
- #pragma align (BYTEREGS)
- union REGS {
- struct DWORDREGS {unsigned eax, ebx, ecx, edx, esi,
- edi, cflag, eflags, ebp;} w;
-
- struct WORDREGS {unsigned ax, bx, cx, dx, si,
- di, cflag, flags, bp;} x;
-
- #if _ARCHITECTURE_ == 386 || _ARCHITECTURE_ == 486
-
- struct BYTEREGS {unsigned al:8, ah:8, :16, bl:8, bh:8, :16,
- cl:8, ch:8, :16, dl:8, dh:8, :16;} h;
- #else
- struct BYTEREGS {unsigned al:8, ah:8, bl:8, bh:8,
- cl:8, ch:8, dl:8, dh:8;} h;
- #endif
-
- };
-
- /* Selector/Segment register structure */
- #pragma align (SREGS)
- struct SREGS {unsigned short es, cs, ss, ds, fs, gs;};
-
- #define _regs
- #endif /* _regs */
-
- /*
- * Function prototypes
- */
- unsigned int _bios_disk(unsigned, struct diskinfo_t *);
- unsigned int _bios_equiplist(void);
- unsigned int _bios_keybrd(unsigned);
- unsigned int _bios_memsize(void);
- unsigned int _bios_printer(unsigned, unsigned, unsigned);
- unsigned int _bios_serialcom(unsigned, unsigned, unsigned);
- unsigned int _bios_timeofday(unsigned, long *);
-
- #endif /* _biosh */
-