{File name: StartLisp12K.mc don 29-Dec-83 10:17:06 last modified by don 13-Mar-84 14:58:44 added logout last modified by don 8-Feb-84 18:29:05 for LCS } Reserve[0F6F]; Reserve[0F78]; Reserve[0F7F,0FFF]; {Kernel} SetTask[0]; StartAddress[Germ]; Germ: rhTT _ 0, CANCELBR[SetMDS,0F], c1, at[0,2,Germ]; rhTT _ 0, CANCELBR[SetMDS,0F], c1, at[1,2,Germ]; SetMDS: TT _ 0FF, c2; TT{0FF00} _ TT LRot8, c3; Rx _ 40, c1; Rx _ Rx LRot8, c2; uPageFault _ 0{notFaulting}, c3; Map _ [rhTT,TT], c1; MDR _ Rx{4000} or {0B1}31, c2; Q _ 0, c3; L _ 41, c1; IOPCtl _ IOPInMode, c2; DCtl _ L LRot0, c3; uWP _ 0, ClrIntErr, c1; TOS _ 0, rhMDS _ 0 c2; rhTT _ TT _ uIOPage, c3; {set all keys up; 1403D thru 14043 _ -1} stackP _ 0, c1; T _ 0FF LShift1, SE _ 1, c2; Q _ 7, c3; KeyLoop: MAR _ [rhTT,IOPage.keyBitsm1+Q], BRANCH[$,KeyDone], c1; MDR _ L xor ~L, CANCELBR[$,0], c2; Q _ Q - 1, ZeroBr, GOTO[KeyLoop], c3; KeyDone: {KCtl _ 0,} PC _ 0+0+1, CANCELBR[$,0], c2; uWDC _ PC, c3; MAR _ [rhTT, IOPage.DSCB.fieldCmd+0], c1; MDR _ L, c2; , c3; LastChance: MAR _ [rhTT, IOPage.DSCB.syncCmd+0], c1; MDR _ L, c2; L _ 0, c3; Rx _ LH.FMP, c1; Rx _ Rx LRot8, c2; Rx _ Rx or RH.FMP, c3; MAR _ [rhTT, IOPage.MP+0], c1; MDR _ Rx or 1, c2; Rx _ 080, c3; {ShowDisplay:} BegSD: rhRx _ Rx _ uIOPage, CANCELBR[$, 0F], c1; TT _ 88, c2; , c3; MAR _ [rhRx, 0EC+0], c1; MDR _ uFF00{was 0}, c2; TT _ TT LRot8, c3; MAR _ [rhRx, 0ED{0EF}+0], c1; MDR _ TT{88} or 22, c2; PC _ 1 + PC + PC16, c3; Q _ 71, c1; DCtl_Q LRot0, c2; Rx _ 080, c3; Stall: BRANCH[Stall0, Stall1], c1; Stall0: GOTO[StallJn], c2; Stall1: Rx _ Rx - 1, ZeroBr, GOTO[StallJn], c2; StallJn: Q _ Q - 1, ZeroBr, BRANCH[Stall, $], c3; SkipBurd: Noop, CANCELBR[SkipBurdock, 0F], c1; Burdock: IOPCtl _ 1, CANCELBR[$, 0F], c1; Noop, GOTO[Burd3], c2; SkipBurdock: Noop, c2; Burd3: , c3; Bank _ LispStartBank, c1, at[LispStart]; Noop, c2; CROSS[LispStart], c3; Off: MAR _ [rhRx, IOPage.ProcessorCommand+0], c1, at[LOGOUT]; MDR{4} _ 4, c2; Noop, GOTO[Off], c3; {END}