home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / MOUSE1.ZIP / MOUSE.PAS
Encoding:
Pascal/Delphi Source File  |  1989-03-12  |  3.4 KB  |  207 lines

  1. unit mouse;
  2. interface
  3. {$u \tp}
  4. uses dos;
  5.  
  6. const
  7.     mdd=$33;
  8. type
  9.    resetrec=record
  10.        exists:boolean;
  11.        nbuttons:integer;
  12.    end;
  13.  
  14. locrec=record
  15.     buttonstatus,opcount,column,row:integer;
  16.     end;
  17.  
  18. moverec=record
  19.     hcount,vcount:integer;
  20.     end;
  21.  
  22. var reg:registers;
  23.  
  24. {*---------------------------------------------------------------------------*}
  25. procedure mreset(var mouse:resetrec);
  26.  
  27. procedure mshow;
  28.  
  29. procedure mhide;
  30.  
  31. procedure mpos(var mouse:locrec);
  32.  
  33. procedure mmoveto(col,row:integer);
  34.  
  35. procedure mpressed(button:integer; var mouse:locrec);
  36.  
  37. procedure mreleased(button:integer; var mouse:locrec);
  38.  
  39. procedure mcolrange(min,max:integer);
  40.  
  41. procedure mrowrange(min,max:integer);
  42.  
  43. procedure mgraphcursor(hhot,vhot:integer; maskseg,maskofs:word);
  44.  
  45. procedure mtextcursor(ctype,p1,p2:word);
  46.  
  47. procedure mmotion(var moved:moverec);
  48.  
  49. procedure minsttask(mask,taskseg,taskofs:word);
  50.  
  51. procedure mlpenon;
  52.  
  53. procedure mlpenoff;
  54.  
  55. procedure mratio(horiz,vert:integer);
  56. {*---------------------------------------------------------------------------*}
  57. implementation
  58.  
  59. function lower (n1,n2:integer):integer;
  60. begin
  61.   if n1<n2 then
  62.          lower:=n1
  63.   else
  64.          lower:=n2;
  65. end;
  66.  
  67. function upper(n1,n2:integer):integer;
  68. begin
  69.   if n1>n2 then
  70.          upper:=n1
  71.   else
  72.          upper:=n2;
  73. end;
  74.  
  75. procedure mreset;
  76. begin
  77.   reg.ax:=0;
  78.   intr(mdd,reg);
  79.   if reg.ax<>0 then
  80.         mouse.exists:=true
  81.   else
  82.         mouse.exists:=false;
  83.   mouse.nbuttons:=reg.bx;
  84. end;
  85.  
  86. procedure mshow;
  87. begin
  88.     reg.ax:=1;
  89.     intr(mdd,reg);
  90. end;
  91.  
  92. procedure mhide;
  93. begin
  94.    reg.ax:=2;
  95.    intr(mdd,reg);
  96. end;
  97.  
  98. procedure mpos;
  99. begin
  100.    reg.ax:=3;
  101.    intr(mdd,reg);
  102.    mouse.buttonstatus:=reg.bx;
  103.    mouse.column:=reg.cx;
  104.    mouse.row:=reg.dx;
  105. end;
  106.  
  107. procedure mmoveto;
  108. begin
  109.    reg.ax:=4;
  110.    reg.cx:=col;
  111.    reg.dx:=row;
  112.    intr(mdd,reg);
  113. end;
  114.  
  115. procedure mpressed;
  116. begin
  117.    reg.ax:=5;
  118.    reg.bx:=button;
  119.    intr(mdd,reg);
  120.    mouse.buttonstatus:=reg.ax;
  121.    mouse.opcount:=reg.bx;
  122.    mouse.column:=reg.cx;
  123.    mouse.row:=reg.dx;
  124. end;
  125.  
  126. procedure mreleased;
  127. begin
  128.    reg.ax:=6;
  129.    reg.bx:=button;
  130.    intr(mdd,reg);
  131.    mouse.buttonstatus:=reg.ax;
  132.    mouse.opcount:=reg.bx;
  133.    mouse.column:=reg.cx;
  134.    mouse.row:=reg.dx;
  135. end;
  136.  
  137. procedure mcolrange;
  138. begin
  139.    reg.ax:=7;
  140.    reg.cx:=lower(min,max);
  141.    reg.dx:=upper(min,max);
  142.    intr(mdd,reg);
  143. end;
  144.  
  145. procedure mrowrange;
  146. begin
  147.    reg.ax:=8;
  148.    reg.cx:=lower(min,max);
  149.    reg.dx:=upper(min,max);
  150.    intr(mdd,reg);
  151. end;
  152.  
  153. procedure mgraphcursor;
  154. begin
  155.     reg.ax:=9;
  156.     reg.bx:=hhot;
  157.     reg.cx:=vhot;
  158.     reg.dx:=maskofs;
  159.     reg.es:=maskseg;
  160.     intr(mdd,reg);
  161. end;
  162.  
  163. procedure mtextcursor;
  164. begin
  165.     reg.ax:=10;
  166.     reg.bx:=ctype;
  167.     reg.cx:=p1;
  168.     reg.dx:=p2;
  169.     intr(mdd,reg);
  170. end;
  171.  
  172. procedure mmotion;
  173. begin
  174.    reg.ax:=11;
  175.    intr(mdd,reg);
  176.    moved.hcount:=reg.cx;
  177.    moved.vcount:=reg.dx;
  178. end;
  179.  
  180. procedure minsttask;
  181. begin
  182.    reg.ax:=12;
  183.    reg.cx:=mask;
  184.    reg.dx:=taskofs;
  185.    reg.es:=taskseg;
  186.  intr(mdd,reg);
  187.  end;
  188.  
  189. procedure mlpenon;
  190. begin
  191.    reg.ax:=14;
  192.    intr(mdd,reg);
  193. end;
  194.  
  195. procedure mlpenoff;
  196. begin
  197.    reg.ax:=15;
  198.    intr(mdd,reg);
  199. end;
  200.  
  201. procedure mratio;
  202. begin
  203.    reg.ax:=15;
  204.    reg.cx:=horiz;
  205.    reg.dx:=vert;
  206. end;
  207. end.