home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / iconspy1.lha / IconSpy / src / include / gcmacros.i
Encoding:
Text File  |  1994-10-27  |  2.5 KB  |  193 lines

  1.  
  2. **
  3. **    $VER: gcmacros.i (20/10/94)
  4. **
  5. **    GC Customized Macros
  6. **
  7. **     (C) Copyright 1994 The Beet Research
  8. **    All rights reserved.
  9. **
  10.  
  11.         IFND    BDGMACROS_I
  12.  
  13. BDGMACROS_I    SET    1
  14.  
  15.  
  16. ; for calling exec once (saves a6)
  17.  
  18. sys        MACRO            ; syntax: liboffset
  19.         move.l    a6,-(sp)
  20.         move.l    4.w,a6
  21.         jsr    _LVO\1(a6)
  22.         move.l    (sp)+,a6
  23.         ENDM
  24.  
  25.  
  26. ; for calling library functions
  27.  
  28. call        MACRO            ; syntax: liboffset,[libbase]
  29.         IFNC     '\2',''
  30.         move.l    a6,-(sp)
  31.         move.l    _\2Base(pc),a6
  32.         jsr    _LVO\1(a6)
  33.         move.l    (sp)+,a6
  34.         ELSE
  35.         jsr    _LVO\1(a6)
  36.         ENDC
  37.         ENDM
  38.  
  39.  
  40. ; jumps to library function
  41.  
  42. calljmp        MACRO            ; syntax: liboffset
  43.         jmp    _LVO\1(a6)
  44.         ENDM
  45.  
  46.  
  47. ; sets library base
  48.  
  49. setbase        MACRO            ; syntax: libbase
  50.         move.l    _\1Base(pc),a6
  51.         ENDM
  52.  
  53.  
  54. ; sets exec base
  55.  
  56. setexec        MACRO            ; syntax: none
  57.         IFND    _ExecBase
  58.         move.l    4.w,a6
  59.         ELSE
  60.         move.l    _ExecBase(pc),a6
  61.         ENDC
  62.         ENDM
  63.  
  64.  
  65. ; clears data register
  66.  
  67. cld        MACRO            ; syntax: Dx
  68.         moveq    #0,\1
  69.         ENDM
  70.  
  71.  
  72. ; clears address register
  73.  
  74. cla        MACRO            ; syntax: Ax
  75.         sub.l    \1,\1
  76.         ENDM
  77.  
  78.  
  79. ; opens library with version care or not
  80.  
  81. openlib        MACRO            ; syntax: libname,[libversion]
  82.         lea    \1(pc),a1
  83.         IFNC    '\2',''
  84.         IF    \2<$7f
  85.         moveq    #\2,d0
  86.         ELSE
  87.         move.l    #\2,d0
  88.         ENDC
  89.         ELSE
  90.         moveq    #0,d0
  91.         ENDC
  92.         jsr    _LVOOpenLibrary(a6)
  93.         ENDM
  94.  
  95.  
  96. ; closes library safe (checks if it was opened)
  97.  
  98. clslib        MACRO            ; syntax: libbase
  99.         move.l    _\1Base(pc),a1
  100.         cmp.l    #0,a1
  101.         beq.s    .lno\1
  102.         jsr    _LVOCloseLibrary(a6)
  103. .lno\1
  104.         ENDM
  105.  
  106.  
  107. ; tests address register; if it's equal 0 jumps
  108.  
  109. tstabeq        MACRO            ; syntax: Ax,<label>
  110.         cmpa.l    #0,\1
  111.         beq.s    \2
  112.         ENDM
  113.  
  114.  
  115.  
  116.         IFD    LIBRARIES_REQTOOLS_I
  117.  
  118. ; allocs reqtools.library's requester
  119.  
  120. allocreq    MACRO
  121.         moveq.l    #\1,d0        ; syntax: type, place to store ptr
  122.         sub.l    a0,a0
  123.         call    rtAllocRequestA
  124.         move.l    d0,\2
  125.         ENDM
  126.  
  127. ; frees requester safe
  128.  
  129. freereq        MACRO
  130.         move.l    \1(pc),a1    ; syntax: ptr
  131.         cmp.l    #0,a1
  132.         beq.s    .rno\1
  133.         call    rtFreeRequest
  134. .rno\1
  135.         ENDM
  136.  
  137.         ENDC
  138.  
  139.         IFD    INTUITION_INTUITION_I
  140.  
  141. ; activates gadget
  142.  
  143. actgad        MACRO            ; syntax: gadget,window
  144.         move.l    \1,a0
  145.         move.l    \2(pc),a1
  146.         sub.l    a2,a2
  147.         call    ActivateGadget,Intuition
  148.         ENDM
  149.  
  150.          ENDC
  151.  
  152.  
  153.         IFD    LIBRARIES_GADTOOLS_I
  154.  
  155. ; changes gadtools.library' gadget
  156.  
  157. gadchg        MACRO            ; syntax: gad,win,taglist
  158.         move.l    \1,a0
  159.         move.l    \2(pc),a1
  160.         sub.l    a2,a2
  161.         call    GT_SetGadgetAttrsA
  162.         ENDM
  163.  
  164.         ENDC
  165.  
  166.  
  167.         IFD    LOWERUNDERSCORE_I
  168.  
  169. ngadchg        MACRO            ; syntax: gad,win,taglist,[ea]
  170.         move.l    \1,a0
  171.         move.l    \2(pc),a1
  172.         sub.l    a2,a2
  173.         IFNC    '\3',''
  174.         lea    \3(pc),a3
  175.         ELSE        
  176.         IFNC    '\4',''
  177.         move.l    \4,a3
  178.         ENDC
  179.         ENDC
  180.         jsr    LU_SetGadgetAttrsA
  181.         ENDM
  182.  
  183.         ENDC
  184.  
  185. TRUE        =     1
  186. NULL        =     0
  187. FALSE        =    0
  188. execbase     =     4
  189. _SysBase     =    4
  190.  
  191.         ENDC
  192.  
  193.