122 lines
2.2 KiB
Text
122 lines
2.2 KiB
Text
;DAKAK
|
|
|
|
MCNVER==0
|
|
DECVER==2
|
|
|
|
|
|
XLIST
|
|
DEFINE NAME (MCNVER,DECVER)<
|
|
|
|
TITLE DAKAK PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (11) MCNVER,DECVER
|
|
>
|
|
LIST
|
|
LALL
|
|
|
|
NAME \MCNVER,\DECVER
|
|
|
|
;(MULTIPY, INTERGER MULTIPLY, DIVIDE, INTERGER DIVIDE)
|
|
|
|
;COPYRIGHT 1975,1977
|
|
;DIGITAL EQUIPMENT CORPORATION
|
|
;MARLBORO, MASS. 01752
|
|
|
|
;JOHN R. KIRCHOFF
|
|
|
|
LOC 137
|
|
MCNVER,,DECVER
|
|
|
|
NOSYM
|
|
SUBTTL DIAGNOSTIC PARAMETERS
|
|
|
|
;OPERATOR DEFINITIONS
|
|
|
|
OPDEF ER1 [1B8]
|
|
OPDEF ER2 [2B8]
|
|
OPDEF ER3 [3B8]
|
|
OPDEF ER4 [4B8]
|
|
OPDEF ER5 [5B8]
|
|
OPDEF ER6 [6B8]
|
|
OPDEF ER7 [7B8]
|
|
OPDEF ER10 [10B8]
|
|
OPDEF ER11 [11B8]
|
|
OPDEF ER12 [12B8]
|
|
OPDEF ER13 [13B8]
|
|
|
|
LUUO1=ERRMES
|
|
LUUO2=ERRMES
|
|
LUUO3=ERRMES
|
|
LUUO4=ERRMES
|
|
LUUO5=ERRMES
|
|
LUUO6=ERRMES
|
|
LUUO7=ERRMES
|
|
LUUO10=ERRMES
|
|
LUUO11=ERRMES
|
|
LUUO12=ERRMES
|
|
LUUO13=ERRMES
|
|
;SUBROUTINE ASSEMBLY DEFINITIONS
|
|
|
|
DEBUG=40
|
|
EXCASB=1
|
|
USRASB=1
|
|
KI10=1
|
|
KA10=1
|
|
KLOLD==1
|
|
PGMEND=1
|
|
ERDIAG=1
|
|
|
|
;SPECIAL FEATURE DEFINITIONS
|
|
|
|
SADR1=BEGIN
|
|
SADR2=BEGIN
|
|
SADR3=BEGIN
|
|
SADR4=BEGIN
|
|
SADR5=JRST BEGIN
|
|
SADR6=JRST BEGIN
|
|
SADR7=JRST BEGIN
|
|
SADR8=JRST BEGIN
|
|
SADR9=JRST BEGIN
|
|
SADR10=JRST BEGIN
|
|
SADR11=JRST BEGIN
|
|
|
|
;SPECIAL FEATURE PARAMETERS
|
|
|
|
PAREA0=0
|
|
PAREA1=0
|
|
PAREA2=0
|
|
PAREA3=SIXBIT/DAKAK/
|
|
PAREA4=SIXBIT/TMP/
|
|
PAREA5=0
|
|
PAREA6=0
|
|
ITERAT==1000
|
|
|
|
;MACROS
|
|
|
|
DEFINE SAVEAC (A,B)<
|
|
MOVEI AC+2,. ;SAVE TEST PC
|
|
MOVEM AC+2,TESTPC
|
|
MOVEI AC+2,<AC+2>&17 ;INFORM ERROR ROUTINE WHICH
|
|
MOVEM AC+2,ERRLOP# ;AC IS USED FOR ITERATION>
|
|
DEFINE MOP1 (T,A1,A2,EE,R1,R2)<
|
|
;THIS MACRO INITIALIZES AC,AC+1 AND E WITH [A1],[A2] AND
|
|
;[EE] RESPECTIVELY, PERFORMS 'MUL AC,E' AND COMPARES AC,AC+1
|
|
;AND E AGAINST [R1], [R2] AND [EE] RESPECTIVELY.
|
|
;IF ANY OF THE ABOVE COMPARISONS FAIL, AN ERROR IS REPORTED
|
|
|
|
F'T'0: AA1=A1 ;INITIAL C(AC)
|
|
MOVE AC,[A1] ;PRELOAD AC (MULTIPLIER)
|
|
AA2=A2 ;INITIAL C(AC+1)
|
|
MOVE AC+1,[A2] ;PRELOAD AC+1
|
|
AEE=EE ;INITIAL C(E)
|
|
MOVE E,[EE] ;PRELOAD E (MULTIPLICAND)
|
|
MUL AC,E ;*MULTIPLY C(E) BY C(AC)
|
|
AR1=R1 ;EXPECTED RESULT IN AC
|
|
CAME AC,[R1] ;IS HIGH PRODUCT CORRECT?
|
|
ER3 AC,T'1 ;HIGH PRODUCT FAILED
|
|
AR2=R2 ;EXPECTED RESULT IN AC+1
|
|
CAME AC+1,[R2] ;IS LOW PRODUCT CORRECT?
|
|
ER4 AC+1,T'2 ;LOW PRODUCT FAILED
|
|
AEE=EE ;INITIAL C(E)
|
|
CAME E,[EE] ;WAS C(E) CLOBBERED?
|
|
ER5 E,T'3 ;C(E) WAS CLOBBERED
|
|
JUMPL AC+2,F'T'0 ;LOOP ON ERROR SWITCH>
|
|
|