/*	altairZ80_defs.h: MITS Altair simulator definitions
		Written by Peter Schorn, 2001-2002
		Based on work by Charles E Owen ((c) 1997, Commercial use prohibited)
*/

#include "sim_defs.h"													/* simulator definitions					*/

/* Memory */
#define MAXMEMSIZE			65536									/* max memory size								*/
#define ADDRMASK				(MAXMEMSIZE - 1)			/* address mask										*/
#define bootrom_size		256										/* size of boot rom								*/
#define MAXBANKS				8											/* max number of memory banks			*/
#define MAXBANKSLOG2		3											/* log2 of MAXBANKS								*/
#define BANKMASK				(MAXBANKS-1)					/* bank mask											*/

#define UNIT_V_OPSTOP		(UNIT_V_UF)						/* Stop on Invalid OP?						*/
#define UNIT_OPSTOP			(1 << UNIT_V_OPSTOP)
#define UNIT_V_CHIP	 		(UNIT_V_UF+1)					/* 8080 or Z80										*/
#define UNIT_CHIP				(1 << UNIT_V_CHIP)
#define UNIT_V_MSIZE		(UNIT_V_UF+2)					/* Memory Size										*/
#define UNIT_MSIZE			(1 << UNIT_V_MSIZE)
#define UNIT_V_BANKED		(UNIT_V_UF+3)					/* Banked memory is used					*/
#define UNIT_BANKED			(1 << UNIT_V_BANKED)
#define UNIT_V_ROM			(UNIT_V_UF+4)					/* ROM exists											*/
#define UNIT_ROM				(1 << UNIT_V_ROM)

#define PCformat	"\n[%04xh] "
#define message1(p1)					sprintf(messageBuffer,PCformat p1,PCX);						printMessage()
#define message2(p1,p2)				sprintf(messageBuffer,PCformat p1,PCX,p2);				printMessage()
#define message3(p1,p2,p3)		sprintf(messageBuffer,PCformat p1,PCX,p2,p3);			printMessage()
#define message4(p1,p2,p3,p4)	sprintf(messageBuffer,PCformat p1,PCX,p2,p3,p4);	printMessage()

/*	The Default is to use "inline". In this case the wrapper functions for
		GetBYTE and PutBYTE need to be created. Otherwise they are not needed
		and the calls map to the original functions.																*/
#ifdef NO_INLINE
#define INLINE
#define GetBYTEWrapper GetBYTE
#define PutBYTEWrapper PutBYTE
#else
#if defined(__DECC) && defined(VMS)
#define INLINE __inline
#else
#define INLINE inline
#endif
#endif
