[Back to MOUSE SWAG index] [Back to Main SWAG index] [Original]
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.
[Back to MOUSE SWAG index] [Back to Main SWAG index] [Original]