%
Page Numbers: Yes First Page: 1
Heading:
memProcA.mcJune 17, 1981 11:08 AM%
title[MemProcA];
top level;

%
June 17, 1981 11:08 AM
Create this file
A FEW RULES

Subroutines clobber rscr, rscr2 and T unless otherwise specified at both point of call and in subroutine description. Subroutines return single values in T, and they accept single values in T. Two parameter subroutines accept their values in rscr and rscr2.
Global values for S board

Abbreviations used herein
iInit
MMap
colColumn
SStorage
aAll
pPipe
apAllPipe (test pipe, use all of memory system)
nextFooincrements foo loop variable, returns with fast branch condition to check for done w/ loop
getFooreturns current value of loop variable, foo
getFooRtnsubroutine that returns in T the saved value of foo’s return link
iFooCtrlinitialize foo loop control
%

* June 17, 1981 11:08 AM
%
Test MD path in shifter/masker
The Shifter/masker allows the processor to deposit an arbitrary sized field into a word coming from MD. This test checks that these things all work. We assume that kernel’s shifter test has already run. That test assures that the shifter works properly.
This test checks that the MD data paths associated witht he shifter work
%
* June 17, 1981 11:16 AM
%
aProcShifter
This test checks parts of the map that require all the boards of the memory system.

Check the ref bit (only set when a page is actually referenced)
Check that wp (write protect) bit causes page faults

RSCR3= original contents of current map entry
RSCR4= current page in Map
%
aProcShifter:
pushReturn[];
call[disableConditionalTask];* don’t run HOLD simulator
call[iSboard];* init Sboard in case its not happened already
call[getMemState];
t AND (memState.aProcShift);* see if our test is enabled
branch[aProcShifterXit, ALU=0];
noop;

rscr←a0;
call[setBR], rscr2← a0;
Store←rscr, DBuf←rscr, t← a1;
Store←1s, DBuf← t;
Fetch← 0s;* get md=zero

t← DpF[t,1,0,Md];* isolate 1 bit (b15) in t and add to Md
t # (1C);
skpif[ALU=0];
aProcShiftErr1:* we expect all zeros because
error;* Md is zero and the field was 0 length

t←a1;
t← DpF[t, 1,17, Md];* isolate 1 bit (b0) in t and add to Md
t # (100000C);
skpif[ALU=0];
aProcShiftErr2:
error;

Fetch←1s, t← a0;
t← DpF[t, 1,0, Md];* isolate one zero bit (b15) and add to Md
(t) # (177776C);;
skpif[ALU=0];* we expect all ones because
aProcShiftErr3:* Md is all ones and the field was 0 length
error;

t← DpF[t, 1,17, Md];* isolate one zero bit (b0) and add to Md
(t) # (77777C);
skpif[ALU=0];* we expect all ones because
aProcShiftErr4:* Md is all ones and the field was 0 length
error;
noop;


aProcShifterXit:
returnP[];