simplify #vanquished monsters processing...
[aNetHack.git] / include / def_os2.h
blob30d02c81655d909a7738bba4cf944fec3ac7ef4d
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. */
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 */
11 #ifdef OS2_USESYSHEADERS
13 #define INCL_NOPMAPI
14 #define INCL_DOSFILEMGR
15 #define INCL_DOS
16 #define INCL_SUB
18 #include <os2.h>
20 #else
22 typedef char CHAR;
23 typedef void VOID;
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;
31 #ifdef OS2_32BITAPI
33 typedef unsigned long SHANDLE;
34 typedef USHORT HKBD;
35 typedef USHORT HVIO;
37 #define CCHMAXPATHCOMP 256
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
55 #define DAT
57 #else /* OS2_32BITAPI */
59 typedef unsigned short SHANDLE;
60 typedef SHANDLE HKBD;
61 typedef SHANDLE HVIO;
63 #define CCHMAXPATHCOMP 13
65 #ifdef OS2_MSC
66 #define API16 pascal far
67 #define DAT16
68 #endif
70 #define DAT DAT16
72 #endif /* OS2_32BITAPI */
74 typedef USHORT *DAT16 PUSHORT;
75 typedef BYTE *DAT16 PBYTE;
76 typedef ULONG *DAT PULONG;
77 typedef VOID *DAT PVOID;
79 typedef SHANDLE HDIR;
80 typedef HDIR *DAT PHDIR;
82 typedef char *DAT16 PCH;
83 typedef char *DAT PSZ;
85 /* all supported compilers understand this */
87 #pragma pack(2)
89 typedef struct {
90 UCHAR chChar;
91 UCHAR chScan;
92 UCHAR fbStatus;
93 UCHAR bNlsShift;
94 USHORT fsState;
95 ULONG time;
96 } KBDKEYINFO;
98 typedef KBDKEYINFO *DAT16 PKBDKEYINFO;
100 /* File time and date types */
102 typedef struct {
103 UINT twosecs : 5;
104 UINT minutes : 6;
105 UINT hours : 5;
106 } FTIME;
108 typedef struct {
109 UINT day : 5;
110 UINT month : 4;
111 UINT year : 7;
112 } FDATE;
114 #ifdef OS2_32BITAPI
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;
131 #else
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;
147 typedef FILEFINDBUF *DAT16 PFILEFINDBUF;
149 #endif /* OS2_32BITAPI */
151 typedef struct {
152 ULONG idFileSystem;
153 ULONG cSectorUnit;
154 ULONG cUnit;
155 ULONG cUnitAvail;
156 USHORT cbSector;
157 } FSALLOCATE;
159 typedef struct {
160 USHORT cb;
161 USHORT fsMask;
162 USHORT chTurnAround;
163 USHORT fsInterim;
164 USHORT fsState;
165 } KBDINFO;
167 typedef KBDINFO *DAT16 PKBDINFO;
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;
186 typedef VIOMODEINFO *DAT16 PVIOMODEINFO;
188 #pragma pack()
190 /* OS2 API functions */
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);
197 USHORT API16 VioGetMode(PVIOMODEINFO, HVIO);
198 USHORT API16 VioSetCurPos(USHORT, USHORT, HVIO);
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 */
213 #endif /* OS2_USESYSHEADERS */