	IFND	EXEC_MACROS_I
EXEC_MACROS_I	EQU	1
*	$Filename: exec/macros.i $
*	$Release: 2.04 Includes, V37.4 $
*	$Revision: 36.8 $
*	$Date: 90/11/01 $
*	Handy macros for assembly language programmers.
*	(C) Copyright 1985-1991 Commodore-Amiga, Inc.
*	    All Rights Reserved
	IFND	DEBUG_DETAIL
DEBUG_DETAIL	SET	0
	ENDC
JSRLIB	MACRO
	XREF	_LVO\1
	jsr	_LVO\1(a6)
	ENDM
JMPLIB	MACRO
	XREF	_LVO\1
	jmp	_LVO\1(a6)
	ENDM
BSRSELF	MACRO
	XREF	\1
	bsr	\1
	ENDM
BRASELF	MACRO
	XREF	\1
	bra	\1
	ENDM
BLINK	MACRO
	IFNE	DEBUG_DETAIL
	bchg.b	#1,$bfe001
	ENDC
	ENDM
TRIGGER	MACRO
	IFGE	DEBUG_DETAIL-\1
	move.w	#$5555,$2fe
	ENDC
	ENDM
CLEAR	MACRO
	moveq.l	#0,\1
	ENDM
CLEARA	MACRO
	suba.l	\1,\1
	ENDM
	IFND	PRINTF
PRINTF	MACRO
	IFGE	DEBUG_DETAIL-\1
	XREF	kprint_macro
PUSHCOUNT	SET	0
	IFNC	'\9',''
	move.l	\9,-(sp)
PUSHCOUNT	SET	PUSHCOUNT+4
	ENDC
	IFNC	'\8',''
	move.l	\8,-(sp)
PUSHCOUNT	SET	PUSHCOUNT+4
	ENDC
	IFNC	'\7',''
	move.l	\7,-(sp)
PUSHCOUNT	SET	PUSHCOUNT+4
	ENDC
	IFNC	'\6',''
	move.l	\6,-(sp)
PUSHCOUNT	SET	PUSHCOUNT+4
	ENDC
	IFNC	'\5',''
	move.l	\5,-(sp)
PUSHCOUNT	SET	PUSHCOUNT+4
	ENDC
	IFNC	'\4',''
	move.l	\4,-(sp)
PUSHCOUNT	SET	PUSHCOUNT+4
	ENDC
	IFNC	'\3',''
	move.l	\3,-(sp)
PUSHCOUNT	SET	PUSHCOUNT+4
	ENDC
	movem.l	a0/a1,-(sp)
	lea.l	PSS\@(pc),A0
	lea.l	4*2(SP),A1
	BSR	kprint_macro
	movem.l	(sp)+,a0/a1
	bra.s	PSE\@
PSS\@	dc.b	\2
	IFEQ	(\1&1)
	dc.b	13,10
	ENDC
	dc.b	0
	ds.w	0
PSE\@	
	lea.l	PUSHCOUNT(sp),sp
	ENDC
	ENDM
	ENDC
PUSHM_COUNT	SET	0
PUSHM	MACRO
	IFGT	NARG-1
	FAIL
	ENDC
PUSHM_COUNT	SET	PUSHM_COUNT+1
PUSHM_\*VALOF(PUSHM_COUNT)	REG	\1
	movem.l	PUSHM_\*VALOF(PUSHM_COUNT),-(sp)
	ENDM
POPM	MACRO
	movem.l	(sp)+,PUSHM_\*VALOF(PUSHM_COUNT)
	IFNC	'\1','NOBUMP'
PUSHM_COUNT	SET	PUSHM_COUNT+1
	ENDC
	ENDM
	ENDC
