{
File : NRMAP.mc
Author : Gwan Santosa
Date : 21-Jun-85 10:28:03
}
SetTask[0];
{*************************
Read Map Update Subroutine
**************************}
{Timing: 4 cycles}
{Enter at cycle 3, returns to cycle1}
{returns thru L0 if map fixed ok}
{returns thru L1 if wants to trap}
{
NRLMapFixB2:
Xbus ← Rx LRot0, XwdDisp, c3;
Map ← [rhTT,TT], DISP2[NRFixRFlagsB2], c1;
MDR ← Rx or 10, L0Disp, GOTO[NReReadB2], c2, at[0, 4, NRFixRFlagsB2];
MDR ← Rx or 10, L0Disp, GOTO[NReReadB2], c2, at[1, 4, NRFixRFlagsB2];
MDR ← Rx or 10, L0Disp, GOTO[NReReadB2], c2, at[2, 4, NRFixRFlagsB2];
L1Disp, GOTO[NRWTrapB2], c2, at[3, 4, NRFixRFlagsB2];
NReReadB2:
Xbus ← 1, XDisp, RET[NRMapFixCallerB2], c3;
{*************************
Write Map Update Subroutine
**************************}
{Timing: 4 cycles}
{Enter at cycle 3, returns to cycle1}
{returns thru L0 if map fixed ok}
{returns thru L1 if wants to trap}
NWLMapFixB2:
Xbus ← Rx LRot0, XwdDisp, c3;
Map ← [rhTT, TT], DISP2[NFixWFlagsB2], c1;
MDR ← Rx or 030, L0Disp, GOTO[NReWriteB2], c2, at[0, 4, NFixWFlagsB2];
MDR ← Rx or 030, L0Disp, GOTO[NReWriteB2], c2, at[1, 4, NFixWFlagsB2];
L1Disp, GOTO[NRWTrapB2], c2, at[2, 4, NFixWFlagsB2];
L1Disp, GOTO[NRWTrapB2], c2, at[3, 4, NFixWFlagsB2];
NReWriteB2:
Xbus ← 1, XDisp, RET[NWMapFixCallerB2], c3;}
{*************************
Read Write Map Update Subroutine
**************************}
{Timing: 4 cycles}
{Enter at cycle 3, returns to cycle1}
{returns thru L0 if map fixed ok}
{returns thru L1 if wants to trap}
NRWLMapFixB2:
Xbus ← Rx LRot0, XwdDisp, c3;
Map ← [rhTT, TT], DISP2[NFixRWFlagsB2], c1;
MDR ← Rx or 030, L0Disp, GOTO[NRReWriteB2], c2, at[0, 4, NFixRWFlagsB2];
MDR ← Rx or 030, L0Disp, GOTO[NRReWriteB2], c2, at[1, 4, NFixRWFlagsB2];
L1Disp, GOTO[NRWTrapB2], c2, at[2, 4, NFixRWFlagsB2];
L1Disp, GOTO[NRWTrapB2], c2, at[3, 4, NFixRWFlagsB2];
NRReWriteB2:
Xbus ← 1, XDisp, RET[NRWMapFixCallerB2], c3;
NRWTrapB2:
DISP4[NTrapFixesB2], c3;
GOTO[NTrapFixesDoneB2c2], c1, at[L1.NoFixesB2, 10, NTrapFixesB2];
TOS ← uTOS, c1, at[L1.RestoreTosB2, 10, NTrapFixesB2];
TOSH ← uTOSH, GOTO[NTrapFixesDoneB2c3], c2;
NTrapFixesDoneB2c2:
, c2;
NTrapFixesDoneB2c3:
, c3;
NB2CrossToPFaultc1:
Bank ← EmuBank, c1;
L1 ← L1.NoFixes, c2;
CROSS[PFaultB1], c3;