home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
bpos2i.zip
/
DEVIOCTL.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-05-31
|
17KB
|
514 lines
(* ====================================================== *)
(* DEVIOCTL.PAS *)
(* Implementation of the OS/2 device structures *)
(* Translation to Pascal by wr/toolbox mag *)
(* ===================================================== *)
{$IFNDEF OS2}
Error: Wrong target/Compiler not patched
{$ENDIF}
UNIT DevIOCtl;
INTERFACE
USES Os2Def;
(* Input and Output Control Categories *)
CONST
IOCTL_ASYNC = $0001;
IOCTL_SCR_AND_PTRDRAW = $0003;
IOCTL_KEYBOARD = $0004;
IOCTL_PRINTER = $0005;
IOCTL_LIGHTPEN = $0006;
IOCTL_POINTINGDEVICE = $0007;
IOCTL_DISK = $0008;
IOCTL_PHYSICALDISK = $0009;
IOCTL_MONITOR = $000A;
IOCTL_GENERAL = $000B;
(* Serial-Device Control *)
ASYNC_SETBAUDRATE = $0041;
ASYNC_SETLINECTRL = $0042;
ASYNC_TRANSMITIMM = $0044;
ASYNC_SETBREAKOFF = $0045;
ASYNC_SETMODEMCTRL = $0046;
ASYNC_SETBREAKON = $004B;
ASYNC_STOPTRANSMIT = $0047;
ASYNC_STARTTRANSMIT = $0048;
ASYNC_SETDCBINFO = $0053;
ASYNC_GETBAUDRATE = $0061;
ASYNC_GETLINECTRL = $0062;
ASYNC_GETCOMMSTATUS = $0064;
ASYNC_GETLINESTATUS = $0065;
ASYNC_GETMODEMOUTPUT = $0066;
ASYNC_GETMODEMINPUT = $0067;
ASYNC_GETINQUECOUNT = $0068;
ASYNC_GETOUTQUECOUNT = $0069;
ASYNC_GETCOMMERROR = $006D;
ASYNC_GETCOMMEVENT = $0072;
ASYNC_GETDCBINFO = $0073;
(* Screen/Pointer-Draw Control *)
SCR_ALLOCLDT = $0070;
SCR_DEALLOCLDT = $0071;
PTR_GETPTRDRAWADDRESS = $0072;
SCR_ALLOCLDTOFF = $0075;
(* Keyboard Control *)
KBD_SETTRANSTABLE = $0050;
KBD_SETINPUTMODE = $0051;
KBD_SETINTERIMFLAG = $0052;
KBD_SETSHIFTSTATE = $0053;
KBD_SETTYPAMATICRATE = $0054;
KBD_SETFGNDSCREENGRP = $0055;
KBD_SETSESMGRHOTKEY = $0056;
KBD_SETFOCUS = $0057;
KBD_SETKCB = $0058;
KBD_SETNLS = $005C;
KBD_CREATE = $005D;
KBD_DESTROY = $005E;
KBD_GETINPUTMODE = $0071;
KBD_GETINTERIMFLAG = $0072;
KBD_GETSHIFTSTATE = $0073;
KBD_READCHAR = $0074;
KBD_PEEKCHAR = $0075;
KBD_GETSESMGRHOTKEY = $0076;
KBD_GETKEYBDTYPE = $0077;
KBD_GETCODEPAGEID = $0078;
KBD_XLATESCAN = $0079;
(* Printer Control *)
PRT_SETFRAMECTL = $0042;
PRT_SETINFINITERETRY = $0044;
PRT_INITPRINTER = $0046;
PRT_ACTIVATEFONT = $0048;
PRT_GETFRAMECTL = $0062;
PRT_GETINFINITERETRY = $0064;
PRT_GETPRINTERSTATUS = $0066;
PRT_QUERYACTIVEFONT = $0069;
PRT_VERIFYFONT = $006A;
(* Pointing-Device (Mouse) Control *)
MOU_ALLOWPTRDRAW = $0050;
MOU_UPDATEDISPLAYMODE = $0051;
MOU_SCREENSWITCH = $0052;
MOU_SETSCALEFACTORS = $0053;
MOU_SETEVENTMASK = $0054;
MOU_SETHOTKEYBUTTON = $0055;
MOU_SETPTRSHAPE = $0056;
MOU_DRAWPTR = $0057;
MOU_REMOVEPTR = $0058;
MOU_SETPTRPOS = $0059;
MOU_SETPROTDRAWADDRESS = $005A;
MOU_SETREALDRAWADDRESS = $005B;
MOU_SETMOUSTATUS = $005C;
MOU_DISPLAYMODECHANGE = $005D;
MOU_GETBUTTONCOUNT = $0060;
MOU_GETMICKEYCOUNT = $0061;
MOU_GETMOUSTATUS = $0062;
MOU_READEVENTQUE = $0063;
MOU_GETQUESTATUS = $0064;
MOU_GETEVENTMASK = $0065;
MOU_GETSCALEFACTORS = $0066;
MOU_GETPTRPOS = $0067;
MOU_GETPTRSHAPE = $0068;
MOU_GETHOTKEYBUTTON = $0069;
MOU_VER = $006A;
(* Disk/Diskette Control *)
DSK_LOCKDRIVE = $0000;
DSK_UNLOCKDRIVE = $0001;
DSK_REDETERMINEMEDIA = $0002;
DSK_SETLOGICALMAP = $0003;
DSK_BLOCKREMOVABLE = $0020;
DSK_GETLOGICALMAP = $0021;
DSK_SETDEVICEPARAMS = $0043;
DSK_WRITETRACK = $0044;
DSK_FORMATVERIFY = $0045;
DSK_GETDEVICEPARAMS = $0063;
DSK_READTRACK = $0064;
DSK_VERIFYTRACK = $0065;
(* Physical-Disk Control *)
PDSK_LOCKPHYSDRIVE = $0000;
PDSK_UNLOCKPHYSDRIVE = $0001;
PDSK_WRITEPHYSTRACK = $0044;
PDSK_GETPHYSDEVICEPARAMS = $0063;
PDSK_READPHYSTRACK = $0064;
PDSK_VERIFYPHYSTRACK = $0065;
(* Character-Monitor Control *)
MON_REGISTERMONITOR = $0040;
(* General Device Control *)
DEV_FLUSHINPUT = $0001;
DEV_FLUSHOUTPUT = $0002;
DEV_QUERYMONSUPPORT = $0060;
(* ASYNC_GETCOMMERROR, ASYNC_SETBREAKOFF, *)
(* ASYNC_SETBREAKON, ASYNC_SETMODEMCTRL *)
RX_QUE_OVERRUN = $0001;
RX_HARDWARE_OVERRUN = $0002;
PARITY_ERROR = $0004;
FRAMING_ERROR = $0008;
(* ASYNC_GETCOMMEVENT *)
CHAR_RECEIVED = $0001;
LAST_CHAR_SENT = $0004;
CTS_CHANGED = $0008;
DSR_CHANGED = $0010;
DCD_CHANGED = $0020;
BREAK_DETECTED = $0040;
ERROR_OCCURRED = $0080;
RI_DETECTED = $0100;
(* ASYNC_GETCOMMSTATUS *)
TX_WAITING_FOR_CTS = $0001;
TX_WAITING_FOR_DSR = $0002;
TX_WAITING_FOR_DCD = $0004;
TX_WAITING_FOR_XON = $0008;
TX_WAITING_TO_SEND_XON = $0010;
TX_WAITING_WHILE_BREAK_ON = $0020;
TX_WAITING_TO_SEND_IMM = $0040;
RX_WAITING_FOR_DSR = $0080;
(* ASYNC_GETLINESTATUS *)
WRITE_REQUEST_QUEUED = $0001;
DATA_IN_TX_QUE = $0002;
HARDWARE_TRANSMITTING = $0004;
CHAR_READY_TO_SEND_IMM = $0008;
WAITING_TO_SEND_XON = $0010;
WAITING_TO_SEND_XOFF = $0020;
(* ASYNC_GETMODEMINPUT *)
CTS_ON = $10;
DSR_ON = $20;
RI_ON = $40;
DCD_ON = $80;
(* DSK_SETDEVICEPARAMS *)
BUILD_BPB_FROM_MEDIUM = $00;
REPLACE_BPB_FOR_DEVICE = $01;
REPLACE_BPB_FOR_MEDIUM = $02;
(* KBD_GETINPUTMODE, KBD_PEEKCHAR, KBD_SETINPUTMODE *)
ASCII_MODE = $00;
BINARY_MODE = $80;
(* KBD_GETINTERIMFLAG *)
CONVERSION_REQUEST = $20;
INTERIM_CHAR = $80;
(* KBD_GETSESMGRHOTKEY *)
HOTKEY_MAX_COUNT = $0000;
HOTKEY_CURRENT_COUNT = $0001;
(* KBD_PEEKCHAR *)
KBD_DATA_RECEIVED = $0001;
KBD_DATA_BINARY = $8000;
(* KBD_READCHAR *)
KBD_READ_WAIT = $0000;
KBD_READ_NOWAIT = $8000;
(* KBD_SETINPUTMODE *)
SHIFT_REPORT_MODE = $01;
MOUSE_MOTION = $0001;
MOUSE_MOTION_WITH_BN1_DOWN = $0002;
MOUSE_BN1_DOWN = $0004;
MOUSE_MOTION_WITH_BN2_DOWN = $0008;
MOUSE_BN2_DOWN = $0010;
MOUSE_MOTION_WITH_BN3_DOWN = $0020;
MOUSE_BN3_DOWN = $0040;
MHK_BUTTON1 = $0001;
MHK_BUTTON2 = $0002;
MHK_BUTTON3 = $0004;
MOU_NOWAIT = $0000;
MOU_WAIT = $0001;
(* MOU_GETHOTKEYBUTTON, MOU_SETHOTKEYBUTTON *)
MHK_NO_HOTKEY = $0000;
(* MOU_GETMOUSTATUS *)
MOUSE_QUEUEBUSY = $0001;
MOUSE_BLOCKREAD = $0002;
MOUSE_FLUSH = $0004;
MOUSE_UNSUPPORTED_MODE = $0008;
MOUSE_DISABLED = $0100;
MOUSE_MICKEYS = $0200;
(* PRT_GETPRINTERSTATUS *)
PRINTER_TIMEOUT = $0001;
PRINTER_IO_ERROR = $0008;
PRINTER_SELECTED = $0010;
PRINTER_OUT_OF_PAPER = $0020;
PRINTER_ACKNOWLEDGED = $0040;
PRINTER_NOT_BUSY = $0080;
(* fbCtlHndShake *)
MODE_DTR_CONTROL = 01;
MODE_DTR_HANDSHAKE = 02;
MODE_CTS_HANDSHAKE = 08;
MODE_DSR_HANDSHAKE = 10;
MODE_DCD_HANDSHAKE = 20;
MODE_DSR_SENSITIVITY = 40;
(* fbFlowReplace *)
MODE_AUTO_TRANSMIT = $01;
MODE_AUTO_RECEIVE = $02;
MODE_ERROR_CHAR = $04;
MODE_NULL_STRIPPING = $08;
MODE_BREAK_CHAR = $10;
MODE_RTS_CONTROL = $40;
MODE_RTS_HANDSHAKE = $80;
MODE_TRANSMIT_TOGGLE = $C0;
(* fbTimeout *)
MODE_NO_WRITE_TIMEOUT = $01;
MODE_READ_TIMEOUT = $02;
MODE_WAIT_READ_TIMEOUT = $04;
MODE_NOWAIT_READ_TIMEOUT = $06;
TYPE
DCBINFO = RECORD (* dcbinf *)
usWriteTimeout : WORD;
usReadTimeout : WORD;
fbCtlHndShake : CHAR;
fbFlowReplace : CHAR;
fbTimeout : CHAR;
bErrorReplacementChar : CHAR;
bBreakReplacementChar : CHAR;
bXONChar : CHAR;
bXOFFChar : CHAR;
END;
TrackLayout = RECORD (* trckl *)
bCommand : CHAR;
usHead : WORD;
usCylinder : WORD;
usFirstSector : WORD;
cSectors : WORD;
TrackTable : ARRAY [0..0] OF RECORD
usSectorNumber : WORD;
usSectorSize : WORD;
END;
END;
CONST
DevType_48TPI = $0000;
DEVTYPE_96TPI = $0001;
DEVTYPE_35 = $0002;
DevType_8SD = $0003;
DevType_8DD = $0004;
DEVTYPE_FIXED = $0005;
DEVTYPE_TAPE = $0006;
DEVTYPE_UNKNOWN = $0007;
TYPE
BiosParameterBlock = RECORD (* bspblk *)
usCHARsPerSector : WORD;
bSectorsPerCluster : CHAR;
usReservedSectors : WORD;
cFATs : CHAR;
cRootEntries : WORD;
cSectors : WORD;
bMedia : CHAR;
usSectorsPerFAT : WORD;
usSectorsPerTrack : WORD;
cHeads : WORD;
cHiddenSectors : LongInt; { UNSIGNED LONG }
cLargeSectors : LongInt; { UNSIGNED LONG }
abReserved : ARRAY [0..5] OF CHAR;
cCylinders : WORD;
bDeviceType : CHAR;
fsDeviceAttr : WORD;
END;
ScreenGroup = RECORD (* scrgrp *)
idScreenGrp : WORD;
fTerminate : WORD;
END;
Frame = RECORD (* frm *)
bCharsPerLine : CHAR;
bLinesPerInch : CHAR;
END;
KbdType = RECORD (* kbdtyp *)
usType : WORD;
Reserved1 : WORD;
Reserved2 : WORD;
END;
LineControl = RECORD (* lnctl *)
bDataBits : CHAR;
bParity : CHAR;
bStopBits : CHAR;
fTransBreak : CHAR;
END;
(* MODEMSTATUS.fbModemOn, ASYNC_GETMODEMOUTPUT *)
CONST
DTR_ON = 01;
RTS_ON = 02;
(* MODEMSTATUS.fbModemOff *)
CONST
DTR_OFF = $FE;
RTS_OFF = $FD;
TYPE
ModemStatus = RECORD (* mdmst *)
fbModemOn : CHAR;
fbModemOff : CHAR;
END;
TrackFormat = RECORD (* trckfmt *)
bCommand : CHAR;
usHead : WORD;
usCylinder : WORD;
usReserved : WORD;
cSectors : WORD;
FormatTable : ARRAY [0..0] OF RECORD
bCylinder : CHAR;
bHead : CHAR;
idSector : CHAR;
bCHARsSector : CHAR;
END;
END;
RxQueuE = RECORD (* rxq *)
cch : WORD;
cb : WORD;
END;
DeviceParameterBlock = RECORD (* dvpblck *)
Reserved1 : WORD;
cCylinders : WORD;
cHeads : WORD;
cSectorsPerTrack : WORD;
Reserved2 : WORD;
Reserved3 : WORD;
Reserved4 : WORD;
Reserved5 : WORD;
END;
PtrDrawFunction = RECORD (* ptrdfnc *)
usReturnCode : WORD;
pfnDraw : pFN;
pchDataSeg : pCh;
END;
PtrDrawAddress = RECORD (* ptrdaddr *)
Reserved : WORD;
ptrdfnc : PtrDrawFunction;
END;
ShiftState = RECORD (* shftst *)
fsState : WORD;
fNLS : CHAR;
END;
(* HOTKEY.fsHotKey / SHIFTSTATE.fsState *)
CONST
RIGHTSHIFT = $0001;
LEFTSHIFT = $0002;
CONTROL = $0004;
ALT = $0008;
SCROLLLOCK_ON = $0010;
NUMLOCK_ON = $0020;
CAPSLOCK_ON = $0040;
INSERT_ON = $0080;
LEFTCONTROL = $0100;
LEFTALT = $0200;
RIGHTCONTROL = $0400;
RIGHTALT = $0800;
SCROLLLOCK = $1000;
NUMLOCK = $2000;
CAPSLOCK = $4000;
SYSREQ = $8000;
TYPE
HotKey = RECORD (* htky *)
fsHotKey : WORD;
uchScancodeMake : CHAR;
uchScancodeBreak : CHAR;
idHotKey : WORD;
END;
MonitorPosition = RECORD (* mnpos *)
fPosition : WORD;
INDEX : WORD;
pbInBuf : LongInt; { UNSIGNED LONG }
offOutBuf : WORD;
END;
RateDelay = RECORD (* rtdly *)
usDelay : WORD;
usRate : WORD;
END;
CodePageInfo = RECORD (* cpi *)
pbTransTable : ^CHAR;
idCodePage : WORD;
idTable : WORD;
END;
CPId = RECORD (* cpid *)
idCodePage : WORD;
Reserved : WORD;
END;
LdtAddrInfo = RECORD (* ldtaddr *)
pulPhysAddr : ^LongInt; { UNSIGNED LONG }
cb : WORD;
END;
PtrDrawData = RECORD (* ptrdd *)
cb : WORD;
usConfig : WORD;
usFlag : WORD;
END;
IMPLEMENTATION
END.
(* ====================================================== *)
(* Ende von DEVIOCTL.PAS *)