{File name <tajo>xInitLisp.mc;    DandeLion Interlisp Emulator - Initialization
Author: Purcell
Last edited:  8-Feb-84 15:46:41 by don -- moved some stuff to lcsStartLisp
}

Set[InitVersion, 5];

EFCHaveLink:  	at[LispStart],
	Q ← InitVersion,	c1;
	Ybus ← Q xor uInitVersion, ZeroBr,	c2;
	Q ← 0, BRANCH[putMP9099, $],	c3;

{change to context Q{fxp}}
FXP:	rhTT ←  INTERFACEspace,	c1;
	TT ← INTERFACEbasePage,	c2;
	TT ← TT LRot8,	c3;

FXP1:	Map ← [rhTT,TT],	c1;
	rhS ← nRhS,	c2;
	Rx ← rhRx ← MD,{ XRefBr,}	c3;

	TOSH ← 0,{sysout returns true}	c1;
	TOS ← KTval,	c2;
	Noop,	c3;

FXP2:	MAR← [rhRx, Q + 0],	c1;
	rhPV ← nRhS,	c2;
	PV{FXP} ← MD, GOTO[RTN2],	c3;

Reset:	Noop, {CANCELBR[$, 0F],}	c1;
Reset2:	,	c2;
	Q ← ResetFXP, GOTO[FXP],	c3;

putMP9099:
	Q ← 99'd, GOTO[sink2],	c1;

LMemErr:	{come here if trap}
	BRANCH[VirtAddrErr, EmuMemErr, 1],	c1, at[1,4,CSParErr];

EmuMemErr:
	Q ← 5, GOTO[sink3],	c2;

VirtAddrErr:
	Q ← 4, GOTO[sink3],	c2;

	{ E N D }