UNIT raton;

INTERFACE

  FUNCTION raton_en_area (x1,y1,x2,y2 : INTEGER): BOOLEAN;
  PROCEDURE ocultar_raton;
  PROCEDURE inicializar_raton;
  PROCEDURE mostrar_raton;
  PROCEDURE obtener_estado_raton (var x,y,b:integer);

IMPLEMENTATION
uses dos;

var
  nivel_de_raton:integer;

FUNCTION raton_en_area (x1,y1,x2,y2 : INTEGER): BOOLEAN;
var
  x,y,b:integer;
BEGIN
  obtener_estado_raton (x,y,b);
  raton_en_area:= (x >= x1) AND (x <= x2) AND (y >= y1) AND (y <= y2);
END;


PROCEDURE ocultar_raton;
BEGIN
     dec(nivel_de_raton);
     IF nivel_de_raton=0
        THEN ASM
                mov  ax,2
                int  33h
             END
END;


PROCEDURE inicializar_raton;ASSEMBLER;
ASM
   xor  ax,ax
   int  33h
END;

PROCEDURE mostrar_raton;
BEGIN
     inc (nivel_de_raton);
     IF nivel_de_raton=1
        THEN ASM
                mov  ax,1
                int  33h
             END
END;


PROCEDURE obtener_estado_raton(var x,y,b:integer);ASSEMBLER;
ASM
   mov  ax,3
   int  33h
   les  di,b
   mov  [es:di],bx
   les  di,x
   mov  [es:di],cx
   les  di,y
   mov  [es:di],dx
END;

BEGIN
  inicializar_raton;
  nivel_de_raton:=0
END.


