/*
 *  bios.h      BIOS functions (IBM PC)
 *
 * =========================================================================
 *
 *                          Open Watcom Project
 *
 * Copyright (c) 2004-2026 The Open Watcom Contributors. All Rights Reserved.
 * Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
 *
 *    This file is automatically generated. Do not edit directly.
 *
 * =========================================================================
 */
#ifndef _BIOS_H_INCLUDED
#define _BIOS_H_INCLUDED

#ifndef _ENABLE_AUTODEPEND
 #pragma read_only_file
#endif

#ifndef __COMDEF_H_INCLUDED
 #include <_comdef.h>
#endif

#if !defined(_SYS__PC98_H_INCLUDED) && defined(__WATCOM_PC98__)
 #include <sys/_pc98.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef _M_IX86
 #pragma pack( __push, 1 )
#else
 #pragma pack( __push, 8 )
#endif

struct  _ibm_diskinfo_t {       /* disk parameters */
        unsigned drive;         /* drive number    */
        unsigned head;          /* head number     */
        unsigned track;         /* track number    */
        unsigned sector;        /* sector number   */
        unsigned nsectors;      /* number of sectors to read/write/compare  */
        void _WCFAR *buffer;    /* buffer to read to,write from, or compare */
};
#define _diskinfo_t     _ibm_diskinfo_t

#if !defined( _NO_EXT_KEYS ) /* extensions enabled */
#define diskinfo_t      _ibm_diskinfo_t
#endif /* extensions enabled */

/* constants for BIOS disk access functions */
#define _DISK_RESET     0
#define _DISK_STATUS    1
#define _DISK_READ      2
#define _DISK_WRITE     3
#define _DISK_VERIFY    4
#define _DISK_FORMAT    5

/* constants for BIOS serial communications (RS-232) support */

/* serial port services */

#define _COM_INIT       0       /* init serial port */
#define _COM_SEND       1       /* send character */
#define _COM_RECEIVE    2       /* receive character */
#define _COM_STATUS     3       /* get serial port status */

/* serial port initializers.  One and only one constant from each of the
 * following four groups - character size, stop bit, parity, and baud rate -
 * must be specified in the initialization byte.
 */

/* character size initializers */

#define _COM_CHR7       2       /* 7 bits characters */
#define _COM_CHR8       3       /* 8 bits characters */

/* stop bit values - on or off */

#define _COM_STOP1      0       /* 1 stop bit */
#define _COM_STOP2      4       /* 2 stop bits */

/*  parity initializers */

#define _COM_NOPARITY   0       /* no parity */
#define _COM_ODDPARITY  8       /* odd parity */
#define _COM_SPACEPARITY 16     /* space parity */
#define _COM_EVENPARITY 24      /* even parity */

/*  baud rate initializers */

#define _COM_110        0       /* 110 baud */
#define _COM_150        32      /* 150 baud */
#define _COM_300        64      /* 300 baud */
#define _COM_600        96      /* 600 baud */
#define _COM_1200       128     /* 1200 baud */
#define _COM_2400       160     /* 2400 baud */
#define _COM_4800       192     /* 4800 baud */
#define _COM_9600       224     /* 9600 baud */

/* keyboard services */

#define _KEYBRD_READ        0   /* read next character from keyboard */
#define _KEYBRD_READY       1   /* check for keystroke */
#define _KEYBRD_SHIFTSTATUS 2   /* get current shift key status */

/* services for enhanced keyboards */

#define _NKEYBRD_READ           0x10    /* read next character from keyboard */
#define _NKEYBRD_READY          0x11    /* check for keystroke */
#define _NKEYBRD_SHIFTSTATUS    0x12    /* get current shift key status */

/* printer services */

#define _PRINTER_WRITE  0       /* write character to printer */
#define _PRINTER_INIT   1       /* initialize printer */
#define _PRINTER_STATUS 2       /* get printer status */

/* time-of-day services */

#define _TIME_GETCLOCK  0       /* get current clock count */
#define _TIME_SETCLOCK  1       /* set current clock count */


_WCRTLINK extern unsigned short _bios_disk(unsigned __cmd, struct diskinfo_t *__diskinfo);
_WCRTLINK extern unsigned short _bios_equiplist(void);
_WCRTLINK extern unsigned short _bios_keybrd(unsigned __cmd);
_WCRTLINK extern unsigned short _bios_memsize(void);
_WCRTLINK extern unsigned short _bios_printer(unsigned __cmd,unsigned __port, unsigned __data);
_WCRTLINK extern unsigned short _bios_serialcom(unsigned __cmd,unsigned __port, unsigned __data);
_WCRTLINK extern unsigned short _bios_timeofday(unsigned __cmd,long *__timeval);

#pragma pack( __pop )

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif
