home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a054 / 1.img / GETLIB.EXE / MOUSE.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-02-06  |  4.4 KB  |  188 lines

  1. PUBLIC MouseInit, MouseOn, MouseOff, MouseRead
  2.  
  3. EXTRN  __retl   : FAR
  4. EXTRN  __storni : FAR
  5. EXTRN  __storl  : FAR
  6.  
  7. M_RESET        EQU  0
  8. M_SHOW         EQU  1
  9. M_REMOVE       EQU  2
  10. M_READ         EQU  3
  11. M_CURS_WIDTH   EQU  8
  12. M_CURS_HEIGHT  EQU  8
  13.  
  14. MOUSE_INT      EQU  33H
  15.  
  16. DGROUP GROUP   data
  17.  
  18. data   SEGMENT PUBLIC  'DATA'
  19. ;
  20. ;    <your data declarations>
  21. ;
  22. data   ENDS
  23.  
  24. code   SEGMENT 'CODE'
  25.              ASSUME cs:code, ds:DGROUP
  26.  
  27. MouseInit  PROC    FAR
  28.  
  29.              push    bp              ; Save registers
  30.              mov     bp,sp
  31.              push    ds
  32.              push    es
  33.              push    si
  34.              push    di
  35.  
  36.              ; AX or AH / AL ??
  37.              mov     ax, M_RESET
  38.              int     MOUSE_INT
  39.  
  40.              ; in preparation for call to _retl
  41.              push    ax
  42.  
  43.              ; bx has number of buttons. We must pass this back to
  44.              ; the parameter Clipper passed by reference
  45.              ; bx into parameter 1 - must push in reverse order
  46.              mov     ax, 1
  47.              push    ax      ; into parameter number 1
  48.              push    bx
  49.              call    __storni
  50.              add     sp, 4
  51.  
  52.              ; return ax we previously pushed
  53.              call    __retl
  54.              add     sp, 2
  55.  
  56.              pop     di              ; Restore registers
  57.              pop     si
  58.              pop     es
  59.              pop     ds
  60.              pop     bp
  61.  
  62.              ret
  63. MouseInit    ENDP                    ; End of routine
  64.  
  65. MouseOn     PROC FAR
  66.  
  67.              push    bp              ; Save registers
  68.              mov     bp,sp
  69.              push    ds
  70.              push    es
  71.              push    si
  72.              push    di
  73.  
  74.              mov     ax, M_SHOW
  75.              int     MOUSE_INT
  76.  
  77.              pop     di              ; Restore registers
  78.              pop     si
  79.              pop     es
  80.              pop     ds
  81.              pop     bp
  82.  
  83.              ret
  84.  
  85. MouseOn     ENDP
  86.  
  87. MouseOff   PROC FAR
  88.  
  89.              push    bp              ; Save registers
  90.              mov     bp,sp
  91.              push    ds
  92.              push    es
  93.              push    si
  94.              push    di
  95.  
  96.              mov     ax, M_REMOVE
  97.              int     MOUSE_INT
  98.  
  99.              pop     di              ; Restore registers
  100.              pop     si
  101.              pop     es
  102.              pop     ds
  103.              pop     bp
  104.  
  105.              ret
  106.  
  107. MouseOff    ENDP
  108.  
  109. MouseRead  PROC FAR
  110.  
  111.              push    bp              ; Save registers
  112.              mov     bp,sp
  113.              push    ds
  114.              push    es
  115.              push    si
  116.              push    di
  117.  
  118.              mov     ax, M_READ
  119.              int     MOUSE_INT
  120.  
  121.              push    cx
  122.              push    dx
  123.              push    bx
  124.  
  125.              ; in preparation for parameter # 1
  126.              mov     ax, 1
  127.              push    ax
  128.              test    bl, 1           ; bit 0 set means left down
  129.              jnz     left_down
  130. left_not_down:
  131.              xor     ax, ax          ; make it 0
  132.              push    ax
  133.              jmp     set_p1
  134. left_down:
  135.              ; ax is 1 from whence we came
  136.              push    ax
  137. set_p1:
  138.              call    __storl
  139.              add     sp, 4
  140. check_right:
  141.              pop     bx
  142.              ; in preparation for parameter # 2
  143.              mov     ax, 2
  144.              push    ax
  145.              test    bl, 2           ; bit 1 set means right down
  146.              jnz     right_down
  147. right_not_down:
  148.              xor     ax, ax
  149.              push    ax
  150.              jmp     set_p2
  151. right_down:
  152.              ; ax is 2 here
  153.              push    ax
  154. set_p2:
  155.              call    __storl
  156.              add     sp, 4
  157.  
  158. set_row:
  159.              pop     dx              ; row
  160.              mov     ax, 3
  161.              push    ax
  162.              push    dx
  163.              call    __storni
  164.              add     sp,  4
  165.  
  166. set_col:
  167.              pop     cx              ; column
  168.              mov     ax, 4
  169.              push    ax
  170.              push    cx
  171.              call    __storni
  172.              add     sp, 4
  173.  
  174.              pop     di              ; Restore registers
  175.              pop     si
  176.              pop     es
  177.              pop     ds
  178.              pop     bp
  179.  
  180.              ret
  181.  
  182. MouseRead   ENDP
  183.  
  184.  
  185. code         ENDS                    ; End of code segment
  186.              END
  187.  
  188.