{PokeDevice.mc, HGM,  4-Nov-84  6:29:45}

	Reserve[0F5F, 0FFF]; { section used by the CP Kernel }
	SetTask[7]; StartAddress[Go];


RegDef[R0,R,0];
RegDef[RH0,RH,0];


Go:	ClrIntErr,					c1, at[0];
	Noop,						c2, at[00FF];
	Noop,						c3, at[0F00];
	
Loop:	IB ← 0, {Scope sync}				c1;
	stackP ← 8,					c2;
	Noop,						c3;
	
IOXIn:	R0 ← EIData, {0}				c1;
	R0 ← EStatus, {1}				c2;
	R0 ← KIData, {2}				c3;

	R0 ← KStatus, {3}				c1;
	KStrobe, {4}					c2;
	R0 ← MStatus, {5}				c3;

	R0 ← KTest, {6}					c1;
	EStrobe, {7}					c2;
	R0 ← IOPIData, {8}				c3;

	R0 ← IOPStatus, {9}				c1;
	R0 ← ErrnIBnStkp, {A}				c2;
	R0 ← RH0, {B}					c3;

	R0 ← ibNA, {C}					c1;
	R0 ← ib, {D}					c2;
	R0 ← ibLow, {E}					c3;

	R0 ← ibHigh, {F}				c1;
	Noop,						c2;
	Noop,						c3;

FYOut:	IOPOData ← 0,					c1;
	IOPCtl ← 0, {1}					c2;
	KOData ← 0, {2}					c3;
	
	KCtl ← 0, {3}					c1;
	EOData ← 0 {4}					c2;
	EICtl ← 0, {5}					c3;
	
	DCtlFifo ← 0, {6},				c1;
	DCtl ← 0, {7}					c2;
	DBorder ← 0, {8}				c3;
	
	PCtl ← 0, {9}					c1;
	MCtl ← 0, {A}					c2;
	R0 ← TStatus, {B}				c3;
	
	EOCtl ← 0, {C}					c1;
	KCmd ← 0, {D}					c2;
	R0 ← TIData, {E}				c3;
	
	POData ← 0, {F}					c1;
	Noop,						c2;
	Noop,						c3;

FZNorm:	Refresh, {0} MesaIntRq, {to use FY}		c1;
	IBPtr ← 1, {1}					c2;
	IBPtr ← 0, {2}					c3;
	
	R0 ← R0 + PC16,	{3} L0 ← 0, {use FX}		c1;
	Noop, {4} {←DES, Beware, Bank← in book}		c2;
	fZpop, {5}					c3;
	
	push {fZpush}, {6} L0 ← 0, MesaIntBr,		c1;
	Ybus ← 0, AltUaddr, {7} CANCELBR[$],		c2;
	Noop, {8}					c3;
	
	Noop, {9} {DES←}				c1;
	Noop, {A} {Port←, But Mass isn't ready}		c2;
	Noop, {B} {←Port}				c3;
	
	Xbus ← R0 LRot0, {C}				c1;
	Xbus ← R0 LRot12, {D}				c2;
	Xbus ← R0 LRot8, {E}				c3;
	
	Xbus ← R0 LRot4, {F}				c1;
	Noop,						c2;
	Noop,						c3;

	Noop,						c1;
	Noop,						c2;
	GOTO[Loop],					c3;