home *** CD-ROM | disk | FTP | other *** search
- Unit Mouse4;
-
- {*******************************************************************}
- {* Mouse4 - Text Mouse Unit *}
- {* version .9, 11/20/87 *}
- {* by Richard Sadowsky 74017,1670 *}
- {* released to the public domain *}
- {*******************************************************************}
-
- Interface
-
- Uses DOS;
-
- const
- CURPOS = 1; { not used yet in this version }
- LEFTPRESS = 2;
- LEFTREL = 4;
- RIGHTPRESS = 8;
- RIGHTREL = 16;
-
- var
- Mouse_Reg : Registers;
- Mouse_Installed : Boolean;
- Mouse_Error : Word;
-
- function InitMouse : Word;
- { Function 0 - Initialize mouse software and hardware }
-
- procedure ShowMouse;
- { function 1 - show mouse cursor }
-
- procedure HideMouse;
- { function 2 - hide mouse cursor }
-
- function MousePosition(var MouseX,MouseY : Word) : Word;
- { function 3 - return mouse position and button status }
- { X and Y values scaled for 80 col text mode }
-
- procedure setmouseposition(mousex, mousey: Word);
- { function 4 - sets mouse position }
- { X and Y values scaled for 80 col text mode }
-
- function mousepress(button: Word;
- var count, lastx, lasty: Word): Word;
- { function 5 - gets button press information }
- { X and Y values scaled for 80 col text mode }
-
- function mouserelease(button: Word;
- var count, lastx, lasty: Word): Word;
- { function 6 - gets button release information }
- { X and Y values scaled for 80 col text mode }
-
- procedure setmousexy(x1,y1,x2,y2: Word);
- { functions 7 and 8 - sets min/max values for horizontal/vertical }
- { X and Y values scaled for 80 col text mode }
-
- procedure restoremousexy;
- { functions 7 and 8 - restores min/max values for CGA screen }
-
- procedure SetPixeltoMickey(Horiz,Verti : Word);
- { function 15 - sets the mickey to pixel ratio }
-
- implementation
-
- function InitMouse : Word;
- { Function 0 - Initialize mouse software and hardware }
- begin
- with Mouse_Reg do
- Ax := 0;
- Intr($33,Mouse_Reg);
- InitMouse := Mouse_Reg.Ax;
- end;
-
- procedure ShowMouse;
- { function 1 - show mouse cursor }
- begin
- Mouse_Reg.Ax := 1;
- Intr($33,Mouse_Reg);
- end;
-
- procedure HideMouse;
- { function 2 - hide mouse cursor }
-
- begin
- Mouse_Reg.AX := 2;
- Intr($33,Mouse_Reg);
- end;
-
- function MousePosition(var MouseX,MouseY : Word) : Word;
- { function 3 - return mouse position and button status }
- { X and Y values scaled for 80 col text mode }
- begin
- Mouse_Reg.Ax := 3;
- Intr($33,Mouse_Reg);
- with Mouse_Reg do begin
- MouseX := Succ(Cx DIV 8);
- MouseY := Succ(Dx DIV 8);
- MousePosition := Bx;
- end;
- end;
-
- procedure setmouseposition(mousex, mousey: Word);
- { function 4 - sets mouse position }
- { X and Y values scaled for 80 col text mode }
- begin
- Mouse_Reg.ax:=4;
- Mouse_Reg.cx:=Pred(mousex*8);
- Mouse_Reg.dx:=Pred(mousey*8);
- intr($33,Mouse_Reg);
- end;
-
- function mousepress(button: Word;
- var count, lastx, lasty: Word): Word;
- { function 5 - gets button press information }
- { X and Y values scaled for 80 col text mode }
- begin
- Mouse_Reg.ax:=5;
- Mouse_Reg.bx:=button;
- intr($33,Mouse_Reg);;
- mousepress:=Mouse_Reg.ax;
- count:=Mouse_Reg.bx;
- lastx:=Succ(Mouse_Reg.cx div 8);
- lasty:=Succ(Mouse_Reg.dx div 8);
- end;
-
- function mouserelease(button: Word;
- var count, lastx, lasty: Word): Word;
- { function 6 - gets button release information }
- { X and Y values scaled for 80 col text mode }
- begin
- Mouse_Reg.ax:=6;
- Mouse_Reg.bx:=button;
- intr($33,Mouse_Reg);;
- mouserelease:=Mouse_Reg.ax;
- count:=Mouse_Reg.bx;
- lastx := Succ(Mouse_Reg.cx div 8);
- lasty := Succ(Mouse_Reg.dx div 8);
- end;
-
- procedure setmousexy(x1,y1,x2,y2: Word);
- { functions 7 and 8 - sets min/max values for horizontal/vertical }
- { X and Y values scaled for 80 col text mode }
- begin
- Mouse_Reg.ax:=7;
- Mouse_Reg.cx:=Pred(x1*8);
- Mouse_Reg.dx:=Pred(x2*8);
- intr($33,Mouse_Reg);
- Mouse_Reg.ax:=8;
- Mouse_Reg.cx:=Pred(y1*8);
- Mouse_Reg.dx:=Pred(y2*8);
- intr($33,Mouse_Reg);
- end;
-
- procedure restoremousexy;
- { functions 7 and 8 - restores min/max values for CGA screen }
- begin
- Mouse_Reg.ax:=7;
- Mouse_Reg.cx:=0;
- Mouse_Reg.dx:=639;
- intr($33,Mouse_Reg);
- Mouse_Reg.ax:=8;
- Mouse_Reg.cx:=0;
- Mouse_Reg.dx:=199;
- intr($33,Mouse_Reg);
- end;
-
- procedure SetPixeltoMickey(Horiz,Verti : Word);
- { function 15 - sets the mickey to pixel ratio }
-
- begin
- with Mouse_Reg do begin
- Ax := 15;
- Cx := Horiz;
- Dx := Verti;
- end;
- Intr($33,Mouse_Reg)
- end;
-
- begin
- Mouse_Error := InitMouse;
- Mouse_Installed := Mouse_Error = 65535;
- end.