[Back to MOUSE SWAG index]  [Back to Main SWAG index]  [Original]

Unit OwnMouse;

(*
=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=
=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=
=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=
=FE=FE=FE
=FE                            Bios mouse unit (Assembler code)          =
      =FE
=FE                            Totally coded by Lunatic/Lucifer          =
      =FE
=FE  If you use this unit, please, give some credits for me, or atleast s=
end   =FE
=FE                copy of your program(or it's source) to lunatic@dlc.fi=
      =FE
=FE                      -=C4=CD FREEWARE SOURCE FROM SWAG'S MOUSE.SWG =CD=
--         =FE
=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=
=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=
=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=FE=
=FE=FE=FE
*)

Interface

(* ---------------------- MOUSE PROCEDURES ---------------------------- *)


Procedure GetMouseData(var major,minor,mousetype,irq:byte);{Restores vers=
ion,
                                                            (major.minor)=
,
                                                            type of mouse=
 and
                                                            mouse's IRQ}
Procedure TellAboutMouse; {Textmode ofcourse.. Tells somethin' about your=

                           mouse}
Procedure ShowMouse;           {Show mouse cursor}
Procedure HideMouse;           {Hide mouse cursor}
Procedure SetMOUSEXY(x,y:integer);           {Set's mouse's coordinates t=
o
                                              x,y}
Procedure MouseAREA(x1,y1,x2,y2:integer);           {Set's mouses minimum=
 and
                                                     maximum x,y}
Procedure SetSensitivity(xsens,ysens,dst:integer); {Set mouse sensitivity=
}
Procedure GetSensitivity(var xsens,ysens,dst:integer); {Get sensitivity}
{dst= double speed treshold xsens= xsensitivity ysens= ysensitivity}

(* ---------------------- MOUSE FUNCTIONS ---------------------------- *)


Function MouseInstalled:Boolean; {Returns TRUE if mouse has been installe=
d}
Function Buttons:integer; {Restores number of buttons}
Function MouseLanguage:Integer;                   {Restores the language =
of
                                                   mouse driver..}
Function MouseX:Integer; {Restores Mouse's X vector}
Function MouseY:Integer; {Restores Mouse's Y vector}
Function LeftPressed:Boolean; {Returns true if LeftButton of mouse is pre=
ssed}
Function LeftReleased:Boolean; {Returns true if LeftButton is not pressed=
}
Function RightPressed:Boolean; {Returns true if RightButton has been pres=
sed}
Function RightReleased:Boolean; {Returns true if Rightbutton hasn't been
                                 pressed}


Implementation

Function MouseInstalled:Boolean;
Var inst:Integer;
Begin
Asm
Mov ax, 00h
Int 33h
Mov inst, ax
End;
If inst= $0000 Then MouseInstalled:= True;
If inst= $FFFF then MouseInstalled:= False;
End;

Function Buttons:integer;
var buttonnum:integer;
Begin
Asm
Mov ax, 00h
Int 33h
Mov buttonnum, bx
End;
Buttons:= buttonnum;
End;

Procedure GetMouseData(var major,minor,mousetype,irq:byte);
var v1,v2,mt,i:byte;
Begin
asm
Mov ax, 24h
Int 33h
Mov v1, bh
Mov v2, bl
Mov mt, ch
Mov i, cl
end;
major:= v1;minor:= v2;mousetype:= mt;irq:= i;
End;

Function MouseLanguage:Integer;var kieli:integer;
Begin Asm
Mov ax, 23h
Int 33h
Mov kieli, bx
End;
MouseLanguage:= kieli;
End;

Procedure TellAboutMouse; {Textmode ofcourse..}
var v1,v2,mt,irq:byte;lan:integer;
Begin
GetMouseData(v1,v2,mt,irq);
lan:= MouseLanguage;
Write('Mouse type: ');
If mt= 1 Then WriteLn('BUS mouse');
If mt= 2 Then WriteLn('Serial mouse');
If mt= 3 Then WriteLn('InPort mouse');
If mt= 4 Then WriteLn('PS/2 mouse');
If mt= 5 Then WriteLn('Hewlett Packard mouse');
WriteLn('Version: ',v1,'.',v2);
Write('Mouse IRQ: ');
If irq= 0 Then WriteLn('PS/2') else WriteLn(irq);
Write('Mouse language: ');
if lan= 0 Then WriteLn('english');
if lan= 1 Then WriteLn('french (F)');
if lan= 2 Then WriteLn('dutch (NL)');
if lan= 3 Then WriteLn('german (D)');
if lan= 4 Then WriteLn('swedish (S)');
if lan= 5 Then WriteLn('finnish (SF)');
if lan= 6 Then WriteLn('spanish (E)');
if lan= 7 Then WriteLn('portuguese (P)');
if lan= 8 Then WriteLn('Italian (I)');
End;

Procedure ShowMouse;Assembler;
Asm
Mov ax, 01h
Int 33h
End;

Procedure HideMouse;Assembler;
Asm
Mov ax, 02h
Int 33h
End;

Function MouseX:Integer;
var mx:integer;
Begin Asm
Mov ax, 03h
Int 33h
Mov mx, cx
End; MouseX:= mx; End;

Function MouseY:Integer;
var my:integer;
Begin Asm
Mov ax, 03h
Int 33h
Mov my, dx
End; MouseY:= my; End;

Procedure SetMOUSEXY(x,y:integer);Assembler;
Asm
Mov ax, 04h
Mov cx, x
Mov dx, y
Int 33h
End;

Function LeftPressed:Boolean;
var data:integer;
Begin
Asm
Mov ax, 05h
Mov bx, 0h
Int 33h
or ax, 0
mov data, ax
End;
if data= 1 Then LeftPressed:= True else LeftPressed:= False;
End;

Function LeftReleased:Boolean;
var data:integer;
Begin
Asm
Mov ax, 06h
Mov bx, 0h
Int 33h
or ax, 0
mov data, ax
End;
if data= 0 Then LeftReleased:= True else LeftReleased:= False;
End;

Function RightPressed:Boolean;
var data:integer;
Begin
Asm
Mov ax, 05h
Mov bx, 1h
Int 33h
or ax, 0h
mov data, ax
End;
if data= 2 Then RightPressed:= True else RightPressed:= False;
End;

Function RightReleased:Boolean;
var data:integer;
Begin
Asm
Mov ax, 06h
Mov bx, 1h
Int 33h
or ax, 0
mov data, ax
End;
if data= 0 Then RightReleased:= True else RightReleased:= False;
End;

Procedure MouseAREA(x1,y1,x2,y2:integer);Assembler;
Asm
Mov ax, 07h
Mov cx, x1
Mov dx, x2
Int 33h
Mov ax, 08h
Mov cx, y1
Mov dx, y2
Int 33h
End;

Procedure SetSensitivity(xsens,ysens,dst:integer);Assembler;Asm
Mov ax, 1Ah
Mov bx, xsens
Mov cx, ysens
Mov dx, dst
Int 33h
end;

Procedure GetSensitivity(var xsens,ysens,dst:integer);
var x,y,d:integer;
Begin
Asm
Mov ax,1B
Int 33h
Mov x, bx
Mov y, cx
Mov d, dx
End;
xsens:= x;ysens:= y;dst:= d;
End;
End.

[Back to MOUSE SWAG index]  [Back to Main SWAG index]  [Original]