 Отзывы присылать на склад нитроманита nitromanit@mail.ru

Unit mouse;

interface

type Tbit6=(press,unpress);

function Ms_Init:word; {0-Ok,<>0-error}
procedure Ms_show; {показать курсор}
procedure Ms_nshow; {скрыть курсор}
function Ms_x:word; {получить координаты курсора мыши на экране}
function Ms_y:word;
procedure Ms_setpos(x,y:word); {установить новые координаты курсора}
procedure Ms_setcur(var buf);  {установить новый образ курсора} 
function Ms_lbutton:Tbit6;
function Ms_rbutton:Tbit6;
function Ms_lbut:Tbit6;
function Ms_rbut:Tbit6;

implementation

var rbutpress,rbutp,lbutpress,lbutp:Tbit6;

function Ms_Init:word;assembler; {0-Ok,<>0-error}
asm
    mov ax,0
    int 33h
    cmp ax,0
    jz @a
    xor ax,ax
    jmp @nd
 @a:mov ax,0ffh
@nd:
end;

procedure Ms_show;assembler;
asm
   mov ax,1
   int 33h
end;

procedure Ms_nshow;assembler;
asm
   mov ax,2
   int 33h
end;

function Ms_x:word;assembler;
asm
   mov ax,3
   int 33h
   shr cx,1
   mov ax,cx
end;

function Ms_y:word;assembler;
asm
   mov ax,3
   int 33h
   mov ax,dx
end;

procedure Ms_setpos(x,y:word);assembler;
asm
   mov ax,4
   mov cx,x
   shl cx,1
   mov dx,y
   int 33h
end;

procedure Ms_setcur(var buf);assembler;
type tbuf=array [0..31] of word;
var ibuf:Tbuf absolute buf;
asm
           push es
           push dx
           push bx
           push cx
           mov ax,9
           les dx,ibuf
           mov bx,0
           mov cx,0
	   int 33h
           pop cx
           pop bx
           pop dx
           pop es
end;

function Ms_lbutton:Tbit6;
var butt:word;
begin
Ms_lbutton:=unpress;
  asm
      mov ax,3
      int 33h
      mov butt,bx
  end;
if butt=1 then begin
   Ms_lbutton:=press;
   if lbutpress=unpress then lbutpress:=press;
   end
   else if lbutpress=press then begin
           lbutpress:=unpress;lbutp:=press;end;
end;

function Ms_rbutton:Tbit6;
var butt:word;
begin
Ms_rbutton:=unpress;
  asm
      mov ax,3
      int 33h
      mov butt,bx
  end;
if butt=2 then begin
   Ms_rbutton:=press;
   if rbutpress=unpress then rbutpress:=press;
   end
   else if rbutpress=press then begin
           rbutpress:=unpress;rbutp:=press;end;
end;

function Ms_rbut:Tbit6;
var key:Tbit6;
begin
key:=Ms_rbutton;
Ms_rbut:=rbutp;
if rbutp=press then rbutp:=unpress;
end;

function Ms_lbut:Tbit6;
var key:Tbit6;
begin
key:=Ms_lbutton;
Ms_lbut:=lbutp;
if lbutp=press then lbutp:=unpress;
end;

begin
rbutpress:=unpress;rbutp:=unpress;
lbutpress:=unpress;lbutp:=unpress;
end.