home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 18 / CD_ASCQ_18_111294_W.iso / dos / prg / pas / gfxfx / mouse.pas < prev    next >
Pascal/Delphi Source File  |  1994-06-22  |  2KB  |  179 lines

  1.  
  2. unit mouse;
  3. { Mouseunit for textmode. by Bas van Gaalen, Holland. }
  4. interface
  5.  
  6. const
  7.   mtypes : array[0..4] of string[6] = ('bus','serial','inport','ps/2','hp');
  8.  
  9. var
  10.   buttons : word;
  11.   verhi,verlo,mousetype : byte;
  12.   driverinstalled : boolean;
  13.  
  14. procedure resetmouse;
  15. procedure getmouseversion;
  16. procedure showmouse;
  17. procedure hidemouse;
  18. function getmousex : byte;
  19. function getmousey : byte;
  20. function leftpressed : boolean;
  21. function rightpressed : boolean;
  22. procedure mousewindow(x1,y1,x2,y2 : byte);
  23. function getstratcursor : string;
  24.  
  25. implementation
  26.  
  27. uses video;
  28.  
  29. procedure resetmouse; assembler;
  30. asm
  31.   xor ax,ax
  32.   int 33h
  33.   cmp ax,-1
  34.   jne @skip
  35.   mov driverinstalled,true
  36.   mov buttons,bx
  37.  @skip:
  38. end;
  39.  
  40. procedure getmouseversion; assembler;
  41. asm
  42.   mov ax,24h
  43.   int 33h
  44.   mov verhi,bh
  45.   mov verlo,bl
  46.   mov mousetype,ch
  47. end;
  48.  
  49. procedure showmouse; assembler;
  50. asm
  51.   mov ax,1
  52.   int 33h
  53. end;
  54.  
  55. procedure hidemouse; assembler;
  56. asm
  57.   mov ax,2
  58.   int 33h
  59. end;
  60.  
  61. function getmousex : byte; assembler;
  62. asm
  63.   mov ax,3
  64.   int 33h
  65.   shr cx,1
  66.   shr cx,1
  67.   shr cx,1
  68.   mov ax,cx
  69. end;
  70.  
  71. function getmousey : byte; assembler;
  72. asm
  73.   mov ax,3
  74.   int 33h
  75.   shr dx,1
  76.   shr dx,1
  77.   shr dx,1
  78.   mov ax,dx
  79. end;
  80.  
  81. function leftpressed : boolean; assembler;
  82. asm
  83.   mov ax,3
  84.   int 33h
  85.   and bx,1
  86.   mov ax,bx
  87. end;
  88.  
  89. function rightpressed : boolean; assembler;
  90. asm
  91.   mov ax,3
  92.   int 33h
  93.   and bx,2
  94.   mov ax,bx
  95. end;
  96.  
  97. procedure mousewindow(x1,y1,x2,y2 : byte); assembler;
  98. asm
  99.   mov ax,7
  100.   xor ch,ch
  101.   xor dh,dh
  102.   mov cl,x1
  103.   shl cx,1
  104.   shl cx,1
  105.   shl cx,1
  106.   mov dl,x2
  107.   shl dx,1
  108.   shl dx,1
  109.   shl dx,1
  110.   int 33h
  111.   mov ax,8
  112.   xor ch,ch
  113.   xor dh,dh
  114.   mov cl,y1
  115.   shl cx,1
  116.   shl cx,1
  117.   shl cx,1
  118.   mov dl,y2
  119.   shl dx,1
  120.   shl dx,1
  121.   shl dx,1
  122.   int 33h
  123. end;
  124.  
  125. function getstratcursor : string; assembler;
  126. { get string at cursor }
  127. asm
  128.   push ds
  129.   les di,@result
  130.   mov ax,3
  131.   int 33h
  132.   shr cx,1
  133.   shr cx,1
  134.   shr dx,1
  135.   shr dx,1
  136.   shr dx,1
  137.   xor ah,ah
  138.   mov al,v_columns
  139.   mul dl
  140.   shl ax,1
  141.   mov si,ax
  142.   add si,cx
  143.   mov ds,v_vidseg
  144.  
  145.   push di
  146.   xor cx,cx
  147.   inc di
  148.  
  149.   std
  150.  @l2:
  151.   lodsw
  152.   cmp al,32
  153.   je @space
  154.   jmp @l2
  155.  
  156.  @space:
  157.   add si,4
  158.  
  159.   cld
  160.  @l1:
  161.   lodsw
  162.   cmp al,32
  163.   je @skip
  164.   cmp al,46
  165.   je @skip
  166.   stosb
  167.   inc cx
  168.   cmp cx,8
  169.   jne @l1
  170.  
  171.  @skip:
  172.   pop di
  173.   mov [es:di],cl
  174.  
  175.   pop ds
  176. end;
  177.  
  178. end.
  179.