OSDN Git Service

ifdef-ed official patches
[jnethack/source.git] / include / def_os2.h
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 */