//**************************************************************************************
//*** UTVFC1.TST
***
//*** Updated for Rev.H May 25.1979
//*** Updated for Rev.F January 24. 1979
//*** Updated for Rev.D November 13.1978
//*** Rev.B
June21.1978
//*** V.Vysin
//*** First Test program
//**************************************************************************************


//**************************************************************************************
//To include the following definition files in the compilation
get "tester.d"
get "UTVFC.d"

//**************************************************************************************
//Test 11: To test Addr Shift-Reg. on p.1
//
& Input Addr. Comparator on p.1
//
& CTask compare,OMeF and IMeF frip-frop on p.3
//{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}

let Test11() be
[
Start()
//SubTest11.1 to clear the Addr Shift-Reg.
for i=0 to 3 do
[
{SRIn’}=0
SRClock()
]
Compare("SROut’", {SROut’}, 0, "UTVFC Address register failed to clear", 1)
// SubTest 11.2 to check the input address Comparator (p1),CTask Compare and OMeF and IMeF //frip-frops (p.3) with travelling block of ones
//pat1 table represents the inverse of the pattern:1000;1100;1110;1111 which gets shifted into CA
//iaddrval1 table represents IAddr bus with the inverse pattern
// and left shift 4-bit to match Caddr
let pat1=table [ #7; #3; #1; #0 ]
let iaddrval1=table [ #160; #060; #020; #000 ]
let k=0
for i=0 to 3 do
[
Compare("SROut",{SROut’},0," v35 outa shape",2,i)
{SRIn’}=1
SRClock()
for j = 0 to 15 do
[
{CTask}=j
test j eq (pat1!i) //compares if CTask compl/Caddr
ifso
[
let k=100*i+j
Compare("MyTask",{MyTask}, 1, "Compare circuit fails",3,k)
{IAddr}=iaddrval1!i ; // ICompare =1
EClock()
Compare("IMeF",{IMeF’}, 1, "failed to reset",4,k)
SetIMeF()
Compare("IMeF",{IMeF’}, 0, "failed to set",5,k)
{IValid’}=1
InputSequ()
Compare("OMeF",{OMeF}, 0, "failed to reset",6,k)
SetOMeF()
Compare("OMeF",{OMeF}, 1, "failed to set",7,k)
ResetOMeF()
]
ifnot
[
let k=100*i+j
Compare("MyTask",{MyTask}, 0, "Compare circuit is stuck at one",8,k)

EClock()
Compare("IMeF",{IMeF’}, 1, "should have been reset",9,k)
Compare("OMeF",{OMeF}, 0, "should have been reset",10,k)
]
]
]
// SubTest 11.3 to check the input address Comparator (p1),CTask Compare and OMeF (p.2) and IMeF (p.3) //frip-frops with travelling block of xeros
//pat2 table represents the inverse of the pattern:0111;0011;0001;0000 which gets shifted into CA
//iaddrval1 table represents IAddr bus with the inverse pattern
// and left shift 4-bit to match Caddr
let pat2=table [ #10; #14; #16; #17 ]
let iaddrval2=table [ #200; #300; #340; #360 ]
let k=0
for i=0 to 3 do
[
Compare("SROut’",{SROut’},1," v35 outa shape",11)
{SRIn’}=0
SRClock()
for j = 0 to 15 do
[
{CTask}=j
test j eq (pat2!i) //compares if CTask compl/Caddr
ifso
[
let k=100*i+j
Compare("MyTask",{MyTask}, 1, "Compare circuit fails",12,k)
{IAddr}=iaddrval2!i ;//ICompare =1
EClock()
Compare("IMeF",{IMeF’}, 1, "failed to reset",13,k)
SetIMeF()
Compare("IMeF",{IMeF’}, 0, "failed to set",14,k)
{IValid’}=1
InputSequ()
Compare("OMeF",{OMeF}, 0, "failed to reset",15,k)
SetOMeF()
Compare("OMeF",{OMeF}, 1, "failed to set",16,k)
ResetOMeF()
]
ifnot
[
let k=100*i+j
Compare("MyTask",{MyTask}, 0, "Compare circuit is stuck at one",17,k)

EClock()
Compare("IMeF",{IMeF’}, 1, "should have been reset",18,k)
Compare("OMeF",{OMeF}, 0, "should have been reset",19,k)
]
]
]


//to set CAddr =1,1,1,1. for Test 2
for i=0 to 3 do
[
{SRIn’}=1
SRClock()
]
{IAddr}=#0; //it is #17 from the previous test
{CTask}=#0; //it is #17 from the previous test

Compare("MyTask",{MyTask},1,"Compare went berserk",20) //just to verify
Compare("SROut’",{SROut’},1,"should be one now",21)
Stop()
]

//after this test : ICompare=1
// ICompr =1
//
CAddr=1,1,1,1

//Hereby,the UTVFC Address Register (p.1) ,Input Address Comparator, Current Task
// Comparator(p.3) and OMeF,IMef flip flops (p.1) are declared functional and in fine shape.

//*************************************************************************************

//Test 12: To verify clocks on p.5 (Except cursor related clocks )

//{Clocks: ClkCR’, ClkStart’, ClkIAR’, WriteHorCont’, WriteOddBuf’, WriteEvenBuf’}

and Test12() be
[
Start()
{IAddr}=0 ; //Oaddr 4’, 5’, 6’, 7’ =1111 ... ClkCR’
InputSequ()
{OValid’} =0
Compare("Clocks-",{Clocks},#77,"something stuck at 1 in decode or OARs",1 )
EClock() //OMeF sets
{EdgeClockFeed’} =0
Compare("Clocks",{Clocks},#37,"ClkCR’ decode or OAR2 fails",2 )
{EdgeClockFeed’} =1
ResetOMeF()
{IAddr}=1 ; //Oaddr 4’, 5’, 6’, 7’ =1110 ... ClkStart
InputSequ()
{OValid’} =0
Compare("Clocks-",{Clocks},#77,"something stuck at 1 in decode or OARs",3 )
EClock() //OMeF sets
{EdgeClockFeed’} =0
Compare("Clocks",{Clocks},#57,"ClkStart’ decode or OAR2 fails",4)
{EdgeClockFeed’} =1
ResetOMeF()

{IAddr}=2 ; //Oaddr 4’, 5’, 6’, 7’ =1101 ... WriteHorCont’
InputSequ()
{OValid’} =0
Compare("Clocks-",{Clocks},#77,"something stuck at 1 in decode or OARs",5 )
EClock() //OMeF sets
{RamClockFeed’} =0
Compare("Clocks",{Clocks},#73,"WriteHorCont’ decode or OAR2 fails",6 )
{RamClockFeed’} =1
ResetOMeF()

{IAddr}=3 ; //Oaddr 4’, 5’, 6’, 7’ =1100 ... ClkIAR’
InputSequ()
{OValid’} =0
Compare("Clocks-",{Clocks},#77,"something stuck at 1 in decode or OARs",7 )
EClock() //OMeF sets
{EdgeClockFeed’} =0
Compare("Clocks",{Clocks},#67,"ClkIAR’ decode or OAR2 fails",8 )
{EdgeClockFeed’} =1
ResetOMeF()


{IAddr}=8 ; //Oaddr 4’, 5’, 6’, 7’ =0111 ... Write Even/Odd Buf’/LdIAR’
InputSequ()
{OValid’} =0
Compare("Clocks-",{Clocks},#77,"something stuck at 1 in decode or OARs",9 )
EClock() //OMeF sets
{RamClockFeed’} =0

let e ={EvenLine}
test e eq 1
ifso
[
Compare("Clocks",{Clocks},#75,"Write OddBuf’ decode or OAR2 fails",10 )
]
ifnot
[
Compare("Clocks",{Clocks},#76,"WriteEvenBuf’ decode or OAR2 fails",11 )
]
{RamClockFeed’} =1
{EdgeClockFeed’} =0
Compare("Clocks",{Clocks},#67,"u96c kaput",12 )
{EdgeClockFeed’} =1
ResetOMeF()
Stop()
]

//We now can expect the clock signals to tick well

//**************************************************************************************