//**************************************************************************************
//RDC1a.tst
//More Processor Interface Tests
//By J. F. Cameron
July 11, 1978
//Last modified by J. F. Cameron
June 13, 1980
//**************************************************************************************
//**************************************************************************************
//To include the following definition files in the compilation
get "tester.d"
get "RDC.d"

//**************************************************************************************
//To define bus structure
//{CTask: CTask.0, CTask.1, CTask.2, CTask.3}
//{IAddr: Iaddr.0, Iaddr.1, Iaddr.2, Iaddr.3, Iaddr.4, Iaddr.5, Iaddr.6, Iaddr.7}
//{OData: Odata.00, Odata.01, Odata.02, Odata.03, Odata.04, Odata.05, Odata.06, Odata.07, Odata.08, Odata.09, Odata.10, Odata.11, Odata.12, Odata.13, Odata.14, Odata.15}

//**************************************************************************************
//Test14
To test:IData macro and Idata (IDWord)

let Test14() be
[
L14: Start()
IData(IDWord)//Read IDWord

//SubTest14.1.0; Checks IDWord content
let idw = idt & 1767b
if not Compare("IDWord", idw, 1407b, "IDWord error;*n check Idata register, and Idata MUX’s.", 2, 1) goto L14

//SubTest14.2.0; Checks IDWord parity
if not Compare("Err", ParErr, 0, "Idata parity error;*n check Idata.16 MUX.", 2, 2) goto L14

if Stop() goto L14
return
]

//Test15
To test:Reset; OFault; Run; Abort (set by OFaultF & Write Fault)
let Test15() be
[
L15: Start()

//SubTest15.1.0; Checks that RUN sets Reset via AllowWake
{RUN} = 0
EClock()
if not Compare("RstAbrt/Err’", {RstAbrt/Err’}, 0, "Reset not set by RUN;*n possible failures are Reset gate or RUN receiver.", 2, 1) goto L15
{RUN} = 1

//SubTest15.2.n; Checks that GeneralReset output function controls Reset
SetCaddr()
{IAddr} = Caddr lshift 4
{AdvancePipe’} = 0
EClock()
{AdvancePipe’} = 1
{MC2StartXport} = 1
EClock()
{MC2StartXport} = 0
{OValid’} = 0
{OData} = 0
EClock()

if not Compare("RstAbrt/Err’", {RstAbrt/Err’}, 0, "GeneralReset not true;*n possible failures are Oaddr decode or Reset gate.", 2, 2) goto L15
{OValid’} = 1
EClock()

//SubTest15.3.0; Checks that Abort is reset
OData(ErrReset)

if not Compare("Abort", {Abort}, 0, "Abort not reset by RstAbrt/Err;*n check RstAbrt/Err gates or Abort FF.", 2, 3) goto L15

if Stop() goto L15
return
]