1 /* NetHack 3.6 def_os2.h $NHDT-Date: 1432512782 2015/05/25 00:13:02 $ $NHDT-Branch: master $:$NHDT-Revision: 1.8 $ */ 2 /* Copyright (c) Timo Hakulinen, 1990, 1991, 1992, 1993. */ 3 /* NetHack may be freely redistributed. See license for details. */ 4 5 /* 6 * Only a small portion of all OS/2 defines are needed, so the 7 * actual include files often need not be used. In fact, 8 * including the full headers may stall the compile in DOS. 9 */ 10 11 #ifdef OS2_USESYSHEADERS 12 13 #define INCL_NOPMAPI 14 #define INCL_DOSFILEMGR 15 #define INCL_DOS 16 #define INCL_SUB 17 18 #include <os2.h> 19 20 #else 21 22 typedef char CHAR; 23 typedef void VOID; 24 25 typedef unsigned char UCHAR; 26 typedef unsigned short USHORT; 27 typedef unsigned int UINT; 28 typedef unsigned long ULONG; 29 typedef unsigned char BYTE; 30 31 #ifdef OS2_32BITAPI 32 33 typedef unsigned long SHANDLE; 34 typedef USHORT HKBD; 35 typedef USHORT HVIO; 36 37 #define CCHMAXPATHCOMP 256 38 39 #ifdef OS2_CSET2 40 #define API16 _Far16 _Pascal 41 #define DAT16 42 #define API32 _System 43 #define KbdGetStatus KBD16GETSTATUS 44 #define KbdSetStatus KBD16SETSTATUS 45 #define KbdCharIn KBD16CHARIN 46 #define KbdPeek KBD16PEEK 47 #define VioGetMode VIO16GETMODE 48 #define VioSetCurPos VIO16SETCURPOS 49 #else 50 #define API16 51 #define DAT16 52 #define API32 53 #endif 54 55 #define DAT 56 57 #else /* OS2_32BITAPI */ 58 59 typedef unsigned short SHANDLE; 60 typedef SHANDLE HKBD; 61 typedef SHANDLE HVIO; 62 63 #define CCHMAXPATHCOMP 13 64 65 #ifdef OS2_MSC 66 #define API16 pascal far 67 #define DAT16 68 #endif 69 70 #define DAT DAT16 71 72 #endif /* OS2_32BITAPI */ 73 74 typedef USHORT *DAT16 PUSHORT; 75 typedef BYTE *DAT16 PBYTE; 76 typedef ULONG *DAT PULONG; 77 typedef VOID *DAT PVOID; 78 79 typedef SHANDLE HDIR; 80 typedef HDIR *DAT PHDIR; 81 82 typedef char *DAT16 PCH; 83 typedef char *DAT PSZ; 84 85 /* all supported compilers understand this */ 86 87 #pragma pack(2) 88 89 typedef struct { 90 UCHAR chChar; 91 UCHAR chScan; 92 UCHAR fbStatus; 93 UCHAR bNlsShift; 94 USHORT fsState; 95 ULONG time; 96 } KBDKEYINFO; 97 98 typedef KBDKEYINFO *DAT16 PKBDKEYINFO; 99 100 /* File time and date types */ 101 102 typedef struct { 103 UINT twosecs : 5; 104 UINT minutes : 6; 105 UINT hours : 5; 106 } FTIME; 107 108 typedef struct { 109 UINT day : 5; 110 UINT month : 4; 111 UINT year : 7; 112 } FDATE; 113 114 #ifdef OS2_32BITAPI 115 116 typedef struct { 117 ULONG oNextEntryOffset; 118 FDATE fdateCreation; 119 FTIME ftimeCreation; 120 FDATE fdateLastAccess; 121 FTIME ftimeLastAccess; 122 FDATE fdateLastWrite; 123 FTIME ftimeLastWrite; 124 ULONG cbFile; 125 ULONG cbFileAlloc; 126 ULONG attrFile; 127 UCHAR cchName; 128 CHAR achName[CCHMAXPATHCOMP]; 129 } FILEFINDBUF3; 130 131 #else 132 133 typedef struct { 134 FDATE fdateCreation; 135 FTIME ftimeCreation; 136 FDATE fdateLastAccess; 137 FTIME ftimeLastAccess; 138 FDATE fdateLastWrite; 139 FTIME ftimeLastWrite; 140 ULONG cbFile; 141 ULONG cbFileAlloc; 142 USHORT attrFile; 143 UCHAR cchName; 144 CHAR achName[CCHMAXPATHCOMP]; 145 } FILEFINDBUF; 146 147 typedef FILEFINDBUF *DAT16 PFILEFINDBUF; 148 149 #endif /* OS2_32BITAPI */ 150 151 typedef struct { 152 ULONG idFileSystem; 153 ULONG cSectorUnit; 154 ULONG cUnit; 155 ULONG cUnitAvail; 156 USHORT cbSector; 157 } FSALLOCATE; 158 159 typedef struct { 160 USHORT cb; 161 USHORT fsMask; 162 USHORT chTurnAround; 163 USHORT fsInterim; 164 USHORT fsState; 165 } KBDINFO; 166 167 typedef KBDINFO *DAT16 PKBDINFO; 168 169 typedef struct { 170 USHORT cb; 171 UCHAR fbType; 172 UCHAR color; 173 USHORT col; 174 USHORT row; 175 USHORT hres; 176 USHORT vres; 177 UCHAR fmt_ID; 178 UCHAR attrib; 179 ULONG buf_addr; 180 ULONG buf_length; 181 ULONG full_length; 182 ULONG partial_length; 183 PCH ext_data_addr; 184 } VIOMODEINFO; 185 186 typedef VIOMODEINFO *DAT16 PVIOMODEINFO; 187 188 #pragma pack() 189 190 /* OS2 API functions */ 191 192 USHORT API16 KbdGetStatus(PKBDINFO, HKBD); 193 USHORT API16 KbdSetStatus(PKBDINFO, HKBD); 194 USHORT API16 KbdCharIn(PKBDKEYINFO, USHORT, HKBD); 195 USHORT API16 KbdPeek(PKBDKEYINFO, HKBD); 196 197 USHORT API16 VioGetMode(PVIOMODEINFO, HVIO); 198 USHORT API16 VioSetCurPos(USHORT, USHORT, HVIO); 199 200 #ifdef OS2_32BITAPI 201 ULONG API32 DosQueryFSInfo(ULONG, ULONG, PVOID, ULONG); 202 ULONG API32 DosFindFirst(PSZ, PHDIR, ULONG, PVOID, ULONG, PULONG, ULONG); 203 ULONG API32 DosFindNext(HDIR, PVOID, ULONG, PULONG); 204 ULONG API32 DosSetDefaultDisk(ULONG); 205 #else 206 USHORT API16 DosQFSInfo(USHORT, USHORT, PBYTE, USHORT); 207 USHORT API16 208 DosFindFirst(PSZ, PHDIR, USHORT, PFILEFINDBUF, USHORT, PUSHORT, ULONG); 209 USHORT API16 DosFindNext(HDIR, PFILEFINDBUF, USHORT, PUSHORT); 210 USHORT API16 DosSelectDisk(USHORT); 211 #endif /* OS2_32BITAPI */ 212 213 #endif /* OS2_USESYSHEADERS */ 214