summaryrefslogblamecommitdiffstats
path: root/private/os2/inc/os2dev.h
blob: bdff650265f320edcd59525020221d8a991b6a3a (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522









































































































































































































































































































































































































































































































































                                                                            
/**************************************************************************\
*
* Module Name: BSEDEV.H
*
* OS/2 Structures and constants for use with DosDevIOCtl
*
* Copyright (c) 1989-1990, Microsoft Corporation.  All rights reserved.
*
\**************************************************************************/

#define BSEDEV_INCLUDED

/* Input and Output Control Categories */

#define IOCTL_ASYNC     0x0001
#define IOCTL_SCR_AND_PTRDRAW   0x0003
#define IOCTL_KEYBOARD      0x0004
#define IOCTL_PRINTER       0x0005
#define IOCTL_LIGHTPEN      0x0006
#define IOCTL_POINTINGDEVICE    0x0007
#define IOCTL_DISK      0x0008
#define IOCTL_PHYSICALDISK  0x0009
#define IOCTL_MONITOR       0x000A
#define IOCTL_GENERAL       0x000B

/* Serial-Device Control */

#define ASYNC_SETBAUDRATE   0x0041
#define ASYNC_SETLINECTRL   0x0042
#define ASYNC_TRANSMITIMM   0x0044
#define ASYNC_SETBREAKOFF   0x0045
#define ASYNC_SETMODEMCTRL  0x0046
#define ASYNC_SETBREAKON    0x004B
#define ASYNC_STOPTRANSMIT  0x0047
#define ASYNC_STARTTRANSMIT 0x0048
#define ASYNC_SETDCBINFO    0x0053
#define ASYNC_GETBAUDRATE   0x0061
#define ASYNC_GETLINECTRL   0x0062
#define ASYNC_GETCOMMSTATUS 0x0064
#define ASYNC_GETLINESTATUS 0x0065
#define ASYNC_GETMODEMOUTPUT    0x0066
#define ASYNC_GETMODEMINPUT 0x0067
#define ASYNC_GETINQUECOUNT 0x0068
#define ASYNC_GETOUTQUECOUNT    0x0069
#define ASYNC_GETCOMMERROR  0x006D
#define ASYNC_GETCOMMEVENT  0x0072
#define ASYNC_GETDCBINFO    0x0073

/* Screen/Pointer-Draw Control */

#define SCR_ALLOCLDT        0x0070
#define SCR_DEALLOCLDT      0x0071
#define PTR_GETPTRDRAWADDRESS   0x0072
#define SCR_ALLOCLDTOFF     0x0075

/* Keyboard Control */

#define KBD_SETTRANSTABLE   0x0050
#define KBD_SETINPUTMODE    0x0051
#define KBD_SETINTERIMFLAG  0x0052
#define KBD_SETSHIFTSTATE   0x0053
#define KBD_SETTYPAMATICRATE    0x0054
#define KBD_SETFGNDSCREENGRP    0x0055
#define KBD_SETSESMGRHOTKEY 0x0056
#define KBD_SETFOCUS        0x0057
#define KBD_SETKCB          0x0058
#define KBD_SETNLS          0x005C
#define KBD_CREATE          0x005D
#define KBD_DESTROY         0x005E
#define KBD_GETINPUTMODE    0x0071
#define KBD_GETINTERIMFLAG  0x0072
#define KBD_GETSHIFTSTATE   0x0073
#define KBD_READCHAR        0x0074
#define KBD_PEEKCHAR        0x0075
#define KBD_GETSESMGRHOTKEY 0x0076
#define KBD_GETKEYBDTYPE    0x0077
#define KBD_GETCODEPAGEID   0x0078
#define KBD_XLATESCAN       0x0079
#if PMNT
#define KBD_GETHARDWAREID   0x007A  // Called by InitKeyboard(), PMWIN
#define KBD_GETCPANDCOUNTRY 0x007B  // Called by InitKeyboard(), PMWIN
                                    // (the name is my invention - PatrickQ)
#endif

/* Printer Control */

#define PRT_SETFRAMECTL     0x0042
#define PRT_SETINFINITERETRY    0x0044
#define PRT_INITPRINTER     0x0046
#define PRT_ACTIVATEFONT    0x0048
#define PRT_GETFRAMECTL     0x0062
#define PRT_GETINFINITERETRY    0x0064
#define PRT_GETPRINTERSTATUS    0x0066
#define PRT_QUERYACTIVEFONT 0x0069
#define PRT_VERIFYFONT      0x006A

/* Pointing-Device (Mouse) Control */

#define MOU_ALLOWPTRDRAW    0x0050
#define MOU_UPDATEDISPLAYMODE   0x0051
#define MOU_SCREENSWITCH    0x0052
#define MOU_SETSCALEFACTORS 0x0053
#define MOU_SETEVENTMASK    0x0054
#define MOU_SETHOTKEYBUTTON 0x0055
#define MOU_SETPTRSHAPE     0x0056
#define MOU_DRAWPTR     0x0057
#define MOU_REMOVEPTR       0x0058
#define MOU_SETPTRPOS       0x0059
#define MOU_SETPROTDRAWADDRESS  0x005A
#define MOU_SETREALDRAWADDRESS  0x005B
#define MOU_SETMOUSTATUS    0x005C
#define MOU_DISPLAYMODECHANGE   0x005D
#define MOU_GETBUTTONCOUNT  0x0060
#define MOU_GETMICKEYCOUNT  0x0061
#define MOU_GETMOUSTATUS    0x0062
#define MOU_READEVENTQUE    0x0063
#define MOU_GETQUESTATUS    0x0064
#define MOU_GETEVENTMASK    0x0065
#define MOU_GETSCALEFACTORS 0x0066
#define MOU_GETPTRPOS       0x0067
#define MOU_GETPTRSHAPE     0x0068
#define MOU_GETHOTKEYBUTTON 0x0069
#define MOU_VER         0x006A

/* Disk/Diskette Control */

#define DSK_LOCKDRIVE       0x0000
#define DSK_UNLOCKDRIVE     0x0001
#define DSK_REDETERMINEMEDIA    0x0002
#define DSK_SETLOGICALMAP   0x0003
#define DSK_BLOCKREMOVABLE  0x0020
#define DSK_GETLOGICALMAP   0x0021
#define DSK_SETDEVICEPARAMS 0x0043
#define DSK_WRITETRACK      0x0044
#define DSK_FORMATVERIFY    0x0045
#define DSK_GETDEVICEPARAMS 0x0063
#define DSK_READTRACK       0x0064
#define DSK_VERIFYTRACK     0x0065

/* Physical-Disk Control */

#define PDSK_LOCKPHYSDRIVE      0x0000
#define PDSK_UNLOCKPHYSDRIVE        0x0001
#define PDSK_WRITEPHYSTRACK     0x0044
#define PDSK_GETPHYSDEVICEPARAMS    0x0063
#define PDSK_READPHYSTRACK      0x0064
#define PDSK_VERIFYPHYSTRACK        0x0065

/* Character-Monitor Control */

#define MON_REGISTERMONITOR 0x0040

/* General Device Control */

#define DEV_FLUSHINPUT      0x0001
#define DEV_FLUSHOUTPUT     0x0002
#define DEV_QUERYMONSUPPORT 0x0060


/* ASYNC_GETCOMMERROR, ASYNC_SETBREAKOFF, ASYNC_SETBREAKON,
 * ASYNC_SETMODEMCTRL
 */

#define RX_QUE_OVERRUN      0x0001
#define RX_HARDWARE_OVERRUN 0x0002
#define PARITY_ERROR        0x0004
#define FRAMING_ERROR       0x0008

/* ASYNC_GETCOMMEVENT */

#define CHAR_RECEIVED   0x0001
#define LAST_CHAR_SENT  0x0004
#define CTS_CHANGED 0x0008
#define DSR_CHANGED 0x0010
#define DCD_CHANGED 0x0020
#define BREAK_DETECTED  0x0040
#define ERROR_OCCURRED  0x0080
#define RI_DETECTED 0x0100

/* ASYNC_GETCOMMSTATUS */

#define TX_WAITING_FOR_CTS      0x0001
#define TX_WAITING_FOR_DSR      0x0002
#define TX_WAITING_FOR_DCD      0x0004
#define TX_WAITING_FOR_XON      0x0008
#define TX_WAITING_TO_SEND_XON      0x0010
#define TX_WAITING_WHILE_BREAK_ON   0x0020
#define TX_WAITING_TO_SEND_IMM      0x0040
#define RX_WAITING_FOR_DSR      0x0080

/* ASYNC_GETLINESTATUS */

#define WRITE_REQUEST_QUEUED    0x0001
#define DATA_IN_TX_QUE      0x0002
#define HARDWARE_TRANSMITTING   0x0004
#define CHAR_READY_TO_SEND_IMM  0x0008
#define WAITING_TO_SEND_XON 0x0010
#define WAITING_TO_SEND_XOFF    0x0020

/* ASYNC_GETMODEMINPUT */

#define CTS_ON  0x10
#define DSR_ON  0x20
#define RI_ON   0x40
#define DCD_ON  0x80

/* DSK_SETDEVICEPARAMS */

#define BUILD_BPB_FROM_MEDIUM   0x00
#define REPLACE_BPB_FOR_DEVICE  0x01
#define REPLACE_BPB_FOR_MEDIUM  0x02

/* KBD_GETINPUTMODE, KBD_PEEKCHAR, KBD_SETINPUTMODE*/

#define ASCII_MODE  0x00
#define BINARY_MODE 0x80

/* KBD_GETINTERIMFLAG */

#define CONVERSION_REQUEST  0x20
#define INTERIM_CHAR        0x80

/* KBD_GETSESMGRHOTKEY */

#define HOTKEY_MAX_COUNT    0x0000
#define HOTKEY_CURRENT_COUNT    0x0001

/* KBD_PEEKCHAR */

#define KBD_DATA_RECEIVED   0x0001
#define KBD_DATA_BINARY     0x8000

/* KBD_READCHAR */

#define KBD_READ_WAIT   0x0000
#define KBD_READ_NOWAIT 0x8000

/* KBD_SETINPUTMODE */

#define SHIFT_REPORT_MODE  0x01

#ifndef INCL_MOU

#define MOUSE_MOTION            0x0001
#define MOUSE_MOTION_WITH_BN1_DOWN  0x0002
#define MOUSE_BN1_DOWN          0x0004
#define MOUSE_MOTION_WITH_BN2_DOWN  0x0008
#define MOUSE_BN2_DOWN          0x0010
#define MOUSE_MOTION_WITH_BN3_DOWN  0x0020
#define MOUSE_BN3_DOWN          0x0040

#define MHK_BUTTON1 0x0001
#define MHK_BUTTON2 0x0002
#define MHK_BUTTON3 0x0004

#ifndef MOU_NOWAIT
#define MOU_NOWAIT  0x0000
#endif
#ifndef MOU_WAIT
#define MOU_WAIT    0x0001
#endif

#endif /* #ifndef INCL_MOU */

/* MOU_GETHOTKEYBUTTON, MOU_SETHOTKEYBUTTON */

#define MHK_NO_HOTKEY   0x0000

/* MOU_GETMOUSTATUS */

#define MOUSE_QUEUEBUSY     0x0001
#define MOUSE_BLOCKREAD     0x0002
#define MOUSE_FLUSH     0x0004
#define MOUSE_UNSUPPORTED_MODE  0x0008
#define MOUSE_DISABLED      0x0100
#define MOUSE_MICKEYS       0x0200

/* PRT_GETPRINTERSTATUS */

#define PRINTER_TIMEOUT     0x0001
#define PRINTER_IO_ERROR    0x0008
#define PRINTER_SELECTED    0x0010
#define PRINTER_OUT_OF_PAPER    0x0020
#define PRINTER_ACKNOWLEDGED    0x0040
#define PRINTER_NOT_BUSY    0x0080

/* fbCtlHndShake */

#define MODE_DTR_CONTROL    0x01
#define MODE_DTR_HANDSHAKE  0x02
#define MODE_CTS_HANDSHAKE  0x08
#define MODE_DSR_HANDSHAKE  0x10
#define MODE_DCD_HANDSHAKE  0x20
#define MODE_DSR_SENSITIVITY    0x40

/* fbFlowReplace */

#define MODE_AUTO_TRANSMIT  0x01
#define MODE_AUTO_RECEIVE   0x02
#define MODE_ERROR_CHAR     0x04
#define MODE_NULL_STRIPPING 0x08
#define MODE_BREAK_CHAR     0x10
#define MODE_RTS_CONTROL    0x40
#define MODE_RTS_HANDSHAKE  0x80
#define MODE_TRANSMIT_TOGGLE    0xC0

/* fbTimeout */

#define MODE_NO_WRITE_TIMEOUT       0x01
#define MODE_READ_TIMEOUT       0x02
#define MODE_WAIT_READ_TIMEOUT      0x04
#define MODE_NOWAIT_READ_TIMEOUT    0x06

#pragma pack(1)

typedef struct _DCBINFO {   /* dcbinf */
    USHORT usWriteTimeout;
    USHORT usReadTimeout;
    BYTE   fbCtlHndShake;
    BYTE   fbFlowReplace;
    BYTE   fbTimeout;
    BYTE   bErrorReplacementChar;
    BYTE   bBreakReplacementChar;
    BYTE   bXONChar;
    BYTE   bXOFFChar;
} DCBINFO, *PDCBINFO;

typedef struct _TRACKLAYOUT {   /* trckl */
    BYTE   bCommand;
    USHORT usHead;
    USHORT usCylinder;
    USHORT usFirstSector;
    USHORT cSectors;
    struct {
        USHORT usSectorNumber;
        USHORT usSectorSize;
    } TrackTable[1];
} TRACKLAYOUT, *PTRACKLAYOUT;

#define DEVTYPE_48TPI   0x0000
#define DEVTYPE_96TPI   0x0001
#define DEVTYPE_35  0x0002
#define DEVTYPE_8SD 0x0003
#define DEVTYPE_8DD 0x0004
#define DEVTYPE_FIXED   0x0005
#define DEVTYPE_TAPE    0x0006
#define DEVTYPE_UNKNOWN 0x0007

typedef struct _BIOSPARAMETERBLOCK {    /* bspblk */
    USHORT usBytesPerSector;
    BYTE   bSectorsPerCluster;
    USHORT usReservedSectors;
    BYTE   cFATs;
    USHORT cRootEntries;
    USHORT cSectors;
    BYTE   bMedia;
    USHORT usSectorsPerFAT;
    USHORT usSectorsPerTrack;
    USHORT cHeads;
    ULONG  cHiddenSectors;
    ULONG  cLargeSectors;
    BYTE   abReserved[6];
    USHORT cCylinders;
    BYTE   bDeviceType;
    USHORT fsDeviceAttr;
} BIOSPARAMETERBLOCK, *PBIOSPARAMETERBLOCK;

typedef struct _SCREENGROUP {   /* scrgrp */
    USHORT idScreenGrp;
    USHORT fTerminate;
} SCREENGROUP, *PSCREENGROUP;

typedef struct _FRAME {     /* frm */
    BYTE bCharsPerLine;
    BYTE bLinesPerInch;
} FRAME, *PFRAME;

typedef struct _KBDTYPE {   /* kbdtyp */
    USHORT usType;
    USHORT reserved1;
    USHORT reserved2;
} KBDTYPE, *PKBDTYPE;

typedef struct _LINECONTROL {   /* lnctl */
    BYTE bDataBits;
    BYTE bParity;
    BYTE bStopBits;
    BYTE fTransBreak;
} LINECONTROL, *PLINECONTROL;

/* MODEMSTATUS.fbModemOn, ASYNC_GETMODEMOUTPUT */

#define DTR_ON  0x01
#define RTS_ON  0x02

/* MODEMSTATUS.fbModemOff */

#define DTR_OFF  0xFE
#define RTS_OFF  0xFD

typedef struct _MODEMSTATUS {   /* mdmst */
    BYTE fbModemOn;
    BYTE fbModemOff;
} MODEMSTATUS, *PMODEMSTATUS;

typedef struct _TRACKFORMAT {   /* trckfmt */
    BYTE bCommand;
    USHORT usHead;
    USHORT usCylinder;
    USHORT usReserved;
    USHORT cSectors;
    struct {
        BYTE bCylinder;
        BYTE bHead;
        BYTE idSector;
        BYTE bBytesSector;
    } FormatTable[1];
} TRACKFORMAT, *PTRACKFORMAT;

typedef struct _RXQUEUE {   /* rxq */
    USHORT cch;
    USHORT cb;
} RXQUEUE, *PRXQUEUE;

typedef struct _DEVICEPARAMETERBLOCK {  /* dvpblck */
    USHORT reserved1;
    USHORT cCylinders;
    USHORT cHeads;
    USHORT cSectorsPerTrack;
    USHORT reserved2;
    USHORT reserved3;
    USHORT reserved4;
    USHORT reserved5;
} DEVICEPARAMETERBLOCK, *PDEVICEPARAMETERBLOCK;

#ifndef PFN
typedef int (*PFN)();
#endif

typedef struct _PTRDRAWFUNCTION {   /* ptrdfnc */
    USHORT usReturnCode;
    PFN pfnDraw;
    CHAR* pchDataSeg;
} PTRDRAWFUNCTION, *PPTRDRAWFUNCTION;

typedef struct _PTRDRAWADDRESS {    /* ptrdaddr */
    USHORT reserved;
    PTRDRAWFUNCTION ptrdfnc;
} PTRDRAWADDRESS, *PPTRDRAWADDRESS;

typedef struct _SHIFTSTATE {    /* shftst */
    USHORT fsState;
    BYTE   fNLS;
} SHIFTSTATE, *PSHIFTSTATE;

/* HOTKEY.fsHotKey/SHIFTSTATE.fsState */

//#define RIGHTSHIFT  0x0001
//#define LEFTSHIFT   0x0002
//#define CONTROL     0x0004
//#define ALT     0x0008
//#define SCROLLLOCK_ON   0x0010
//#define NUMLOCK_ON  0x0020
//#define CAPSLOCK_ON 0x0040
//#define INSERT_ON   0x0080
//#define LEFTCONTROL 0x0100
//#define LEFTALT     0x0200
//#define RIGHTCONTROL    0x0400
//#define RIGHTALT    0x0800
//#define SCROLLLOCK  0x1000
//#define NUMLOCK     0x2000
//#define CAPSLOCK    0x4000
//#define SYSREQ      0x8000

typedef struct _HOTKEY {    /* htky */
    USHORT fsHotKey;
    UCHAR  uchScancodeMake;
    UCHAR  uchScancodeBreak;
    USHORT idHotKey;
} HOTKEY, *PHOTKEY;

typedef struct _MONITORPOSITION {   /* mnpos */
    USHORT fPosition;
    USHORT index;
    ULONG  pbInBuf;
    USHORT offOutBuf;
} MONITORPOSITION, *PMONITORPOSITION;

typedef struct _RATEDELAY { /* rtdly */
    USHORT usDelay;
    USHORT usRate;
} RATEDELAY, *PRATEDELAY;

typedef struct _CODEPAGEINFO {  /* cpi */
    PBYTE pbTransTable;
    USHORT idCodePage;
    USHORT idTable;
} CODEPAGEINFO, *PCODEPAGEINFO;

typedef struct _CPID {  /* cpid */
    USHORT idCodePage;
    USHORT Reserved;
} CPID, *PCPID;

typedef struct _LDTADDRINFO {   /* ldtaddr */
    PULONG pulPhysAddr;
    USHORT cb;
} LDTADDRINFO, *PLDTADDRINFO;

typedef struct _PTRDRAWDATA {   /* ptrdd */
    USHORT cb;
    USHORT usConfig;
    USHORT usFlag;
} PTRDRAWDATA, *PPTRDRAWDATA;

typedef struct _FONTINFO {
    USHORT idCodePage;
    USHORT idFont;
} FONTINFO, *PFONTINFO;

#pragma pack()