home *** CD-ROM | disk | FTP | other *** search
- 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.