SUBTTL DIAGNOSTIC SECTION EXIT: DROPDV ;CLOSE LOGICAL OUTPUT FILE EXIT PGMNAM: ASCIZ/ PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (11) [DAKAK] / ;INITIALIZE START: PGMINT MOVE [ASCIZ/AK/] MOVEM TLET ;INITIALIZE TEST LETTER STARTA: JRST F00 ;GO PERFORM DIAGNOSTIC SUBTTL DIAGNOSTIC SECTION - MPY TEST - ZERO PRODUCT ADR=3000 AC=14 E=&17 F00: SAVEAC (1,1) ;MULTIPLY 0 BY 0 TO GET PRODUCT OF 0 MOP1 (\ADR,0,-1,0,0,0) AC=13 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36, < ADR=ADR+1 XX=XX+XX IFE XX, ;MULTIPLY RIPPLED 1 BY 0 TO GET PRODUCT OF 0 MOP1 (\ADR,0,-1,XX,0,0)> AC=12 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36, < ADR=ADR+1 XX=XX+XX+1 IFE , ;MULTIPLY RIPPLED 0 BY 0 TO GET PRODUCT OF 0 MOP1 (\ADR,0,-1,XX,0,0)> ADR=ADR+1 AC=14 E=&17 SAVEAC (1,1) ;MULTIPLY -1 BY 0 TO GET PRODUCT OF 0 MOP1 (\ADR,0,-1,-1,0,0) SUBTTL DIAGNOSTIC SECTION - MULTIPLICATION ALGORITHM AC=13 E=&17 SAVEAC (1,1) XX=-1 ;MULTIPLICAND=1 REPEAT ^D16,< ;TEST MULTIPLICATION ALGORITHM ;VERIFY THAT (-MPY SHIFT) WORKS AS SPECIFIED IN THE ;KI10 MULTIPLICATION ALGORITHM. I.E., THE TWO LEAST ;SIGNIFICANT BITS OF THE MULTIPLIER (C(AC)) ARE ;EXAMINED AND THEN THE MULTIPLICAND (C(E)) IS MULTIPLIED BY THEM. ;THIS PROCESS IS REPEATED 18 TIMES IN ORDER ;TO MULTIPLY ALL 36 BITS OF THE AC. THIS TEST IS ;EXECUTED 16 TIMES WITH C(AC)=0,1,3,4,..., 17 AND ;C(E)=1. IT IS EXECUTED ANOTHER 16 TIMES AS ABOVE ;EXCEPT C(E)=-1 TO VERIFY THAT THE ALGORITHM IS INDEPENDENT ;OF C(E). ADR=ADR+1 XX=XX+1 MOP1 (\ADR,XX,-1,1,0,XX)> AC=12 E=&17 SAVEAC (1,1) XX=-1 ;MULTIPLICAND=-1 REPEAT ^D16,< ;TEST MULTIPLICATION ALGORITHM ;VERIFY THAT (-MPY SHIFT) WORKS AS SPECIFIED IN THE ;KI10 MULTIPLICATION ALGORITHM, I.E., THE TWO LEAST ;SIGNIFICANT BITS OF THE MULTIPLIER (C(AC)) ARE ;EXAMINED AND THEN THE MULTIPLICAND (C(E)) IS MULTIPLIED BY THEM. ;THIS PROCESS IS REPEATED 18 TIMES IN ORDER ;TO MULTIPLY ALL 36 BITS OF THE AC. THIS TEST IS ;EXECUTED 16 TIMES WITH C(AC)=0, 1,2,3,4, . . ., 17 AND ;C(E)=1. IT IS EXECUTED ANOTHER 16 TIMES AS ABOVE ;EXCEPT C(E)=-1 TO VERIFY THAT THE ALGORITHM IS INDEPENDENT ;OF C(E). ADR=ADR+1 XX=XX+1 MX=-XX IFE XX,< V1=-1 V2=0> IFN XX,< V1=0 V2=-1> MOP1 (\ADR,XX,V1,-1,V2,MX)> SUBTTL DIAGNOSTIC SECTION - MPY TEST - ZERO PRODUCT AC=11 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36, < ADR=ADR+1 XX=XX+XX IFE XX, ;MULTIPLY 0 BY RIPPLED 1 TO GET PRODUCT OF ZERO MOP1 (\ADR,XX,-1,0,0,0)> AC=10 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36,< ADR=ADR+1 XX=XX+XX+1 IFE , ;MULTIPLY 0 BY RIPPLED 0 TO GET PRODUCT OF 0 MOP1 (\ADR,XX,-1,0,0,0)> AC=7 E=&17 SAVEAC (1,1) ADR=ADR+1 ;MULTIPLY 0 BY -1 TO GET PRODUCT OF 0 MOP1 (\ADR,-1,-1,0,0,0) SUBTTL DIAGNOSTIC SECTION - MPY TEST - NON-ZERO PRODUCT AC=6 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36, < ADR=ADR+1 XX=XX+XX IFE XX, ;MULTIPLY A RIPPLED 1 BY 1 TO GET A PRODUCT OF RIPPLED 1 IFG XX, IFL XX, MOP1 (\ADR,1,-1,XX,V1,XX)> AC=5 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D35,< ;LAST CASE IS DIFFERENT ADR=ADR+1 XX=XX+XX IFE XX, ;MULTIPLY A 1 BY A RIPPLED 1 TO GET PRODUCT OF RIPPLED 1 IFG XX, IFL XX, MOP1 (\ADR,XX,-1,1,V1,XX)> ;MULTIPLY A 1 BY 400000,,0 XX=400000000000 ADR=ADR+1 MOP1 (\ADR,XX,-1,1,1,0) AC=4 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36,< ADR=ADR+1 XX=XX+XX IFE XX, ;MULTIPLY A RIPPLED ONE BY -1 IFG XX,< V1=-1 V2=-XX> IFL XX,< V1=1 V2=0> MOP1 (\ADR,-1,0,XX,V1,V2)> AC=3 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D35,< ;LAST CASE IS DIFFERENT ADR=ADR+1 XX=XX+XX IFE XX, ;MULTIPLY -1 BY A RIPPLED 1 IFG XX,< V1=-1 V2=-XX> IFL XX,< V1=1 V2=0> MOP1 (\ADR,XX,0,-1,V1,V2)> ;MULTIPLY A -1 BY 400000,,0 ADR=ADR+1 XX=400000000000 MOP1 (\ADR,XX,0,-1,-1,XX) AC=2 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36,< ADR=ADR+1 XX=XX+XX+1 IFE , ;MULTIPLY RIPPLED 0 BY 1 TO GET PRODUCT OF RIPPLED 0 IFL XX, IFG XX, MOP1 (\ADR,1,0,XX,V1,XX)> AC=10 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36,< ADR=ADR+1 XX=XX+XX+1 IFE , ;MULTIPLY 1 BY RIPPLED 0 TO GET PRODUCT OF RIPPLED 0 IFL XX, IFG XX, MOP1 (\ADR,XX,0,1,V1,XX)> AC=10 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36, < ADR=ADR+1 XX=XX+XX+1 IFE , ;MULTIPLY A RIPPLED 0 BY -1 MX=-XX IFL XX, IFG XX, MOP1 (\ADR,-1,-1,XX,V1,MX)> AC=14 E=&17 SAVEAC (1,1) XX=0 REPEAT ^D36, < ADR=ADR+1 XX=XX+XX+1 IFE , ;MULTIPLY -1 BY A RIPPLED 0 MX=-XX IFL XX, IFG XX, MOP1 (\ADR,XX,-1,-1,V1,MX)> N1=525252525252 N2=252525252525 AC=13 E=&17 SAVEAC (1,1) WW=^D36 XX=0 ZZ=0 REPEAT ^D35, < ;LAST CASE DIFFERENT ADR=ADR+1 WW=WW-1 XX=XX+XX ZZ=ZZ+1 IFE XX, IFE XX, ;MULTIPLY 1010...1010 BY A FLOATING 1 V1=N1 V2=!1B0 IFE WW, IFL XX, IFG XX,>!>>> MOP1 (\ADR,XX,0,V1,V3,V2)> ;MULTIPLY A 1010...1010 BY 400000,,0 ADR=ADR+1 XX=400000000000 V1=525252525252 V3=525252525252 V2=400000000000 MOP1 (\ADR,XX,0,V1,V3,V2) LAST1: JRST BEGEND