OSDN Git Service

no bone
[nethackexpress/trunk.git] / include / def_os2.h
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 */