Funktiolla on mahdollisuus käyttää hiirtä omassa ohjelmassa.
FUNCTIONS FUNCTION NUMBER Base FUNCTIONS Mouse Initialization 0 Show Cursor 1 Hide Cursor 2 Get Mouse Position & Button Status 3 Set mouse Cursor Position 4 Get Button Press Information 5 Get Button Release Information 6 Set Minimum & Maximum X Position 7 Set Minimum & Maximum Y Position 8 Define Graphics Cursor Block 9 Define Text Cursor 10 Read Mouse Motion Counters 11 Define Ecent Handler 12 Light Pen Emulation Mode On 13 Light Pen Emulation Mode Off 14 Set Mouse Motion/Pixel Ratio 15 Condition Off 16 Set Double-Speed Threshold 19
Sama Suomeksi
Alustaa Hiiriajurin 0 Hiirikursori näkyy 1 Hiirikursori pois 2 Lukee hiiren paikan ja nappien tilan 3 Asetetaan hiiren paikka 4 Lukee tietoa napin painamisesta 5 Lukee tietoa napin vapauttamisesta 6 Asetetaan X:n suurin ja pienin arvo 7 Asetetaan Y:n suurin ja pienin arvo 8 Määritellään grafiikkahiirikursori 9 Määritellään hiiren tekstikursori 10 Lukee hiirien liike laskurin 11 Määritellään hiirikursorin nopeus 15 Määritellään hiirikursorin näkyvä alue 16 Määritellään hiirikursorin rajanopeus 19
unit Mouse;
INTERFACE
uses dos,Graph;
const
LeftButton = 1;
RightButton = 2;
var Regs : Registers;
Button1,Button2,MouseX,MouseY,
ButtonStatus,
NumOfButtonPressed,
NumOfButtonRelease,
HorizCount,
VertCount
:integer;
Procedure InitMouse; { 0 }
Procedure ShowCursor; { 1 }
Procedure HideCursor; { 2 }
Procedure ReadMouse; { 3 }
Procedure WaitOff1;
Procedure WaitOff2;
Procedure WaitOff1and2;
Procedure WaitOff1or2;
Procedure WaitOn1;
Procedure WaitOn2;
Procedure WaitOn1and2;
Procedure WaitOn1or2;
Procedure SetMouseCursorPosition(CX,DX:integer); { 4 }
Procedure GetButtonPressInfo(Button:integer); { 5 }
Procedure GetButtonReleaseInfo(Button:integer); { 6 }
Procedure SetMinMaxPosX(Min,Max : integer); { 7 }
Procedure SetMinMaxPosY(Min,Max : integer); { 8 }
Procedure DefineGraphCursorBlock(Xspot,Yspot,Pointer:integer); { 9 }
Procedure DefineTextCursor(Select,ScreenMask,CursorMask:integer);{ 10 }
Procedure ReadMouseMotionCount; { 11 }
Procedure DefineEventHandler(CallMask,Address:integer); { 12 }
Procedure EnableLightPen; { 13 }
Procedure DisableLightPen(Xnew,Ynew:integer); { 14 }
Procedure SetMouseMotionPixelRatio(Xstep,Ystep:integer); { 15 }
Procedure ConditionalOff(Left,Top,Right,Bottom:integer); { 16 }
Procedure SetDoubleSpeedThreshold(Th:integer); { 19 }
Procedure TextMouse;
IMPLEMENTATION
Procedure Call;Begin intr(51,regs); end;
{<<< Alustetaan Hiiri >>>}
Procedure InitMouse;
var a : word;
Begin
regs.AX:=0;
Call;
a:=regs.ax;
If a = 0 Then
Begin
RestoreCrtMode;
writeln('Error: Mouse not installed.');
halt(1);
end;
end;
{<<< Näytä Kursori >>>}
procedure ShowCursor;
Begin
regs.AX:=1;
Call;
end;
{<<< Poista kursori >>>}
procedure HideCursor;
Begin
regs.AX:=2;
Call;
end;
{<<< Luetaan hiiren parametrit >>>}
Procedure ReadMouse;
Begin
regs.AX:=3;
Call;
MouseX:=Regs.CX;
MouseY:=Regs.DX;
Button1:=(Regs.BX and 1);
Button2:=(Regs.BX and 2) shr 1;
end;
{<<< Odotetaan että nappi1 on vapaa >>>}
Procedure WaitOff1;
Begin
REPEAT READMOUSE UNTIL BUTTON1=0;
end;
{<<< Odotetaan että nappi2 on vapaa >>>}
Procedure WaitOff2;
Begin
REPEAT READMOUSE UNTIL BUTTON2=0;
end;
{<<< Odotetaan että nappi1 ja nappi2 on vapaa >>>}
Procedure WaitOff1and2;
Begin
REPEAT READMOUSE UNTIL (BUTTON1=0) AND (BUTTON2=0);
end;
{<<< Odotetaan että nappi1 tai nappi2 on vapaa >>>}
Procedure WaitOff1or2;
Begin
REPEAT READMOUSE UNTIL (BUTTON1=0) or (BUTTON2=0);
end;
{<<< Odotetaan että nappi1 on päällä >>>}
Procedure WaitOn1;
Begin
REPEAT READMOUSE UNTIL BUTTON1=1;
end;
{<<< Odotetaan että nappi2 on päällä >>>}
Procedure WaitOn2;
Begin
REPEAT READMOUSE UNTIL BUTTON2=1;
end;
{<<< Odotetaan että nappi1 ja nappi2 on päällä >>>}
Procedure WaitOn1and2;
Begin
REPEAT READMOUSE UNTIL (BUTTON1=1) AND (BUTTON2=1);
end;
{<<< Odotetaan että nappi1 tai nappi2 on päällä >>>}
Procedure WaitOn1or2;
Begin
REPEAT READMOUSE UNTIL (BUTTON1=1) or (BUTTON2=1);
end;
{<<< Asetetaan hiirikursorin paikka >>>}
Procedure SetMouseCursorPosition(cx,dx:integer);
Begin
Regs.Ax:=4;
Regs.CX:=CX;
Regs.DX:=DX;
Call;
end;
{<<< Luetaan tietoa napin painamisesta >>>}
Procedure GetButtonPressInfo(Button:integer);
Begin
Regs.Ax:=5;
Regs.Bx:=Button;
Call;
ButtonStatus:=0;
if (Regs.AX and 1)=1 then ButtonStatus:=LeftButton;
if (Regs.AX and 2)=2 then ButtonStatus:=RightButton;
NumOfButtonPressed :=Regs.BX;
MouseX :=Regs.CX;
MouseY :=Regs.DX;
end;
{<<< Luetaan tietoa napin vapauttamisesta >>>}
Procedure GetButtonReleaseInfo(Button:integer);
Begin
Regs.AX:=6;
Regs.BX:=Button;
Call;
ButtonStatus:=0;
if (Regs.AX and 1)=1 then ButtonStatus:=LeftButton;
if (Regs.AX and 2)=2 then ButtonStatus:=RightButton;
NumOfButtonRelease :=Regs.BX;
MouseX :=Regs.CX;
MouseY :=Regs.DX;
end;
{<<< Asetetaan Minimi&Maksimi X-koordinaatit >>>}
Procedure SetMinMaxPosX(Min,Max : integer);
Begin
Regs.AX:=7;
Regs.CX:=Min;
Regs.DX:=Max;
Call;
end;
{<<< Asetetaan Minimi&Maksimi Y-koordinaatit >>>}
Procedure SetMinMaxPosY(Min,Max : integer);
Begin
Regs.AX:=8;
Regs.CX:=Min;
Regs.DX:=Max;
Call;
end;
{<<< Määritellään grafiikkahiirikursori >>>}
Procedure DefineGraphCursorBlock(Xspot,Yspot,Pointer:integer);
Begin
Regs.AX:=9;
Regs.BX:=Xspot;
Regs.CX:=Yspot;
Regs.DX:=Pointer;
Call;
end;
{<<< Määritellään teksti kursori >>>}
Procedure DefineTextCursor(Select,ScreenMask,CursorMask:integer);
Begin
Regs.AX:=10;
Regs.BX:=Select;
Regs.CX:=ScreenMask;
Regs.DX:=CursorMask;
Call;
end;
{<<< Luetaan hiiren liikelaskuri >>>}
Procedure ReadMouseMotionCount;
Begin
Regs.AX:=11;
Call;
HorizCount:=Regs.CX;
VertCount :=Regs.DX;
end;
Procedure DefineEventHandler(CallMask,Address:integer);
Begin
Regs.AX:=12;
Regs.CX:=CallMask;
Regs.DX:=Address;
Call;
end;
{<<< Valokynän emulointi on >>>}
Procedure EnableLightPen;
Begin
Regs.AX:=13;
Call;
end;
{<<< Valokynän emulointi pois >>>}
Procedure DisableLightPen(Xnew,Ynew:integer);
Begin
Regs.AX:=14;
Regs.CX:=Xnew;
Regs.DX:=Ynew;
Call;
end;
{<<< Määritellään hiirikursorin nopeus >>>}
Procedure SetMouseMotionPixelRatio(Xstep,Ystep:integer);
Begin
Regs.AX:=15;
Regs.CX:=Xstep;
Regs.DX:=Ystep;
Call;
end;
{<<< Määritellään hiirikursorin alue jossa hiiri näkyy >>>}
Procedure ConditionalOff(Left,Top,Right,Bottom:integer);
Begin
Regs.AX:=16;
Regs.CX:=Left;
Regs.DX:=Top;
Regs.SI:=Right;
Regs.DI:=Bottom;
Call;
end;
{<<< asetetaan hiirikursorin rajanopeus >>>}
Procedure SetDoubleSpeedThreshold(Th:integer);
Begin
Regs.AX:=19;
Regs.DX:=TH;
Call;
end;
{<<< Muutetaan grafiikka parametrit teksti ruudulle sopiviksi >>>}
Procedure TextMouse;
Begin
MouseY:=MouseY div 8;
MouseX:=MouseX div 8;
end;
Begin
end.Aika kiva. En vaan pääse kokeilemaan, kun ei ole pascal kääntäjää :(
Tämän kun saisi puhtaalle asmille. :P
Aihe on jo aika vanha, joten et voi enää vastata siihen.