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.