{File name: StartCedar1.mc Description: Cedar emulator initialization, Last Edited: Trow 28-Oct-87 2:44:31 Created. } Set[xtFC0, 1] {see description of bits in Xfer}; GOTOABS[B1MP799], c3, at[BxMP799]; {write 799 in maintenance panel} MP799: TT ¬ uMaintPanel, {maint panel code} c1, at[B1MP799]; rhTT ¬ uIORgnHigh, c2; Noop, c3; TOS ¬ 1F, c1; TOS ¬ TOS LRot8, c2; TOS ¬ TOS or 3 {1F03 byteswapped = 799'd}, c3; MAR ¬ [rhTT, TT + 0], c1; MDR ¬ TOS, c2; TT ¬ TT + 1, {maint panel down-notify mask} c3; MAR ¬ [rhTT, TT + 0], c1; Noop, c2; TOS ¬ MD, c3; {TOS contains notify mask: byte-mask in high byte, byte offset in low} T ¬ uMesaProc, c1; rhT ¬ uIORgnHigh, c2; TT ¬ LShift1 (T + downNotifyBits), LOOPHOLE[niblTiming], c3; MAR ¬ [rhT, T + notifiersLockMask], c1; STK ¬ TOS, T ¬ TOS and ~0FF, CANCELBR[$,0], c2; TOS ¬ MD, L4 ¬ SoftwareLockRets.StartCedar, c3; rhTT ¬ STK, XLDisp, c1; {the following branch is reversal of Mesa byte order to do byte-swapping for IOP} TT ¬ RShift1 (TT + rhTT), LOOPHOLE[niblTiming], BRANCH[LowByteMask,$,2], c2; rhT ¬ lock.or, SetMPIntIOP, CALL[SoftwareLock], c3; LowByteMask: rhT ¬ lock.or, SetMPIntIOP, c3; MAR ¬ [rhIORgn, rIORgn + iopRequestsLock], c1; T ¬ T LRot8, CANCELBR[SoftwareLockSideDoor,0], c2; MDR ¬ 0, CANCELBR[$,0], c2, at[SoftwareLockRets.StartCedar,10,SoftwareLockRets]; TOS ¬ rhMDS, ClrMPIntIOP, c3; LastChance: Noop, c1; SetIE, c2; rhT _ xtFC0, c3; TT ¬ uSDAddr, c1; T _ TT + 276'b {T _ 1376'b}, c2; Udest _ T, L _ 0, YDisp, GOTO[EFCHaveLink], c3;