1 /* SCCS Id: @(#)def_os2.h 3.4 1993/01/19 */ 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 DosFindFirst(PSZ, PHDIR, USHORT, PFILEFINDBUF, USHORT, PUSHORT, ULONG); 208 USHORT API16 DosFindNext(HDIR, PFILEFINDBUF, USHORT, PUSHORT); 209 USHORT API16 DosSelectDisk(USHORT); 210 # endif /* OS2_32BITAPI */ 211 212 #endif /* OS2_USESYSHEADERS */ 213