
/*	diag.h		*/

extern struct kiwidev *kiwi1;
extern struct kiwidev *vreg;
extern struct kiwidev verreg;
extern struct args argp;
extern warm;

extern initirq();		/* init interrupt and bus error vectors */
extern tstreg();		/* tests presence of kiwi registers */
extern bus_ex(), pri_ex(), ila_ex(), nmi_ex(), ili_ex();

extern short csBuff2[];		/* this is the 8x305 diagnostics */
extern unsigned bSize2;

extern short csBuff[];		/* this is the 8x305 channel microcode */
extern unsigned buffSize;

extern unsigned char buff1[], buff2[];
extern unsigned char level, lbxSw;

extern unsigned lpCnt;
extern unsigned char	tstByte, actByte;
extern short	tstWord, actWord, csAdEr;
extern unsigned char	typemem;
extern unsigned char	buffer[];
extern unsigned char	timg, dimg;

extern char E0[], E1[], E2[], E3[], E4[];
extern char E10[], E11[], E12[], E15[], E16[];
extern char E30[], E31[], E32[], E33[], E34[], E35[];
extern char E36[], E37[], E38[], E39[];
extern char E40[], E41[], E42[], E43[], E44[], E45[];
extern char E46[], E47[], E48[], E49[];
extern char E50[], E51[], E52[], E53[], E54[], E55[];
extern char E56[], E57[], E58[], E59[];
extern char E60[], E61[], E62[], E63[], E64[], E65[];
extern char E66[], E67[], E68[];
extern char E80[], E81[], E82[], E83[], E84[], E85[];
extern char E86[], E87[], E88[], E89[];
extern char E90[], E91[], E92[], E93[], E94[], E95[];
extern char E96[], E97[], E98[], E99[];
extern char E100[], E101[], E102[], E103[], E104[], E105[];
extern char E160[];

#define CHARS 	0
#define WORDS 	1
#define NULL	0x00
#define CR 	0x0d
#define BS 	0X08
#define CTRLX 	0x18
#define	SPACE	0x20
#define repeat 	while(1)
#define BOOTADR 0x1c000
#define ERROR 	-1
#define PASS	0
#define ON	1
#define OFF	0
#define TRUE 	1
#define MAXLN	40
#define FAIL	1
#define FALSE 	0
#define	LEDS	0xFEC001
#define	DIPSW	0xFEC001
#define EOF 	0
#define MAXM	0X40000
#define MAXARGS 3

#define step	0x10
#define rwe	0x20
#define dl	0x40
#define run	0x80

#define ADRO	0x80
#define HLDO	0x40
#define SELO	0x20
#define CMDO	0x10
#define SRVO	0x08
#define DATO	0x04
#define SUPO	0x02
#define BPARO	0x01

#define ADRI	0x80
#define OPLI	0x40
#define SELI	0x20
#define STAI	0x10
#define SRVI	0x08
#define DATI	0x04
#define REQI	0x02
#define BPARI	0x01

#define SELECT	0x01
#define BUSY	02
#define NOSEL	03
#define ODD	00
#define EVEN	01

/* IV bus address definitions */
#define dontcr	0x00
#define instat	0x01
#define busin	0x02
#define tagout	0x03
#define udccnt	0x04
#define udcmsb	0x05
#define udclsb  0x06
#define b2wrt	0x07
#define b2stat	0x08
#define stcntl	0x09
#define busout	0x0a
#define tagin	0x0b
#define datcnt	0x0c

/* UDC register addresses */
#define mmr	0x38
#define caddu	0x26
#define caddl	0x22
#define arau	0x1a
#define arbu	0x12
#define barau	0x1e
#define barbu	0x16
#define baral	0x0e
#define barbl	0x06
#define aral	0x0a
#define arbl	0x02
#define cmd	0x2e
		

#define PORTB	((struct port *)0xfef400)
#define PORTA	((struct port *)0xfef402)
#define PORTD	((struct port *)0xfef500)
#define PORTC	((struct port *)0xfef502)
#define SIO_BUSY	0x01		/* busy mask, port A status */
#define PARITY	0x7f			/* mask out parrity bit */

#define $VERSION "Version 1.a"
#define $DATE "  05-MAY-86"


/* some macro-like things for printing errors */
/*-------------------------------------------------------------------------*/
#define currTst(x) xprintf("\nTESTING  %s: ", x);

#define vErrMsg(x,y,z)  xprintf("\07\n   %s - %s  %s %s Access", E10, x, y, z)

#define rbeMsg(q,y,z) xprintf("\07\n   ERROR in %s.  Test Value: %2x, Actual Value: %2x",q, y, z)

#define rweMsg(q,y,z) xprintf("\07\n   ERROR in %s.  Test Value: %4x, Actual Value: %4x",q, y, z)

#define cherr(x,y,z) xprintf("\07\n   ERROR - %s.\n Offline Tag Out Expected: %2x\n            Actual: %2x", x, y, z)

#define eMsg(x) xprintf(x)

#define passTst	xprintf("Passed")


#define rtag(x) 	timg |= x; kiwi1->otag = timg;
#define dtag(x) 	timg &= ~(x); kiwi1->otag = timg;

#define display(x)	dimg = x; kiwi1->dsp = dimg;

#define READ  2
#define WRITE 1
#define UP 1
#define DWN 2

#define VSBCH  1
#define IVSBCH 2

#define set 0
#define clear 1

#define MB_RLEN 1024		/* must fit in a unsigned */
#define MB_WRLEN 2048		
#define LB_RLEN 512		/* must fit in a unsigned */
#define LB_WRLEN 1024		
#define IOLEN 0x1f8		

#define DEFADR	0xffff00	/* default address of single KIWI */
#define LBXBASE	0x100000	/* base address of lbx memory */


struct port {				/* SCC port */
	char dummy0;
	char control;
	char dummy1[3];
	char data;
};

struct args {
	char argcount;
	char *argv[MAXARGS];
};

/*  */                                                                                                                                                                                                                                                                                                                                                              