.7
. .
. .
.
.
.
.
:
1 ;
45 ;
6-7 -;
8 1, DMA;
9-11 ;
14-15 .
'
:
= 1- '.
( ):
0 ;
1 ;
2 ;
3 ;
5 ;
8 ;
10 ;
: = ;
AL = (1-128);
- (0-1023);
CL = (1-17);
DH = (0-15);
DL= (0 = :, 1= 2- ; $80 = 0, $81 = 1).
:
CF = 0 , = 1 .
2
: = 02;
AL = , , (1-128);
= / (0-1023);
CL = (1-17);
DH = (0-15);
DL = (0 = :, 1= 2- ; $80 0, $81 = 1).
3
:
- 03.
, .
( ):
0 ;
1 ;
2 Shift;
3 ;
5 .
( ):
0 ;
1 ;
2 .
( ):
0 -;
1 /;
3 ;
4 ;
6 .
0
: = 00;
AL = , ;
DX = (0-2).
:
= .
1
:
= 01;
DX = (0-2).
:
= .
( ):
|
|
0 ;
1 ;
2 (AT, PS/2);
3 (AT, PS/2);
4 (AT, PS/2);
5 (AT, PS/2).
0
: = 00.
:
AL = , 1, ; = ;
DX = .
55 . CX:DX .
2
: = 02.
:
CF = 0 , = 1 ;
= ;
CL = ;
DH = ;
DL = 1, .
4
: = 04.
:
= (XIX XX);
CL = ;
DH = ;
DL = ;
CF = 0 , = 1 .
Paskal intr (x,y) , . var :
var R:Registers;
uses Dos.
.
.
Unit MyMouse;
Interface
Var
msActive:Boolean;
msX,msY:Integer;
msButtons:Byte;
Procedure msShow;
Procedure msHide;
Procedure msReset;
Procedure msGoto(X,Y:integer);
Procedure msSetRatio(x,y:byte);
Function msPressed:Boolean;
Function msMoved;
Implementation
uses Dos;
Var Rg:Registers;
Procedure msReset;//
var B:Boolean;
begin
Rg.ax=00
Intr($33,rg);
msActive=(rg.bx=2)or(rg.bx=3);
msSetRatio(8,16)
msGoto(80,25);
msX:=1;
msY:=1;
msButtons:=0;
end;
Procedure msSetRatio(x,y:byte);
begin
if msActive then
begin
rg.ax:=$F;
Rg.cx:=X;
Rg.DX:=Y;
Intr($33,rg);
end;
end;
Procedure msShow;//
begin
if msActive then
begin
Rg.AX:=01;
Intr($33,rg);
end;
end;
Procedure msHide;//
begin
if msActive then
begin
Rg.AX:=02;
Intr($33,rg);
end;
end;
Function msPressed:Boolean;//
begin
if msActive then
begin
Rg.AX:=02;
Intr($33,rg);
msButtons:=Rg.BX;
msX:=(Rg.Cx*79)div 632+1;
msY:=(Rg.DX*24)div 192 +1;
end
else msButtons:=0;
msPressed:=(msButtons=1)or(msButtons=2)or(msButtons=3);
end;
Function msMoved;//
begin
if msActive then
begin
Rg.AX:=02;
Intr($33,rg);
msButtons:=Rg.BX;
msX:=(Rg.Cx*79)div 632+1;
msY:=(Rg.DX*24)div 192 +1;
end
else
begin
X:=msX;
Y:=msY;
end;
msMoved:=(X<>msX)or(Y<>msY);
msX:=X;
msY:=Y;
end;
Procedure msGoto(x,y:integer);//
begin
if msActive then
|
|
begin
rg.ax:=4;
Rg.cx:=X;
Rg.DX:=Y;
Intr($33,rg);
end;
end;
begin
end.
.
1. -.
2. .
3. : ( ).
4. : .
5. .
6. ᒺ ..
7. .
8. -. .
9. . .
10. -. .
11. .
12. (, , ).
13. (, , )..
14. , .
15.
16. .
17. DMA .
18. .
².
.
4 . , .
" " , .
" " .
.
.
1. "" " ".
2. " " " ".
3. " "
4. .
5. .