//************************************************************************************** //D0CS10.TST //By B. Rosen and M. Thomson February 7, 1979 //Sub Test Program for D0 CS Module //************************************************************************************** get "d0cs.d" //Edge pin signal busses used by D0CS module: (none) //************************************************************************************** //This is not a test but a procedure let LoadBootROM() be [ //Load Boot Rom simulator //StuffMicroWord(adr,mi,rm,rsel,aluf,bsel,f1,lr,lt,f2,jc,ja,BadPar) //first 16 patterns count in fields which do not affect the CS board for i=0 to 15 do //set up first patterns for test 3 StuffMicroWord(i,i,i,(i lshift 2)+3,i,i,0,i,i,i,GoTo,i+1,0) //next 16 are APC&APCTask _,Branch i+1 for test 4 for i=0 to 15 do StuffMicroWord(i+20b,0,0,3,0,2,7,0,0,#10,Branch+(i&3),i+17,0) //next 16 are UseCTask,Call i+1 for test 5 for i=0 to 15 do StuffMicroWord(i+40b,0,0,3,0,2,7,0,0,#13,Call,i+33,0) //next 16 do Page_,Return (forced Short Fld Disp to load APC) for test 6 for i=0 to 15 do StuffMicroWord(i+60b,0,0,3,0,2,5,0,0,(i eq 15?1,i),(i eq 0?GoTo,Return),(i eq 0? 61b,0),0) //The next 2 instructions are used in the first part of test 7 StuffMicroWord(400b,0,0,3,0,1,0,0,0,0,Branch,00b,0) //Wake-up loop StuffMicroWord(401b,0,0,3,0,1,0,0,0,0,GoTo,02b,0) //Nop for WakeUp //The next 2 instructions are used in the second part of test 7 StuffMicroWord(402b,0,0,3,0,1,0,0,0,0,Branch,02b,0) //BBFA loop StuffMicroWord(403b,0,0,3,0,1,0,0,0,0,GoTo,20b,0) //Nop for BBFA //the following line loads #125252..... @1000 for Test 8 StuffMicroWord(1000b,0,1,47b,5,1,5,1,0,12b,5,25b,0) //in the tables that follow, the first entry of a group of 13 words is the control store //location, the other words are the fields of the instruction. let t1 = table //instructions for test 9 [ 420b;0;0;3;0;2;7;0;0;10b;GoTo;21b;0 //APC_adr 421b;0;0;3;0;2;7;0;0;16b;Return;22b;0 //ReadCS 422b;0;0;3;0;3;0;0;0;00b;GoTo;23b;0 //CSIn_Data 423b;0;0;3;0;2;7;0;0;10b;GoTo;24b;0 //APC_Adr 424b;0;0;3;0;2;7;0;0;14b;Return;25b;0 //WriteCS 425b;0;0;3;0;2;7;0;0;11b;GoTo;26b;0 //APC_Adr 426b;0;0;3;0;2;7;0;0;16b;Return;27b;0 //ReadCS 427b;0;0;3;0;2;7;0;0;10b;GoTo;30b;0 //APC_Adr 430b;0;0;3;0;2;7;0;0;15b;Return;31b;0 //WriteCS 431b;0;0;3;0;2;7;0;0;10b;GoTo;32b;0 //APC_Adr 432b;0;0;3;0;2;7;0;0;16b;Return;33b;0 //ReadCS 433b;0;0;3;0;2;7;0;0;11b;GoTo;34b;0 //APC_Adr 434b;0;0;3;0;2;7;0;0;16b;Return;35b;0 //ReadCS ] for i = 0 to 12 do [ let x = lv(t1!(13*i)) StuffMicroWord(x!0,x!1,x!2,x!3,x!4,x!5,x!6,x!7,x!8,x!9,x!10,x!11,x!12) ] let t2 = table //instructions for test 10 [ 435b;0;0;3;0;3;0;0;0;00b;GoTo;36b;0 //CSIn_ 436b;0;0;3;0;2;7;0;0;10b;GoTo;37b;0 //APC_Adr 437b;0;0;3;0;2;7;0;0;14b;Return;70b;0 //WriteCS 470b;0;0;3;0;2;7;0;0;10b;GoTo;40b;0 //APC_Adr 440b;0;0;3;0;2;7;0;0;15b;Return;41b;0 //WriteCS 441b;0;0;3;0;2;7;0;0;10b;GoTo;42b;0 //APC_Adr 442b;0;0;3;0;2;7;0;0;16b;Return;43b;0 //ReadCS 443b;0;0;3;0;3;0;0;0;00b;GoTo;44b;0 //CSIn_ 444b;0;0;3;0;2;7;0;0;10b;GoTo;45b;0 //APC_Adr 445b;0;0;3;0;2;7;0;0;14b;Return;71b;0 //WriteCS 471b;0;0;3;0;2;7;0;0;10b;GoTo;46b;0 //APC_Adr 446b;0;0;3;0;2;7;0;0;15b;Return;47b;0 //WriteCS 447b;0;0;3;0;2;7;0;0;10b;GoTo;50b;0 //APC_Adr 450b;0;0;3;0;2;7;0;0;16b;Return;51b;0 //ReadCS 451b;0;0;3;0;3;0;0;0;00b;GoTo;52b;0 //CSIn_ 452b;0;0;3;0;2;7;0;0;10b;GoTo;53b;0 //APC_Adr 453b;0;0;3;0;2;7;0;0;14b;Return;72b;0 //WriteCS 472b;0;0;3;0;2;7;0;0;10b;GoTo;54b;0 //APC_Adr 454b;0;0;3;0;2;7;0;0;15b;Return;55b;0 //WriteCS 455b;0;0;3;0;2;7;0;0;10b;GoTo;56b;0; //APC_Adr 456b;0;0;3;0;2;7;0;0;16b;Return;57b;0; //ReadCS 457b;0;0;3;0;2;7;0;0;10b;GoTo;60b;0; //APC_ 460b;0;0;3;0;3;0;0;0;00b;Return;00b;0; //return ] for i = 0 to 22 do [ let x = lv(t2!(13*i)) StuffMicroWord(x!0,x!1,x!2,x!3,x!4,x!5,x!6,x!7,x!8,x!9,x!10,x!11,x!12) ] let t3 = table //more instructions for test 10 [ 461b;0;0;3;0;2;5;0;0;03b;GoTo;62b;0; //Page_3 462b;0;0;3;0;3;0;0;0;00b;GoTo;35b;0; 1435b;0;0;3;0;3;0;0;0;00b;GoTo;36b;0; //CSIn_ 1436b;0;0;3;0;2;7;0;0;10b;GoTo;37b;0; //APC_Adr 1437b;0;0;3;0;2;7;0;0;14b;Return;70b;0; //WriteCS 1470b;0;0;3;0;2;7;0;0;10b;GoTo;40b;0; //APC_Adr 1440b;0;0;3;0;2;7;0;0;15b;Return;41b;0; //WriteCS 1441b;0;0;3;0;2;7;0;0;10b;GoTo;42b;0; //APC_Adr 1442b;0;0;3;0;2;7;0;0;16b;Return;43b;0; //ReadCS 1443b;0;0;3;0;3;0;0;0;00b;GoTo;44b;0; //CSIn_ 1444b;0;0;3;0;2;7;0;0;10b;GoTo;45b;0; //APC_Adr 1445b;0;0;3;0;2;7;0;0;14b;Return;71b;0; //WriteCS 1471b;0;0;3;0;2;7;0;0;10b;GoTo;46b;0; //APC_Adr 1446b;0;0;3;0;2;7;0;0;15b;Return;47b;0; //WriteCS 1447b;0;0;3;0;2;7;0;0;10b;GoTo;50b;0; //APC_Adr 1450b;0;0;3;0;2;7;0;0;16b;Return;51b;0; //ReadCS 1451b;0;0;3;0;3;0;0;0;00b;GoTo;52b;0; //CSIn_ 1452b;0;0;3;0;2;7;0;0;10b;GoTo;53b;0; //APC_Adr 1453b;0;0;3;0;2;7;0;0;14b;Return;72b;0; //WriteCS 1472b;0;0;3;0;2;7;0;0;10b;GoTo;54b;0; //APC_Adr 1454b;0;0;3;0;2;7;0;0;15b;Return;55b;0; //WriteCS 1455b;0;0;3;0;2;7;0;0;10b;GoTo;56b;0; //APC_Adr 1456b;0;0;3;0;2;7;0;0;16b;Return;57b;0; //ReadCS 1457b;0;0;3;0;2;7;0;0;10b;GoTo;60b;0; //APC_ 1460b;0;0;3;0;3;0;0;0;00b;Return;00b;0; //return ] for i = 0 to 24 do [ let x = lv(t3!(13*i)) StuffMicroWord(x!0,x!1,x!2,x!3,x!4,x!5,x!6,x!7,x!8,x!9,x!10,x!11,x!12) ] let t4 = table //instructions for tests 13 and 14 [ 1400b;0;0;3;0;3;0;0;0;00b;GoTo;02b;0; //CSIn_ 1402b;0;0;3;0;2;7;0;0;10b;GoTo;03b;0; //APC_adr 1403b;0;0;3;0;2;7;0;0;14b;Return;22b;0; //WriteCS 1422b;0;0;3;0;2;7;0;0;10b;GoTo;23b;0; //APC_adr 1423b;0;0;3;0;2;7;0;0;16b;Return;04b;0; //ReadCS 1404b;0;0;3;0;2;7;0;0;10b;GoTo;05b;0; //APC_adr 1405b;0;0;3;0;2;7;0;0;15b;Return;06b;0; //WriteCS 1406b;0;0;3;0;3;0;0;0;00b;Branch;00b;0; //Brch 1401b;0;0;3;0;3;0;0;0;00b;GoTo;10b;0; //Brch 1410b;0;0;3;0;2;7;0;0;10b;GoTo;12b;0; //APC_adr 1412b;0;0;3;0;2;7;0;0;16b;Return;13b;0; //ReadCS 1413b;0;0;3;0;2;7;0;0;10b;GoTo;14b;0; //APC_adr 1414b;0;0;3;0;2;7;0;0;16b;Return;15b;0; //ReadCS 1415b;0;0;3;0;2;7;0;0;10b;GoTo;16b;0; //APC_adr 1416b;0;0;3;0;2;7;0;0;16b;Return;17b;0; //ReadCS 1417b;0;0;3;0;3;0;0;0;00b;Branch;10b;0; //Brch 1411b;0;0;3;0;2;5;0;0;02b;GoTo;25b;0; //Page_2 1425b;0;0;3;0;3;0;0;0;00b;GoTo;22b;0; 1022b;0;0;3;0;3;0;0;0;00b;GoTo;03b;0; //CSIn_ 1003b;0;0;3;0;2;7;0;0;10b;GoTo;04b;0; //APC_adr 1004b;0;0;3;0;2;7;0;0;14b;Return;05b;0; //WriteCS 1005b;0;0;3;0;2;7;0;0;10b;GoTo;06b;0; //APC_adr 1006b;0;0;3;0;2;7;0;0;16b;Return;07b;0; //ReadCS 1007b;0;0;3;0;2;7;0;0;10b;GoTo;10b;0; //APC_adr 1010b;0;0;3;0;2;7;0;0;15b;Return;11b;0; //WriteCS 1011b;0;0;3;0;3;0;0;0;00b;Branch;22b;0; //Brch 1023b;0;0;3;0;3;0;0;0;00b;GoTo;24b;0; //Brch 1024b;0;0;3;0;2;7;0;0;10b;GoTo;13b;0; //APC_adr 1013b;0;0;3;0;2;7;0;0;16b;Return;14b;0; //ReadCS 1014b;0;0;3;0;2;7;0;0;10b;GoTo;15b;0; //APC_adr 1015b;0;0;3;0;2;7;0;0;16b;Return;16b;0; //ReadCS 1016b;0;0;3;0;2;7;0;0;10b;GoTo;17b;0; //APC_adr 1017b;0;0;3;0;2;7;0;0;16b;Return;20b;0; //ReadCS 1020b;0;0;3;0;3;0;0;0;00b;Branch;24b;0; //Brch ] for i = 0 to 33 do [ let x = lv(t4!(13*i)) StuffMicroWord(x!0,x!1,x!2,x!3,x!4,x!5,x!6,x!7,x!8,x!9,x!10,x!11,x!12) ] ]