{File name: StartLisp.mc
don 19-Aug-83 15:28:50
}
Reserve[0F6F]; Reserve[0F78]; Reserve[0F7F,0FFF]; {Kernel}
SetTask[0];
Set[IOPage.keyBitsm1, 39];
StartAddress[Germ];
Germ:
L ← 41, CANCELBR[SetMDS,0F], c1, at[0,2,Germ];
L ← 41, CANCELBR[SetMDS,0F], c1, at[1,2,Germ];
SetMDS:
IOPCtl ← IOPInMode, c2;
DCtl ← L LRot0, c3;
uWP ← 0, ClrIntErr, c1;
TOS ← 0, rhMDS ← 0 c2;
rhTT ← TT ← uIOPage, c3;
{set all keys up; 1403A thru 14040 ← -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;
T ← T + 3, c3;
LastChance:
MAR ← [rhTT, IOPage.DSCB.syncCmd+0], c1;
MDR ← L, c2;
L ← 0, GOTO[EFCHaveLink], c3;