home *** CD-ROM | disk | FTP | other *** search
- *-----------------------------------------------------------------------*
- * INTUITIONNAME - defines intuition library name *
- *-----------------------------------------------------------------------*
-
- INTUITIONNAME macro
- dc.b 'intuition.library',0
- endm
-
- *-----------------------------------------------------------------------*
- * LIBCALL - adds the _LVO prefix to the routine name *
- *-----------------------------------------------------------------------*
-
- libcall macro * functionoffset
- jsr _LVO\1(a6)
- endm
-
- *-----------------------------------------------------------------------*
- * LIBLINK - saves a6, sets a6 up with libbase, restores a6 after call *
- *-----------------------------------------------------------------------*
-
- liblink macro * functionoffset,librarybase
- ifgt narg-2
- fail ; too many arguments
- endc
- move.l a6,-(sp)
- move.l %2,a6
- libcall %1
- move.l (sp)+,a6
- endm
-
- *-----------------------------------------------------------------------*
- * CALL - calls LIBCALL or LIBLINK and generates xref if necessary *
- *-----------------------------------------------------------------------*
- Call macro * functionname,libraryname
- ifnd EXTERN_%1
- EXTERN_%1 set 1
- extern_lib %1
- endc
- ifc '%2',''
- libcall %1
- endc
- ifnc '%2',''
- liblink %1,%2
- endc
- endm
-
- *-----------------------------------------------------------------------*
- * BITNUM - converts a binary value to its bitnumber *
- * value must be a power of 2 *
- *-----------------------------------------------------------------------*
- BITNUM macro * name,value
- bitpos set 0
- value set %2
- ifgt value-128
- bitpos set 8
- value set value>>8
- endc
- ifgt value-128
- bitpos set bitpos+8
- value set value>>8
- endc
- ifgt value-128
- bitpos set bitpos+8
- value set value>>8
- endc
- ifeq value-128
- bitpos set bitpos+8
- endc
- ifeq value-64
- bitpos set bitpos+7
- endc
- ifeq value-32
- bitpos set bitpos+6
- endc
- ifeq value-16
- bitpos set bitpos+5
- endc
- ifeq value-8
- bitpos set bitpos+4
- endc
- ifeq value-4
- bitpos set bitpos+3
- endc
- ifeq value-2
- bitpos set bitpos+2
- endc
- ifeq value-1
- bitpos set bitpos+1
- endc
- %1_B equ bitpos-1 ; for bxxx.l instructions
- %1_R equ (bitpos-1)//8 ; for bxxx.b instructions
- endm
-