home *** CD-ROM | disk | FTP | other *** search
- Unit Mousu;
-
- Interface
-
- Uses Crt,Dos,Video,Binu;
-
- Type
- GraphCursMaskType = Record
- Mask : Array [0..1, 0..15] of Word;
- HorzHotSpot,
- VertHotSpot : Integer;
- End;
-
- Var
- StandardShapeCurs,
- UpArrowCurs,
- LeftArrowCurs,
- CheckMarkCurs,
- PointingHandCurs,
- DiagnolCrossCurs,
- RectangularCrossCurs,
- GoodGuyCurs,
- HourGlassCurs : GraphCursMaskType;
-
- MouseX,
- MouseY,
- ButtonPressCount,
- ButtonReleasCount,
- TextScrMask,
- TextCursMask : Word;
-
- NumMouseKeys : Byte;
-
- MousePresent : Boolean;
-
- MKey : (None,Left,Right,Both);
-
- Procedure ResetMouse;
-
- Procedure VirtualScreenSize(Var MaxX,
- MaxY,
- CellSizeX,
- CellSizeY:Word);
-
- Procedure ShowMouseCursor;
-
- Procedure HideMouseCursor;
-
- Procedure GetButtonStatus;
-
- Procedure SetMouseCursorPos(x,y : Word);
-
- Procedure GetButtonPressInfo(KeyNum : Word);
-
- Procedure SetMinMaxHorzCursPos(Min,Max: Word);
-
- Procedure SetMinMaxVertCursPos(Min,Max: Word);
-
- Procedure SetGraphicsCursor(Var Mask: GraphCursMaskType);
-
- Procedure SetSoftTextCursor(TextScrMask,
- TextCursMask : Word);
-
- Procedure SetHardTextCursorBig;
-
- Procedure SetHardTextCursorSmall;
-
- Procedure ReadMouseMotionCounters(Var Hcount,
- Vcount: Word);
-
- Procedure LightPenEmulOn;
-
- Procedure LightPenEmulOff;
-
- Procedure SetMickeyToPixels(HRatio,VRatio : Word);
-
- Procedure ConditionalOff(x1,y1,x2,y2 : Word);
-
- Procedure SetDoubleSpeed(Speed : Word);
-
- Procedure SaveMouseDriverState;
-
- Procedure RestoreMouseDriverState;
-
- Procedure SetCrtPageNumber(Page : Word);
-
- Procedure GetCrtPageNumber(Var Page : word);
-
- Function AnyMouseKeyPressed : Boolean;
-
- Function LeftMouseKeyPressed : Boolean;
-
- Function RightMouseKeyPressed : Boolean;
-
- Function BothMouseKeysPressed : Boolean;
-
- Implementation
-
- Const
- MouseDelay = 0;
- Var
- MouseSaveBuffer : Pointer;
- MKP,
- MouseVisible : Boolean;
- MouseBufferSize: Word;
-
- Regs : Registers;
-
- Procedure DefineStandardShape;
- Begin
- With StandardShapeCurs Do
- Begin
- Mask[0,0] := BinToWord('0011111111111111');
- Mask[0,1] := BinToWord('0001111111111111');
- Mask[0,2] := BinToWord('0000111111111111');
- Mask[0,3] := BinToWord('0000011111111111');
- Mask[0,4] := BinToWord('0000001111111111');
- Mask[0,5] := BinToWord('0000000111111111');
- Mask[0,6] := BinToWord('0000000011111111');
- Mask[0,7] := BinToWord('0000000001111111');
- Mask[0,8] := BinToWord('0000000000111111');
- Mask[0,9] := BinToWord('0000000000011111');
- Mask[0,10]:= BinToWord('0000000111111111');
- Mask[0,11]:= BinToWord('0001000011111111');
- Mask[0,12]:= BinToWord('0011000011111111');
- Mask[0,13]:= BinToWord('1111100001111111');
- Mask[0,14]:= BinToWord('1111100001111111');
- Mask[0,15]:= BinToWord('1111110000111111');
-
- Mask[1,0] := BinToWord('0000000000000000');
- Mask[1,1] := BinToWord('0100000000000000');
- Mask[1,2] := BinToWord('0110000000000000');
- Mask[1,3] := BinToWord('0111000000000000');
- Mask[1,4] := BinToWord('0111100000000000');
- Mask[1,5] := BinToWord('0111110000000000');
- Mask[1,6] := BinToWord('0111111000000000');
- Mask[1,7] := BinToWord('0111111100000000');
- Mask[1,8] := BinToWord('0111111110000000');
- Mask[1,9] := BinToWord('0111111111000000');
- Mask[1,10]:= BinToWord('0111110000000000');
- Mask[1,11]:= BinToWord('0100011000000000');
- Mask[1,12]:= BinToWord('0000011000000000');
- Mask[1,13]:= BinToWord('0000001100000000');
- Mask[1,14]:= BinToWord('0000001100000000');
- Mask[1,15]:= BinToWord('0000000110000000');
-
- HorzHotSpot := -1;
- VertHotSpot := -1;
- End;
- End;
-
-
- Procedure DefineUpArrow;
- Begin
- With UpArrowCurs Do
- Begin
- Mask[0,0] := BinToWord('1111100111111111');
- Mask[0,1] := BinToWord('1111000011111111');
- Mask[0,2] := BinToWord('1110000001111111');
- Mask[0,3] := BinToWord('1110000001111111');
- Mask[0,4] := BinToWord('1100000000111111');
- Mask[0,5] := BinToWord('1100000000111111');
- Mask[0,6] := BinToWord('1000000000011111');
- Mask[0,7] := BinToWord('1000000000011111');
- Mask[0,8] := BinToWord('0000000000001111');
- Mask[0,9] := BinToWord('0000000000001111');
- Mask[0,10]:= BinToWord('1111000011111111');
- Mask[0,11]:= BinToWord('1111000011111111');
- Mask[0,12]:= BinToWord('1111000011111111');
- Mask[0,13]:= BinToWord('1111000011111111');
- Mask[0,14]:= BinToWord('1111000011111111');
- Mask[0,15]:= BinToWord('1111000011111111');
-
- Mask[1,0] := BinToWord('0000000000000000');
- Mask[1,1] := BinToWord('0000011000000000');
- Mask[1,2] := BinToWord('0000111100000000');
- Mask[1,3] := BinToWord('0000111100000000');
- Mask[1,4] := BinToWord('0001111110000000');
- Mask[1,5] := BinToWord('0001111110000000');
- Mask[1,6] := BinToWord('0011111111000000');
- Mask[1,7] := BinToWord('0011111111000000');
- Mask[1,8] := BinToWord('0111111111100000');
- Mask[1,9] := BinToWord('0000011000000000');
- Mask[1,10]:= BinToWord('0000011000000000');
- Mask[1,11]:= BinToWord('0000011000000000');
- Mask[1,12]:= BinToWord('0000011000000000');
- Mask[1,13]:= BinToWord('0000011000000000');
- Mask[1,14]:= BinToWord('0000011000000000');
- Mask[1,15]:= BinToWord('0000000000000000');
-
- HorzHotSpot := 5;
- VertHotSpot := 0;
- end;
- End;
-
-
-
- Procedure DefineLeftArrow;
- Begin
- With LeftArrowCurs do
- Begin
- Mask[0,0] := BinToWord('1111111000011111');
- Mask[0,1] := BinToWord('1111000000011111');
- Mask[0,2] := BinToWord('0000000000000000');
- Mask[0,3] := BinToWord('0000000000000000');
- Mask[0,4] := BinToWord('0000000000000000');
- Mask[0,5] := BinToWord('1111000000011111');
- Mask[0,6] := BinToWord('1111111000011111');
- Mask[0,7] := BinToWord('1111111111111111');
- Mask[0,8] := BinToWord('1111111111111111');
- Mask[0,9] := BinToWord('1111111111111111');
- Mask[0,10]:= BinToWord('1111111111111111');
- Mask[0,11]:= BinToWord('1111111111111111');
- Mask[0,12]:= BinToWord('1111111111111111');
- Mask[0,13]:= BinToWord('1111111111111111');
- Mask[0,14]:= BinToWord('1111111111111111');
- Mask[0,15]:= BinToWord('1111111111111111');
-
- Mask[1,0] := BinToWord('0000000000000000');
- Mask[1,1] := BinToWord('0000000011000000');
- Mask[1,2] := BinToWord('0000011111000000');
- Mask[1,3] := BinToWord('0111111111111110');
- Mask[1,4] := BinToWord('0000011111000000');
- Mask[1,5] := BinToWord('0000000011000000');
- Mask[1,6] := BinToWord('0000000000000000');
- Mask[1,7] := BinToWord('0000000000000000');
- Mask[1,8] := BinToWord('0000000000000000');
- Mask[1,9] := BinToWord('0000000000000000');
- Mask[1,10]:= BinToWord('0000000000000000');
- Mask[1,11]:= BinToWord('0000000000000000');
- Mask[1,12]:= BinToWord('0000000000000000');
- Mask[1,13]:= BinToWord('0000000000000000');
- Mask[1,14]:= BinToWord('0000000000000000');
- Mask[1,15]:= BinToWord('0000000000000000');
-
- HorzHotSpot := 0;
- VertHotSpot := 3;
- End;
- End;
-
-
-
- Procedure DefineCheckMark;
- Begin
- With CheckMarkCurs Do
- Begin
- Mask[0,0] := BinToWord('1111111111110000');
- Mask[0,1] := BinToWord('1111111111100000');
- Mask[0,2] := BinToWord('1111111111000000');
- Mask[0,3] := BinToWord('1111111110000001');
- Mask[0,4] := BinToWord('1111111100000011');
- Mask[0,5] := BinToWord('0000011000000111');
- Mask[0,6] := BinToWord('0000000000001111');
- Mask[0,7] := BinToWord('0000000000011111');
- Mask[0,8] := BinToWord('1100000000111111');
- Mask[0,9] := BinToWord('1111000001111111');
- Mask[0,10]:= BinToWord('1111111111111111');
- Mask[0,11]:= BinToWord('1111111111111111');
- Mask[0,12]:= BinToWord('1111111111111111');
- Mask[0,13]:= BinToWord('1111111111111111');
- Mask[0,14]:= BinToWord('1111111111111111');
- Mask[0,15]:= BinToWord('1111111111111111');
-
- Mask[1,0] := BinToWord('0000000000000000');
- Mask[1,1] := BinToWord('0000000000000110');
- Mask[1,2] := BinToWord('0000000000001100');
- Mask[1,3] := BinToWord('0000000000011000');
- Mask[1,4] := BinToWord('0000000000110000');
- Mask[1,5] := BinToWord('0000000001100000');
- Mask[1,6] := BinToWord('0111000011000000');
- Mask[1,7] := BinToWord('0001110110000000');
- Mask[1,8] := BinToWord('0000011100000000');
- Mask[1,9] := BinToWord('0000000000000000');
- Mask[1,10]:= BinToWord('0000000000000000');
- Mask[1,11]:= BinToWord('0000000000000000');
- Mask[1,12]:= BinToWord('0000000000000000');
- Mask[1,13]:= BinToWord('0000000000000000');
- Mask[1,14]:= BinToWord('0000000000000000');
- Mask[1,15]:= BinToWord('0000000000000000');
- HorzHotSpot := 6;
- VertHotSpot := 7;
- End;
- End;
-
-
- Procedure DefinePointingHand;
- Begin
- With PointingHandCurs Do
- Begin
- Mask[0,0] := BinToWord('1110000111111111');
- Mask[0,1] := BinToWord('1110000111111111');
- Mask[0,2] := BinToWord('1110000111111111');
- Mask[0,3] := BinToWord('1110000111111111');
- Mask[0,4] := BinToWord('1110000111111111');
- Mask[0,5] := BinToWord('1110000000000000');
- Mask[0,6] := BinToWord('1110000000000000');
- Mask[0,7] := BinToWord('1110000000000000');
- Mask[0,8] := BinToWord('0000000000000000');
- Mask[0,9] := BinToWord('0000000000000000');
- Mask[0,10]:= BinToWord('0000000000000000');
- Mask[0,11]:= BinToWord('0000000000000000');
- Mask[0,12]:= BinToWord('0000000000000000');
- Mask[0,13]:= BinToWord('0000000000000000');
- Mask[0,14]:= BinToWord('0000000000000000');
- Mask[0,15]:= BinToWord('0000000000000000');
-
- Mask[1,0] := BinToWord('0001111000000000');
- Mask[1,1] := BinToWord('0001001000000000');
- Mask[1,2] := BinToWord('0001001000000000');
- Mask[1,3] := BinToWord('0001001000000000');
- Mask[1,4] := BinToWord('0001001000000000');
- Mask[1,5] := BinToWord('0001001111111111');
- Mask[1,6] := BinToWord('0001001001001001');
- Mask[1,7] := BinToWord('0001001001001001');
- Mask[1,8] := BinToWord('1111001001001001');
- Mask[1,9] := BinToWord('1001000000000001');
- Mask[1,10]:= BinToWord('1001000000000001');
- Mask[1,11]:= BinToWord('1001000000000001');
- Mask[1,12]:= BinToWord('1000000000000001');
- Mask[1,13]:= BinToWord('1000000000000001');
- Mask[1,14]:= BinToWord('1000000000000001');
- Mask[1,15]:= BinToWord('1111111111111111');
-
- HorzHotSpot := 5;
- VertHotSpot := 0;
- end;
- End;
-
-
- Procedure DefineDiagonalCross;
- Begin
- With DiagnolCrossCurs Do
- Begin
- Mask[0,0] := BinToWord('0000011111100000');
- Mask[0,1] := BinToWord('0000000110000000');
- Mask[0,2] := BinToWord('0000000000000000');
- Mask[0,3] := BinToWord('1100000000000011');
- Mask[0,4] := BinToWord('1111000000001111');
- Mask[0,5] := BinToWord('1100000000000011');
- Mask[0,6] := BinToWord('0000000000000000');
- Mask[0,7] := BinToWord('0000000110000000');
- Mask[0,8] := BinToWord('0000001111000000');
- Mask[0,9] := BinToWord('1111111111111111');
- Mask[0,10]:= BinToWord('1111111111111111');
- Mask[0,11]:= BinToWord('1111111111111111');
- Mask[0,12]:= BinToWord('1111111111111111');
- Mask[0,13]:= BinToWord('1111111111111111');
- Mask[0,14]:= BinToWord('1111111111111111');
- Mask[0,15]:= BinToWord('1111111111111111');
-
- Mask[1,0] := BinToWord('0000000000000000');
- Mask[1,1] := BinToWord('0111000000001110');
- Mask[1,2] := BinToWord('0001110000111000');
- Mask[1,3] := BinToWord('0000011001100000');
- Mask[1,4] := BinToWord('0000001111000000');
- Mask[1,5] := BinToWord('0000011001100000');
- Mask[1,6] := BinToWord('0001110000111000');
- Mask[1,7] := BinToWord('0111000000001110');
- Mask[1,8] := BinToWord('0000000000000000');
- Mask[1,9] := BinToWord('0000000000000000');
- Mask[1,10]:= BinToWord('0000000000000000');
- Mask[1,11]:= BinToWord('0000000000000000');
- Mask[1,12]:= BinToWord('0000000000000000');
- Mask[1,13]:= BinToWord('0000000000000000');
- Mask[1,14]:= BinToWord('0000000000000000');
- Mask[1,15]:= BinToWord('0000000000000000');
-
- HorzHotSpot := 7;
- VertHotSpot := 4;
- End;
- End;
-
-
- Procedure DefineRectangularCross;
- Begin
- With RectangularCrossCurs Do
- Begin
- Mask[0,1] := BinToWord('1111110000111111');
- Mask[0,1] := BinToWord('1111110000111111');
- Mask[0,2] := BinToWord('1111110000111111');
- Mask[0,3] := BinToWord('0000000000000000');
- Mask[0,4] := BinToWord('0000000000000000');
- Mask[0,5] := BinToWord('0000000000000000');
- Mask[0,6] := BinToWord('1111110000111111');
- Mask[0,7] := BinToWord('1111110000111111');
- Mask[0,8] := BinToWord('1111110000111111');
- Mask[0,9] := BinToWord('1111111111111111');
- Mask[0,10]:= BinToWord('1111111111111111');
- Mask[0,11]:= BinToWord('1111111111111111');
- Mask[0,12]:= BinToWord('1111111111111111');
- Mask[0,13]:= BinToWord('1111111111111111');
- Mask[0,14]:= BinToWord('1111111111111111');
- Mask[0,15]:= BinToWord('1111111111111111');
-
- Mask[1,1] := BinToWord('0000000000000000');
- Mask[1,0] := BinToWord('0000000110000000');
- Mask[1,2] := BinToWord('0000000110000000');
- Mask[1,3] := BinToWord('0000000110000000');
- Mask[1,4] := BinToWord('1111111111111111');
- Mask[1,5] := BinToWord('0000000110000000');
- Mask[1,6] := BinToWord('0000000110000000');
- Mask[1,7] := BinToWord('0000000110000000');
- Mask[1,8] := BinToWord('0000000000000000');
- Mask[1,9] := BinToWord('0000000000000000');
- Mask[1,10]:= BinToWord('0000000000000000');
- Mask[1,11]:= BinToWord('0000000000000000');
- Mask[1,12]:= BinToWord('0000000000000000');
- Mask[1,13]:= BinToWord('0000000000000000');
- Mask[1,14]:= BinToWord('0000000000000000');
- Mask[1,15]:= BinToWord('0000000000000000');
-
- HorzHotSpot := 7;
- VertHotSpot := 4;
- End;
- End;
-
- Procedure DefineGoodGuy;
- Begin
- With GoodGuyCurs Do
- Begin
- Mask[0,0] := BinToWord('1111000000001111');
- Mask[0,1] := BinToWord('1100000000000011');
- Mask[0,2] := BinToWord('1000000000000001');
- Mask[0,3] := BinToWord('1000010000100001');
- Mask[0,4] := BinToWord('0000100000010000');
- Mask[0,5] := BinToWord('0000000000000000');
- Mask[0,6] := BinToWord('0000000000000000');
- Mask[0,7] := BinToWord('0000000000000000');
- Mask[0,8] := BinToWord('0000000000000000');
- Mask[0,9] := BinToWord('0000000000000000');
- Mask[0,10]:= BinToWord('0000000000000000');
- Mask[0,11]:= BinToWord('0000100000010000');
- Mask[0,11]:= BinToWord('1000010000100001');
- Mask[0,13]:= BinToWord('1000000000000001');
- Mask[0,14]:= BinToWord('1100000000000011');
- Mask[0,15]:= BinToWord('1111000000001111');
-
- Mask[1,0] := BinToWord('0000001111000000');
- Mask[1,1] := BinToWord('0000111111110000');
- Mask[1,2] := BinToWord('0011100000011100');
- Mask[1,3] := BinToWord('0011001111001100');
- Mask[1,4] := BinToWord('0110000110000110');
- Mask[1,5] := BinToWord('0110010110100110');
- Mask[1,6] := BinToWord('1100001111000011');
- Mask[1,7] := BinToWord('1101111111111011');
- Mask[1,8] := BinToWord('1101111111111011');
- Mask[1,9] := BinToWord('1100001111000011');
- Mask[1,10]:= BinToWord('0110010110100110');
- Mask[1,11]:= BinToWord('0110000110000110');
- Mask[1,12]:= BinToWord('0011001111001100');
- Mask[1,13]:= BinToWord('0011100000011100');
- Mask[1,14]:= BinToWord('0000111111110000');
- Mask[1,15]:= BinToWord('0000001111000000');
-
- HorzHotSpot := 8;
- VertHotSpot := 8;
- End;
- End;
-
- Procedure DefineHourGlass;
- Begin
- With HourGlassCurs Do
- Begin
- Mask[0,1] := BinToWord('0000000000000000');
- Mask[0,0] := BinToWord('0000000000000000');
- Mask[0,2] := BinToWord('0000000000000000');
- Mask[0,3] := BinToWord('0000000000000000');
- Mask[0,4] := BinToWord('1000000000000001');
- Mask[0,5] := BinToWord('1100000000000011');
- Mask[0,6] := BinToWord('1110000000000111');
- Mask[0,7] := BinToWord('1111000000001111');
- Mask[0,8] := BinToWord('1110000000000111');
- Mask[0,9] := BinToWord('1100000000000011');
- Mask[0,10]:= BinToWord('1000000000000001');
- Mask[0,11]:= BinToWord('0000000000000000');
- Mask[0,12]:= BinToWord('0000000000000000');
- Mask[0,13]:= BinToWord('0000000000000000');
- Mask[0,14]:= BinToWord('0000000000000000');
- Mask[0,15]:= BinToWord('1111111111111111');
-
- Mask[1,1] := BinToWord('0000000000000000');
- Mask[1,0] := BinToWord('0111111111111110');
- Mask[1,2] := BinToWord('0110000000000110');
- Mask[1,3] := BinToWord('0011000000001100');
- Mask[1,4] := BinToWord('0001100000011000');
- Mask[1,5] := BinToWord('0000110000110000');
- Mask[1,6] := BinToWord('0000011001100000');
- Mask[1,7] := BinToWord('0000001111000000');
- Mask[1,8] := BinToWord('0000011001100000');
- Mask[1,9] := BinToWord('0000110000110000');
- Mask[1,10]:= BinToWord('0001100000011000');
- Mask[1,11]:= BinToWord('0011000000001100');
- Mask[1,12]:= BinToWord('0110000000000110');
- Mask[1,13]:= BinToWord('0111111111111110');
- Mask[1,14]:= BinToWord('0000000000000000');
- Mask[1,15]:= BinToWord('0000000000000000');
-
- HorzHotSpot := 7;
- VertHotSpot := 7;
- End;
- End;
-
- Procedure SetKeyStatus(MStatus : Word);
- Begin
- Case MStatus of
- 0: Mkey := None;
- 1: Mkey := Left;
- 2: Mkey := Right;
- 3: Mkey := Both;
- End;
- End;
-
-
-
- Procedure ResetMouse;
- Begin
- Regs.AX := 0;
- Intr($33,Regs);
- With Regs do
- Begin
- MousePresent := AX > 0;
- If MousePresent Then
- NumMouseKeys := BX
- Else
- NumMouseKeys := 0;
- End;
- MouseVisible := False;
- End;
-
-
-
- Procedure VirtualScreenSize(Var MaxX,
- MaxY,
- CellSizeX,
- CellSizeY : Word);
- Begin
- Regs.AH := $0F;
- Intr($10,Regs);
-
- Case Regs.AL Of
-
- 0, 1:
- begin
- MaxX := 640;
- MaxY := 200;
- CellSizeX:= 16;
- CellSizeY:= 8;
- End;
-
- 2, 3, 7:
- Begin
- MaxX := 640;
- MaxY := 200;
- CellSizeX:= 8;
- CellSizeY:= 8;
- End;
-
- 4, 5:
- Begin
- MaxX := 640;
- MaxY := 200;
- CellSizeX:= 2;
- CellSizeY:= 1;
- End;
-
- 6:
- Begin
- MaxX := 640;
- Maxy := 200;
- CellSizeX := 1;
- CellSizeY := 1;
- End;
-
- 13:
- Begin
- MaxX := 640;
- MaxY := 200;
- CellSizeX:= 16;
- CellSizeY:= 8;
- End;
-
- 14, 15:
- Begin
- MaxX := 640;
- MaxY := 350;
- CellSizeX:= 1;
- CellSizeY:= 1;
- End;
-
- End;
- End;
-
-
- Procedure ShowMouseCursor;
- Begin
- If Not MouseVisible Then
- Begin
- Regs.AX := 1;
- Intr($33,Regs);
- MouseVisible := True;
- End;
- End;
-
-
- Procedure HideMouseCursor;
- Begin
- If MouseVisible Then
- Begin
- Regs.AX := 2;
- Intr($33, Regs);
- MouseVisible := False;
- End;
- End;
-
-
- Procedure GetButtonStatus;
- Begin
- Regs. AX := 3;
- Intr($33,Regs);
- With Regs Do
- Begin
- SetKeyStatus(BX);
- MouseX := CX;
- MouseY := DX;
- End;
- End;
-
-
- Procedure SetMouseCursorPos(x, y : Word);
- Begin
- With Regs Do
- Begin
- AX := 4;
- CX := x;
- DX := y;
- End;
-
- Intr($33,Regs);
- MouseX := x;
- MouseY := y;
- End;
-
-
- Procedure GetButtonPressInfo(Keynum : Word);
- Begin
- With Regs Do
- Begin
- AX := 5;
- BX := Keynum -1;
- End;
- Intr($33, Regs);
- With Regs Do
- Begin
- SetKeyStatus(AX);
- ButtonPressCount := BX;
- MouseX := CX;
- MouseY := DX;
- End;
- End;
-
-
- Procedure SetMinMaxHorzCursPos(Min, Max: Word);
- Begin
- With Regs Do
- Begin
- AX := 7;
- CX := Min;
- DX := Max;
- End;
- Intr($33, Regs);
- End;
-
-
- Procedure SetMinMaxVertCursPos(Min, Max: Word);
- Begin
- With Regs Do
- Begin
- AX := 8;
- CX := Min;
- DX := Max;
- End;
- Intr($33,Regs);
- End;
-
-
- Procedure SetGraphicsCursor(Var Mask: GraphCursMaskType);
- Begin
- With Regs Do
- Begin
- AX := 9;
- BX := Word(Mask.HorzHotSpot);
- CX := Word(Mask.VertHotSpot);
- DX := Ofs(Mask);
- ES := Seg(Mask);
- End;
- Intr($33,Regs);
- End;
-
-
- Procedure SetSoftTextCursor( TextScrMask,
- TextCursMask : Word);
- Begin
- With Regs Do
- Begin
- AX := 10;
- BX := 0;
- CX := TextScrMask;
- DX := TextCursMask;
- End;
- Intr($33,Regs);
- End;
-
-
- Procedure SetHardTextCursorBig;
- Begin
- With Regs Do
- Begin
- AX := 10;
- BX := 1;
- If Stype = Mono Then
- Begin
- CX := 0;
- DX := 13;
- End
- Else
- Begin
- CX := 0;
- DX := 7;
- End;
- End;
- Intr($33,Regs);
- End;
-
-
- Procedure SetHardTextCursorSmall;
- Begin
- With Regs Do
- Begin
- AX := 10;
- BX := 1;
- If Stype = Mono Then
- Begin
- CX := 12;
- DX := 13;
- End
- Else
- Begin
- CX := 6;
- DX := 7;
- End;
- End;
- Intr($33,Regs);
- End;
-
-
- Procedure ReadMouseMotionCounters(Var Hcount,
- Vcount: word);
- Begin
- Regs.AX := 11;
- Intr($33,Regs);
- With Regs Do
- Begin
- Hcount := CX;
- Vcount := DX;
- End;
- end;
-
-
- Procedure LightPenEmulOn;
- Begin
- Regs.AX := 13;
- Intr($33,Regs);
- End;
-
-
- Procedure LightPenEmulOff;
- Begin
- Regs.AX := 14;
- Intr($33,Regs);
- End;
-
-
- Procedure SetMickeyToPixels(HRatio, VRatio : Word);
- Begin
- With Regs Do
- Begin
- AX := 15;
- CX := HRatio;
- DX := VRatio;
- End;
- Intr($33,Regs);
- End;
-
-
- Procedure ConditionalOff(x1, y1, x2, y2 : Word);
- Begin
- With Regs Do
- Begin
- AX := 16;
- CX := x1;
- DX := y1;
- SI := x2;
- DI := y2;
- End;
- Intr($33,Regs);
- End;
-
-
- Procedure SetDoubleSpeed(Speed : Word);
- Begin
- With Regs Do
- Begin
- AX := 19;
- DX := Speed;
- End;
- Intr($33, Regs);
- End;
-
-
- Procedure GetMouseSaveSize;
- Begin
- Regs.AX := 21;
- Intr($33,Regs);
- MouseBufferSize := Regs.BX;
- End;
-
-
- Procedure SaveMouseDriverState;
- Begin
- GetMem(MouseSaveBuffer,MouseBufferSize);
- With Regs Do
- Begin
- AX := 22;
- DX := Ofs(MouseSaveBuffer^);
- ES := Seg(MouseSaveBuffer^);
- End;
- Intr($33,Regs);
- End;
-
-
- Procedure RestoreMouseDriverState;
- Begin
- With Regs Do
- Begin
- AX := 23;
- DX := Ofs(MouseSaveBuffer^);
- ES := Seg(MouseSaveBuffer^);
- End;
- Intr($33,Regs);
- FreeMem(MouseSaveBuffer,MouseBufferSize);
- End;
-
-
- Procedure SetCrtPageNumber(Page : Word);
- Begin
- With Regs Do
- Begin
- AX := 29;
- BX := page;
- End;
- Intr($33,Regs);
- End;
-
-
- Procedure GetCrtPageNumber(Var Page: Word);
- Begin
- Regs.AX := 23;
- Intr($33,Regs);
- Page := Regs.BX;
- End;
-
-
- Function AnyMouseKeyPressed : Boolean;
- Begin
- If MKP Then
- Delay(MouseDelay);
- GetButtonStatus;
- MKP := Mkey <> None;
- AnyMouseKeyPressed := MKP;
- End;
-
-
- Function LeftMouseKeyPressed : Boolean;
- Begin
- If MKP Then
- Delay(MouseDelay);
- GetButtonStatus;
- MKP := Mkey = Left;
- LeftMouseKeyPressed := MKP;
- End;
-
-
- Function RightMouseKeyPressed : Boolean;
- Begin
- If MKP Then
- Delay(MouseDelay);
- GetButtonStatus;
- MKP := Mkey = Right;
- RightMouseKeyPressed := MKP;
- End;
-
-
- Function BothMouseKeysPressed : Boolean;
- Begin
- If MKP Then
- Delay(MouseDelay);
- GetButtonStatus;
- MKP := Mkey = Both;
- BothMouseKeysPressed := MKP;
- End;
-
-
- Begin
- ResetMouse;
- DefineStandardShape;
- DefineUpArrow;
- DefineLeftArrow;
- DefineCheckMark;
- DefinePointingHand;
- DefineDiagonalCross;
- DefineRectangularCross;
- DefineGoodGuy;
- DefineHourGlass;
- MKP := False;
- End.
-
-
-