//************************************************************************************** //MEMC1.TST //By B. Rosen and M. Thomson November 22, 1978 //Sub Test Program for D0 MEM Module //************************************************************************************** get "memc.d" //Edge pin and test connector signal busses available to this sub-test: //{Map.0406: Map.04,Map.05,Map.06} //{Map.0708: Map.07,Map.08} //{Mapbus: LogSngErr, WriteProtect,Dirty,Referenced, Map.04,Map.05,Map.06, Map.07,Map.08,Map.09, Map.10,Map.11,Map.12, Map.13,Map.14,Map.15} //{MC1Pipe.0003: MC1Pipe.0, MC1Pipe.1,MC1Pipe.2,MC1Pipe.3} //{R.0815: R.08,R.09, R.10,R.11,R.12, R.13,R.14,R.15} //{SB.0003: SB0, SB1,SB2,SB3} //{SelCard.0007: SelCard0,SelCard1, SelCard2,SelCard3,SelCard4, SelCard5,SelCard6,SelCard7} //{StorA.0006: StorA0, StorA1,StorA2,StorA3, StorA4,StorA5,StorA6} //************************************************************************************** //Test 1: Check the logic driven by the Map Memory output bits (pages 7,8,11,15) let Test1() be [ SpeakTest(1) //set initial conditions (see notes at end of MEMC.TEST) //PART 1: Check that the Map outputs are disabled // Check for shorts in the Mapbus lines //Check that the Map control terms were all raised by SpeakTest //{t1bus1: MapCAS',MapRAS', MapWrite',MC1Ref',MC1Store'} WCompare({t1bus1},#37,1000) for i = 0 to 15 do [ {Mapbus} = 1 lshift i WCompare({Mapbus},1 lshift i,1050+i) ] //PART 2: Check the SelCard[0:7] and SB[0:3] logic (page 8) //Set prom b11 address to 0011x (SpeakTest sets it to 1111x) {ALUF.0}=0; {ALUF.1}=0 for i = 0 to 15 do [ //Set up Refresh' and Refresh'b to = i[12]' by controllong the prom b11 address (page 15) // i[12]=0 => address=0001x for Refresh'_1 // i[12]=1 => address=0011x for Refresh'_0 {ALUF.2} = i< ClockAd': MC1Pipe.0_(MC1Pipe.0=0)' (i.e. MC1Pipe.0_1) //MC1Pipe.0=1 => no ClockAd', hence MC1Pipe.0 stays =1 WCompare({MC1Pipe.0},1,2000) //verify MC1Pipe.0=1 for i = 0 to 255 do [ //Set up prom i7 address bits (7 bits,,logic high) //WriteProtect,Dirty,MOBounds,Referenced _ i[9:12] //ALUF.3_i[13] for MC1Ftype.0 _ i[13] (via prom b11) //ALUF.2_i[14]' for MC1Ftype.1 _(i[14] & i[13]') (via prom b11) //{t2bus1: WriteProtect,Dirty,MOBounds, Referenced,ALUF.3,ALUF.2} {t2bus1} = (i xor 2) rshift 1 {PAbort}=0; //for LDisableMC1'_1, hence LoadAd=1 to enable ClockAd' EClock() //ClockAd': b9 ff's _ b11 prom (page 15) //MC1Ftype.0 _ i[13] //MC1Ftype.1 _(i[14] & i[13]') //MC1Pipe.0 _ i[15] (since MC1Pipe.0_MC1Pipe.0') {PAbort}=1; //disable ClockAd' to keep MC1Pipe.0 from toggling on next clock //Calculate the prom i7 address (all possible usable addresses are generated) //(The lsb of the address is logic high, hence the address calculated //is actually one half of the actual address) let a = i & #164 //bits 9,10,11,13 let b = (i<