{File name: StartLisp4K.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 } 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{0FF00} _ ~0FF, c2; Rx _ 41, c3; DCtl _ Rx LRot0, c1; Rx _ 40, c2; Rx _ Rx LRot8, c3; {%1} { Map _ [rhTT,TT], c1; MDR _ Rx{4000} or {0B1}31, c2; , c3; } ClrIntErr, c1; IOPCtl _ IOPInMode, c2; rhTT _ TT _ uIOPage, c3; {set all keys up; 1403D thru 14043 _ -1} stackP _ 0, c1; TOSH _ 0, 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: PC _ 0+1, CANCELBR[$,0], c2; uWDC _ PC, c3; Rx _ 88, CANCELBR[$, 0F], c1; Rx _ Rx LRot8, c2; PC _ 1 + PC + PC16, c3; MAR _ [rhTT, 0EB{WakeupLoc}+0], c1; MDR _ 0, c2; uWP _ 0, c3; MAR _ [rhTT, 0EC{DBitsLoc}+0], c1; MDR _ uFF00{was 0}, c2; Q _ 71, c3; MAR _ [rhTT, 0ED{BorderLoc}+0], c1; MDR _ Rx{8800} or 22, c2; TOS _ LH.FMP, c3; DCtl_ Q LRot0, c1; TOS _ TOS LRot8, c2; TOS _ TOS or RH.FMP, c3; Stall: MAR _ [rhTT, IOPage.MP+0], BRANCH[Stall0, StallContinue], c1; Stall0: MDR _ TOS, GOTO[StallJn], c2; StallJn: Rx _ Rx - 1, ZeroBr, BRANCH[Stall, StallDone], c3; StallContinue: Q _ Q - 1, ZeroBr, GOTO[StallJn], c2; Burdock: IOPCtl _ 1, CANCELBR[$, 0F], c1; Rx _ 41, c2; DCtl _ Rx LRot0, TOSH _ 0, c3; StallDone: TOS _ KTval, CANCELBR[$], c1; uSTATE _ Q _ 0, c2; GOTO[EFCHaveLink], c3; {END}