home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 612b.lha / Bovs_v1.0 / MemMan / Macros.i < prev    next >
Text File  |  1992-01-12  |  2KB  |  149 lines

  1. *********************************************************************
  2. *
  3. *                    Macros.i
  4. *             Bryan's obfuscated macros for A68k
  5. *
  6. *            Copyright (C) 1990 Bryan Ford
  7. *                 All Rights    Reserved
  8. *
  9. *********************************************************************
  10.     ifnd    BRY_MACROS_I
  11. BRY_MACROS_I    set    1
  12.  
  13. b    macro    ; <label>        ; Branch
  14.     bra.\0    \1
  15.     endm
  16.  
  17. bhs    macro    ; <label>        ; Branch if higher or same (unsigned)
  18.     bcc.\0    \1
  19.     endm
  20.  
  21. blo    macro    ; <label>        ; Branch if lower (unsigned)
  22.     bcs.\0    \1
  23.     endm
  24.  
  25. bz    macro    ; <label>        ; Branch if zero
  26.     beq.\0    \1
  27.     endm
  28.  
  29. bnz    macro    ; <label>        ; Branch if zero
  30.     bne.\0    \1
  31.     endm
  32.  
  33. macm    macro    ; <source> <dest>    ; Macro    used by    move macros
  34.     ifc    '\3',''
  35.     move.\0    \1,\2
  36.     endc
  37.     ifnc    '\3',''
  38.     ifc    '\4',''
  39.     move.\0    \1,\2,\3
  40.     endc
  41.     ifnc    '\4',''
  42.     move.\0    \1,\2,\3,\4
  43.     endc
  44.     endc
  45.     endm
  46.  
  47. ml    macro    ; <source>,<dest>    ; Move long
  48.     macm.l    \1,\2,\3,\4
  49.     endm
  50.  
  51. mw    macro    ; <source>,<dest>    ; Move word
  52.     macm.w    \1,\2,\3,\4
  53.     endm
  54.  
  55. mb    macro    ; <source>,<dest>    ; Move byte
  56.     macm.b    \1,\2,\3,\4
  57.     endm
  58.  
  59. mq    macro    ; <const>,<dest>    ; Move quick
  60.     moveq    \1,\2
  61.     endm
  62.  
  63. cq    macro    ; <dn>            ; Clear    quick D    reg
  64.     moveq    #0,\1
  65.     endm
  66.  
  67. push    macro    ; <registers>        ; Push (long) registers    on stack
  68.     movem.l    \1,-(sp)
  69.     endm
  70.  
  71. pop    macro    ; <registers>        ; Pop (long) registers off of stack
  72.     movem.l    (sp)+,\1
  73.     endm
  74.  
  75. apush    macro                ; Automatically    save registers
  76.     autoreg                ; Clear    autoreg    list
  77.     push    \aregs
  78.     endm
  79.  
  80. apop    macro                ; Restore registers
  81.     pop    \aregs
  82. \aregs    autoreg    d0-d1/a0-a1/sp
  83.     endm
  84.  
  85. apush4    macro                ; Automatically    save registers
  86.     autoreg                ; Clear    autoreg    list
  87.     push    \aregs
  88.     endm
  89.  
  90. apop4    macro                ; Restore registers
  91.     pop    \aregs
  92. \aregs    autoreg    d0-d1/a0-a1/a4/sp
  93.     endm
  94.  
  95. dcb    macro    ; <count>        ; Alternative to ds
  96.     ds.\0    \1
  97.     endm
  98.  
  99. jl    macro    ; <libfunc>        ; Call library function
  100.     jsr    _LVO\1(a6)
  101.     endm
  102.  
  103. casl    macro    ; bits,Dn        ; Shift    Dn left    by constant number of bits
  104.     ifgt    \1-8
  105.     asl.\0    #8,\2
  106.     casl.\0    \1-8,\2
  107.     endc
  108.     ifle    \1-8
  109.     asl.\0    #\1,\2
  110.     endc
  111.     endm
  112.  
  113. clsl    macro    ; bits,Dn        ; Shift    Dn left    by constant number of bits
  114.     casl.\0    \1,\2
  115.     endm
  116.  
  117. casr    macro    ; bits,Dn        ; Arithmetic shift Dn right by constant
  118.     ifgt    \1-8
  119.     asr.\0    #8,\2
  120.     casr.\0    \1-8,\2
  121.     endc
  122.     ifle    \1-8
  123.     asr.\0    #\1,\2
  124.     endc
  125.     endm
  126.  
  127. clsr    macro    ; bits,Dn        ; Logical shift    Dn right by constant
  128.     ifgt    \1-8
  129.     lsr.\0    #8,\2
  130.     clsr.\0    \1-8,\2
  131.     endc
  132.     ifle    \1-8
  133.     lsr.\0    #\1,\2
  134.     endc
  135.     endm
  136.  
  137. xds    macro    ; label,count        ; Externally visible ds    (for both C and    asm)
  138. \1:
  139. _\1:    ds.\0    \2
  140.     endm
  141.  
  142. dcx    macro                ; Define long external
  143.     xref    \1
  144.     dc.\0    \1
  145.     endm
  146.  
  147.  
  148.     endc
  149.