{File name LispMapB00.mc Created: 24-Apr-84 10:00:25 } { Set[L0.RMAPB0.0, 00]; {used in PseudoColor} Set[L0.RMAPB0.1, 01]; Set[L0.RMAPB0.2, 02]; Set[L0.RMAPB0.3, 03]; Set[L0.RMAPB0.4, 04]; Set[L0.RMAPB0.5, 05]; Set[L0.RMAPB0.6, 06]; Set[L0.RMAPB0.7, 07]; Set[L0.RMAPB0.8, 08]; Set[L0.RMAPB0.9, 09]; Set[L0.RMAPB0.A, 0A]; Set[L0.RMAPB0.B, 0B]; Set[L0.RMAPB0.C, 0C]; Set[L0.RMAPB0.D, 0D]; Set[L0.RMAPB0.E, 0E]; Set[L0.RMAPB0.F, 0F]; Set[L0.WMAPB0.0, 00]; Set[L0.WMAPB0.1, 01]; Set[L0.WMAPB0.2, 02]; Set[L0.WMAPB0.3, 03]; Set[L0.WMAPB0.4, 04]; Set[L0.WMAPB0.5, 05]; Set[L0.WMAPB0.6, 06]; Set[L0.WMAPB0.7, 07]; Set[L0.WMAPB0.8, 08]; Set[L0.WMAPB0.9, 09]; Set[L0.WMAPB0.A, 0A]; Set[L0.WMAPB0.B, 0B]; Set[L0.WMAPB0.C, 0C]; Set[L0.WMAPB0.D, 0D]; Set[L0.WMAPB0.E, 0E]; Set[L0.WMAPB0.F, 0F]; Set[L1.RMAPB0.0, 00]; Set[L1.RMAPB0.1, 01]; Set[L1.RMAPB0.2, 02]; Set[L1.RMAPB0.3, 03]; Set[L1.RMAPB0.4, 04]; Set[L1.RMAPB0.5, 05]; Set[L1.RMAPB0.6, 06]; Set[L1.RMAPB0.7, 07]; Set[L1.RMAPB0.8, 08]; Set[L1.RMAPB0.9, 09]; Set[L1.RMAPB0.A, 0A]; Set[L1.RMAPB0.B, 0B]; Set[L1.RMAPB0.C, 0C]; Set[L1.RMAPB0.D, 0D]; Set[L1.RMAPB0.E, 0E]; Set[L1.RMAPB0.F, 0F]; Set[L1.WMAPB0.0, 00]; {used in PseudoColor} Set[L1.WMAPB0.1, 01]; {used in PseudoColor} Set[L1.WMAPB0.2, 02]; Set[L1.WMAPB0.3, 03]; Set[L1.WMAPB0.4, 04]; Set[L1.WMAPB0.5, 05]; Set[L1.WMAPB0.6, 06]; Set[L1.WMAPB0.7, 07]; Set[L1.WMAPB0.8, 08]; Set[L1.WMAPB0.9, 09]; Set[L1.WMAPB0.A, 0A]; Set[L1.WMAPB0.B, 0B]; Set[L1.WMAPB0.C, 0C]; Set[L1.WMAPB0.D, 0D]; Set[L1.WMAPB0.E, 0E]; Set[L1.WMAPB0.F, 0F]; Set[L1.TrapFixesB0.0, 00]; {Already used in this file} Set[L1.TrapFixesB0.1, 0]1; {Already used in this file} Set[L1.TrapFixesB0.2, 02]; {used in PseudoColor} Set[L1.TrapFixesB0.3, 03]; Set[L1.TrapFixesB0.4, 04]; Set[L1.TrapFixesB0.5, 05]; Set[L1.TrapFixesB0.6, 06]; Set[L1.TrapFixesB0.7, 07]; Set[L1.TrapFixesB0.8, 08]; Set[L1.TrapFixesB0.9, 09]; Set[L1.TrapFixesB0.A, 0A]; Set[L1.TrapFixesB0.B, 0B]; Set[L1.TrapFixesB0.C, 0C]; Set[L1.TrapFixesB0.D, 0D]; Set[L1.TrapFixesB0.E, 0E]; Set[L1.TrapFixesB0.F, 0F]; Set[L1.RegSaveRet.0, 00]; {used in PseudoColor} Set[L1.RegSaveRet.1, 01]; Set[L1.RegSaveRet.2, 02]; Set[L1.RegSaveRet.3, 03]; Set[L1.RegSaveRet.4, 04]; Set[L1.RegSaveRet.5, 05]; Set[L1.RegSaveRet.6, 06]; Set[L1.RegSaveRet.7, 07]; Set[L1.RegSaveRet.8, 08]; Set[L1.RegSaveRet.9, 09]; Set[L1.RegSaveRet.A, 0A]; Set[L1.RegSaveRet.B, 0B]; Set[L1.RegSaveRet.C, 0C]; Set[L1.RegSaveRet.D, 0D]; Set[L1.RegSaveRet.E, 0E]; Set[L1.RegSaveRet.F, 0F]; Set[L1.RestoreTosB0, 00], Set[L1.NoFixesB0, 01], Set[L1.RestoreAndExitB0, 00], Set[L1.RestoreAndPFB0, 01], Stored in NewFuncDef.dfn } 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} RLMapFixB0: Xbus ← Rx LRot0, XwdDisp, c3; Map ← [rhTT,TT], DISP2[RFixRFlagsB0], c1; MDR ← Rx or 10, L0Disp, GOTO[ReReadB0], c2, at[0, 4, RFixRFlagsB0]; MDR ← Rx or 10, L0Disp, GOTO[ReReadB0], c2, at[1, 4, RFixRFlagsB0]; MDR ← Rx or 10, L0Disp, GOTO[ReReadB0], c2, at[2, 4, RFixRFlagsB0]; L1Disp, GOTO[RWTrapB0], c2, at[3, 4, RFixRFlagsB0]; ReReadB0: Xbus ← 1, XDisp, RET[RMapFixCallerB0], 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} WLMapFixB0: Xbus ← Rx LRot0, XwdDisp, c3; Map ← [rhTT, TT], DISP2[FixWFlagsB0], c1; MDR ← Rx or 030, L0Disp, GOTO[ReWriteB0], c2, at[0, 4, FixWFlagsB0]; MDR ← Rx or 030, L0Disp, GOTO[ReWriteB0], c2, at[1, 4, FixWFlagsB0]; L1Disp, GOTO[RWTrapB0], c2, at[2, 4, FixWFlagsB0]; L1Disp, GOTO[RWTrapB0], c2, at[3, 4, FixWFlagsB0]; ReWriteB0: Xbus ← 1, XDisp, RET[WMapFixCallerB0], c3; RWTrapB0: DISP4[TrapFixesB0], c3; GOTO[TrapFixesDoneB0c2], c1, at[L1.NoFixesB0, 10, TrapFixesB0]; TOS ← uTOS, c1, at[L1.RestoreTosB0, 10, TrapFixesB0]; TOSH ← uTOSH, GOTO[TrapFixesDoneB0c3], c2; ufnZ30: Noop, c3; ufnZ10: Noop, c1; ufnZ20: TOS ← uTOS, c2; TOSH ← uTOSH, GOTO[ufnX10], c3; ufnX20: Noop, c2; ufnX30: Noop, c3; ufnX10: Bank ← EmuBank, c1; Noop, c2; S ← S + 1, CROSS[ufnB1], c3; OpTable0: Bank ← EmuBank, c1, at[OpcodeBase]; Noop, c2; CROSS[OpcodeBase], c3; SaveAllRegsB0: Noop, c*; SaveAllRegsShB0: uTOS ← TOS, c*; uTOSH ← TOSH, c*; SaveSomeRegsB0: uS ← S, c*;{c1} uPVx ← PV, L1Disp, c*;{c2} uPC ← PC, DISP4[SaveRegsB0Ret] c*;{c3} RestoreAllRegsAndExitB0: TOS ← uTOS, L1 ← L1.RestoreAndExitB0, c2; TOSH ← uTOSH, GOTO[RestoreSomeRegsB0], c3; RestoreAllRegsAndPFB0: TOS ← uTOS, L1 ← L1.RestoreAndPFB0, c2; TOSH ← uTOSH, GOTO[RestoreSomeRegsB0], c3; RestoreAllRegsB0: TOS ← uTOS, c*;{c2} RestoreMostRegsB0: TOSH ← uTOSH, c*;{c3} RestoreSomeRegsB0: rhS ← nRhS, c*;{c1} rhPV ← nRhS, c*;{c2} PV ← uPVx, c*;{c3} S ←uS, c*;{c1}{fix stack depth} S ← S - Q, L1Disp, c*;{c2} PC ← uPC, DISP4[RestoreRegsB0Ret], c*;{c3} Bank ← EmuBank, c1, at[L1.RestoreAndExitB0, 10, RestoreRegsB0Ret]; PC ← PC + 1, L2 ← L2.0, IBDisp, c2; L2 ← L2.0, DISPNI[OpTable0], c3; TrapFixesDoneB0c2: Noop, c2; TrapFixesDoneB0c3: Noop, c3; B0CrossToPFaultc1: Bank ← EmuBank, c1, at[L1.RestoreAndPFB0, 10, RestoreRegsB0Ret]; L1 ← L1.NoFixes, c2; CROSS[PFaultB1], c3; { E N D }