{bxLispIO4K.mc
Purcell 23-Jul-85  0:50:58
created by cal:   5-Nov-84 15:59:05
 }

{*****************************************************************************
	BITBLT
*****************************************************************************}
BBThru:
	TOSH ← smallpl, GOTO[IB.pc1]	,c1;

{*****************************************************************************
	MISC	Input
*****************************************************************************}

@MISC1:	opcode[170'b],
	L2 ← L2.0, GOTO[Misc],	c1;
@MISC2:	opcode[171'b],
	L2 ← L2.0,	c1;
Misc:	PC ← PC + 1, Xbus ← ib, XDisp,	c2;
	uTOS ← TOS, YDisp, DISP4[MiscDisp, 0C],	c3;

Misc0:	Q ← 121'd, CANCELBR[sink2, 0F],	c1, at[0C,10, MiscDisp];{MP9121}
Misc3:	Q ← 121'd, CANCELBR[sink2, 0F],	c1, at[0F,10, MiscDisp];{MP9121}

{*****************************************************************************
	INPUT	Input
*****************************************************************************}

INPUT:	DISP4[MiscIn],	c1, at[0D,10, MiscDisp];
	TOS ← 0, L2 ← L2.0, IBDisp, GOTO[MiscInEnd], c2, at[0,10,MiscIn];  {was ←EIData}
	TOS ← 0, L2 ← L2.0, IBDisp, GOTO[MiscInEnd], c2, at[1,10,MiscIn];  {was ←EStatus}
	TOS ← 0, L2 ← L2.0, IBDisp, GOTO[MiscInEnd], c2, at[2,10,MiscIn];  {was ←KIData}
	TOS ← 0, L2 ← L2.0, IBDisp, GOTO[MiscInEnd], c2, at[3,10,MiscIn];  {was ←KStatus}
	TOS ← uSTATE, L2 ← L2.0, IBDisp, GOTO[MiscInEnd], c2, at[4,10,MiscIn];  {uSTATE}
	TOS ← 0, L2 ← L2.0, IBDisp, GOTO[MiscInEnd], c2, at[5,10,MiscIn];  {was ←MStatus}
	TOS ← 0, L2 ← L2.0, IBDisp, GOTO[MiscInEnd], c2, at[6,10,MiscIn];  {was ←KTest}
	TOS ← 0, L2 ← L2.0, IBDisp, GOTO[MiscInEnd], c2, at[7,10,MiscIn];  {was ←PPort}
	TOS ← VersionHi, GOTO[MiscVers],	c2, at[8,10,MiscIn];
	{Q ← 122'd, GOTO[sink3],	c2, at[09,10,MiscIn];{MP9122}}
	{Q ← 122'd, GOTO[sink3],	c2, at[0A,10,MiscIn];{MP9122}}
	Q ← 122'd, GOTO[sink3],	c2, at[0B,10,MiscIn];{MP9122}
	Q ← 122'd, GOTO[sink3],	c2, at[0C,10,MiscIn];{MP9122}
	Q ← 122'd, GOTO[sink3],	c2, at[0D,10,MiscIn];{MP9122}
	Q ← 122'd, GOTO[sink3],	c2, at[0E,10,MiscIn];{MP9122}
	Q ← 122'd, GOTO[sink3],	c2, at[0F,10,MiscIn];{MP9122}
MiscInEnd:
	TOSH ← smallpl, L2 ← L2.0, DISPNI[OpTable],	c3;

MiscVers:
	TOS ← TOS LRot8,	c3;
	TOS ← TOS or VersionLo,	c1;
	IBDisp, L2 ← L2.0, GOTO[MiscInEnd],	c2;


{*****************************************************************************
	OUTPUT	Output
*****************************************************************************}

OUTPUT:
	MAR ← S ← [rhS, S + 0], Xbus ← uTOS, XDisp, CANCELBR[$, 0F],	c1, at[0E,10, MiscDisp];
	S ← S - 2, DISP4[MiscOut],	c2;

	{TT ← MD, GOTO[OutEnd], c3, at[0,10,MiscOut];  {was IOPOData←}}
	TT ← MD, GOTO[OutEnd], c3, at[1,10,MiscOut];  {was IOPCtl←}
	TT ← MD, GOTO[OutEnd], c3, at[2,10,MiscOut];  {was KOData←}
	TT ← MD, GOTO[OutEnd], c3, at[3,10,MiscOut];  {was KCtl←}
	TT ← MD, GOTO[OutEnd], c3, at[4,10,MiscOut];  {was EOData}
	TT ← MD, GOTO[OutEnd], c3, at[5,10,MiscOut];  {was EICtl←}
	TT ← MD, GOTO[OutEnd], c3, at[6,10,MiscOut];  {was DCtl←}
	TT ← MD, GOTO[OutEnd], c3, at[7,10,MiscOut];  {was Display Refresh}


	TT ← MD, GOTO[OutSetOpt],	c3, at[8,10,MiscOut];
	

	TT ← MD, GOTO[OutEnd], c3, at[ 9,10,MiscOut]; {was PCtl←}
	TT ← MD, GOTO[OutEnd], c3, at[0A,10,MiscOut]; {was MCtl←}
{%M}	{TT ← MD, GOTO[OutEnd], c3, at[0B,10,MiscOut]; }
	TT ← MD, GOTO[OutEnd], c3, at[0C,10,MiscOut]; {was EOCtl←}
	TT ← MD, GOTO[OutEnd], c3, at[0D,10,MiscOut]; {was KCmd←}
	TT ← MD, GOTO[OutEnd], c3, at[0E,10,MiscOut]; {was Out PPort}
	TT ← MD, GOTO[OutEnd], c3, at[0F,10,MiscOut]; {was POData←}


OutEnd:
	Noop, GOTO[IB.nop],	c1;
	
OutSetOpt:
	uLispOptions ← TT, GOTO[IB.nop],	c1;

{*******************************************************************}
logout:	TT ← 55{password to mesa}, CANCELBR[$]	c2;
	rhRx ← Rx ← uIOPage,	c3;

Off:	MAR ← [rhRx, IOPage.ProcessorCommand+0],	c1, at[LOGOUT];
	MDR ←  4,	c2;
	uLispBootMsg ← TT,  GOTO[Off],	c3;


{*******************************************************************}


{ The following code is special for the Daybreak}






	{ E N D }