Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
213 lines (167 sloc) 4.15 KB
/* SCCS Id: @(#)def_os2.h 3.4 1993/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 */
Something went wrong with that request. Please try again.