home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / bpos2i.zip / DEVIOCTL.PAS < prev    next >
Pascal/Delphi Source File  |  1994-05-31  |  17KB  |  514 lines

  1. (* ====================================================== *)
  2. (*                        DEVIOCTL.PAS                    *)
  3. (*       Implementation of the OS/2 device structures     *)
  4. (*        Translation to Pascal by wr/toolbox mag         *)
  5. (* =====================================================  *)
  6.  
  7. {$IFNDEF OS2}
  8.   Error: Wrong target/Compiler not patched
  9. {$ENDIF}
  10.  
  11. UNIT DevIOCtl;
  12.  
  13. INTERFACE
  14.  
  15. USES Os2Def;
  16.  
  17. (* Input and Output Control Categories *)
  18.  
  19. CONST
  20.   IOCTL_ASYNC                           = $0001;
  21.   IOCTL_SCR_AND_PTRDRAW                 = $0003;
  22.   IOCTL_KEYBOARD                        = $0004;
  23.   IOCTL_PRINTER                         = $0005;
  24.   IOCTL_LIGHTPEN                        = $0006;
  25.   IOCTL_POINTINGDEVICE                  = $0007;
  26.   IOCTL_DISK                            = $0008;
  27.   IOCTL_PHYSICALDISK                    = $0009;
  28.   IOCTL_MONITOR                         = $000A;
  29.   IOCTL_GENERAL                         = $000B;
  30.  
  31. (* Serial-Device Control *)
  32.  
  33.   ASYNC_SETBAUDRATE                     = $0041;
  34.   ASYNC_SETLINECTRL                     = $0042;
  35.   ASYNC_TRANSMITIMM                     = $0044;
  36.   ASYNC_SETBREAKOFF                     = $0045;
  37.   ASYNC_SETMODEMCTRL                    = $0046;
  38.   ASYNC_SETBREAKON                      = $004B;
  39.   ASYNC_STOPTRANSMIT                    = $0047;
  40.   ASYNC_STARTTRANSMIT                   = $0048;
  41.   ASYNC_SETDCBINFO                      = $0053;
  42.   ASYNC_GETBAUDRATE                     = $0061;
  43.   ASYNC_GETLINECTRL                     = $0062;
  44.   ASYNC_GETCOMMSTATUS                   = $0064;
  45.   ASYNC_GETLINESTATUS                   = $0065;
  46.   ASYNC_GETMODEMOUTPUT                  = $0066;
  47.   ASYNC_GETMODEMINPUT                   = $0067;
  48.   ASYNC_GETINQUECOUNT                   = $0068;
  49.   ASYNC_GETOUTQUECOUNT                  = $0069;
  50.   ASYNC_GETCOMMERROR                    = $006D;
  51.   ASYNC_GETCOMMEVENT                    = $0072;
  52.   ASYNC_GETDCBINFO                      = $0073;
  53.  
  54. (* Screen/Pointer-Draw Control *)
  55.  
  56.   SCR_ALLOCLDT                          = $0070;
  57.   SCR_DEALLOCLDT                        = $0071;
  58.   PTR_GETPTRDRAWADDRESS                 = $0072;
  59.   SCR_ALLOCLDTOFF                       = $0075;
  60.  
  61. (* Keyboard Control *)
  62.  
  63.   KBD_SETTRANSTABLE                     = $0050;
  64.   KBD_SETINPUTMODE                      = $0051;
  65.   KBD_SETINTERIMFLAG                    = $0052;
  66.   KBD_SETSHIFTSTATE                     = $0053;
  67.   KBD_SETTYPAMATICRATE                  = $0054;
  68.   KBD_SETFGNDSCREENGRP                  = $0055;
  69.   KBD_SETSESMGRHOTKEY                   = $0056;
  70.   KBD_SETFOCUS                          = $0057;
  71.   KBD_SETKCB                            = $0058;
  72.   KBD_SETNLS                            = $005C;
  73.   KBD_CREATE                            = $005D;
  74.   KBD_DESTROY                           = $005E;
  75.   KBD_GETINPUTMODE                      = $0071;
  76.   KBD_GETINTERIMFLAG                    = $0072;
  77.   KBD_GETSHIFTSTATE                     = $0073;
  78.   KBD_READCHAR                          = $0074;
  79.   KBD_PEEKCHAR                          = $0075;
  80.   KBD_GETSESMGRHOTKEY                   = $0076;
  81.   KBD_GETKEYBDTYPE                      = $0077;
  82.   KBD_GETCODEPAGEID                     = $0078;
  83.   KBD_XLATESCAN                         = $0079;
  84.  
  85. (* Printer Control *)
  86.  
  87.   PRT_SETFRAMECTL                       = $0042;
  88.   PRT_SETINFINITERETRY                  = $0044;
  89.   PRT_INITPRINTER                       = $0046;
  90.   PRT_ACTIVATEFONT                      = $0048;
  91.   PRT_GETFRAMECTL                       = $0062;
  92.   PRT_GETINFINITERETRY                  = $0064;
  93.   PRT_GETPRINTERSTATUS                  = $0066;
  94.   PRT_QUERYACTIVEFONT                   = $0069;
  95.   PRT_VERIFYFONT                        = $006A;
  96.  
  97. (* Pointing-Device (Mouse) Control *)
  98.  
  99.   MOU_ALLOWPTRDRAW                      = $0050;
  100.   MOU_UPDATEDISPLAYMODE                 = $0051;
  101.   MOU_SCREENSWITCH                      = $0052;
  102.   MOU_SETSCALEFACTORS                   = $0053;
  103.   MOU_SETEVENTMASK                      = $0054;
  104.   MOU_SETHOTKEYBUTTON                   = $0055;
  105.   MOU_SETPTRSHAPE                       = $0056;
  106.   MOU_DRAWPTR                           = $0057;
  107.   MOU_REMOVEPTR                         = $0058;
  108.   MOU_SETPTRPOS                         = $0059;
  109.   MOU_SETPROTDRAWADDRESS                = $005A;
  110.   MOU_SETREALDRAWADDRESS                = $005B;
  111.   MOU_SETMOUSTATUS                      = $005C;
  112.   MOU_DISPLAYMODECHANGE                 = $005D;
  113.   MOU_GETBUTTONCOUNT                    = $0060;
  114.   MOU_GETMICKEYCOUNT                    = $0061;
  115.   MOU_GETMOUSTATUS                      = $0062;
  116.   MOU_READEVENTQUE                      = $0063;
  117.   MOU_GETQUESTATUS                      = $0064;
  118.   MOU_GETEVENTMASK                      = $0065;
  119.   MOU_GETSCALEFACTORS                   = $0066;
  120.   MOU_GETPTRPOS                         = $0067;
  121.   MOU_GETPTRSHAPE                       = $0068;
  122.   MOU_GETHOTKEYBUTTON                   = $0069;
  123.   MOU_VER                               = $006A;
  124.  
  125. (* Disk/Diskette Control *)
  126.  
  127.   DSK_LOCKDRIVE                         = $0000;
  128.   DSK_UNLOCKDRIVE                       = $0001;
  129.   DSK_REDETERMINEMEDIA                  = $0002;
  130.   DSK_SETLOGICALMAP                     = $0003;
  131.   DSK_BLOCKREMOVABLE                    = $0020;
  132.   DSK_GETLOGICALMAP                     = $0021;
  133.   DSK_SETDEVICEPARAMS                   = $0043;
  134.   DSK_WRITETRACK                        = $0044;
  135.   DSK_FORMATVERIFY                      = $0045;
  136.   DSK_GETDEVICEPARAMS                   = $0063;
  137.   DSK_READTRACK                         = $0064;
  138.   DSK_VERIFYTRACK                       = $0065;
  139.  
  140. (* Physical-Disk Control *)
  141.  
  142.   PDSK_LOCKPHYSDRIVE                    = $0000;
  143.   PDSK_UNLOCKPHYSDRIVE                  = $0001;
  144.   PDSK_WRITEPHYSTRACK                   = $0044;
  145.   PDSK_GETPHYSDEVICEPARAMS              = $0063;
  146.   PDSK_READPHYSTRACK                    = $0064;
  147.   PDSK_VERIFYPHYSTRACK                  = $0065;
  148.  
  149. (* Character-Monitor Control *)
  150.  
  151.   MON_REGISTERMONITOR                   = $0040;
  152.  
  153. (* General Device Control *)
  154.  
  155.   DEV_FLUSHINPUT                        = $0001;
  156.   DEV_FLUSHOUTPUT                       = $0002;
  157.   DEV_QUERYMONSUPPORT                   = $0060;
  158.  
  159.  
  160. (* ASYNC_GETCOMMERROR, ASYNC_SETBREAKOFF,                 *)
  161. (* ASYNC_SETBREAKON,   ASYNC_SETMODEMCTRL                 *)
  162.  
  163.   RX_QUE_OVERRUN                        = $0001;
  164.   RX_HARDWARE_OVERRUN                   = $0002;
  165.   PARITY_ERROR                          = $0004;
  166.   FRAMING_ERROR                         = $0008;
  167.  
  168. (* ASYNC_GETCOMMEVENT *)
  169.  
  170.   CHAR_RECEIVED                         = $0001;
  171.   LAST_CHAR_SENT                        = $0004;
  172.   CTS_CHANGED                           = $0008;
  173.   DSR_CHANGED                           = $0010;
  174.   DCD_CHANGED                           = $0020;
  175.   BREAK_DETECTED                        = $0040;
  176.   ERROR_OCCURRED                        = $0080;
  177.   RI_DETECTED                           = $0100;
  178.  
  179. (* ASYNC_GETCOMMSTATUS *)
  180.  
  181.   TX_WAITING_FOR_CTS                    = $0001;
  182.   TX_WAITING_FOR_DSR                    = $0002;
  183.   TX_WAITING_FOR_DCD                    = $0004;
  184.   TX_WAITING_FOR_XON                    = $0008;
  185.   TX_WAITING_TO_SEND_XON                = $0010;
  186.   TX_WAITING_WHILE_BREAK_ON             = $0020;
  187.   TX_WAITING_TO_SEND_IMM                = $0040;
  188.   RX_WAITING_FOR_DSR                    = $0080;
  189.  
  190. (* ASYNC_GETLINESTATUS *)
  191.  
  192.   WRITE_REQUEST_QUEUED                  = $0001;
  193.   DATA_IN_TX_QUE                        = $0002;
  194.   HARDWARE_TRANSMITTING                 = $0004;
  195.   CHAR_READY_TO_SEND_IMM                = $0008;
  196.   WAITING_TO_SEND_XON                   = $0010;
  197.   WAITING_TO_SEND_XOFF                  = $0020;
  198.  
  199. (* ASYNC_GETMODEMINPUT *)
  200.  
  201.   CTS_ON                                = $10;
  202.   DSR_ON                                = $20;
  203.   RI_ON                                 = $40;
  204.   DCD_ON                                = $80;
  205.  
  206. (* DSK_SETDEVICEPARAMS *)
  207.  
  208.   BUILD_BPB_FROM_MEDIUM                 = $00;
  209.   REPLACE_BPB_FOR_DEVICE                = $01;
  210.   REPLACE_BPB_FOR_MEDIUM                = $02;
  211.  
  212. (* KBD_GETINPUTMODE, KBD_PEEKCHAR, KBD_SETINPUTMODE *)
  213.  
  214.   ASCII_MODE                            = $00;
  215.   BINARY_MODE                           = $80;
  216.  
  217. (* KBD_GETINTERIMFLAG *)
  218.  
  219.   CONVERSION_REQUEST                    = $20;
  220.   INTERIM_CHAR                          = $80;
  221.  
  222. (* KBD_GETSESMGRHOTKEY *)
  223.  
  224.   HOTKEY_MAX_COUNT                      = $0000;
  225.   HOTKEY_CURRENT_COUNT                  = $0001;
  226.  
  227. (* KBD_PEEKCHAR *)
  228.  
  229.   KBD_DATA_RECEIVED                     = $0001;
  230.   KBD_DATA_BINARY                       = $8000;
  231.  
  232. (* KBD_READCHAR *)
  233.  
  234.   KBD_READ_WAIT                         = $0000;
  235.   KBD_READ_NOWAIT                       = $8000;
  236.  
  237. (* KBD_SETINPUTMODE *)
  238.  
  239.   SHIFT_REPORT_MODE                     = $01;
  240.  
  241.   MOUSE_MOTION                          = $0001;
  242.   MOUSE_MOTION_WITH_BN1_DOWN            = $0002;
  243.   MOUSE_BN1_DOWN                        = $0004;
  244.   MOUSE_MOTION_WITH_BN2_DOWN            = $0008;
  245.   MOUSE_BN2_DOWN                        = $0010;
  246.   MOUSE_MOTION_WITH_BN3_DOWN            = $0020;
  247.   MOUSE_BN3_DOWN                        = $0040;
  248.  
  249.   MHK_BUTTON1                           = $0001;
  250.   MHK_BUTTON2                           = $0002;
  251.   MHK_BUTTON3                           = $0004;
  252.  
  253.   MOU_NOWAIT                            = $0000;
  254.   MOU_WAIT                              = $0001;
  255.  
  256. (* MOU_GETHOTKEYBUTTON, MOU_SETHOTKEYBUTTON *)
  257.  
  258.   MHK_NO_HOTKEY                         = $0000;
  259.  
  260. (* MOU_GETMOUSTATUS *)
  261.  
  262.   MOUSE_QUEUEBUSY                       = $0001;
  263.   MOUSE_BLOCKREAD                       = $0002;
  264.   MOUSE_FLUSH                           = $0004;
  265.   MOUSE_UNSUPPORTED_MODE                = $0008;
  266.   MOUSE_DISABLED                        = $0100;
  267.   MOUSE_MICKEYS                         = $0200;
  268.  
  269. (* PRT_GETPRINTERSTATUS *)
  270.  
  271.   PRINTER_TIMEOUT                       = $0001;
  272.   PRINTER_IO_ERROR                      = $0008;
  273.   PRINTER_SELECTED                      = $0010;
  274.   PRINTER_OUT_OF_PAPER                  = $0020;
  275.   PRINTER_ACKNOWLEDGED                  = $0040;
  276.   PRINTER_NOT_BUSY                      = $0080;
  277.  
  278. (* fbCtlHndShake *)
  279.  
  280.   MODE_DTR_CONTROL                      = 01;
  281.   MODE_DTR_HANDSHAKE                    = 02;
  282.   MODE_CTS_HANDSHAKE                    = 08;
  283.   MODE_DSR_HANDSHAKE                    = 10;
  284.   MODE_DCD_HANDSHAKE                    = 20;
  285.   MODE_DSR_SENSITIVITY                  = 40;
  286.  
  287. (* fbFlowReplace *)
  288.  
  289.   MODE_AUTO_TRANSMIT                    = $01;
  290.   MODE_AUTO_RECEIVE                     = $02;
  291.   MODE_ERROR_CHAR                       = $04;
  292.   MODE_NULL_STRIPPING                   = $08;
  293.   MODE_BREAK_CHAR                       = $10;
  294.   MODE_RTS_CONTROL                      = $40;
  295.   MODE_RTS_HANDSHAKE                    = $80;
  296.   MODE_TRANSMIT_TOGGLE                  = $C0;
  297.  
  298. (* fbTimeout *)
  299.  
  300.    MODE_NO_WRITE_TIMEOUT                = $01;
  301.    MODE_READ_TIMEOUT                    = $02;
  302.    MODE_WAIT_READ_TIMEOUT               = $04;
  303.    MODE_NOWAIT_READ_TIMEOUT             = $06;
  304.  
  305. TYPE
  306.   DCBINFO  = RECORD              (* dcbinf *)
  307.     usWriteTimeout        : WORD;
  308.     usReadTimeout         : WORD;
  309.     fbCtlHndShake         : CHAR;
  310.     fbFlowReplace         : CHAR;
  311.     fbTimeout             : CHAR;
  312.     bErrorReplacementChar : CHAR;
  313.     bBreakReplacementChar : CHAR;
  314.     bXONChar              : CHAR;
  315.     bXOFFChar             : CHAR;
  316.   END;
  317.  
  318.   TrackLayout  = RECORD          (* trckl *)
  319.     bCommand      : CHAR;
  320.     usHead        : WORD;
  321.     usCylinder    : WORD;
  322.     usFirstSector : WORD;
  323.     cSectors      : WORD;
  324.     TrackTable    : ARRAY [0..0] OF RECORD
  325.                       usSectorNumber : WORD;
  326.                       usSectorSize   : WORD;
  327.                     END;
  328.   END;
  329.  
  330. CONST
  331.   DevType_48TPI                         = $0000;
  332.   DEVTYPE_96TPI                         = $0001;
  333.   DEVTYPE_35                            = $0002;
  334.   DevType_8SD                           = $0003;
  335.   DevType_8DD                           = $0004;
  336.   DEVTYPE_FIXED                         = $0005;
  337.   DEVTYPE_TAPE                          = $0006;
  338.   DEVTYPE_UNKNOWN                       = $0007;
  339.  
  340. TYPE
  341.   BiosParameterBlock  = RECORD   (* bspblk *)
  342.     usCHARsPerSector       : WORD;
  343.     bSectorsPerCluster     : CHAR;
  344.     usReservedSectors      : WORD;
  345.     cFATs                  : CHAR;
  346.     cRootEntries           : WORD;
  347.     cSectors               : WORD;
  348.     bMedia                 : CHAR;
  349.     usSectorsPerFAT        : WORD;
  350.     usSectorsPerTrack      : WORD;
  351.     cHeads                 : WORD;
  352.     cHiddenSectors         : LongInt; { UNSIGNED LONG }
  353.     cLargeSectors          : LongInt; { UNSIGNED LONG }
  354.     abReserved             : ARRAY [0..5] OF CHAR;
  355.     cCylinders             : WORD;
  356.     bDeviceType            : CHAR;
  357.     fsDeviceAttr           : WORD;
  358.   END;
  359.  
  360.   ScreenGroup  = RECORD          (* scrgrp *)
  361.     idScreenGrp : WORD;
  362.     fTerminate  : WORD;
  363.   END;
  364.  
  365.   Frame  = RECORD                (* frm *)
  366.     bCharsPerLine : CHAR;
  367.     bLinesPerInch : CHAR;
  368.   END;
  369.  
  370.   KbdType  = RECORD              (* kbdtyp *)
  371.     usType : WORD;
  372.     Reserved1 : WORD;
  373.     Reserved2 : WORD;
  374.   END;
  375.  
  376.   LineControl  = RECORD          (* lnctl *)
  377.     bDataBits   : CHAR;
  378.     bParity     : CHAR;
  379.     bStopBits   : CHAR;
  380.     fTransBreak : CHAR;
  381.   END;
  382.  
  383. (* MODEMSTATUS.fbModemOn, ASYNC_GETMODEMOUTPUT *)
  384.  
  385. CONST
  386.   DTR_ON                                = 01;
  387.   RTS_ON                                = 02;
  388.  
  389. (* MODEMSTATUS.fbModemOff *)
  390.  
  391. CONST
  392.   DTR_OFF                               = $FE;
  393.   RTS_OFF                               = $FD;
  394.  
  395. TYPE
  396.   ModemStatus  = RECORD          (* mdmst *)
  397.     fbModemOn  : CHAR;
  398.     fbModemOff : CHAR;
  399.   END;
  400.  
  401.   TrackFormat  = RECORD          (* trckfmt *)
  402.     bCommand    : CHAR;
  403.     usHead      : WORD;
  404.     usCylinder  : WORD;
  405.     usReserved  : WORD;
  406.     cSectors    : WORD;
  407.     FormatTable : ARRAY [0..0] OF RECORD
  408.                     bCylinder    : CHAR;
  409.                     bHead        : CHAR;
  410.                     idSector     : CHAR;
  411.                     bCHARsSector : CHAR;
  412.                   END;
  413.   END;
  414.  
  415.   RxQueuE  = RECORD              (* rxq *)
  416.     cch : WORD;
  417.     cb  : WORD;
  418.   END;
  419.  
  420.   DeviceParameterBlock  = RECORD (* dvpblck *)
  421.     Reserved1         : WORD;
  422.     cCylinders        : WORD;
  423.     cHeads            : WORD;
  424.     cSectorsPerTrack  : WORD;
  425.     Reserved2         : WORD;
  426.     Reserved3         : WORD;
  427.     Reserved4         : WORD;
  428.     Reserved5         : WORD;
  429.   END;
  430.  
  431.   PtrDrawFunction  = RECORD      (* ptrdfnc *)
  432.     usReturnCode : WORD;
  433.     pfnDraw      : pFN;
  434.     pchDataSeg   : pCh;
  435.   END;
  436.  
  437.   PtrDrawAddress  = RECORD       (* ptrdaddr *)
  438.     Reserved : WORD;
  439.     ptrdfnc : PtrDrawFunction;
  440.   END;
  441.  
  442.   ShiftState  = RECORD           (* shftst *)
  443.     fsState : WORD;
  444.     fNLS    : CHAR;
  445.   END;
  446.  
  447. (* HOTKEY.fsHotKey / SHIFTSTATE.fsState *)
  448. CONST
  449.   RIGHTSHIFT                            = $0001;
  450.   LEFTSHIFT                             = $0002;
  451.   CONTROL                               = $0004;
  452.   ALT                                   = $0008;
  453.   SCROLLLOCK_ON                         = $0010;
  454.   NUMLOCK_ON                            = $0020;
  455.   CAPSLOCK_ON                           = $0040;
  456.   INSERT_ON                             = $0080;
  457.   LEFTCONTROL                           = $0100;
  458.   LEFTALT                               = $0200;
  459.   RIGHTCONTROL                          = $0400;
  460.   RIGHTALT                              = $0800;
  461.   SCROLLLOCK                            = $1000;
  462.   NUMLOCK                               = $2000;
  463.   CAPSLOCK                              = $4000;
  464.   SYSREQ                                = $8000;
  465.  
  466. TYPE
  467.   HotKey  = RECORD               (* htky *)
  468.     fsHotKey         : WORD;
  469.     uchScancodeMake  : CHAR;
  470.     uchScancodeBreak : CHAR;
  471.     idHotKey         : WORD;
  472.   END;
  473.  
  474.   MonitorPosition  = RECORD      (* mnpos *)
  475.     fPosition : WORD;
  476.     INDEX     : WORD;
  477.     pbInBuf   : LongInt; { UNSIGNED LONG }
  478.     offOutBuf : WORD;
  479.   END;
  480.  
  481.   RateDelay  = RECORD            (* rtdly *)
  482.     usDelay : WORD;
  483.     usRate  : WORD;
  484.   END;
  485.  
  486.   CodePageInfo  = RECORD         (* cpi *)
  487.     pbTransTable : ^CHAR;
  488.     idCodePage   : WORD;
  489.     idTable      : WORD;
  490.   END;
  491.  
  492.   CPId = RECORD                  (* cpid *)
  493.     idCodePage : WORD;
  494.     Reserved   : WORD;
  495.   END;
  496.  
  497.   LdtAddrInfo  = RECORD          (* ldtaddr *)
  498.     pulPhysAddr : ^LongInt; { UNSIGNED LONG }
  499.     cb          : WORD;
  500.   END;
  501.  
  502.   PtrDrawData  = RECORD          (* ptrdd *)
  503.     cb        : WORD;
  504.     usConfig  : WORD;
  505.     usFlag    : WORD;
  506.   END;
  507.  
  508. IMPLEMENTATION
  509. END.
  510.  
  511. (* ====================================================== *)
  512. (*                  Ende von DEVIOCTL.PAS                 *)
  513.  
  514.