[Back to MOUSE SWAG index] [Back to Main SWAG index] [Original]
unit MyMouse;
{ bare bones mouse unit used by the simulator -stolen from swag, sorta }
interface
uses dos;
var
mousex, mousey:integer;
procedure initmouse(var buttons:byte; var is:boolean);
Procedure showmouse;
Procedure hidemouse;
procedure getmousexy;
procedure mouseto80;
Procedure MouseExit;
function mouserightpressed:boolean; {??}
function mouseleftpressed:boolean;
function mouserightdown:boolean;
function mousebothdown:boolean;
function mouseleftdown:boolean;
implementation
Var
ExitPtr: pointer;
Regs: registers;
TempWord: word;
procedure initmouse(var buttons:byte; var is:boolean);
var msavailable:boolean;
msbuttons:byte;
begin
msavailable:=false;
Asm
MOV MsButtons,0
MOV AX,0000h
INT 33h
CMP AX,0000h
JE @Dne
CMP AX,0FFFFh
JNE @Dne
MOV MsAvailable,True
CMP BX,0002h
JE @Two
CMP BX,0003h
JE @Thr
CMP BX,0FFFFh
JE @Thr
@Two: MOV MsButtons,2
JMP @Dne
@Thr: MOV MsButtons,3
@Dne:
End;
buttons:=msbuttons;
is:=msavailable;
end;
Procedure showmouse; Assembler;
Asm
MOV AX,0001h
INT 33h
end;
Procedure Hidemouse; Assembler;
Asm
MOV AX,0002h
INT 33h
end;
procedure getmousexy; Assembler;
Asm
MOV AX,0003h
INT 33h
MOV mousex,CX
MOV mousey,DX
end;
procedure mouseto80;
begin
{makes it a number for 80x25 text mode}
mousex:=(mousex div 8)+1;
mousey:=(mousey div 8)+1;
end;
{dont know the diff between 'rghtDOWN and rightPRESSED'}
function mouseleftpressed:boolean;
begin
asm
MOV @Result,False
MOV AX,0005h
MOV BX,0000h
INT 33h
{MOV Count,BX} {what is count?}
MOV mousex,CX
MOV mousey,DX
CMP AX,1
JNE @Done
MOV @Result,True
@Done:
end;
end;
function mouserightpressed:boolean;
begin
asm
MOV @Result,False
MOV AX,0005h
MOV BX,0001h
INT 33h
{MOV Count,BX} {what is count?}
MOV mousex,CX
MOV mousey,DX
CMP AX,2
JNE @Done
MOV @Result,True
@Done:
end;
end;
function mouserightdown:boolean;
begin
asm
MOV @Result,False
MOV AX,0003h
INT 33h
MOV mousex,CX
MOV mousey,DX
CMP BX,2
JNE @Done
MOV @Result,True
@Done:
end;
end;
function mousebothdown:boolean;
begin
asm
MOV @Result,False
MOV AX,0003h
INT 33h
MOV MouseX,CX
MOV MouseY,DX
CMP BX,3
JNE @Done
MOV @Result,True
@Done:
end;
end;
function mouseleftdown:boolean;
begin
Asm
MOV @Result,False
MOV AX,0003h
INT 33h
MOV mousex,CX
MOV mousey,DX
CMP BX,1
JNE @Done
MOV @Result,True
@Done:
end;
end;
Procedure MouseExit;
begin
ExitProc:=ExitPtr;
end;
begin
ExitPtr:=ExitProc;
ExitProc:=@MouseExit;
End.
[Back to MOUSE SWAG index] [Back to Main SWAG index] [Original]