mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 13:39:39 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			436 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			436 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
{****************************************************************************
 | 
						|
 | 
						|
                   Copyright (c) 1993,94 by Florian Kl„mpfl
 | 
						|
                  
 | 
						|
 ****************************************************************************}
 | 
						|
unit bsedev;
 | 
						|
 | 
						|
  interface
 | 
						|
  
 | 
						|
    uses
 | 
						|
       os2def;
 | 
						|
 | 
						|
    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;
 | 
						|
       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;
 | 
						|
       SCR_ALLOCLDT = $0070;
 | 
						|
       SCR_DEALLOCLDT = $0071;
 | 
						|
       PTR_GETPTRDRAWADDRESS = $0072;
 | 
						|
       SCR_ALLOCLDTOFF = $0075;
 | 
						|
       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;
 | 
						|
       PRT_QUERYJOBHANDLE = $0021;
 | 
						|
       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;
 | 
						|
       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;
 | 
						|
       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;
 | 
						|
       PDSK_LOCKPHYSDRIVE = $0000;
 | 
						|
       PDSK_UNLOCKPHYSDRIVE = $0001;
 | 
						|
       PDSK_WRITEPHYSTRACK = $0044;
 | 
						|
       PDSK_GETPHYSDEVICEPARAMS = $0063;
 | 
						|
       PDSK_READPHYSTRACK = $0064;
 | 
						|
       PDSK_VERIFYPHYSTRACK = $0065;
 | 
						|
       MON_REGISTERMONITOR = $0040;
 | 
						|
       DEV_FLUSHINPUT = $0001;
 | 
						|
       DEV_FLUSHOUTPUT = $0002;
 | 
						|
       DEV_QUERYMONSUPPORT = $0060;
 | 
						|
       RX_QUE_OVERRUN = $0001;
 | 
						|
       RX_HARDWARE_OVERRUN = $0002;
 | 
						|
       PARITY_ERROR = $0004;
 | 
						|
       FRAMING_ERROR = $0008;
 | 
						|
       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;
 | 
						|
       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;
 | 
						|
       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;
 | 
						|
       CTS_ON = $10;
 | 
						|
       DSR_ON = $20;
 | 
						|
       RI_ON = $40;
 | 
						|
       DCD_ON = $80;
 | 
						|
       BUILD_BPB_FROM_MEDIUM = $00;
 | 
						|
       REPLACE_BPB_FOR_DEVICE = $01;
 | 
						|
       REPLACE_BPB_FOR_MEDIUM = $02;
 | 
						|
       ASCII_MODE = $00;
 | 
						|
       BINARY_MODE = $80;
 | 
						|
       CONVERSION_REQUEST = $20;
 | 
						|
       INTERIM_CHAR = $80;
 | 
						|
       HOTKEY_MAX_COUNT = $0000;
 | 
						|
       HOTKEY_CURRENT_COUNT = $0001;
 | 
						|
       KBD_DATA_RECEIVED = $0001;
 | 
						|
       KBD_DATA_BINARY = $8000;
 | 
						|
       KBD_READ_WAIT = $0000;
 | 
						|
       KBD_READ_NOWAIT = $8000;
 | 
						|
       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;
 | 
						|
       MHK_NO_HOTKEY = $0000;
 | 
						|
       MOUSE_QUEUEBUSY = $0001;
 | 
						|
       MOUSE_BLOCKREAD = $0002;
 | 
						|
       MOUSE_FLUSH = $0004;
 | 
						|
       MOUSE_UNSUPPORTED_MODE = $0008;
 | 
						|
       MOUSE_DISABLED = $0100;
 | 
						|
       MOUSE_MICKEYS = $0200;
 | 
						|
       PRINTER_TIMEOUT = $0001;
 | 
						|
       PRINTER_IO_ERROR = $0008;
 | 
						|
       PRINTER_SELECTED = $0010;
 | 
						|
       PRINTER_OUT_OF_PAPER = $0020;
 | 
						|
       PRINTER_ACKNOWLEDGED = $0040;
 | 
						|
       PRINTER_NOT_BUSY = $0080;
 | 
						|
       MODE_DTR_CONTROL = $01;
 | 
						|
       MODE_DTR_HANDSHAKE = $02;
 | 
						|
       MODE_CTS_HANDSHAKE = $08;
 | 
						|
       MODE_DSR_HANDSHAKE = $10;
 | 
						|
       MODE_DCD_HANDSHAKE = $20;
 | 
						|
       MODE_DSR_SENSITIVITY = $40;
 | 
						|
       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;
 | 
						|
       MODE_NO_WRITE_TIMEOUT = $01;
 | 
						|
       MODE_READ_TIMEOUT = $02;
 | 
						|
       MODE_WAIT_READ_TIMEOUT = $04;
 | 
						|
       MODE_NOWAIT_READ_TIMEOUT = $06;
 | 
						|
 | 
						|
    type
 | 
						|
       DCBINFO = record
 | 
						|
          usWriteTimeout : USHORT;
 | 
						|
          usReadTimeout : USHORT;
 | 
						|
          fbCtlHndShake : BYTE;
 | 
						|
          fbFlowReplace : BYTE;
 | 
						|
          fbTimeout : BYTE;
 | 
						|
          bErrorReplacementChar : BYTE;
 | 
						|
          bBreakReplacementChar : BYTE;
 | 
						|
          bXONChar : BYTE;
 | 
						|
          bXOFFChar : BYTE;
 | 
						|
       end;
 | 
						|
 | 
						|
       PDCBINFO = ^DCBINFO;
 | 
						|
 | 
						|
{$PACKRECORDS 1}
 | 
						|
 | 
						|
    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;
 | 
						|
{$PACKRECORDS 1}
 | 
						|
 | 
						|
 | 
						|
    type
 | 
						|
       BIOSPARAMETERBLOCK = record
 | 
						|
          usBytesPerSector : USHORT;
 | 
						|
          bSectorsPerCluster : BYTE;
 | 
						|
          usReservedSectors : USHORT;
 | 
						|
          cFATs : BYTE;
 | 
						|
          cRootEntries : USHORT;
 | 
						|
          cSectors : USHORT;
 | 
						|
          bMedia : BYTE;
 | 
						|
          usSectorsPerFAT : USHORT;
 | 
						|
          usSectorsPerTrack : USHORT;
 | 
						|
          cHeads : USHORT;
 | 
						|
          cHiddenSectors : ULONG;
 | 
						|
          cLargeSectors : ULONG;
 | 
						|
          abReserved : array[0..6-1] of BYTE;
 | 
						|
          cCylinders : USHORT;
 | 
						|
          bDeviceType : BYTE;
 | 
						|
          fsDeviceAttr : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PBIOSPARAMETERBLOCK = ^BIOSPARAMETERBLOCK;
 | 
						|
 | 
						|
       SCREENGROUP = record
 | 
						|
          idScreenGrp : USHORT;
 | 
						|
          fTerminate : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PSCREENGROUP = ^SCREENGROUP;
 | 
						|
 | 
						|
       FRAME = record
 | 
						|
          bCharsPerLine : BYTE;
 | 
						|
          bLinesPerInch : BYTE;
 | 
						|
       end;
 | 
						|
 | 
						|
       PFRAME = ^FRAME;
 | 
						|
 | 
						|
       KBDTYPE = record
 | 
						|
          usType : USHORT;
 | 
						|
          reserved1 : USHORT;
 | 
						|
          reserved2 : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PKBDTYPE = ^KBDTYPE;
 | 
						|
 | 
						|
       LINECONTROL = record
 | 
						|
          bDataBits : BYTE;
 | 
						|
          bParity : BYTE;
 | 
						|
          bStopBits : BYTE;
 | 
						|
          fTransBreak : BYTE;
 | 
						|
       end;
 | 
						|
 | 
						|
       PLINECONTROL = ^LINECONTROL;
 | 
						|
 | 
						|
    const
 | 
						|
       DTR_ON = $01;
 | 
						|
       RTS_ON = $02;
 | 
						|
       DTR_OFF = $FE;
 | 
						|
       RTS_OFF = $FD;
 | 
						|
 | 
						|
    type
 | 
						|
       MODEMSTATUS = record
 | 
						|
          fbModemOn : BYTE;
 | 
						|
          fbModemOff : BYTE;
 | 
						|
       end;
 | 
						|
 | 
						|
       PMODEMSTATUS = ^MODEMSTATUS;
 | 
						|
 | 
						|
{$PACKRECORDS 1}
 | 
						|
 | 
						|
       RXQUEUE = record
 | 
						|
          cch : USHORT;
 | 
						|
          cb : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PRXQUEUE = ^RXQUEUE;
 | 
						|
 | 
						|
       DEVICEPARAMETERBLOCK = record
 | 
						|
          reserved1 : USHORT;
 | 
						|
          cCylinders : USHORT;
 | 
						|
          cHeads : USHORT;
 | 
						|
          cSectorsPerTrack : USHORT;
 | 
						|
          reserved2 : USHORT;
 | 
						|
          reserved3 : USHORT;
 | 
						|
          reserved4 : USHORT;
 | 
						|
          reserved5 : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PDEVICEPARAMETERBLOCK = ^DEVICEPARAMETERBLOCK;
 | 
						|
 | 
						|
{$PACKRECORDS 2}
 | 
						|
 | 
						|
       PTRDRAWFUNCTION = record
 | 
						|
          usReturnCode : USHORT;
 | 
						|
          pfnDraw : pointer;
 | 
						|
          {!!!!!!!! pfnDraw : PFN; }
 | 
						|
          pchDataSeg : PCH;
 | 
						|
       end;
 | 
						|
 | 
						|
       PPTRDRAWFUNCTION = ^PTRDRAWFUNCTION;
 | 
						|
 | 
						|
       PTRDRAWADDRESS = record
 | 
						|
          reserved : USHORT;
 | 
						|
          ptrdfnc : PTRDRAWFUNCTION;
 | 
						|
       end;
 | 
						|
 | 
						|
       PPTRDRAWADDRESS = ^PTRDRAWADDRESS;
 | 
						|
 | 
						|
       SHIFTSTATE = record
 | 
						|
          fsState : USHORT;
 | 
						|
          fNLS : BYTE;
 | 
						|
       end;
 | 
						|
 | 
						|
       PSHIFTSTATE = ^SHIFTSTATE;
 | 
						|
 | 
						|
    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
 | 
						|
          fsHotKey : USHORT;
 | 
						|
          uchScancodeMake : UCHAR;
 | 
						|
          uchScancodeBreak : UCHAR;
 | 
						|
          idHotKey : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PHOTKEY = ^HOTKEY;
 | 
						|
 | 
						|
       MONITORPOSITION = record
 | 
						|
          fPosition : USHORT;
 | 
						|
          index : USHORT;
 | 
						|
          pbInBuf : ULONG;
 | 
						|
          offOutBuf : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PMONITORPOSITION = ^MONITORPOSITION;
 | 
						|
 | 
						|
       RATEDELAY = record
 | 
						|
          usDelay : USHORT;
 | 
						|
          usRate : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PRATEDELAY = ^RATEDELAY;
 | 
						|
 | 
						|
       CODEPAGEINFO = record
 | 
						|
          pbTransTable : PBYTE;
 | 
						|
          idCodePage : USHORT;
 | 
						|
          idTable : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PCODEPAGEINFO = ^CODEPAGEINFO;
 | 
						|
 | 
						|
       CPID = record
 | 
						|
          idCodePage : USHORT;
 | 
						|
          Reserved : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PCPID = ^CPID;
 | 
						|
 | 
						|
       LDTADDRINFO = record
 | 
						|
          pulPhysAddr : PULONG;
 | 
						|
          cb : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
       PLDTADDRINFO = ^LDTADDRINFO;
 | 
						|
 | 
						|
       PTRDRAWDATA = record
 | 
						|
          cb : USHORT;
 | 
						|
          usConfig : USHORT;
 | 
						|
          usFlag : USHORT;
 | 
						|
       end;
 | 
						|
 | 
						|
{$PACKRECORDS NORMAL}
 | 
						|
       PPTRDRAWDATA = ^PTRDRAWDATA;
 | 
						|
 | 
						|
 | 
						|
  implementation
 | 
						|
 | 
						|
end.
 |