{File name: TestPreEtherProtected.mc

LastEdited: Sturgis: 4-Oct-83 13:45:07, from Protected, to allow assembly with PreEtherIntitial, to defeat Burdock multi file problems, remove duplicate register names, and label names, and remove Reserve statement. All we need is the refresh and timeout code.
Last Edited: Amy Fasnacht November 16, 1981 2:22 PM: Change register names
Last Edited: Jozef Furst November 4, 1981 3:18 PM: multiple allocation corrected (Carry changed to RefCarry)
Last Edited: Amy Fasnacht October 23, 1981 11:40 AM: Change register names to prevent conflict with SAx00Initial.mc names
Last Edited: Amy Fasnacht September 11, 1981 9:52 AM: make clock update atomic
Last Edited: Jim Frandeen August 19, 1981 4:30 PM: add clock update to refresh task.
Description: Protected microcode for Initial,
Author: Jarvis,
Created: December 5, 1980,
}
Set[OverlayStart, Add[ProtectFence, 1]];



SetTask[0];



SetTask[1]; StartAddress[Refresh];

{We come here once per line, or every 28.8 usec.
That means 34,722 times per second}
Refresh:
rJ ← rJ - 1 {Decrement clock low}, ZeroBr, Refresh, CANCELBR[$, 0F],c1;
BRANCH[NoCarry, RefCarry],c2;

RefCarry:
rG ← rG - 1 {Decrement clock high}, GOTO[TestTimeoutX],c3;
NoCarry:
Noop,c3;
TestTimeoutX:
Ybus ← rJ or rG, ZeroBr, Refresh,c1;
rN ← 1, BRANCH[$, Timeout],c2;
ClrDPRq, GOTO[Refresh],c3;

Timeout:
uTimeout ← rN, ClrDPRq, GOTO[Refresh],c3;