						;
						;
%'	TRIM and ARG are utility macros
%'
%'  TRIM(a) - returns the input parameter trimmed of leading and
%'	 trailing blanks.
%*DEFINE(TRIM(a)) LOCAL x y (%MATCH( x y)(%a)%x)%'
%' 
%'   ARG -  gets the next comma-delimited arg from variable named TAIL,
%'	stripped and trimmed.  Any macro that has a valid type of NONE
%'	uses this macro so that the other parameters are not needed.
%*DEFINE(ARG) LOCAL a (%MATCH(a,tail)(%tail)%TRIM(%a))%'
%' 

%SET (is_bist,0)
%*DEFINE(bist(bist_base_p:bist_offset_p)) (%'
	%SET(is_bist,-1)
	%DEFINE(bist_base) (%bist_base_p)%'
	%DEFINE(bist_offset) (%bist_offset_p)%'
)

%SET (is_copy,0)
%*DEFINE(copy(src_lo_p,src_hi_p,dest_lo_p,dest_hi_p,count_lo_p,count_hi_p)) (%'
	%SET(is_copy,-1)
	src_lo	 	equ	%src_lo_p
	src_hi	 	equ	%src_hi_p
	dest_lo		equ	%dest_lo_p
	dest_hi		equ	%dest_hi_p
	count_lo	equ	%count_lo_p
	count_hi	equ	%count_hi_p
)

%SET (is_auto_config_mem,0)

%*DEFINE(auto_configure_memory(parameters)) (%DEFINE(tail) (%parameters)%'

	%SET(is_auto_config_mem,-1)
	%DEFINE(btype) (%ARG)%'
	%DEFINE(start_address) (%ARG)%'
	%SET(mode,0)
	%SET(saddr,0)


%IF ((%EQS(%btype,LBX)) OR (%EQS(%btype,lbx)) ) THEN (%'
	%SET(mode,1)
	%SET(saddr,0)
	%IF (%LEN(%start_address) ne 0) THEN (%'
ERROR -- invalid parameter combination
	) FI
) ELSE (%'
%IF ((%EQS(%btype,PSB)) OR (%EQS(%btype,psb)) ) THEN (%'
	%SET(mode,2)
	%IF (%LEN(%start_address) eq 0) THEN (%'
ERROR -- invalid parameter combination
	) ELSE (%'
	%SET(saddr,%start_address)
	) FI
) ELSE (%'
%IF ((%EQS(%btype,LBX+PSB)) OR (%EQS(%btype,lbx+psb)) ) THEN (%'
	%SET(mode,3)
	%SET(saddr,0)
	%IF (%LEN(%start_address) ne 0) THEN (%'
ERROR -- invalid parameter combination
	) FI
) ELSE(%'
ERROR -- %btype, invalid interface type
) FI
) FI
) FI
)%' end auto_configure_memory definition


	

%SET(dynamic_second_true, 0)	;set to false
%*DEFINE(system_support)(
	%SET(dynamic_second_true, -1)	%'set to true'
	%SET(min_seg,0200h)%'	hard wire the start and end address
	%SET(max_seg,0c000h)
)
