home *** CD-ROM | disk | FTP | other *** search
/ Shareware Supreme Volume 6 #1 / swsii.zip / swsii / 355 / APDEVKIT.ZIP / INC / MASM.INC < prev    next >
Text File  |  1992-03-08  |  4KB  |  260 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.     jz    $+5
  87.     jmp    addr
  88.     endm
  89.  
  90. jjz    macro    addr
  91.     jnz    $+5
  92.     jmp    addr
  93.     endm
  94.  
  95. jjc    macro    addr
  96.     jnc    $+5
  97.     jmp    addr
  98.         endm
  99.  
  100. jjnc    macro    addr
  101.     jc    $+5
  102.     jmp    addr
  103.     endm
  104.  
  105. jjb    macro    addr
  106.     jae    $+5
  107.     jmp    addr
  108.     endm
  109.  
  110. jjbe    macro    addr
  111.     ja    $+5
  112.     jmp    addr
  113.     endm
  114.  
  115. jja    macro    addr
  116.     jbe    $+5
  117.     jmp    addr
  118.     endm
  119.  
  120. bne    macro    label
  121.     je    $+5
  122.     jmp    label
  123.     endm
  124.  
  125. bnz    macro    label
  126.     je    $+5
  127.     jmp    label
  128.     endm
  129.  
  130. be    macro    label
  131.     jne    $+5
  132.     jmp    label
  133.     endm
  134.  
  135. bz    macro    label
  136.     jne    $+5
  137.     jmp    label
  138.     endm
  139.  
  140. bb    macro    label
  141.     jae    $+5
  142.     jmp    label
  143.     endm
  144.  
  145. ba    macro    label
  146.     jbe    $+5
  147.     jmp    label
  148.     endm
  149.  
  150. bbe    macro    label
  151.     ja    $+5
  152.     jmp    label
  153.     endm
  154.  
  155. bae    macro    label
  156.     jb    $+5
  157.     jmp    label
  158.     endm
  159.  
  160. bc    macro    label
  161.     jnc    $+5
  162.     jmp    label
  163.     endm
  164.  
  165. bnc    macro    label
  166.     jc    $+5
  167.     jmp    label
  168.     endm
  169.  
  170. bs    macro    label
  171.     jns    $+5
  172.     jmp    label
  173.     endm
  174.  
  175. ;
  176. ; multiple shift macro for 8088
  177. ;
  178. shrm     macro   regmem,count
  179.         .errb   <count>
  180.         .errnz  count GT 16
  181.         rept    count
  182.         shr     regmem,1
  183.         endm
  184.         endm
  185.  
  186. shlm     macro   regmem,count
  187.         .errb   <count>
  188.         .errnz  count GT 16
  189.         rept    count
  190.         shl     regmem,1
  191.         endm
  192.         endm
  193.  
  194. ;
  195. ; push these registers
  196. ;
  197. PUSHEM    MACRO    parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
  198.     IFNB    <parm1>
  199.     push    parm1
  200.     ENDIF
  201.     IFNB    <parm2>
  202.     push    parm2
  203.     ENDIF
  204.     IFNB    <parm3>
  205.     push    parm3
  206.     ENDIF
  207.     IFNB    <parm4>
  208.     push    parm4
  209.     ENDIF
  210.     IFNB    <parm5>
  211.     push    parm5
  212.     ENDIF
  213.     IFNB    <parm6>
  214.     push    parm6
  215.     ENDIF
  216.     IFNB    <parm7>
  217.     push    parm7
  218.     ENDIF
  219.     IFNB    <parm8>
  220.     push    parm8
  221.     ENDIF
  222.     IFNB    <parm9>
  223.     push    parm9
  224.     ENDIF
  225.     ENDM
  226. ;
  227. ; pop these registers
  228. ;
  229. POPEM    MACRO    parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
  230.     IFNB    <parm9>
  231.     pop    parm9
  232.     ENDIF
  233.     IFNB    <parm8>
  234.     pop    parm8
  235.     ENDIF
  236.     IFNB    <parm7>
  237.     pop    parm7
  238.     ENDIF
  239.     IFNB    <parm6>
  240.     pop    parm6
  241.     ENDIF
  242.     IFNB    <parm5>
  243.     pop    parm5
  244.     ENDIF
  245.     IFNB    <parm4>
  246.     pop    parm4
  247.     ENDIF
  248.     IFNB    <parm3>
  249.     pop    parm3
  250.     ENDIF
  251.     IFNB    <parm2>
  252.     pop    parm2
  253.     ENDIF
  254.     IFNB    <parm1>
  255.     pop    parm1
  256.     ENDIF
  257.     ENDM
  258.  
  259.  
  260.