CPGuide - Generic IOCtl Commands: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{IBM-Reprint}} | {{IBM-Reprint}} | ||
{{CPGuide}} | {{CPGuide}} | ||
OS/2 device drivers are used to access the I/O hardware. The IOCtl functions provide a method for an application, or subsystem, to send device-specific control commands to a physical device driver. These IOCtls are subfunctions that are issued through the DosDevIOCtl API function request. The DosDevIOCtl function request can be used only by OS/2 applications; the INT 21h IOCtl request can be used only by DOS applications. | |||
The category and function fields are as follows. Each code is contained in a byte: | |||
;Category Code | |||
:0xxx xxxx OS/2-defined | |||
:1xxx xxxx User-defined | |||
:_xxx xxxx Code. | |||
;Function Code | |||
:0xxx xxxx Return error, if unsupported | |||
:1xxx xxxx Ignore, if unsupported | |||
:x0xx xxxx Intercepted by the OS/2 operating system | |||
:x1xx xxxx Passed to driver | |||
:xx0x xxxx Sends data and commands to device | |||
:xx1x xxxx Queries data and information from device | |||
:___x xxxx Subfunction. | |||
Notice that the send/query data bit is intended only to standardize the function set; it plays no critical role. Some functions can contain both command and query elements. Such commands are defined as sends data. | |||
==Generic IOCtl Function Table== | ==Generic IOCtl Function Table== | ||
The list of categories and functions for the generic IOCtl requests are as follows: | |||
<PRE> | |||
┌──────────┬──────────┬────────────────────────────────────────┐ | |||
│Category │Function │Description │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 01h │ │Serial Device Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 14h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 34h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 41h │Set Bit Rate │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 42h │Set Line Characteristics (stop, parity, │ | |||
│ │ │data bits) │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 43h │Extended Set Bit Rate │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 44h │Transmit Byte Immediate │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 45h │Set Break OFF │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 46h │Set Modem Control Signals │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 47h │Behave As If XOFF Received (stop │ | |||
│ │ │transmit) │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 48h │Behave As If XON Received (start │ | |||
│ │ │transmit) │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 49h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 4Bh │Set Break ON │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 53h │Set Device Control Block (DCB) │ | |||
│ │ │Parameters │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 54h │Set Enhanced Mode Parameters │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 61h │Query Current Bit Rate │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 62h │Query Line Characteristics │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 63h │Extended Query Bit Rate │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 64h │Query COM Status │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 65h │Query Transmit Data Status │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 66h │Query Modem Control Output Signals │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 67h │Query Current Modem Input Signals │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 68h │Query Number of Characters in Receive │ | |||
│ │ │Queue │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 69h │Query Number of Characters in Transmit │ | |||
│ │ │Queue │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 6Dh │Query COM Error │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 72h │Query COM Event Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 73h │Query Device Control Block (DCB) │ | |||
│ │ │Parameters │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 74h │Query Enhanced Mode Parameters │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 02h │ │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 03h │ │Video Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 70h │Allocate an LDT Selector │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 71h │Deallocate an LDT Selector │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 72h │Query Pointer Draw Address │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 73h │Initialize Call Vector Table │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 74h │ABIOS Pass-Through │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 75h │Allocate an LDT Selector with Offset │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 76h │Allocate an LDT Selector with Background│ | |||
│ │ │Validation Options │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 7Eh │Allocate Video Buffer │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 7Fh │Get Address to ROM Font │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 04h │ │Keyboard Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 50h │Set Code Page │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 51h │Set Input Mode (Default ASCII) │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 52h │Set Interim Character Flags │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 53h │Set Shift State │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 54h │Set Typematic Rate and Delay │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 55h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 56h │Set Session Manager Hot Key │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 57h │Set KCB │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 58h │Set Code Page Number │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 59h │Set Read/Peek Notification │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Ah │Alter Keyboard LEDs │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Bh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Ch │Set NLS and Custom Code Page │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Dh │Create New Logical Keyboard │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Eh │Destroy Logical Keyboard │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 71h │Query Input Mode │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 72h │Query Interim Character Flags │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 73h │Query Shift State │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 74h │Read Character Data Records │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 75h │Peek Character Data Record │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 76h │Query Session Manager Hot Key │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 77h │Query Keyboard Type │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 78h │Query Code Page Number │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 79h │Translate Scan Code to ASCII │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 7Ah │Query Keyboard Hardware ID │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 7Bh │Query Keyboard Code Page Support │ | |||
│ │ │Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 05h │ │Parallel Port Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 42h │Set Frame Control (CPL, LPI) │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 43h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 44h │Set Infinite Retry │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 45h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 46h │Initialize Parallel Port │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 47h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 48h │Activate Font │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 49h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 4Bh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 4Ch │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 4Dh │Set Print-Job Title │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 4Eh │Set Parallel Port Write Time-Out Value │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 4Fh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 50h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 51h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 62h │Query Frame Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 63h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 64h │Query Infinite Retry │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 65h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 66h │Query Parallel Port Status │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 67h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 68h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 69h │Query Active Font │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 6Ah │Verify Font │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 6Bh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 6Ch │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 6Dh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 6Eh │Query Parallel Port Write Time-Out Value│ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 6Fh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 70h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 71h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 06h │ │Light Pen Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 07h │ │Mouse Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 50h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 51h │Notification of Display Mode Change │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 52h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 53h │Reassign Current Mouse Scaling Factors │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 54h │Assign New Mouse Event Mask │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 55h │Reassign Mouse Threshold Values │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 56h │Set Pointer Shape │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 57h │Unmark Collision Area │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 58h │Mark Collision Area │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 59h │Specify/Replace Pointer Screen Position │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Ah │Set OS/2-Mode Pointer Draw Device Driver│ | |||
│ │ │Address │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Bh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Ch │Set Current Physical Mouse Device Driver│ | |||
│ │ │Status Flags │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Dh │Notification of Mode Switch Completion │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 60h │Query Number of Mouse Buttons Supported │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 61h │Query Mouse Device Motion Sensitivity │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 62h │Query Current Physical Mouse Device │ | |||
│ │ │Driver Status Flags │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 63h │Read Mouse Event Queue │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 64h │Query Current Event Queue Status │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 65h │Query Current Mouse Event Mask │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 66h │Query Current Mouse Scaling Factors │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 67h │Query Current Pointer Screen Position │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 68h │Query Current Pointer Shape │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 69h │Query Mouse Threshold Values │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 6Ah │Query Physical Mouse Device Driver │ | |||
│ │ │Level/Version │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 6Bh │Query Pointing Device ID │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 08h │ │Logical Disk Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 00h │Lock Drive │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 01h │Unlock Drive │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 02h │Redetermine Media (end format) │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 03h │Set Logical Map │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 04h │Begin Format │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 20h │Block Removable │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 21h │Query Logical Map │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 22h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 40h │Removable Media Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 43h │Set Device Parameters │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 44h │Write Logical Track │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 45h │Format and Verify Track │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Dh │Diskette Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Eh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Fh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 60h │Query Media Sense │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 63h │Query Device Parameters │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 64h │Read Logical Track │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 65h │Verify Logical Track │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 66h │Status │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 09h │ │Physical Disk Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 00h │Lock Physical Drive │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 01h │Unlock Physical Drive │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 44h │Write Physical Track │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 63h │Query Physical Device Parameters │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 64h │Read Physical Track │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 65h │Verify Physical Track │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 0Ah │ │Character Device Monitor Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 40h │Register Monitor │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 0Bh │ │General Device Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 01h │Flush Input Buffer │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 02h │Flush Output Buffer │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 41h │System Notifications for Physical Device│ | |||
│ │ │Drivers │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 60h │Query Monitor Support │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 0Ch │ │Advanced Power Management │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 40h │Send Power Event │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 41h │Set Power Event Res │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 42h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 60h │Query Power Status │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 61h │Query Power Event │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 62h │Query PowerInfo │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 0Dh-7Fh│ │Reserved Category Codes │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 80h │ │Screen Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 00h │Get Current Video Memory Bank │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 01h │Set Current Video Memory Bank │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 02-07Fh│Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 08h │Return Adapter Video Configuration │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 09h │Return Manufacturer-Specific Adapter │ | |||
│ │ │Data │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 0Ah │Update Adapter Video Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 0Bh │Return Linear Address Mapped to Physical│ | |||
│ │ │Address │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ │Reserved │ | |||
│ │0Ch-07Fh │ │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 80h │ │OEMHLP Controls │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 00h │Query OEM Adaptation Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 01h │Query Machine Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 02h │Query Display Combination Code │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 03h │Return Video Fonts │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 04h │Read EISA Configuration │ | |||
│ │ │Information-Subfunction 00 │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 04h │Read EISA Function │ | |||
│ │ │Information-Subfunction 01 │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 05h │Query ROM BIOS Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 06h │Query Miscellaneous Video Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 07h │Query Video Adapter │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 08h │Query SVGA Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 09h │Query Memory Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 0Ah │Query, Display Mode, Query, and Set │ | |||
│ │ │(DMQS) Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 0Bh │Access and Query PCI BIOS Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 80h │ │Adapter Presence Check (TESTCFG.SYS) │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 40h │Get Copy of BIOS/Adapter │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 41h │Issue an IN I/O Instruction │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 42h │Issue an OUT I/O Instruction │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 60h │Get Bus Architecture │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 61h │Return all POS IDs │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 62h │Return all EISA IDs │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 80h │ │Resource Manager Commands │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 01h │Get Resource Manager Node Data │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 02h │Enumerate Resource Manager Nodes │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 80h │ │CD-ROM Drive and Disk Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 40h │Reset Drive │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 44h │Eject Disk │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 46h │Lock/Unlock Door │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 50h │Seek │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 60h │Device Status │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 61h │Identify CD-ROM Driver │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 63h │Return Sector Size │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 70h │Location of Drive Head │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 72h │Read Long │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 78h │Return Volume Size │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 79h │Get UPC │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 80h │ │High-Resolution Timer Driver │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 00h │Query Version │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 01h │Get Resolution │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 02h │Set Resolution │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 03h │Get Pointer to Clock Counter │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 04h │Free Pointer to Clock Counter │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 05h │Block Until Time Elapses │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 81h │ │CD-ROM Audio Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 40h │Audio Channel Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 50h │Play Audio │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 51h │Stop Audio │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 52h │Resume Audio │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 60h │Return Audio-Channel Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 61h │Return Audio-Disk Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 62h │Return Audio-Track Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 63h │Return Audio-Subchannel Q Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 65h │Return Audio-Status Information │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 81h │ │Touch-Device-Dependent Driver Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 50h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 51h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 52h │Set Calibration Constants │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 53h │Read Data │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 54h │Set Data Mode │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 55h │Set Click-Lock Parameters │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 56h │Set Touch Thresholds │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 57h │Set Emulation XY Offset │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 58h │Set Data Report Rate │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 59h │Set Low-Pass Filter │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Ah │Write Memory Location │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Bh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Ch │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Dh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Eh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 5Fh │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 60h │Get Calibration Constants │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 61h │Get Data Mode │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 62h │Get Click Lock Parameters │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 63h │Get Touch Thresholds │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 64h │Get Emulation XY Offset │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 65h │Get Data Report Rate │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 66h │Get Low Pass Filter │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 67h │Read Memory Location │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ 81h │ │Touch-Device-Independent Driver Control │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 50h │Set Coordinate System │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 51h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 52h │Set Selection Mechanism │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 53h │Set Event Mask │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 54h │Set Queue Size │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 55h │Set Emulation State │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 60h │Set Coordinate System │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 61h │Reserved │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 62h │Get Selection Mechanism │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 63h │Get Event Mask │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 64h │Get Queue Size │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 65h │Get Emulation State │ | |||
├──────────┼──────────┼────────────────────────────────────────┤ | |||
│ │ 66h │Get Read Event Queue │ | |||
└──────────┴──────────┴────────────────────────────────────────┘ | |||
</PRE> | |||
==Category 01h ASYNC (RS232-C) Control IOCtl Commands== | ==Category 01h ASYNC (RS232-C) Control IOCtl Commands== | ||
Whenever an IOCtl command calls for a NULL pointer, it is the responsibility of the application to set one up for the appropriate Parameter or Data Packet pointer before calling the physical device driver. IOCtls can be interpreted differently by future releases if the pointer is not a NULL pointer. If a NULL pointer is called for and it is not received by the device driver, it is considered an invalid Parameter or Data Packet value. | |||
The physical device driver services each communications port (COM1, COM2, and so forth) independently. IOCtls issued to the physical device driver for a given port have no effect on any other communications ports that the physical device driver is servicing. The application cannot assume a given timing relationship between when the IOCtls are executed and when data is received or transmitted by the ASYNC hardware. Data Carrier Detect (DCD) is the same signal as Receiver Line Signal Detect (RLSD). | |||
The following is a summary of the Category 01h IOCtl Commands: | |||
<PRE> | |||
┌──────────┬──────────────────────────────────────────────────┐ | |||
│Function │Description │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 14h │Reserved │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 34h │Reserved │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 41h │Set Bit Rate │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 42h │Set Line Characteristics (stop, parity, data bits)│ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 43h │Extended Set Bit Rate │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 44h │Transmit Byte Immediate │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 45h │Set Break OFF │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 46h │Set Modem Control Signals │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 47h │Behave as if XOFF Received (stop transmit) │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 48h │Behave as if XON Received (start transmit) │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 49h │Reserved │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 4Bh │Set Break ON │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 53h │Set Device Control Block (DCB) Parameters │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 54h │Set Enhanced Mode Parameters │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 61h │Query Current Bit Rate │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 62h │Query Line Characteristics │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 63h │Extended Query Bit Rate │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 64h │Query COM Status │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 65h │Query Transmit Data Status │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 66h │Query Modem Control Output Signals │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 67h │Query Current Modem Input Signals │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 68h │Query Number of Characters in Receive Queue │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 69h │Query Number of Characters in Transmit Queue │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 6Dh │Query COM Error │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 72h │Query COM Event Information │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 73h │Query Device Control Block (DCB) Parameters │ | |||
├──────────┼──────────────────────────────────────────────────┤ | |||
│ 74h │Query Enhanced Mode Parameters │ | |||
└──────────┴──────────────────────────────────────────────────┘ | |||
</PRE> | |||
===Asynchronous (RS232-C) Communications Physical Device Driver=== | ===Asynchronous (RS232-C) Communications Physical Device Driver=== | ||
The Asynchronous Communications (ASYNC) device driver enables OS/2 applications to utilize the Serial Communications (RS232-C) device hardware. The physical device driver allows an application program in OS/2 session to support duplex communications while the device driver: | |||
*Services the RS232-C port in an interrupt-driven manner | |||
*Provides transmit and receive queues | |||
*Provides different automatic control modes for the modem control signals | |||
*Provides logical data stream flow control (XON/XOFF) for transmit and receive operations | |||
The user will normally want to use the physical ASYNC device driver either in conjunction with the spooler (for serial printers only) or with an application program that uses the RS232-enabling capabilities of the physical ASYNC device driver coupled with a serial device attached to the system. | |||
The user installs the physical ASYNC device driver by adding a DEVICE= statement to the CONFIG.SYS file. | |||
====Hardware Support==== | ====Hardware Support==== | ||
The RS232-C ASYNC communications device driver supports any personal computer system based on an 80386SX (or higher) microprocessor. | |||
=====IBM PS/2 Micro Channel Adapter Support===== | =====IBM PS/2 Micro Channel Adapter Support===== | ||
The physical device driver supports a maximum of four ASYNC ports on a maximum of two different interrupt levels. The interrupt levels must have ABIOS support, with one unit per Logical ID (LID) for the ASYNC Device ID. The only ASYNC devices supported on IBM PS/2 and the Extended Industry Standard Architecture (EISA) machines are COM1, COM2, COM3, and COM4. These devices correspond to the first four LIDs in the ABIOS common data area that have the architected ASYNC Device ID. These devices also correspond to the first four ASYNC addresses in the ROM BIOS 40: data area. | |||
If a device has capabilities other than ASYNC that cannot be utilized independently of the ASYNC capabilities (for example, as in the Advanced BIOS separate LID architecture), and if Advanced BIOS assigns the device the ASYNC Device ID, then that device can be used only for ASYNC in that power-on session. | |||
If the device is assigned the ASYNC Device ID, and it has additional capabilities beyond supporting the RS232-C port (for example, a built-in modem), the physical device driver does not recognize those additional capabilities (and potential limitations). Also, the physical device driver does not inform any application program of those additional capabilities or limitations. In addition, it does not limit the control of the RS232-C interface or the device to only those modes that are acceptable to the extended hardware capabilities of that RS232-C port. | |||
If the device is not assigned the ASYNC Device ID, it is not supported by this physical device driver. If an ASYNC device is not supported by the OS/2 operating system, but is recognized by Advanced BIOS as an ASYNC Device ID, the physical device driver can recognize and try to use that unsupported device, if it is COM1, COM2, COM3, or COM4. | |||
=====AT Bus Adapter Support===== | =====AT Bus Adapter Support===== | ||
The physical device driver for the IBM AT bus machines by default, supports two ASYNC ports, COM1 and COM2, each on separate levels. ASYNC ports with the following base I/O addresses are recognized by the physical device driver: | |||
*3F8H (must generate a level 4 interrupt) | |||
*2F8H (must generate a level 3 interrupt) | |||
COM3 and COM4 are supported by the command line parameters for COM.SYS. COM3 and COM4 are supported through parameters on the DEVICE= statement in the CONFIG.SYS file. These parameters specify the desired base I/O address and interrupt levels. The physical ASYNC device driver for the AT- bus machine interfaces directly to the hardware and supports: | |||
*IBM AT-bus serial/parallel adapter based on the NS 16450 Universal Asynchronous Receiver Transmitter (UART) device | |||
*Other compatible adapters based on the UART architecture (NS 16550, NS 16550A) | |||
=====Attachment Support===== | =====Attachment Support===== | ||
The ASYNC physical device driver does not provide any support for devices attached to the RS232-C port. The physical device driver provides enabling support for the RS232-C interface itself. Application programs, subsystems, and systems programs provide the support needed to use devices attached to the RS232-C port. | |||
The ability to support a device can be determined by understanding the level of RS232-C interface enabling support the physical device driver provides, along with the characteristics of the attachment hardware in question and the required functions to be supported. | |||
The OS/2 operating system provides a mechanism where one or more additional drivers can be installed to support specific COM ports. This feature might be required for the following reasons: | |||
*To allow an application program to support a special device not adequately supportable with this ASYNC device driver | |||
*To allow additional COM ports (besides COM1-4 on IBM PS/2) to be supported | |||
*To enhance the level of device driver function for a given COM port (This might be required for certain subsystem support.) | |||
=====RS232-C Interface===== | =====RS232-C Interface===== | ||
=====Hardware Support for Extended Hardware Buffering===== | =====Hardware Support for Extended Hardware Buffering===== |
Revision as of 20:15, 26 March 2020
Reprint Courtesy of International Business Machines Corporation, © International Business Machines Corporation
OS/2 device drivers are used to access the I/O hardware. The IOCtl functions provide a method for an application, or subsystem, to send device-specific control commands to a physical device driver. These IOCtls are subfunctions that are issued through the DosDevIOCtl API function request. The DosDevIOCtl function request can be used only by OS/2 applications; the INT 21h IOCtl request can be used only by DOS applications.
The category and function fields are as follows. Each code is contained in a byte:
- Category Code
- 0xxx xxxx OS/2-defined
- 1xxx xxxx User-defined
- _xxx xxxx Code.
- Function Code
- 0xxx xxxx Return error, if unsupported
- 1xxx xxxx Ignore, if unsupported
- x0xx xxxx Intercepted by the OS/2 operating system
- x1xx xxxx Passed to driver
- xx0x xxxx Sends data and commands to device
- xx1x xxxx Queries data and information from device
- ___x xxxx Subfunction.
Notice that the send/query data bit is intended only to standardize the function set; it plays no critical role. Some functions can contain both command and query elements. Such commands are defined as sends data.
Generic IOCtl Function Table
The list of categories and functions for the generic IOCtl requests are as follows:
┌──────────┬──────────┬────────────────────────────────────────┐ │Category │Function │Description │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 01h │ │Serial Device Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 14h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 34h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 41h │Set Bit Rate │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 42h │Set Line Characteristics (stop, parity, │ │ │ │data bits) │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 43h │Extended Set Bit Rate │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 44h │Transmit Byte Immediate │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 45h │Set Break OFF │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 46h │Set Modem Control Signals │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 47h │Behave As If XOFF Received (stop │ │ │ │transmit) │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 48h │Behave As If XON Received (start │ │ │ │transmit) │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 49h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 4Bh │Set Break ON │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 53h │Set Device Control Block (DCB) │ │ │ │Parameters │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 54h │Set Enhanced Mode Parameters │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 61h │Query Current Bit Rate │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 62h │Query Line Characteristics │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 63h │Extended Query Bit Rate │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 64h │Query COM Status │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 65h │Query Transmit Data Status │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 66h │Query Modem Control Output Signals │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 67h │Query Current Modem Input Signals │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 68h │Query Number of Characters in Receive │ │ │ │Queue │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 69h │Query Number of Characters in Transmit │ │ │ │Queue │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 6Dh │Query COM Error │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 72h │Query COM Event Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 73h │Query Device Control Block (DCB) │ │ │ │Parameters │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 74h │Query Enhanced Mode Parameters │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 02h │ │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 03h │ │Video Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 70h │Allocate an LDT Selector │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 71h │Deallocate an LDT Selector │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 72h │Query Pointer Draw Address │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 73h │Initialize Call Vector Table │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 74h │ABIOS Pass-Through │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 75h │Allocate an LDT Selector with Offset │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 76h │Allocate an LDT Selector with Background│ │ │ │Validation Options │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 7Eh │Allocate Video Buffer │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 7Fh │Get Address to ROM Font │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 04h │ │Keyboard Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 50h │Set Code Page │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 51h │Set Input Mode (Default ASCII) │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 52h │Set Interim Character Flags │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 53h │Set Shift State │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 54h │Set Typematic Rate and Delay │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 55h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 56h │Set Session Manager Hot Key │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 57h │Set KCB │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 58h │Set Code Page Number │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 59h │Set Read/Peek Notification │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Ah │Alter Keyboard LEDs │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Bh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Ch │Set NLS and Custom Code Page │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Dh │Create New Logical Keyboard │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Eh │Destroy Logical Keyboard │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 71h │Query Input Mode │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 72h │Query Interim Character Flags │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 73h │Query Shift State │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 74h │Read Character Data Records │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 75h │Peek Character Data Record │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 76h │Query Session Manager Hot Key │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 77h │Query Keyboard Type │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 78h │Query Code Page Number │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 79h │Translate Scan Code to ASCII │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 7Ah │Query Keyboard Hardware ID │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 7Bh │Query Keyboard Code Page Support │ │ │ │Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 05h │ │Parallel Port Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 42h │Set Frame Control (CPL, LPI) │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 43h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 44h │Set Infinite Retry │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 45h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 46h │Initialize Parallel Port │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 47h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 48h │Activate Font │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 49h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 4Bh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 4Ch │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 4Dh │Set Print-Job Title │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 4Eh │Set Parallel Port Write Time-Out Value │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 4Fh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 50h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 51h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 62h │Query Frame Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 63h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 64h │Query Infinite Retry │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 65h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 66h │Query Parallel Port Status │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 67h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 68h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 69h │Query Active Font │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 6Ah │Verify Font │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 6Bh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 6Ch │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 6Dh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 6Eh │Query Parallel Port Write Time-Out Value│ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 6Fh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 70h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 71h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 06h │ │Light Pen Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 07h │ │Mouse Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 50h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 51h │Notification of Display Mode Change │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 52h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 53h │Reassign Current Mouse Scaling Factors │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 54h │Assign New Mouse Event Mask │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 55h │Reassign Mouse Threshold Values │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 56h │Set Pointer Shape │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 57h │Unmark Collision Area │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 58h │Mark Collision Area │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 59h │Specify/Replace Pointer Screen Position │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Ah │Set OS/2-Mode Pointer Draw Device Driver│ │ │ │Address │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Bh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Ch │Set Current Physical Mouse Device Driver│ │ │ │Status Flags │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Dh │Notification of Mode Switch Completion │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 60h │Query Number of Mouse Buttons Supported │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 61h │Query Mouse Device Motion Sensitivity │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 62h │Query Current Physical Mouse Device │ │ │ │Driver Status Flags │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 63h │Read Mouse Event Queue │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 64h │Query Current Event Queue Status │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 65h │Query Current Mouse Event Mask │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 66h │Query Current Mouse Scaling Factors │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 67h │Query Current Pointer Screen Position │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 68h │Query Current Pointer Shape │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 69h │Query Mouse Threshold Values │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 6Ah │Query Physical Mouse Device Driver │ │ │ │Level/Version │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 6Bh │Query Pointing Device ID │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 08h │ │Logical Disk Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 00h │Lock Drive │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 01h │Unlock Drive │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 02h │Redetermine Media (end format) │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 03h │Set Logical Map │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 04h │Begin Format │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 20h │Block Removable │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 21h │Query Logical Map │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 22h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 40h │Removable Media Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 43h │Set Device Parameters │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 44h │Write Logical Track │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 45h │Format and Verify Track │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Dh │Diskette Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Eh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Fh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 60h │Query Media Sense │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 63h │Query Device Parameters │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 64h │Read Logical Track │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 65h │Verify Logical Track │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 66h │Status │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 09h │ │Physical Disk Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 00h │Lock Physical Drive │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 01h │Unlock Physical Drive │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 44h │Write Physical Track │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 63h │Query Physical Device Parameters │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 64h │Read Physical Track │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 65h │Verify Physical Track │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 0Ah │ │Character Device Monitor Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 40h │Register Monitor │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 0Bh │ │General Device Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 01h │Flush Input Buffer │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 02h │Flush Output Buffer │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 41h │System Notifications for Physical Device│ │ │ │Drivers │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 60h │Query Monitor Support │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 0Ch │ │Advanced Power Management │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 40h │Send Power Event │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 41h │Set Power Event Res │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 42h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 60h │Query Power Status │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 61h │Query Power Event │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 62h │Query PowerInfo │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 0Dh-7Fh│ │Reserved Category Codes │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 80h │ │Screen Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 00h │Get Current Video Memory Bank │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 01h │Set Current Video Memory Bank │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 02-07Fh│Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 08h │Return Adapter Video Configuration │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 09h │Return Manufacturer-Specific Adapter │ │ │ │Data │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 0Ah │Update Adapter Video Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 0Bh │Return Linear Address Mapped to Physical│ │ │ │Address │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ │Reserved │ │ │0Ch-07Fh │ │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 80h │ │OEMHLP Controls │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 00h │Query OEM Adaptation Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 01h │Query Machine Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 02h │Query Display Combination Code │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 03h │Return Video Fonts │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 04h │Read EISA Configuration │ │ │ │Information-Subfunction 00 │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 04h │Read EISA Function │ │ │ │Information-Subfunction 01 │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 05h │Query ROM BIOS Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 06h │Query Miscellaneous Video Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 07h │Query Video Adapter │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 08h │Query SVGA Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 09h │Query Memory Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 0Ah │Query, Display Mode, Query, and Set │ │ │ │(DMQS) Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 0Bh │Access and Query PCI BIOS Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 80h │ │Adapter Presence Check (TESTCFG.SYS) │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 40h │Get Copy of BIOS/Adapter │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 41h │Issue an IN I/O Instruction │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 42h │Issue an OUT I/O Instruction │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 60h │Get Bus Architecture │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 61h │Return all POS IDs │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 62h │Return all EISA IDs │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 80h │ │Resource Manager Commands │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 01h │Get Resource Manager Node Data │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 02h │Enumerate Resource Manager Nodes │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 80h │ │CD-ROM Drive and Disk Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 40h │Reset Drive │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 44h │Eject Disk │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 46h │Lock/Unlock Door │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 50h │Seek │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 60h │Device Status │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 61h │Identify CD-ROM Driver │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 63h │Return Sector Size │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 70h │Location of Drive Head │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 72h │Read Long │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 78h │Return Volume Size │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 79h │Get UPC │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 80h │ │High-Resolution Timer Driver │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 00h │Query Version │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 01h │Get Resolution │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 02h │Set Resolution │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 03h │Get Pointer to Clock Counter │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 04h │Free Pointer to Clock Counter │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 05h │Block Until Time Elapses │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 81h │ │CD-ROM Audio Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 40h │Audio Channel Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 50h │Play Audio │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 51h │Stop Audio │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 52h │Resume Audio │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 60h │Return Audio-Channel Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 61h │Return Audio-Disk Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 62h │Return Audio-Track Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 63h │Return Audio-Subchannel Q Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 65h │Return Audio-Status Information │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 81h │ │Touch-Device-Dependent Driver Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 50h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 51h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 52h │Set Calibration Constants │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 53h │Read Data │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 54h │Set Data Mode │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 55h │Set Click-Lock Parameters │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 56h │Set Touch Thresholds │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 57h │Set Emulation XY Offset │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 58h │Set Data Report Rate │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 59h │Set Low-Pass Filter │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Ah │Write Memory Location │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Bh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Ch │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Dh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Eh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 5Fh │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 60h │Get Calibration Constants │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 61h │Get Data Mode │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 62h │Get Click Lock Parameters │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 63h │Get Touch Thresholds │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 64h │Get Emulation XY Offset │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 65h │Get Data Report Rate │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 66h │Get Low Pass Filter │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 67h │Read Memory Location │ ├──────────┼──────────┼────────────────────────────────────────┤ │ 81h │ │Touch-Device-Independent Driver Control │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 50h │Set Coordinate System │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 51h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 52h │Set Selection Mechanism │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 53h │Set Event Mask │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 54h │Set Queue Size │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 55h │Set Emulation State │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 60h │Set Coordinate System │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 61h │Reserved │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 62h │Get Selection Mechanism │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 63h │Get Event Mask │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 64h │Get Queue Size │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 65h │Get Emulation State │ ├──────────┼──────────┼────────────────────────────────────────┤ │ │ 66h │Get Read Event Queue │ └──────────┴──────────┴────────────────────────────────────────┘
Category 01h ASYNC (RS232-C) Control IOCtl Commands
Whenever an IOCtl command calls for a NULL pointer, it is the responsibility of the application to set one up for the appropriate Parameter or Data Packet pointer before calling the physical device driver. IOCtls can be interpreted differently by future releases if the pointer is not a NULL pointer. If a NULL pointer is called for and it is not received by the device driver, it is considered an invalid Parameter or Data Packet value.
The physical device driver services each communications port (COM1, COM2, and so forth) independently. IOCtls issued to the physical device driver for a given port have no effect on any other communications ports that the physical device driver is servicing. The application cannot assume a given timing relationship between when the IOCtls are executed and when data is received or transmitted by the ASYNC hardware. Data Carrier Detect (DCD) is the same signal as Receiver Line Signal Detect (RLSD).
The following is a summary of the Category 01h IOCtl Commands:
┌──────────┬──────────────────────────────────────────────────┐ │Function │Description │ ├──────────┼──────────────────────────────────────────────────┤ │ 14h │Reserved │ ├──────────┼──────────────────────────────────────────────────┤ │ 34h │Reserved │ ├──────────┼──────────────────────────────────────────────────┤ │ 41h │Set Bit Rate │ ├──────────┼──────────────────────────────────────────────────┤ │ 42h │Set Line Characteristics (stop, parity, data bits)│ ├──────────┼──────────────────────────────────────────────────┤ │ 43h │Extended Set Bit Rate │ ├──────────┼──────────────────────────────────────────────────┤ │ 44h │Transmit Byte Immediate │ ├──────────┼──────────────────────────────────────────────────┤ │ 45h │Set Break OFF │ ├──────────┼──────────────────────────────────────────────────┤ │ 46h │Set Modem Control Signals │ ├──────────┼──────────────────────────────────────────────────┤ │ 47h │Behave as if XOFF Received (stop transmit) │ ├──────────┼──────────────────────────────────────────────────┤ │ 48h │Behave as if XON Received (start transmit) │ ├──────────┼──────────────────────────────────────────────────┤ │ 49h │Reserved │ ├──────────┼──────────────────────────────────────────────────┤ │ 4Bh │Set Break ON │ ├──────────┼──────────────────────────────────────────────────┤ │ 53h │Set Device Control Block (DCB) Parameters │ ├──────────┼──────────────────────────────────────────────────┤ │ 54h │Set Enhanced Mode Parameters │ ├──────────┼──────────────────────────────────────────────────┤ │ 61h │Query Current Bit Rate │ ├──────────┼──────────────────────────────────────────────────┤ │ 62h │Query Line Characteristics │ ├──────────┼──────────────────────────────────────────────────┤ │ 63h │Extended Query Bit Rate │ ├──────────┼──────────────────────────────────────────────────┤ │ 64h │Query COM Status │ ├──────────┼──────────────────────────────────────────────────┤ │ 65h │Query Transmit Data Status │ ├──────────┼──────────────────────────────────────────────────┤ │ 66h │Query Modem Control Output Signals │ ├──────────┼──────────────────────────────────────────────────┤ │ 67h │Query Current Modem Input Signals │ ├──────────┼──────────────────────────────────────────────────┤ │ 68h │Query Number of Characters in Receive Queue │ ├──────────┼──────────────────────────────────────────────────┤ │ 69h │Query Number of Characters in Transmit Queue │ ├──────────┼──────────────────────────────────────────────────┤ │ 6Dh │Query COM Error │ ├──────────┼──────────────────────────────────────────────────┤ │ 72h │Query COM Event Information │ ├──────────┼──────────────────────────────────────────────────┤ │ 73h │Query Device Control Block (DCB) Parameters │ ├──────────┼──────────────────────────────────────────────────┤ │ 74h │Query Enhanced Mode Parameters │ └──────────┴──────────────────────────────────────────────────┘
Asynchronous (RS232-C) Communications Physical Device Driver
The Asynchronous Communications (ASYNC) device driver enables OS/2 applications to utilize the Serial Communications (RS232-C) device hardware. The physical device driver allows an application program in OS/2 session to support duplex communications while the device driver:
- Services the RS232-C port in an interrupt-driven manner
- Provides transmit and receive queues
- Provides different automatic control modes for the modem control signals
- Provides logical data stream flow control (XON/XOFF) for transmit and receive operations
The user will normally want to use the physical ASYNC device driver either in conjunction with the spooler (for serial printers only) or with an application program that uses the RS232-enabling capabilities of the physical ASYNC device driver coupled with a serial device attached to the system.
The user installs the physical ASYNC device driver by adding a DEVICE= statement to the CONFIG.SYS file.
Hardware Support
The RS232-C ASYNC communications device driver supports any personal computer system based on an 80386SX (or higher) microprocessor.
IBM PS/2 Micro Channel Adapter Support
The physical device driver supports a maximum of four ASYNC ports on a maximum of two different interrupt levels. The interrupt levels must have ABIOS support, with one unit per Logical ID (LID) for the ASYNC Device ID. The only ASYNC devices supported on IBM PS/2 and the Extended Industry Standard Architecture (EISA) machines are COM1, COM2, COM3, and COM4. These devices correspond to the first four LIDs in the ABIOS common data area that have the architected ASYNC Device ID. These devices also correspond to the first four ASYNC addresses in the ROM BIOS 40: data area.
If a device has capabilities other than ASYNC that cannot be utilized independently of the ASYNC capabilities (for example, as in the Advanced BIOS separate LID architecture), and if Advanced BIOS assigns the device the ASYNC Device ID, then that device can be used only for ASYNC in that power-on session.
If the device is assigned the ASYNC Device ID, and it has additional capabilities beyond supporting the RS232-C port (for example, a built-in modem), the physical device driver does not recognize those additional capabilities (and potential limitations). Also, the physical device driver does not inform any application program of those additional capabilities or limitations. In addition, it does not limit the control of the RS232-C interface or the device to only those modes that are acceptable to the extended hardware capabilities of that RS232-C port.
If the device is not assigned the ASYNC Device ID, it is not supported by this physical device driver. If an ASYNC device is not supported by the OS/2 operating system, but is recognized by Advanced BIOS as an ASYNC Device ID, the physical device driver can recognize and try to use that unsupported device, if it is COM1, COM2, COM3, or COM4.
AT Bus Adapter Support
The physical device driver for the IBM AT bus machines by default, supports two ASYNC ports, COM1 and COM2, each on separate levels. ASYNC ports with the following base I/O addresses are recognized by the physical device driver:
- 3F8H (must generate a level 4 interrupt)
- 2F8H (must generate a level 3 interrupt)
COM3 and COM4 are supported by the command line parameters for COM.SYS. COM3 and COM4 are supported through parameters on the DEVICE= statement in the CONFIG.SYS file. These parameters specify the desired base I/O address and interrupt levels. The physical ASYNC device driver for the AT- bus machine interfaces directly to the hardware and supports:
- IBM AT-bus serial/parallel adapter based on the NS 16450 Universal Asynchronous Receiver Transmitter (UART) device
- Other compatible adapters based on the UART architecture (NS 16550, NS 16550A)
Attachment Support
The ASYNC physical device driver does not provide any support for devices attached to the RS232-C port. The physical device driver provides enabling support for the RS232-C interface itself. Application programs, subsystems, and systems programs provide the support needed to use devices attached to the RS232-C port.
The ability to support a device can be determined by understanding the level of RS232-C interface enabling support the physical device driver provides, along with the characteristics of the attachment hardware in question and the required functions to be supported.
The OS/2 operating system provides a mechanism where one or more additional drivers can be installed to support specific COM ports. This feature might be required for the following reasons:
- To allow an application program to support a special device not adequately supportable with this ASYNC device driver
- To allow additional COM ports (besides COM1-4 on IBM PS/2) to be supported
- To enhance the level of device driver function for a given COM port (This might be required for certain subsystem support.)
RS232-C Interface
Hardware Support for Extended Hardware Buffering
INS 8250, INS 8250-B Considerations
Supported Bit Rates on 16450 and Compatibles
ASYNC (RS232-C) Device Driver Features
Output Modem Control Signals
Input Modem Control Signals
Logical Flow Control (XON/XOFF)
Support for Extended Hardware Buffering
Line Characteristics
Break and Error Processing
State of the COM Port
Event Notification
Error Alert Generation
States of the ASYNC Device Driver
Automatic Receive Flow Control (XON/XOFF) Automatic Transmit Flow Control (XON/XOFF) Bit Rate Break Replacement Character Break Replacement Character Processing COM Event WORD and COM Error WORD Data Bits DTR and RTS DTR Control Mode Error Replacement Character Error Replacement Character Processing Extended Hardware Buffering Input Sensitivity Using DSR Null Stripping Output Handshaking Using CTS, DSR, DCD Parity RTS Control Mode Read Timeout State Read Timeout Value Stop Bits Transmit Immediate Transmitting Break Write Timeout State Write Timeout Value XON/XOFF Characters
Reserved Device Names (COM1-n)
IBM PS/2 (with Micro Channel) Considerations for COM1-4
====Initialization/Resource Management