***************************************************************************
*	MACRO instructions
*	------------------
*	(pseudo instruction set extension)
***************************************************************************

* FEDCBA98 76543210		;whole register is SR; lower byte is CCR
* T-S--III ---XNZVC

sec		MACRO		 	;function : set the CARRY flag
		ori.b	#%00001,CCR
		ENDM	

clc		MACRO			;function : clear the CARRY flag
		andi.b  #$FF-1,CCR
		ENDM

sez		MACRO			;function : set the ZERO flag
		ori.b	#%00100,CCR
		ENDM

clz		MACRO			;function : clear the ZERO flag
		andi.b  #$FF-4,CCR
		ENDM

req		MACRO			;function : return if ZERO
		beq	dummy
		ENDM

rne		MACRO			;function : return if NOT ZERO
		bne	dummy
		ENDM

rcc		MACRO			;function : return if CARRY CLEAR
		bcc	dummy
		ENDM

rcs		MACRO			;function : return if CARRY SET
		bcs	dummy
		ENDM

rpl		MACRO			;function : return if POSITIVE
		bpl	dummy
		ENDM

rmi		MACRO			;function : return if NEGATIVE
		bmi	dummy
		ENDM

clrh		MACRO		;Dn	;function : ANDI.L #$0000FFFF,Dn
		swap	\1
		clr.w	\1
		swap	\1
		ENDM

MODULO		MACRO			;DANGER : HUGE LOOP POSSIBILITY
		sub.w	\2,\1
		bpl.s	*-2
		add.w	\2,\1
		ENDM

EXEC		MACRO			;call an EXEC system function
		jsr	_LVO\1(a6)
		ENDM

DOS		MACRO			;call an AmigaDOS system function
		jsr	_LVO\1(a6)
		ENDM

GFX		MACRO			;call a graphics system function
		jsr	_LVO\1(a6)
		ENDM

INTUI		MACRO			;call an Intuition system function
		jsr	_LVO\1(a6)
		ENDM

LSTRING		MACRO		;usage: STRING labelid,<'string parameter'>
\1		dc.w	\1_e-\1_s
\1_s		dc.b	\2
\1_e
		ENDM

LSTRINGR	MACRO
\1		dc.w	\1_e-\1_s
\1_s		dc.b	\2,LF
\1_e
		ENDM

PRINT_AT	MACRO		;usage: PRINT_AT  x,y,labelid,<'your string'>
		dc.w	\1,\2
\3		dc.w	\3_e-\3_s
\3_s		dc.b	\4
\3_e
		ENDM


***************************************************************************
*	Software Constants
*	------------------
***************************************************************************
		
TRUE		equ	-1
FALSE		equ	0
NULL		equ	0

; Names of common ASCII codes

SOH		equ	$01
TAB		equ	$09
FF		equ	$0C
SHIFT_OUT	equ	$0E
SHIFT_IN	equ	$0F
ESC		equ	$1B
DOUBLE_QUOTE	equ	$22
SINGLE_QUOTE	equ	$27
COMMA		equ	$2C
SPC		equ	$20

CLS		equ	FF	;Form Feed is used to clear screen

; Common Amiga 4096 colors

RED		equ	$f00
GREEN		equ	$0f0
BLUE		equ	$00f
YELLOW		equ	RED+GREEN
CYAN		equ	GREEN+BLUE
MAGENTA		equ	RED+BLUE
WHITE		equ	$FFF
GREY		equ	$777
BLACK		equ	$000

_AbsExecBase	equ	4

CUSTOM_BASE	equ	$DFF000
COLOR_BASE	equ	$DFF180
