{ MOUSE01.PAS Copyright (c) Ales Kucik } { Modul pro ovladani mysi ver. 01 } { } { Datum:09.04.2002 http://www.trsek.com } unit mouse01; { POZNAMKY: -proceury a funkce vracejici souradnice kurzoru, vraci tyto souradnice v mezich 640x200 proto je nutne je prepocitat na rozliseni textove obrazovky PROMENNE: ExMouse - ma hodnotu true pokud je ovladac mysi zaveden v pameti FUNKCE A PROCEDURY: procedure CursorEnable; -rozsviti kurzor mysi procedure CursorDisable; -zhasne kurzor mysi procedure ReadState(var button,horiz,vert:word); -cte stav mysi Parametry: -button vraci stav tlacitek mysi (1.,2. a 3. bit) -horiz, vert vraci X a Y souradnici kurzoru mysi procedure SetCo_or(horiz,vert:word); -nastavi pocatecni souradnice kurzoru mysi Parametry: -horiz, vert ctou zvolenou X a Y souradnici procedure GetPress(button:word; var state,number,horiz,vert:word); Parametry: -button - vstup 1., 2. a 3. bit udavaji zvolene tlacitko -state - nenulova hodnota znamena, ze tlacitko je stale stisknuto -number - pocet stisknuti tlacitka od posledniho volani -horiz, vert - X a Y souradnice posledniho stisku tlacitka mysi procedure GetRelease(button:word; var state,number,horiz,vert:word); Parametry: -button - vstup 1., 2. a 3. bit udavaji zvlolene tlacitko -state - nenulova hodnota znamena, ze tlacitko je stale stisknuto -number - pocet uvolneni tlacitka od posledniho volani -horiz, vert - X a Y souradnice posledniho uvolneni tlacitka mysi procedure HorizRange(maximum,minimum:word); -vymezi kurzoru mysi oblast pohybu (horizontalni hranice) Prarametry: -minimum - minimalni horizontalni hranice kurzoru -maximum - maximalni horizontalni hranice kurzoru procedure VertRange(maximum,minimum:word); -vymezi kurzoru mysi oblast pohybu (vertikalni hranice) Parametry: -minimum - minimalni vertikalni hranice kurzoru -maximum - maximalni vertikalni hranice kurzoru procedure SensiMouse(horiz,vert:word); -nastaveni citlivosti mysi, zvlast pro horizontalni a vertikalni smer. Cim vyssi cislo, tim nizzsi citlivost (max 32767) Parametry: -horiz - nastaveni citlivosti mysi v horizontalnim smeru -vert - nastaveni citlivosti mysi ve vertikalnim smeru function ExistMouse:boolean; -funkce vraci hodnotu true, je-li zaveden ovladac mysi } interface var ExMouse:boolean; procedure CursorEnable; procedure CursorDisable; procedure ReadState(var button,horiz,vert:word); procedure SetCo_or(horiz,vert:word); procedure GetPress(button:word; var state,number,horiz,vert:word); procedure GetRelease(button:word; var state,number,horiz,vert:word); procedure HorizRange(maximum,minimum:word); procedure VertRange(maximum,minimum:word); procedure SensiMouse(horiz,vert:word); function ExistMouse:boolean; implementation procedure CursorEnable; assembler; asm push ax mov ax, $1 int $33 pop ax end; procedure CursorDisable; assembler; asm push ax mov ax, $2 int $33 pop ax end; procedure ReadState(var button,horiz,vert:word); var b,c,d:word; begin asm mov ax, $3 int $33 mov b, bx mov c, cx mov d, dx end; button:=b; horiz:=c; vert:=d; end; procedure SetCo_or(horiz,vert:word); assembler; asm mov ax, $4 mov cx, horiz mov dx, vert int $33 end; procedure GetPress(button:word; var state,number,horiz,vert:word); var a,b,c,d:word; begin asm mov ax, $5 mov bx, button int $33 mov a, ax mov b, bx mov c, cx mov d, dx end; state:=a; number:=b; horiz:=c; vert:=d; end; procedure GetRelease(button:word; var state,number,horiz,vert:word); var a,b,c,d:word; begin asm mov ax, $6 mov bx, button int $33 mov a, ax mov b, bx mov c, cx mov d, dx end; state:=a; number:=b; horiz:=c; vert:=d; end; procedure HorizRange(maximum,minimum:word); assembler; asm mov ax, $7 mov cx, minimum mov dx, maximum int $33 end; procedure VertRange(maximum,minimum:word); assembler; asm mov ax, $8 mov cx, minimum mov dx, maximum int $33 end; procedure SensiMouse(horiz,vert:word); assembler; asm mov ax, $F mov cx, horiz mov dx, vert int $33 end; function ExistMouse:boolean; var a:word; begin asm mov ax, $0 int $33 mov a, ax end; if a=0 then ExistMouse:=false else ExistMouse:=true; end; begin ExMouse:=ExistMouse; end.