%
Page Numbers: Yes First Page: 1
Heading:
memA.mc (mem-ALL)February 1, 1980 8:52 PM%
title[memA];
top level;
* December 19, 1977 8:11 AM
%
ABOUT SOURCE FILE MAINTENANCE
The sources live on <d1source>memAllSource.dm and <d1source>diagnosticSubrs.dm. By loading those files the user acquires all the files necessary to assemble a new version of memAll:
memA.cm// assemble and place memAll.mc
memA.mc
// control file

see "insert" commands below for the subroutine files used by this program

memA.midas
// set up midas context
memAtoIfs.cm
// make new: [ifs]<d1source>memASource.dm,<d1>memAll.dm
memA.files
// list of memAll files put in memASource.dm
preamble.mc
// preamble code that that preceeds memAll
postamble.mc
// postamble code that that follows memAll
kernelalu.mc
// defines alu ops for this diagnostic
To make a new version of memA:
ftp maxc load <d1source>memASource.dm, load <d1source>diagnosticSubrs.dm
<make your changes in memA.mc>
@memA.cm// assemble and place the microcode
@memAToIFS.cm// move the sources, .mb file to maxc
%
%
February 1, 1980 8:52 PM
add restartDiagnostic label and code.
June 25, 1979 2:10 PM
resetIfu inside initMemTest.
%
afterSubrs:
restartDiagnostic:
t←1c;
stkp←t;
begin:
call[initMemTest];;
* now tpc[17] ← 7777C. midas puts a breakpoint in this address. anywakeups
* are probably errors -- unless specifically managed by the code
* call[aHaltTask17];

call[disableConditionalTask];
call[beginCtest];
afterCtest:
call[initMemTest];
call[beginXtest];
afterXtest:
call[initMemTest];
call[beginDtest];
afterDtest:
call[initMemTest];
call[beginStest];
afterStest:
%
call[initMemTest];
insert[memPipeAndFaultA]
call[initMemTest];
goto[beginFIOtest];
afterFIOtest:
%
afterTest:
call[initMemTest];
branch[done];
initMemTest: subroutine;
RBASE ← rbase[defaultRegion];
rscr ←link;
top level;
t ← r0 ← t-t, ifuReset;
rm1 ← cm1;
r1 ← t + 1;
rhigh1 ← 100000C;
r01 ← not(r10);
t ← (r0)+1;
stkp ← t;
ProcSRN←r0;
returnUsing[rscr];

* November 29, 1977 10:31 AM
* CODE for midas debugging
top level;
set[dbgTbls,100];
l1: branch[l1],at[dbgTbls,0];
l2:noop,at[dbgTbls,1];
branch[l2],at[dbgTbls,2];
l3:noop,at[dbgTbls,3];
noop,at[dbgTbls,4];
branch[l3],at[dbgTbls,5];
l4:noop,at[dbgTbls,6];
noop,at[dbgTbls,7];
noop,at[dbgTbls,10];
branch[l4],at[dbgTbls,11];
l5:noop,at[dbgTbls,12];
noop,at[dbgTbls,13];
noop,at[dbgTbls,14];
noop,at[dbgTbls,15];
branch[l5],at[dbgTbls,16];
l6:noop,at[dbgTbls,17];
noop,at[dbgTbls,20];
noop,at[dbgTbls,21];
noop,at[dbgTbls,22];
noop,at[dbgTbls,23];
branch[l6],at[dbgTbls,24];

branch[begin];

END;