*-----------------------------------------------------------
Title[EMemDefs.mc...September 23, 1981 4:15 PM...Taft];
* Memory system definitions
*-----------------------------------------------------------

MC[b0, 100000];
MC[b1, 40000];
MC[b2, 20000];
MC[b3, 10000];
MC[b4, 4000];
MC[b5, 2000];
MC[b6, 1000];
MC[b7, 400];
MC[b8, 200];
MC[b9, 100];
MC[b10, 40];
MC[b11, 20];
MC[b12, 10];
MC[b13, 4];
MC[b14, 2];
MC[b15, 1];

* B← NOT (FaultInfo’)
MC[fi.emuFault, b8];* emulator made a fault
MC[fi.numfaults, b9, b10, b11]; * nFaults-1 at time pipe read

* B← Pipe4 (←Errors) constants and Values
MC[pipe4.ref, b0];
MC[pipe4.notMapTrouble, b1];
MC[pipe4.wProtect,b2];
MC[pipe4.dirty, b3];
MC[pipe4.vacant, b2, b3];* vacant is dirty & wProtect
MC[m1pipe4.wpdref, b0, b2, b3]; * all the ref bits

MC[pipe4.notMemError, b4];
MC[pipe4.notEcFault, b5];
MC[pipe4.quadWordMask, 1400];
MC[pipe4.syndromeMask,377];

* B← Pipe5 Constants and values
MC[pipe5.MbufBusy, b0];* map buf busy
MC[pipe5.store’, b4];

* MCR Constants and values
Set[mcr.mcrVshift, 13];* left shift "column" for position in mcr
MC[mcr.noWake, b15];* no faulttask wakeups
MC[mcr.noReportSE, b14];* don’t report single errors
MC[mcr.noRefHold, b9,b10];* disable hold and memory references
MC[mcr.noRef, b10];* no storage references
MC[mcr.disHold, b9];* disable hold
MC[mcr.disCF, b8];* disable base registers
MC[mcr.disBR, b8];* disable cache flags
MC[mcr.useMCRv, b2];* use mcr for victim/next-victim
MC[mcr.fdMiss, b1];* force dirty victim

* CFlags constants and values
MC[cflags.dirty, b8];
MC[cflags.vacant, b9];
MC[cflags.wProtect, b10];
MC[cflags.beingLoaded, b11];
MC[cflags.mask, b8, b9, b10, b11];
Set[cflags.lshift, 4];

* B← Config -- Memory configuration definitions
MC[ChipSize, b12, b13];* bits per chip = 2↑(12 + 2*n)
MC[M0bit, 200];
MC[M1bit, 100];
MC[M2bit, 40];
MC[M3bit, 20];
MC[anyModule, M0bit, M1bit, M2bit, M3bit];

MC[tsyn.econ, 200];
MC[TIOAvacantmapEntry, 140000];
MC[TIOAwProtect, 100000];
MC[TIOAusedMapEntry, 0];