318 lines
5.1 KiB
Text
318 lines
5.1 KiB
Text
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=<AC-2>&17
|
|
|
|
F00: SAVEAC (1,1)
|
|
|
|
;MULTIPLY 0 BY 0 TO GET PRODUCT OF 0
|
|
MOP1 (\ADR,0,-1,0,0,0)
|
|
|
|
AC=13
|
|
E=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D36, <
|
|
ADR=ADR+1
|
|
XX=XX+XX
|
|
IFE XX,<XX=1>
|
|
|
|
;MULTIPLY RIPPLED 1 BY 0 TO GET PRODUCT OF 0
|
|
MOP1 (\ADR,0,-1,XX,0,0)>
|
|
AC=12
|
|
E=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D36, <
|
|
ADR=ADR+1
|
|
XX=XX+XX+1
|
|
IFE <XX-1>,<XX=-2>
|
|
|
|
;MULTIPLY RIPPLED 0 BY 0 TO GET PRODUCT OF 0
|
|
MOP1 (\ADR,0,-1,XX,0,0)>
|
|
ADR=ADR+1
|
|
AC=14
|
|
E=<AC-2>&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=<AC-2>&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=<AC-2>&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=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D36, <
|
|
ADR=ADR+1
|
|
XX=XX+XX
|
|
IFE XX,<XX=1>
|
|
|
|
;MULTIPLY 0 BY RIPPLED 1 TO GET PRODUCT OF ZERO
|
|
MOP1 (\ADR,XX,-1,0,0,0)>
|
|
AC=10
|
|
E=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D36,<
|
|
ADR=ADR+1
|
|
XX=XX+XX+1
|
|
IFE <XX-1>,<XX=-2>
|
|
|
|
;MULTIPLY 0 BY RIPPLED 0 TO GET PRODUCT OF 0
|
|
MOP1 (\ADR,XX,-1,0,0,0)>
|
|
AC=7
|
|
E=<AC-2>&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=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
|
|
XX=0
|
|
|
|
REPEAT ^D36, <
|
|
ADR=ADR+1
|
|
XX=XX+XX
|
|
IFE XX,<XX=1>
|
|
|
|
;MULTIPLY A RIPPLED 1 BY 1 TO GET A PRODUCT OF RIPPLED 1
|
|
IFG XX,<V1=0>
|
|
IFL XX,<V1=-1>
|
|
MOP1 (\ADR,1,-1,XX,V1,XX)>
|
|
AC=5
|
|
E=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D35,< ;LAST CASE IS DIFFERENT
|
|
ADR=ADR+1
|
|
XX=XX+XX
|
|
IFE XX,<XX=1>
|
|
|
|
;MULTIPLY A 1 BY A RIPPLED 1 TO GET PRODUCT OF RIPPLED 1
|
|
IFG XX,<V1=0>
|
|
IFL XX,<V1=-1>
|
|
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=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D36,<
|
|
ADR=ADR+1
|
|
XX=XX+XX
|
|
IFE XX,<XX=1>
|
|
|
|
;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=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D35,< ;LAST CASE IS DIFFERENT
|
|
ADR=ADR+1
|
|
XX=XX+XX
|
|
IFE XX,<XX=1>
|
|
|
|
;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=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D36,<
|
|
ADR=ADR+1
|
|
XX=XX+XX+1
|
|
IFE <XX-1>,<XX=-2>
|
|
|
|
;MULTIPLY RIPPLED 0 BY 1 TO GET PRODUCT OF RIPPLED 0
|
|
IFL XX,<V1=-1>
|
|
IFG XX,<V1=0>
|
|
MOP1 (\ADR,1,0,XX,V1,XX)>
|
|
AC=10
|
|
E=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D36,<
|
|
ADR=ADR+1
|
|
XX=XX+XX+1
|
|
IFE <XX-1>,<XX=-2>
|
|
|
|
;MULTIPLY 1 BY RIPPLED 0 TO GET PRODUCT OF RIPPLED 0
|
|
IFL XX,<V1=-1>
|
|
IFG XX,<V1=0>
|
|
MOP1 (\ADR,XX,0,1,V1,XX)>
|
|
AC=10
|
|
E=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D36, <
|
|
ADR=ADR+1
|
|
XX=XX+XX+1
|
|
IFE <XX-1>,<XX=-2>
|
|
|
|
;MULTIPLY A RIPPLED 0 BY -1
|
|
MX=-XX
|
|
IFL XX,<V1=0>
|
|
IFG XX,<V1=-1>
|
|
MOP1 (\ADR,-1,-1,XX,V1,MX)>
|
|
AC=14
|
|
E=<AC-2>&17
|
|
SAVEAC (1,1)
|
|
XX=0
|
|
|
|
REPEAT ^D36, <
|
|
ADR=ADR+1
|
|
XX=XX+XX+1
|
|
IFE <XX-1>,<XX=-2>
|
|
|
|
;MULTIPLY -1 BY A RIPPLED 0
|
|
MX=-XX
|
|
IFL XX,<V1=0>
|
|
IFG XX,<V1=-1>
|
|
MOP1 (\ADR,XX,-1,-1,V1,MX)>
|
|
N1=525252525252
|
|
N2=252525252525
|
|
AC=13
|
|
E=<AC-2>&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,<ZZ=0>
|
|
IFE XX,<XX=1>
|
|
|
|
;MULTIPLY 1010...1010 BY A FLOATING 1
|
|
V1=N1
|
|
V2=<N1_ZZ>!1B0
|
|
IFE WW,<V2=0>
|
|
IFL XX,<V3=N2+1>
|
|
IFG XX,<V3=<<-1B<WW>>!<N1_<-WW>>>>
|
|
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
|
|
|