home *** CD-ROM | disk | FTP | other *** search
- /* SCCS Id: @(#)def_os2.h 3.1 93/01/19 */
- /* Copyright (c) Timo Hakulinen, 1990, 1991, 1992, 1993. */
- /* NetHack may be freely redistributed. See license for details. */
-
- /*
- * Only a small portion of all OS/2 defines are needed, so the
- * actual include files often need not be used. In fact,
- * including the full headers may stall the compile in DOS.
- */
-
- #ifdef OS2_USESYSHEADERS
-
- # define INCL_NOPMAPI
- # define INCL_DOSFILEMGR
- # define INCL_DOS
- # define INCL_SUB
-
- # include <os2.h>
-
- #else
-
- typedef char CHAR;
- typedef void VOID;
-
- typedef unsigned char UCHAR;
- typedef unsigned short USHORT;
- typedef unsigned int UINT;
- typedef unsigned long ULONG;
- typedef unsigned char BYTE;
-
- # ifdef OS2_32BITAPI
-
- typedef unsigned long SHANDLE;
- typedef USHORT HKBD;
- typedef USHORT HVIO;
-
- # define CCHMAXPATHCOMP 256
-
- # ifdef OS2_CSET2
- # define API16 _Far16 _Pascal
- # define DAT16
- # define API32 _System
- # define KbdGetStatus KBD16GETSTATUS
- # define KbdSetStatus KBD16SETSTATUS
- # define KbdCharIn KBD16CHARIN
- # define KbdPeek KBD16PEEK
- # define VioGetMode VIO16GETMODE
- # define VioSetCurPos VIO16SETCURPOS
- # else
- # define API16
- # define DAT16
- # define API32
- # endif
-
- # define DAT
-
- # else /* OS2_32BITAPI */
-
- typedef unsigned short SHANDLE;
- typedef SHANDLE HKBD;
- typedef SHANDLE HVIO;
-
- # define CCHMAXPATHCOMP 13
-
- # ifdef OS2_MSC
- # define API16 pascal far
- # define DAT16
- # endif
-
- # define DAT DAT16
-
- # endif /* OS2_32BITAPI */
-
- typedef USHORT * DAT16 PUSHORT;
- typedef BYTE * DAT16 PBYTE;
- typedef ULONG * DAT PULONG;
- typedef VOID * DAT PVOID;
-
- typedef SHANDLE HDIR;
- typedef HDIR * DAT PHDIR;
-
- typedef char * DAT16 PCH;
- typedef char * DAT PSZ;
-
- /* all supported compilers understand this */
-
- # pragma pack(2)
-
- typedef struct {
- UCHAR chChar;
- UCHAR chScan;
- UCHAR fbStatus;
- UCHAR bNlsShift;
- USHORT fsState;
- ULONG time;
- } KBDKEYINFO;
-
- typedef KBDKEYINFO * DAT16 PKBDKEYINFO;
-
- /* File time and date types */
-
- typedef struct {
- UINT twosecs : 5;
- UINT minutes : 6;
- UINT hours : 5;
- } FTIME;
-
- typedef struct {
- UINT day : 5;
- UINT month : 4;
- UINT year : 7;
- } FDATE;
-
- # ifdef OS2_32BITAPI
-
- typedef struct {
- ULONG oNextEntryOffset;
- FDATE fdateCreation;
- FTIME ftimeCreation;
- FDATE fdateLastAccess;
- FTIME ftimeLastAccess;
- FDATE fdateLastWrite;
- FTIME ftimeLastWrite;
- ULONG cbFile;
- ULONG cbFileAlloc;
- ULONG attrFile;
- UCHAR cchName;
- CHAR achName[CCHMAXPATHCOMP];
- } FILEFINDBUF3;
-
- # else
-
- typedef struct {
- FDATE fdateCreation;
- FTIME ftimeCreation;
- FDATE fdateLastAccess;
- FTIME ftimeLastAccess;
- FDATE fdateLastWrite;
- FTIME ftimeLastWrite;
- ULONG cbFile;
- ULONG cbFileAlloc;
- USHORT attrFile;
- UCHAR cchName;
- CHAR achName[CCHMAXPATHCOMP];
- } FILEFINDBUF;
-
- typedef FILEFINDBUF * DAT16 PFILEFINDBUF;
-
- # endif /* OS2_32BITAPI */
-
- typedef struct {
- ULONG idFileSystem;
- ULONG cSectorUnit;
- ULONG cUnit;
- ULONG cUnitAvail;
- USHORT cbSector;
- } FSALLOCATE;
-
- typedef struct {
- USHORT cb;
- USHORT fsMask;
- USHORT chTurnAround;
- USHORT fsInterim;
- USHORT fsState;
- } KBDINFO;
-
- typedef KBDINFO * DAT16 PKBDINFO;
-
- typedef struct {
- USHORT cb;
- UCHAR fbType;
- UCHAR color;
- USHORT col;
- USHORT row;
- USHORT hres;
- USHORT vres;
- UCHAR fmt_ID;
- UCHAR attrib;
- ULONG buf_addr;
- ULONG buf_length;
- ULONG full_length;
- ULONG partial_length;
- PCH ext_data_addr;
- } VIOMODEINFO;
-
- typedef VIOMODEINFO * DAT16 PVIOMODEINFO;
-
- # pragma pack()
-
- /* OS2 API functions */
-
- USHORT API16 KbdGetStatus(PKBDINFO, HKBD);
- USHORT API16 KbdSetStatus(PKBDINFO, HKBD);
- USHORT API16 KbdCharIn(PKBDKEYINFO, USHORT, HKBD);
- USHORT API16 KbdPeek(PKBDKEYINFO, HKBD);
-
- USHORT API16 VioGetMode(PVIOMODEINFO, HVIO);
- USHORT API16 VioSetCurPos(USHORT, USHORT, HVIO);
-
- # ifdef OS2_32BITAPI
- ULONG API32 DosQueryFSInfo(ULONG, ULONG, PVOID, ULONG);
- ULONG API32 DosFindFirst(PSZ, PHDIR, ULONG, PVOID, ULONG, PULONG, ULONG);
- ULONG API32 DosFindNext(HDIR, PVOID, ULONG, PULONG);
- ULONG API32 DosSetDefaultDisk(ULONG);
- # else
- USHORT API16 DosQFSInfo(USHORT, USHORT, PBYTE, USHORT);
- USHORT API16 DosFindFirst(PSZ, PHDIR, USHORT, PFILEFINDBUF, USHORT, PUSHORT, ULONG);
- USHORT API16 DosFindNext(HDIR, PFILEFINDBUF, USHORT, PUSHORT);
- USHORT API16 DosSelectDisk(USHORT);
- # endif /* OS2_32BITAPI */
-
- #endif /* OS2_USESYSHEADERS */
-