*********************************************************************
*
*                                   Macros.i
*                 General-purpose macros for A68k assembler
*
*                       Copyright (C) 1990 Bryan Ford
*                            All Rights Reserved
*
*********************************************************************
	ifnd	BRY_MACROS_I
BRY_MACROS_I	set	1

bhs	macro	; <label>		; Branch if higher or same (unsigned)
	bcc.\0	\1
	endm

blo	macro	; <label>		; Branch if lower (unsigned)
	bcs.\0	\1
	endm

bz	macro	; <label>		; Branch if zero
	beq.\0	\1
	endm

bnz	macro	; <label>		; Branch if zero
	bne.\0	\1
	endm

push	macro	; <registers>		; Push registers on stack
	movem.\0 \1,-(sp)
	endm

pop	macro	; <registers>		; Pop registers off of stack
	movem.\0 (sp)+,\1
	endm

dcb	macro	; <count>		; Alternative to ds
	ds.\0	\1
	endm

casl	macro	; bits,Dn		; Shift Dn left by constant number of bits
	ifgt	\1-8
	asl.\0	#8,\2
	casl.\0	\1-8,\2
	endc
	ifle	\1-8
	asl.\0	#\1,\2
	endc
	endm

clsl	macro	; bits,Dn		; Shift Dn left by constant number of bits
	casl.\0	\1,\2
	endm

casr	macro	; bits,Dn		; Arithmetic shift Dn right by constant
	ifgt	\1-8
	asr.\0	#8,\2
	casr.\0	\1-8,\2
	endc
	ifle	\1-8
	asr.\0	#\1,\2
	endc
	endm

clsr	macro	; bits,Dn		; Logical shift Dn right by constant
	ifgt	\1-8
	lsr.\0	#8,\2
	clsr.\0	\1-8,\2
	endc
	ifle	\1-8
	lsr.\0	#\1,\2
	endc
	endm

	endc
