Category : Pascal Source Code
Archive   : MOUSE4.ZIP
Filename : MOUSE4.PAS

 
Output of file : MOUSE4.PAS contained in archive : MOUSE4.ZIP
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.


  3 Responses to “Category : Pascal Source Code
Archive   : MOUSE4.ZIP
Filename : MOUSE4.PAS

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/