{File name dbInitLisp4K.mc;    DandeLion Interlisp Emulator - Initialization
Author: Purcell
Last edited: 31-Jan-84 17:37:00 by don -- deleted u reg init
Last edited: 24-Jan-84 11:27:34 by don -- restored u reg init
Last edited: 19-Jan-84 15:35:14 by don -- added org for LCS and put kernel reserves here
Last edited: 17-Jan-84  9:59:07 by don -- removed u reg init
Last edited: April 6, 1983  1:35 PM; dont move display in new sysout
Created: January 17, 1983 out of NewLisp.mc
Last edited: February 5, 1983  11:42 AM
}

Reserve[0F6F]; Reserve[0F78]; Reserve[0F7F,0FFF];	{Kernel}

EFCHaveLink:  	at[LispStart],
{**************************************************
	init display stuff
	set value to MP
	STALL for burdock rendezvous 			
	start up lisp by a context switch to suspended frame
**************************************************}
	TT ← 88, CANCELBR[$, 0F],	c1;
	rhRx ← Rx ← uIOPage,	c2;
	TT ← TT LRot8,	c3;

	{display dcb in io page init}
	MAR ← [rhRx, 0EB{WakeupLoc}+0],	c1;
	MDR ← 0,	c2;
	uWP ← 0,	c3;

	MAR ← [rhRx, 0EC{DBitsLoc}+0],	c1;
	MDR ← uFF00{was 0},	c2;
	,	c3;

	MAR ← [rhRx, 0ED{BorderLoc}+0],	c1;
	MDR ← TT{8800} or 22,	c2;
	Q ← 71{was 41},	c3;

	{DCtl←Q LRot0 %M},	c1;
	TOS ← LH.FMP,	c2;{MP value}
	TOS ← TOS LRot8,	c3;

Stall:	MAR ← [rhRx, IOPage.MP+0], BRANCH[Stall0, StallContinue],	c1;
Stall0:	MDR ← TOS or RH.FMP, GOTO[StallJn],	c2;
StallJn:	TT ← TT  - 1, ZeroBr, BRANCH[Stall, StallDone],	c3;

StallContinue:
	Q ← Q - 1, ZeroBr, GOTO[StallJn],	c2;

Burdock:
	{IOPCtl ← 1, %M}CANCELBR[$, 0F],	c1;
	Rx ← 41,	c2;
	{DCtl ← Rx LRot0 %M},	c3;

StallDone:
	TOSH ← 0, CANCELBR[$],	c1;
	TOS ← KTval,	c2;
	uPageFault ← Q ← 0,	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,	c3;

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

	{comes from nano-raid, STOP key}
Reset:	Noop,	c1;
Reset2:	uPageFault ← 0,	c2;
	Q ← 1, GOTO[FXP],	c3;

	{ E N D }