home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1997 #5 / amigaacscoverdisc1997-051997.i / games / installers / jamespond / src / lib / utils_macros.i < prev    next >
Text File  |  1997-07-19  |  2KB  |  126 lines

  1. STORE_REGS: MACRO
  2.     movem.l    D0-D7/A0-A6,-(A7)
  3.     ENDM
  4.  
  5. RESTORE_REGS: MACRO
  6.     movem.l    (A7)+,D0-D7/A0-A6
  7.     ENDM
  8.  
  9. JSRGEN:MACRO
  10.     move.l    A5,-(sp)
  11.     move.l    _general_pbuffer(PC),A5
  12.     add.l    #_\1,A5
  13.     sub.l    #_GeneralPatchRoutines,A5
  14.     JSR    (A5)
  15.     move.l    (sp)+,A5
  16.     ENDM
  17.  
  18. JMPGEN:MACRO
  19.     move.l    _general_pbuffer(PC),A5
  20.     add.l    #_\1,A5
  21.     sub.l    #_GeneralPatchRoutines,A5
  22.     JMP    (A5)
  23.     ENDM
  24.  
  25. GETGENADDR:MACRO
  26.     move.l    _general_pbuffer(PC),D0
  27.     add.l    #_\1,D0
  28.     sub.l    #_GeneralPatchRoutines,D0
  29.     ENDM
  30.  
  31. GETRELADDR:MACRO
  32.     move.l    _general_pbuffer(PC),D0
  33.     add.l    #\1,D0
  34.     sub.l    #_GeneralPatchRoutines,D0
  35.     ENDM
  36.  
  37. GETRELLONG:MACRO
  38.     move.l    A0,-(sp)
  39.     move.l    _general_pbuffer(PC),A0
  40.     add.l    #\1,A0
  41.     sub.l    #_GeneralPatchRoutines,A0
  42.     move.l    (A0),D0
  43.     move.l    (sp)+,A0
  44.     ENDM
  45.  
  46. WAIT_LMB: MACRO
  47. wl\@
  48.     btst    #6,$BFE001
  49.     bne    wl\@
  50.     ENDM
  51.  
  52. ; ******* Macro Printf ********
  53. ; Mac_printf "text"   -> text + linefeed
  54. ; Mac_printf "text",*any argument* -> text without linefeed
  55.  
  56. Mac_printf: MACRO
  57.     move.l    A1,-(A7)
  58.     lea    text\@$(PC),A1
  59.     JSRABS    Display
  60.     bra    ftext\@$
  61. text\@$
  62.     dc.b    \1
  63.     IFLE    NARG-1
  64.     dc.b    10,13
  65.     ENDC
  66.     dc.b    0
  67.     even
  68. ftext\@$
  69.     move.l    (A7)+,A1
  70.     ENDM
  71.  
  72. PUTS: MACRO
  73.     move.l    A1,-(A7)
  74.     move.l    \1,A1
  75.     JSRABS    Display
  76.     move.l    (A7)+,A1
  77.     ENDM
  78.  
  79. NEWLINE: MACRO
  80.     move.l    A1,-(A7)
  81.     lea    text\@$(PC),A1
  82.     JSRABS    Display
  83.     bra    ftext\@$
  84. text\@$
  85.     dc.b    10,13,0
  86.     even
  87. ftext\@$
  88.     move.l    (A7)+,A1
  89.     ENDM
  90.  
  91.  
  92.  
  93. JSRABS:MACRO
  94.     jsr    _\1
  95.     ENDM
  96.  
  97. JMPABS:MACRO
  98.     jmp    _\1
  99.     ENDM
  100.  
  101. STOP_SOUND:MACRO
  102.     move.l    A5,-(sp)
  103.     lea    $DFF000,A5
  104.     move.w    #$0000,aud0+ac_len(A5)
  105.     move.w    #$0000,aud1+ac_len(A5)
  106.     move.w    #$0000,aud2+ac_len(A5)
  107.     move.w    #$0000,aud3+ac_len(A5)        ; shhhhht
  108.  
  109.     move.w    #$0000,aud0+ac_vol(A5)
  110.     move.w    #$0000,aud1+ac_vol(A5)
  111.     move.w    #$0000,aud2+ac_vol(A5)
  112.     move.w    #$0000,aud3+ac_vol(A5)        ; shhhhht
  113.     move.l    (sp)+,A5
  114.     ENDM
  115.  
  116. RELOCATE_GEN:MACRO
  117.     movem.l    D0/A0/A1,-(sp)
  118.     move.l    _general_pbuffer(PC),D0
  119.     add.l    #\1,D0
  120.     sub.l    #_GeneralPatchRoutines,D0
  121.     move.l    D0,A0
  122.     move.l    #\1,A1        ; to be sure to get absolute address.
  123.     move.l    (A1),(A0)    ; relocation in the general patch routines zone.
  124.     movem.l    (sp)+,D0/A0/A1
  125.     ENDM
  126.