home *** CD-ROM | disk | FTP | other *** search
-
- {*******************************************************}
- { }
- { Turbo Pascal Version 6.0 }
- { Turbo Vision Unit }
- { }
- { Copyright (c) 1990 Borland International }
- { }
- {*******************************************************}
-
- unit Drivers;
-
- {$F+,S-}
-
- interface
-
- uses Objects;
-
- { ******** EVENT MANAGER ******** }
-
- const
-
- { Event codes }
-
- evMouseDown = $0001;
- evMouseUp = $0002;
- evMouseMove = $0004;
- evMouseAuto = $0008;
- evKeyDown = $0010;
- evCommand = $0100;
- evBroadcast = $0200;
-
- { Event masks }
-
- evNothing = $0000;
- evMouse = $000F;
- evKeyboard = $0010;
- evMessage = $FF00;
-
- { Extended key codes }
-
- kbEsc = $011B; kbAltSpace = $0200; kbCtrlIns = $0400;
- kbShiftIns = $0500; kbCtrlDel = $0600; kbShiftDel = $0700;
- kbBack = $0E08; kbCtrlBack = $0E7F; kbShiftTab = $0F00;
- kbTab = $0F09; kbAltQ = $1000; kbAltW = $1100;
- kbAltE = $1200; kbAltR = $1300; kbAltT = $1400;
- kbAltY = $1500; kbAltU = $1600; kbAltI = $1700;
- kbAltO = $1800; kbAltP = $1900; kbCtrlEnter = $1C0A;
- kbEnter = $1C0D; kbAltA = $1E00; kbAltS = $1F00;
- kbAltD = $2000; kbAltF = $2100; kbAltG = $2200;
- kbAltH = $2300; kbAltJ = $2400; kbAltK = $2500;
- kbAltL = $2600; kbAltZ = $2C00; kbAltX = $2D00;
- kbAltC = $2E00; kbAltV = $2F00; kbAltB = $3000;
- kbAltN = $3100; kbAltM = $3200; kbF1 = $3B00;
- kbF2 = $3C00; kbF3 = $3D00; kbF4 = $3E00;
- kbF5 = $3F00; kbF6 = $4000; kbF7 = $4100;
- kbF8 = $4200; kbF9 = $4300; kbF10 = $4400;
- kbHome = $4700; kbUp = $4800; kbPgUp = $4900;
- kbGrayMinus = $4A2D; kbLeft = $4B00; kbRight = $4D00;
- kbGrayPlus = $4E2B; kbEnd = $4F00; kbDown = $5000;
- kbPgDn = $5100; kbIns = $5200; kbDel = $5300;
- kbShiftF1 = $5400; kbShiftF2 = $5500; kbShiftF3 = $5600;
- kbShiftF4 = $5700; kbShiftF5 = $5800; kbShiftF6 = $5900;
- kbShiftF7 = $5A00; kbShiftF8 = $5B00; kbShiftF9 = $5C00;
- kbShiftF10 = $5D00; kbCtrlF1 = $5E00; kbCtrlF2 = $5F00;
- kbCtrlF3 = $6000; kbCtrlF4 = $6100; kbCtrlF5 = $6200;
- kbCtrlF6 = $6300; kbCtrlF7 = $6400; kbCtrlF8 = $6500;
- kbCtrlF9 = $6600; kbCtrlF10 = $6700; kbAltF1 = $6800;
- kbAltF2 = $6900; kbAltF3 = $6A00; kbAltF4 = $6B00;
- kbAltF5 = $6C00; kbAltF6 = $6D00; kbAltF7 = $6E00;
- kbAltF8 = $6F00; kbAltF9 = $7000; kbAltF10 = $7100;
- kbCtrlPrtSc = $7200; kbCtrlLeft = $7300; kbCtrlRight = $7400;
- kbCtrlEnd = $7500; kbCtrlPgDn = $7600; kbCtrlHome = $7700;
- kbAlt1 = $7800; kbAlt2 = $7900; kbAlt3 = $7A00;
- kbAlt4 = $7B00; kbAlt5 = $7C00; kbAlt6 = $7D00;
- kbAlt7 = $7E00; kbAlt8 = $7F00; kbAlt9 = $8000;
- kbAlt0 = $8100; kbAltMinus = $8200; kbAltEqual = $8300;
- kbCtrlPgUp = $8400; kbNoKey = $0000;
-
- { Keyboard state and shift masks }
-
- kbRightShift = $0001;
- kbLeftShift = $0002;
- kbCtrlShift = $0004;
- kbAltShift = $0008;
- kbScrollState = $0010;
- kbNumState = $0020;
- kbCapsState = $0040;
- kbInsState = $0080;
-
- { Mouse button state masks }
-
- mbLeftButton = $01;
- mbRightButton = $02;
-
- type
-
- { Event record }
-
- PEvent = ^TEvent;
- TEvent = record
- What: Word;
- case Word of
- evNothing: ();
- evMouse: (
- Buttons: Byte;
- Double: Boolean;
- Where: TPoint);
- evKeyDown: (
- case Integer of
- 0: (KeyCode: Word);
- 1: (CharCode: Char;
- ScanCode: Byte));
- evMessage: (
- Command: Word;
- case Word of
- 0: (InfoPtr: Pointer);
- 1: (InfoLong: Longint);
- 2: (InfoWord: Word);
- 3: (InfoInt: Integer);
- 4: (InfoByte: Byte);
- 5: (InfoChar: Char));
- end;
-
- const
-
- { Initialized variables }
-
- ButtonCount: Byte = 0;
- MouseEvents: Boolean = False;
- MouseReverse: Boolean = False;
- DoubleDelay: Word = 8;
- RepeatDelay: Word = 8;
-
- var
-
- { Uninitialized variables }
-
- MouseIntFlag: Byte;
- MouseButtons: Byte;
- MouseWhere: TPoint;
-
- { Event manager routines }
-
- procedure InitEvents;
- procedure DoneEvents;
- procedure ShowMouse;
- procedure HideMouse;
- procedure GetMouseEvent(var Event: TEvent);
- procedure GetKeyEvent(var Event: TEvent);
-
- { ******** SCREEN MANAGER ******** }
-
- const
-
- { Screen modes }
-
- smBW80 = $0002;
- smCO80 = $0003;
- smMono = $0007;
- smFont8x8 = $0100;
-
- const
-
- { Initialized variables }
-
- StartupMode: Word = $FFFF;
-
- var
-
- { Uninitialized variables }
-
- ScreenMode: Word;
- ScreenWidth: Byte;
- ScreenHeight: Byte;
- HiResScreen: Boolean;
- CheckSnow: Boolean;
- ScreenBuffer: Pointer;
- CursorLines: Word;
-
- { Screen manager routines }
-
- procedure InitVideo;
- procedure DoneVideo;
- procedure SetVideoMode(Mode: Word);
- procedure ClearScreen;
-
- { ******** SYSTEM ERROR HANDLER ******** }
-
- type
-
- { System error handler function type }
-
- TSysErrorFunc = function(ErrorCode: Integer; Drive: Byte): Integer;
-
- { Default system error handler routine }
-
- function SystemError(ErrorCode: Integer; Drive: Byte): Integer;
-
- const
-
- { Initialized variables }
-
- SysErrorFunc: TSysErrorFunc = SystemError;
- SysColorAttr: Word = $4E4F;
- SysMonoAttr: Word = $7070;
- CtrlBreakHit: Boolean = False;
- SaveCtrlBreak: Boolean = False;
- SysErrActive: Boolean = False;
-
- { System error handler routines }
-
- procedure InitSysError;
- procedure DoneSysError;
-
- { ******** UTILITY ROUTINES ******** }
-
- { Keyboard support routines }
-
- function GetAltChar(KeyCode: Word): Char;
- function GetAltCode(Ch: Char): Word;
- function CtrlToArrow(KeyCode: Word): Word;
-
- { String routines }
-
- procedure FormatStr(var Result: String; Format: String; var Params);
- procedure PrintStr(S: String);
-
- { Buffer move routines }
-
- procedure MoveBuf(var Dest; var Source; Attr: Byte; Count: Word);
- procedure MoveChar(var Dest; C: Char; Attr: Byte; Count: Word);
- procedure MoveCStr(var Dest; Str: String; Attrs: Word);
- procedure MoveStr(var Dest; Str: String; Attr: Byte);
- function CStrLen(S: String): Integer;
-