home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / MSMOUSE2.ZIP / UTILS.ZIP / FUNCSUBS.ASM < prev    next >
Encoding:
Assembly Source File  |  1989-02-10  |  4.1 KB  |  239 lines

  1.     TITLE    MACHIO - Machine-dependent I/O support for MOUSETST
  2.     PAGE    56,132
  3.  
  4. ;=============================================================================
  5. ;
  6. ; funcsubs.asm
  7. ;
  8. ; Module for mouse test utility
  9. ;
  10. ; Copyright (c) 1988-1989, Microsoft Corporation.  All rights reserved.
  11. ;
  12. ;    This program contains the machine-specific I/O functions
  13. ;    needed to support the SETUP program.
  14. ;
  15. ;=============================================================================
  16.  
  17. ;
  18. ; I N C L U D E S
  19. ;
  20.  
  21.     INCLUDE    ASM.INC
  22.  
  23. ;
  24. ; S T R U C T U R E S
  25. ;
  26.  
  27. parms        struc
  28.  
  29. parm_bp        dw    ?
  30. parm_ip        dw    ?
  31.  
  32. if    @codesize
  33. parm_cs        dw    ?
  34. endif    ; @codesize
  35.  
  36. if    @datasize
  37. parm_1        dd    ?
  38. parm_2        dd    ?
  39. parm_3        dd    ?
  40. parm_4        dd    ?
  41. parm_5        dd    ?
  42. parm_6        dd    ?
  43. else    ; NOT @datasize
  44. parm_1        dw    ?
  45. parm_2        dw    ?
  46. parm_3        dw    ?
  47. parm_4        dw    ?
  48. parm_5        dw    ?
  49. parm_6        dw    ?
  50. endif    ; NOT @datasize
  51.  
  52. parms        ends
  53.  
  54.     PUBLIC    _Function12, _Function12Info, _getchnowait
  55.     PUBLIC    _ReadLightPenPosition, _PrintString
  56.  
  57.     ASSUME    CS:@curseg, DS:DGROUP, ES:DGROUP, SS:DGROUP
  58.  
  59. conditionMask    DW    0
  60. buttonState    DW    0
  61. horizCursorCoordinate DW 0
  62. vertCursorCoordinate DW    0
  63. horizMouseCounts DW    0
  64. vertMouseCounts    DW    0
  65.  
  66.     ASSUME    CS:@curseg, DS:NOTHING, ES:NOTHING, SS:NOTHING
  67.  
  68. _Function12    PROC    FAR
  69.  
  70.     MOV    [conditionMask],AX
  71.     MOV    [buttonState],BX
  72.     MOV    [horizCursorCoordinate],CX
  73.     MOV    [vertCursorCoordinate],DX
  74.     MOV    [horizMouseCounts],SI
  75.     MOV    [vertMouseCounts],DI
  76.     ret                ; Return to caller
  77.  
  78. _Function12    ENDP
  79.  
  80.     ASSUME    CS:@curseg, DS:DGROUP, ES:DGROUP, SS:DGROUP
  81.  
  82. _Function12Info    PROC
  83.  
  84.     C_ENTRY
  85.     MOV    AX,[conditionMask]
  86.  
  87. if    @datasize
  88.     PUSH    DS
  89.     LDS    DI,[BP].parm_1
  90.     ASSUME    DS:NOTHING
  91.     MOV    DS:[DI],AX
  92.     MOV    AX,[buttonState]
  93.     LDS    DI,[BP].parm_2
  94.     ASSUME    DS:NOTHING
  95.     MOV    DS:[DI],AX
  96.     MOV    AX,[horizCursorCoordinate]
  97.     LDS    DI,[BP].parm_3
  98.     ASSUME    DS:NOTHING
  99.     MOV    DS:[DI],AX
  100.     MOV    AX,[vertCursorCoordinate]
  101.     LDS    DI,[BP].parm_4
  102.     ASSUME    DS:NOTHING
  103.     MOV    DS:[DI],AX
  104.     MOV    AX,[horizMouseCounts]
  105.     LDS    DI,[BP].parm_5
  106.     ASSUME    DS:NOTHING
  107.     MOV    DS:[DI],AX
  108.     MOV    AX,[vertMouseCounts]
  109.     LDS    DI,[BP].parm_6
  110.     ASSUME    DS:NOTHING
  111.     MOV    DS:[DI],AX
  112.     POP    DS
  113.     ASSUME    DS:DGROUP
  114. else    ; NOT @datasize
  115.     MOV    DI,[BP].parm_1
  116.     MOV    DGROUP:[DI],AX
  117.     MOV    AX,[buttonState]
  118.     MOV    DI,[BP].parm_2
  119.     MOV    DGROUP:[DI],AX
  120.     MOV    AX,[horizCursorCoordinate]
  121.     MOV    DI,[BP].parm_3
  122.     MOV    DGROUP:[DI],AX
  123.     MOV    AX,[vertCursorCoordinate]
  124.     MOV    DI,[BP].parm_4
  125.     MOV    DGROUP:[DI],AX
  126.     MOV    AX,[horizMouseCounts]
  127.     MOV    DI,[BP].parm_5
  128.     MOV    DGROUP:[DI],AX
  129.     MOV    AX,[vertMouseCounts]
  130.     MOV    DI,[BP].parm_6
  131.     MOV    DGROUP:[DI],AX
  132. endif    ; NOT @datasize
  133.  
  134.     C_EXIT
  135.     ret                ; Return to caller
  136.  
  137. _Function12Info    ENDP
  138.  
  139.     ASSUME    CS:@curseg, DS:DGROUP, ES:DGROUP, SS:DGROUP
  140.  
  141. _getchnowait    PROC
  142.  
  143.     MOV    AH,1
  144.     INT    16H
  145.     MOV    AX,0
  146.     JZ    getchnowaitdone
  147.     INT    16H
  148.  
  149. getchnowaitdone:
  150.     ret                ; Return to caller
  151.  
  152. _getchnowait    ENDP
  153.  
  154.     ASSUME    CS:@curseg, DS:DGROUP, ES:DGROUP, SS:DGROUP
  155.  
  156. _ReadLightPenPosition    PROC
  157.  
  158.     MOV    AH,4
  159.     INT    10H
  160.     XOR    AL,AL
  161.     OR    AH,AH
  162.     JZ    ReadLightPenPositionDone
  163.     C_ENTRY
  164.     MOV    AX,BX
  165.  
  166. if    @datasize
  167.     PUSH    DS
  168.     LDS    DI,[BP].parm_1
  169.     ASSUME    DS:NOTHING
  170.     MOV    DS:[DI],AX
  171.     LDS    DI,[BP].parm_2
  172.     ASSUME    DS:NOTHING
  173.     MOV    DS:[DI],CX
  174.     XOR    AX,AX
  175.     MOV    AL,DH
  176.     LDS    DI,[BP].parm_3
  177.     ASSUME    DS:NOTHING
  178.     MOV    DS:[DI],AX
  179.     MOV    AL,DL
  180.     LDS    DI,[BP].parm_4
  181.     ASSUME    DS:NOTHING
  182.     MOV    DS:[DI],AX
  183.     POP    DS
  184.     ASSUME    DS:DGROUP
  185. else    ; NOT @datasize
  186.     MOV    DI,[BP].parm_1
  187.     MOV    DGROUP:[DI],AX
  188.     MOV    DI,[BP].parm_2
  189.     MOV    DGROUP:[DI],CX
  190.     XOR    AX,AX
  191.     MOV    AL,DH
  192.     MOV    DI,[BP].parm_3
  193.     MOV    DGROUP:[DI],AX
  194.     MOV    AL,DL
  195.     MOV    DI,[BP].parm_4
  196.     MOV    DGROUP:[DI],AX
  197. endif    ; NOT @datasize
  198.  
  199.     INC    AX            ; Return non zero
  200.     C_EXIT
  201.  
  202. ReadLightPenPositionDone:
  203.     ret                ; Return to caller
  204.  
  205. _ReadLightPenPosition    ENDP
  206.  
  207.     ASSUME    CS:@curseg, DS:DGROUP, ES:DGROUP, SS:DGROUP
  208.  
  209. _PrintString    PROC
  210.  
  211.     C_ENTRY
  212.     PUSH    DS
  213.  
  214. if    @datasize
  215.     LDS    DI,[BP].parm_2
  216.     ASSUME    DS:NOTHING
  217.     MOV    DX,DS:[DI]
  218.     LDS    DI,[BP].parm_1
  219.     ASSUME    DS:NOTHING
  220.     MOV    DS,DS:[DI]
  221.     ASSUME    DS:NOTHING
  222. else    ; NOT @datasize
  223.     MOV    DI,[BP].parm_2
  224.     MOV    DX,DGROUP:[DI]
  225.     MOV    DI,[BP].parm_1
  226.     MOV    DS,DGROUP:[DI]
  227.     ASSUME    DS:NOTHING
  228. endif    ; NOT @datasize
  229.  
  230.     MOV    AH,9
  231.     INT    21H
  232.     POP    DS
  233.     ASSUME    DS:DGROUP
  234.     C_EXIT
  235.  
  236. _PrintString    ENDP
  237.  
  238.     END
  239.