home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / msdos / sndbords / proaudio / pcmtlsrc / pcm.arj / MASM.INC < prev    next >
Text File  |  1992-06-19  |  4KB  |  296 lines

  1.  
  2. ;   /*\
  3. ;---|*|----====< MASM.INC >====----
  4. ;---|*|
  5. ;---|*| Copyright (c) 1992, 1991, Media Vision, Inc.  All Rights Reserved.
  6. ;---|*|
  7. ;   \*/
  8.  
  9. ;---------------------------====< MASM Assembly >====--------------------------
  10.  
  11. if @codesize
  12.   @ret equ 4
  13.   FFAR    equ    <far>
  14.   if1
  15.     %out compiling LARGE code segments
  16.   endif
  17. else
  18.   @ret equ 2
  19.   FFAR    equ    <near>
  20.   if1
  21.     %out compiling SMALL code segments
  22.   endif
  23. endif
  24.  
  25. if @datasize
  26.   @ptr equ 4
  27.   if1
  28.     %out compiling LARGE data segments
  29.   endif
  30. else
  31.   @ptr equ 2
  32.   if1
  33.     %out compiling SMALL data segments
  34.   endif
  35. endif
  36.  
  37. ;
  38. ; C convention stack parameters
  39. ;
  40. wParm1          equ     [bp+2+@ret+00h]
  41. wParm2        equ    [bp+2+@ret+02h]
  42. wParm3        equ    [bp+2+@ret+04h]
  43. wParm4        equ    [bp+2+@ret+06h]
  44. wParm5        equ    [bp+2+@ret+08h]
  45.  
  46. dParm1        equ    [bp+2+@ret+00h]
  47. dParm2        equ    [bp+2+@ret+04h]
  48. dParm3        equ    [bp+2+@ret+08h]
  49. dParm4        equ    [bp+2+@ret+0ch]
  50.  
  51. ;
  52. ; miscellaneous equates & macros
  53. ;
  54. ; external data pointer
  55. ;
  56. externPTR macro   nme        ;; this macro fixes a masm 5.10 bug that
  57.     if @datasize        ;; doesn't allow equate text replacement
  58.     extrn    nme:dword    ;; on the 'extrn' statements.
  59.     else
  60.     extrn    nme:word
  61.     endif
  62.         endm
  63. ;
  64. ; external code address
  65. ;
  66. externADDR macro   nme        ;; this macro fixes a masm 5.10 bug that
  67.     if @codesize        ;; doesn't allow equate text replacement
  68.     extrn    nme:far     ;; on the 'extrn' statements.
  69.     else
  70.     extrn    nme:near
  71.     endif
  72.         endm
  73.  
  74. bptr        equ    byte ptr
  75. wptr        equ    word ptr
  76. dptr        equ    dword ptr
  77.  
  78. pause        equ    <jmp $+2>
  79. disable     equ    cli
  80. enable        equ    sti
  81.  
  82. ;
  83. ; NEAR branches
  84. ;
  85. jjnz    macro    addr
  86.     LOCAL    jjmp
  87.     jz    jjmp
  88.     jmp    addr
  89. jjmp:
  90.         endm
  91.  
  92. jjz    macro    addr
  93.         LOCAL   jjmp
  94.     jnz    jjmp
  95.     jmp    addr
  96. jjmp:
  97.     endm
  98.  
  99. jjc    macro    addr
  100.         LOCAL   jjmp
  101.     jnc    jjmp
  102.     jmp    addr
  103. jjmp:
  104.         endm
  105.  
  106. jjnc    macro    addr
  107.         LOCAL   jjmp
  108.     jc    jjmp
  109.     jmp    addr
  110. jjmp:
  111.     endm
  112.  
  113. jjb    macro    addr
  114.         LOCAL   jjmp
  115.     jae    jjmp
  116.     jmp    addr
  117. jjmp:
  118.     endm
  119.  
  120. jjbe    macro    addr
  121.         LOCAL   jjmp
  122.     ja    jjmp
  123.     jmp    addr
  124. jjmp:
  125.     endm
  126.  
  127. jja    macro    addr
  128.         LOCAL   jjmp
  129.     jbe    jjmp
  130.     jmp    addr
  131. jjmp:
  132.     endm
  133.  
  134. bne    macro    label
  135.         LOCAL   jjmp
  136.     je    jjmp
  137.     jmp    label
  138. jjmp:
  139.     endm
  140.  
  141. bnz    macro    label
  142.         LOCAL   jjmp
  143.     je    jjmp
  144.     jmp    label
  145. jjmp:
  146.     endm
  147.  
  148. be    macro    label
  149.         LOCAL   jjmp
  150.     jne    jjmp
  151.     jmp    label
  152. jjmp:
  153.     endm
  154.  
  155. bz    macro    label
  156.         LOCAL   jjmp
  157.     jne    jjmp
  158.     jmp    label
  159. jjmp:
  160.     endm
  161.  
  162. bb    macro    label
  163.         LOCAL   jjmp
  164.     jae    jjmp
  165.     jmp    label
  166. jjmp:
  167.     endm
  168.  
  169. ba    macro    label
  170.         LOCAL   jjmp
  171.     jbe    jjmp
  172.     jmp    label
  173. jjmp:
  174.     endm
  175.  
  176. bbe    macro    label
  177.         LOCAL   jjmp
  178.     ja    jjmp
  179.     jmp    label
  180. jjmp:
  181.     endm
  182.  
  183. bae    macro    label
  184.         LOCAL   jjmp
  185.     jb    jjmp
  186.     jmp    label
  187. jjmp:
  188.     endm
  189.  
  190. bc    macro    label
  191.         LOCAL   jjmp
  192.     jnc    jjmp
  193.     jmp    label
  194. jjmp:
  195.     endm
  196.  
  197. bnc    macro    label
  198.         LOCAL   jjmp
  199.     jc    jjmp
  200.     jmp    label
  201. jjmp:
  202.     endm
  203.  
  204. bs    macro    label
  205.         LOCAL   jjmp
  206.     jns    jjmp
  207.     jmp    label
  208. jjmp:
  209.     endm
  210.  
  211. ;
  212. ; multiple shift macro for 8088
  213. ;
  214. shrm     macro   regmem,count
  215.         .errb   <count>
  216.         .errnz  count GT 16
  217.         rept    count
  218.         shr     regmem,1
  219.         endm
  220.         endm
  221.  
  222. shlm     macro   regmem,count
  223.         .errb   <count>
  224.         .errnz  count GT 16
  225.         rept    count
  226.         shl     regmem,1
  227.         endm
  228.         endm
  229.  
  230. ;
  231. ; push these registers
  232. ;
  233. PUSHEM    MACRO    parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
  234.     IFNB    <parm1>
  235.     push    parm1
  236.     ENDIF
  237.     IFNB    <parm2>
  238.     push    parm2
  239.     ENDIF
  240.     IFNB    <parm3>
  241.     push    parm3
  242.     ENDIF
  243.     IFNB    <parm4>
  244.     push    parm4
  245.     ENDIF
  246.     IFNB    <parm5>
  247.     push    parm5
  248.     ENDIF
  249.     IFNB    <parm6>
  250.     push    parm6
  251.     ENDIF
  252.     IFNB    <parm7>
  253.     push    parm7
  254.     ENDIF
  255.     IFNB    <parm8>
  256.     push    parm8
  257.     ENDIF
  258.     IFNB    <parm9>
  259.     push    parm9
  260.     ENDIF
  261.     ENDM
  262. ;
  263. ; pop these registers
  264. ;
  265. POPEM    MACRO    parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
  266.     IFNB    <parm9>
  267.     pop    parm9
  268.     ENDIF
  269.     IFNB    <parm8>
  270.     pop    parm8
  271.     ENDIF
  272.     IFNB    <parm7>
  273.     pop    parm7
  274.     ENDIF
  275.     IFNB    <parm6>
  276.     pop    parm6
  277.     ENDIF
  278.     IFNB    <parm5>
  279.     pop    parm5
  280.     ENDIF
  281.     IFNB    <parm4>
  282.     pop    parm4
  283.     ENDIF
  284.     IFNB    <parm3>
  285.     pop    parm3
  286.     ENDIF
  287.     IFNB    <parm2>
  288.     pop    parm2
  289.     ENDIF
  290.     IFNB    <parm1>
  291.     pop    parm1
  292.     ENDIF
  293.     ENDM
  294.  
  295.  
  296.