home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c329 / 2.img / EXAMPLES / MOUSE.S < prev    next >
Encoding:
Text File  |  1989-10-25  |  7.0 KB  |  460 lines

  1. ; ndpp  -X22 -X59 -X171 -X210 -X214 -X215 -X226 -X239 -X325 -X328 -X334 -X335
  2. ;     -X357 -X358 -X382 -X502 -X505 -X510
  3.     name    mouse.p
  4.     .387
  5.     assume    cs:codeseg
  6.     assume    ds:dataseg
  7. codeseg    segment dword er use32 public 'code'
  8. dataseg    segment dword rw use32 public 'data'
  9.  
  10. dataseg    ends
  11.     align    4
  12. _init_mouse    proc    near
  13.  
  14. ;    .bf:    ;
  15.  
  16.     cmp    dword ptr ds:_a,0
  17.     jne    L5
  18.     push    4
  19.     push    1
  20.     call    _calloc
  21.     add    esp,8
  22.     mov    dword ptr ds:_a,eax
  23.     push    4
  24.     push    1
  25.     call    _calloc
  26.     add    esp,8
  27.     mov    dword ptr ds:_b,eax
  28.     push    4
  29.     push    1
  30.     call    _calloc
  31.     add    esp,8
  32.     mov    dword ptr ds:_c,eax
  33.     push    4
  34.     push    1
  35.     call    _calloc
  36.     add    esp,8
  37.     mov    dword ptr ds:_d,eax
  38.     align    4
  39. L5:
  40.  
  41.     mov    eax,dword ptr ds:_a
  42.     mov    dword ptr [eax],0
  43.     push    dword ptr ds:_d
  44.     push    dword ptr ds:_c
  45.     push    dword ptr ds:_b
  46.     push    dword ptr ds:_a
  47.     call    _mouse
  48.     add    esp,16
  49.     mov    eax,dword ptr ds:_a
  50.     cmp    dword ptr [eax],-1
  51.     jne    L4    short
  52.     mov    eax,dword ptr ds:_b
  53.     mov    eax,[eax]
  54.     ret
  55.     align    4
  56.  
  57.  
  58.     align    4
  59. L4:
  60.  
  61.     xor    eax,eax
  62.     align    4
  63. L2:
  64.  
  65.     align    4
  66. L1:
  67.  
  68. ;    .ef:    ;
  69.  
  70.     ret
  71.     align    4
  72.  
  73.     align    4
  74. _init_mouse    endp
  75. dataseg    segment dword rw use32 public 'data'
  76.  
  77. dataseg    ends
  78.     align    4
  79. _show_mouse_cursor    proc    near
  80.  
  81. ;    .bf:    ;
  82.  
  83.     mov    eax,dword ptr ds:_a
  84.     mov    dword ptr [eax],1
  85.     push    dword ptr ds:_d
  86.     push    dword ptr ds:_c
  87.     push    dword ptr ds:_b
  88.     push    dword ptr ds:_a
  89.     call    _mouse
  90.     add    esp,16
  91. ;    .ef:    ;
  92.  
  93.     ret
  94.     align    4
  95.  
  96.     align    4
  97. _show_mouse_cursor    endp
  98. dataseg    segment dword rw use32 public 'data'
  99.  
  100. dataseg    ends
  101.     align    4
  102. _hide_mouse_cursor    proc    near
  103.  
  104. ;    .bf:    ;
  105.  
  106.     mov    eax,dword ptr ds:_a
  107.     mov    dword ptr [eax],2
  108.     push    dword ptr ds:_d
  109.     push    dword ptr ds:_c
  110.     push    dword ptr ds:_b
  111.     push    dword ptr ds:_a
  112.     call    _mouse
  113.     add    esp,16
  114. ;    .ef:    ;
  115.  
  116.     ret
  117.     align    4
  118.  
  119.     align    4
  120. _hide_mouse_cursor    endp
  121. dataseg    segment dword rw use32 public 'data'
  122.  
  123. dataseg    ends
  124.     align    4
  125. _get_mouse    proc    near
  126.  
  127.     mov    eax,[esp]+4
  128. ;    .bf:    ;
  129.  
  130.     mov    ecx,dword ptr ds:_a
  131.     mov    dword ptr [ecx],3
  132.     push    dword ptr [esp]+12
  133.     push    dword ptr [esp]+12
  134.     push    eax
  135.     push    dword ptr ds:_a
  136.     call    _mouse
  137.     add    esp,16
  138. ;    .ef:    ;
  139.  
  140.     ret
  141.     align    4
  142.  
  143.     align    4
  144. _get_mouse    endp
  145. dataseg    segment dword rw use32 public 'data'
  146.  
  147.  
  148. ;_i    eax    local
  149. ;_j    [esp]+8    local
  150. ;_k    [esp]+12    local
  151. dataseg    ends
  152.     align    4
  153. _set_mouse    proc    near
  154.  
  155.     mov    eax,[esp]+4
  156. ;    .bf:    ;
  157.  
  158.     mov    ecx,dword ptr ds:_a
  159.     mov    dword ptr [ecx],4
  160.     push    dword ptr [esp]+8
  161.     push    eax
  162.     push    dword ptr ds:_b
  163.     push    dword ptr ds:_a
  164.     call    _mouse
  165.     add    esp,16
  166. ;    .ef:    ;
  167.  
  168.     ret
  169.     align    4
  170.  
  171.     align    4
  172. _set_mouse    endp
  173. dataseg    segment dword rw use32 public 'data'
  174.  
  175.  
  176. ;_i    eax    local
  177. ;_j    [esp]+8    local
  178. dataseg    ends
  179.     align    4
  180. _get_press    proc    near
  181.  
  182.     mov    eax,[esp]+4
  183. ;    .bf:    ;
  184.  
  185.     mov    ecx,[esp]+8
  186.     mov    edx,[eax]
  187.     mov    [ecx],edx
  188.     mov    dword ptr [eax],5
  189.     push    dword ptr [esp]+16
  190.     push    dword ptr [esp]+16
  191.     push    dword ptr [esp]+16
  192.     push    eax
  193.     call    _mouse
  194.     add    esp,16
  195. ;    .ef:    ;
  196.  
  197.     ret
  198.     align    4
  199.  
  200.     align    4
  201. _get_press    endp
  202. dataseg    segment dword rw use32 public 'data'
  203.  
  204.  
  205. ;_i    eax    local
  206. ;_j    [esp]+8    local
  207. ;_k    [esp]+12    local
  208. ;_l    [esp]+16    local
  209. dataseg    ends
  210.     align    4
  211. _get_release    proc    near
  212.  
  213.     mov    eax,[esp]+4
  214. ;    .bf:    ;
  215.  
  216.     mov    ecx,[esp]+8
  217.     mov    edx,[eax]
  218.     mov    [ecx],edx
  219.     mov    dword ptr [eax],6
  220.     push    dword ptr [esp]+16
  221.     push    dword ptr [esp]+16
  222.     push    dword ptr [esp]+16
  223.     push    eax
  224.     call    _mouse
  225.     add    esp,16
  226. ;    .ef:    ;
  227.  
  228.     ret
  229.     align    4
  230.  
  231.     align    4
  232. _get_release    endp
  233. dataseg    segment dword rw use32 public 'data'
  234.  
  235.  
  236. ;_i    eax    local
  237. ;_j    [esp]+8    local
  238. ;_k    [esp]+12    local
  239. ;_l    [esp]+16    local
  240. dataseg    ends
  241.     align    4
  242. _mouse_viewport    proc    near
  243.  
  244.     mov    eax,[esp]+4
  245. ;    .bf:    ;
  246.  
  247.     mov    ecx,dword ptr ds:_a
  248.     mov    dword ptr [ecx],7
  249.     push    dword ptr [esp]+8
  250.     push    eax
  251.     push    dword ptr ds:_b
  252.     push    dword ptr ds:_a
  253.     call    _mouse
  254.     add    esp,16
  255.     mov    eax,dword ptr ds:_a
  256.     mov    dword ptr [eax],8
  257.     push    dword ptr [esp]+16
  258.     push    dword ptr [esp]+16
  259.     push    dword ptr ds:_b
  260.     push    dword ptr ds:_a
  261.     call    _mouse
  262.     add    esp,16
  263. ;    .ef:    ;
  264.  
  265.     ret
  266.     align    4
  267.  
  268.     align    4
  269. _mouse_viewport    endp
  270. dataseg    segment dword rw use32 public 'data'
  271.  
  272.  
  273. ;_i    eax    local
  274. ;_j    [esp]+8    local
  275. ;_k    [esp]+12    local
  276. ;_l    [esp]+16    local
  277. dataseg    ends
  278.     align    4
  279. _read_motion    proc    near
  280.  
  281.     push    ebx
  282.     mov    ebx,[esp]+8
  283. ;    .bf:    ;
  284.  
  285.     mov    eax,dword ptr ds:_a
  286.     mov    dword ptr [eax],11
  287.     mov    dword ptr [ebx],0
  288.     mov    eax,[esp]+12
  289.     mov    dword ptr [eax],0
  290.     push    dword ptr [esp]+12
  291.     push    ebx
  292.     push    dword ptr ds:_b
  293.     push    dword ptr ds:_a
  294.     call    _mouse
  295.     add    esp,16
  296.     cmp    dword ptr [ebx],32767
  297.     jle    L41    short
  298.     sub    dword ptr [ebx],65536
  299.     align    4
  300. L41:
  301.  
  302.     mov    eax,[esp]+12
  303.     cmp    dword ptr [eax],32767
  304.     jle    L39    short
  305.     mov    eax,[esp]+12
  306.     sub    dword ptr [eax],65536
  307.     align    4
  308. L39:
  309.  
  310. ;    .ef:    ;
  311.  
  312.     pop    ebx
  313.     ret
  314.     align    4
  315.  
  316.     align    4
  317. _read_motion    endp
  318. dataseg    segment dword rw use32 public 'data'
  319.  
  320.  
  321. ;_i    ebx    local
  322. ;_j    [esp]+12    local
  323. dataseg    ends
  324.     align    4
  325. _set_mp_ratio    proc    near
  326.  
  327.     mov    eax,[esp]+4
  328. ;    .bf:    ;
  329.  
  330.     mov    ecx,dword ptr ds:_a
  331.     mov    dword ptr [ecx],15
  332.     push    dword ptr [esp]+8
  333.     push    eax
  334.     push    dword ptr ds:_b
  335.     push    dword ptr ds:_a
  336.     call    _mouse
  337.     add    esp,16
  338. ;    .ef:    ;
  339.  
  340.     ret
  341.     align    4
  342.  
  343.     align    4
  344. _set_mp_ratio    endp
  345. dataseg    segment dword rw use32 public 'data'
  346.  
  347.  
  348. ;_i    eax    local
  349. ;_j    [esp]+8    local
  350. dataseg    ends
  351.     align    4
  352. _set_mouse_cursor    proc    near
  353.  
  354.     mov    eax,[esp]+4
  355. ;    .bf:    ;
  356.  
  357.     mov    ecx,dword ptr ds:_a
  358.     mov    dword ptr [ecx],9
  359.     mov    ecx,dword ptr ds:_b
  360.     mov    edx,[eax]
  361.     mov    [ecx],edx
  362.     mov    eax,dword ptr ds:_c
  363.     mov    ecx,[esp]+8
  364.     mov    edx,[ecx]
  365.     mov    [eax],edx
  366.     mov    eax,dword ptr ds:_d
  367.     mov    ecx,[esp]+12
  368.     mov    edx,[ecx]
  369.     mov    [eax],edx
  370.     push    dword ptr ds:_d
  371.     push    dword ptr ds:_c
  372.     push    dword ptr ds:_b
  373.     push    dword ptr ds:_a
  374.     call    _mouse
  375.     add    esp,16
  376. ;    .ef:    ;
  377.  
  378.     ret
  379.     align    4
  380.  
  381.     align    4
  382. _set_mouse_cursor    endp
  383. dataseg    segment dword rw use32 public 'data'
  384.  
  385.  
  386. ;_i    eax    local
  387. ;_j    [esp]+8    local
  388. ;_k    [esp]+12    local
  389. dataseg    ends
  390.     align    4
  391. _set_subroutine    proc    near
  392.  
  393.     push    ebx
  394.     mov    eax,[esp]+8
  395. ;    .bf:    ;
  396.  
  397.     mov    ecx,dword ptr ds:_a
  398.     mov    dword ptr [ecx],12
  399.     mov    ecx,dword ptr ds:_b
  400.     mov    ebx,[esp]+16
  401.     mov    edx,[ebx]
  402.     mov    [ecx],edx
  403.     mov    ecx,dword ptr ds:_c
  404.     mov    edx,[eax]
  405.     mov    [ecx],edx
  406.     mov    eax,dword ptr ds:_d
  407.     mov    ecx,[esp]+12
  408.     mov    edx,[ecx]
  409.     mov    [eax],edx
  410.     push    dword ptr ds:_d
  411.     push    dword ptr ds:_c
  412.     push    dword ptr ds:_b
  413.     push    dword ptr ds:_a
  414.     call    _mouse
  415.     add    esp,16
  416. ;    .ef:    ;
  417.  
  418.     pop    ebx
  419.     ret
  420.     align    4
  421.  
  422.     align    4
  423. _set_subroutine    endp
  424. dataseg    segment dword rw use32 public 'data'
  425.  
  426.  
  427. ;_i    eax    local
  428. ;_j    [esp]+12    local
  429. ;_k    [esp]+16    local
  430. dataseg    ends
  431. dataseg    segment dword rw use32 public 'data'
  432.  
  433. ;__argc    __argc    import
  434. ;__input    __input    import
  435. ;__output    __output    import
  436. dataseg    ends
  437.     extrn    _mouse:near
  438.     extrn    _calloc:near
  439. dataseg    segment dword rw use32 public 'data'
  440.  
  441.     comm    near _d:dword
  442.     comm    near _c:dword
  443.     comm    near _b:dword
  444.     comm    near _a:dword
  445.     public    _set_subroutine
  446.     public    _set_mouse_cursor
  447.     public    _set_mp_ratio
  448.     public    _read_motion
  449.     public    _mouse_viewport
  450.     public    _get_release
  451.     public    _get_press
  452.     public    _set_mouse
  453.     public    _get_mouse
  454.     public    _hide_mouse_cursor
  455.     public    _show_mouse_cursor
  456.     public    _init_mouse
  457. dataseg    ends
  458. codeseg    ends
  459.     end
  460.