
**
**	$VER: gcmacros_new.i (21.08.95)
**
**	GC Customized Macros
**
** 	(C) Copyright 1994 The Beet Research
**	All rights reserved.
**

		IFND	GCMACROS_I

GCMACROS_I	SET	1


; for calling exec once (saves a6)

sys		MACRO			; syntax: liboffset
		move.l	a6,-(sp)
		move.l	_SysBase,a6
		jsr	_LVO\1(a6)
		move.l	(sp)+,a6
		ENDM


; for calling library functions

call		MACRO			; syntax: liboffset,[libbase]
		IFNC 	'\2',''
		move.l	a6,-(sp)
		move.l	_\2Base,a6
		jsr	_LVO\1(a6)
		move.l	(sp)+,a6
		ELSE
		jsr	_LVO\1(a6)
		ENDC
		ENDM


; jumps to library function

calljmp		MACRO			; syntax: liboffset
		jmp	_LVO\1(a6)
		ENDM


; sets library base

setbase		MACRO			; syntax: libbase
		move.l	_\1Base,a6
		ENDM


; sets exec base


setexec4	MACRO			; syntax: none
		move.l	4.w,a6
		ENDM

setexec		MACRO			; syntax: none
		move.l	_SysBase,a6
		ENDM


; clears data register

cld		MACRO			; syntax: Dx
		moveq	#0,\1
		ENDM


; clears address register

cla		MACRO			; syntax: Ax
		sub.l	\1,\1
		ENDM


; opens library with version care or not

openlib		MACRO			; syntax: libname,[libversion]
		lea	\1,a1
		IFNC	'\2',''
		move.l	#\2,d0
		ELSE
		moveq	#0,d0
		ENDC
		jsr	_LVOOpenLibrary(a6)
		ENDM


; closes library safe (checks if it was opened)

clslib		MACRO			; syntax: libbase
		move.l	_\1Base,a1
		cmp.l	#0,a1
		beq.s	.lno\1
		jsr	_LVOCloseLibrary(a6)
.lno\1
		ENDM


; tests address register; if it's equal 0 jumps

tstabeq		MACRO			; syntax: Ax,<label>
		cmpa.l	#0,\1
		beq.s	\2
		ENDM



		IFD	LIBRARIES_REQTOOLS_I

; allocs reqtools.library's requester

allocrq		MACRO
		moveq.l	#\1,d0		; syntax: type, place to store ptr
		sub.l	a0,a0
		call	rtAllocRequestA
		move.l	d0,\2
		ENDM

; frees requester safe

freereq		MACRO
		move.l	\1,a1		; syntax: reqptr
		cmp.l	#0,a1
		beq.s	.rno\1
		call	rtFreeRequest
.rno\1
		ENDM

; changes a req

chgreq		MACRO
		move.l	\1,a1		; syntax: reqptr, taglist
		move.l	\2,a0
		call	rtChangeReqAttrA
		ENDM

		ENDC

		IFD	INTUITION_INTUITION_I

; activates gadget

actgad		MACRO			; syntax: gadget,window
		move.l	\1,a0
		move.l	\2,a1
		sub.l	a2,a2
		call	ActivateGadget,Intuition
		ENDM

	 	ENDC


		IFD	LIBRARIES_GADTOOLS_I

; changes gadtools.library' gadget

gadchg		MACRO			; syntax: gad,win,taglist
		move.l	\1,a0
		move.l	\2,a1
		sub.l	a2,a2
		call	GT_SetGadgetAttrsA
		ENDM

		ENDC


		IFD	LU_I

ngadchg		MACRO			; syntax: gad,win,taglist,[ea]
		move.l	\1,a0
		move.l	\2,a1
		sub.l	a2,a2
		IFNC	'\3',''
		lea	\3,a3
		ELSE		
		IFNC	'\4',''
		move.l	\4,a3
		ENDC
		ENDC
		jsr	_luSetGadgetAttrsA
		ENDM

		ENDC

TRUE		equ 	1

		IFND	NONULL
NULL		equ	0
		ENDC

FALSE		equ	0
execbase 	equ	4

		ENDC

