135 lines
2.7 KiB
Text
135 lines
2.7 KiB
Text
;DAKAJ
|
|
|
|
|
|
MCNVER==0
|
|
DECVER==2
|
|
|
|
XLIST
|
|
DEFINE NAME (MCNVER,DECVER)<
|
|
|
|
TITLE DAKAJ PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (10) MCNVER,DECVER
|
|
>
|
|
LIST
|
|
LALL
|
|
|
|
NAME \MCNVER,\DECVER
|
|
|
|
;(LOGICAL SHIFT, ROTATE, ARITHMETIC SHIFT; SINGLE AND COMBINED)
|
|
|
|
;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
|
|
KA10=1
|
|
KL10=1
|
|
KL10P0=1
|
|
PGMEND=1
|
|
ERDIAG=1
|
|
|
|
;SPECIAL FEATURE PARAMETERS
|
|
|
|
SADR1=START
|
|
SADR2=START
|
|
SADR3=START
|
|
SADR4=START
|
|
SADR5=JRST START
|
|
SADR6=JRST START
|
|
SADR7=JRST START
|
|
SADR8=JRST START
|
|
SADR9=JRST START
|
|
SADR10=JRST START
|
|
SADR11=JRST START
|
|
|
|
PAREA0=0
|
|
PAREA1=0
|
|
PAREA2=0
|
|
PAREA3=SIXBIT/DAKAJ/
|
|
PAREA4=SIXBIT/TMP/
|
|
PAREA5=0
|
|
PAREA6=0
|
|
ITERAT==1000
|
|
|
|
;MACROS
|
|
|
|
DEFINE SAVEAC (A,B)<
|
|
MOVEI AC+2,. ;SETUP TESTPC
|
|
MOVEM AC+2,TESTPC
|
|
MOVEI AC+2,<AC+2>&17 ;INFORM ERROR ROUTINE WHICH
|
|
MOVEM AC+2,ERRLOP# ;AC IS USED FOR ITERATION>
|
|
|
|
DEFINE SETACS (WW,XX)<
|
|
MOVEI AC-1,WW ;SETUP AC-1
|
|
HRLI AC-1,WW ;FOR COMPARISION
|
|
MOVE AC-2,<AC-1>&17 ;SETUP AC-2 FOR COMPARISON
|
|
MOVEI AC,XX ;SETUP AC RIGHT
|
|
HRLI AC,XX ;SETUP AC LEFT
|
|
MOVEM AC,<AC+1>&17 ;SETUP AC2>
|
|
;USER DEFINED MACROS
|
|
|
|
DEFINE SR1 (T,D1A,D1B,R1A,R1B,OP,S)<
|
|
;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD D1A,D1B] S BIT
|
|
;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD R1A,R1B]
|
|
;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
|
|
|
|
E'T'00: MOVE AC,[XWD D1A,D1B] ;INITIALIZE AC
|
|
MOVE AC+1,[XWD 741703,607417];INITIALIZE AC+1
|
|
OP AC,S ;*SHIFT/ROTATE S BIT POSITIONS
|
|
CAME AC,[XWD R1A,R1B] ;IS RESULT IN AC CORRECT?
|
|
ER3 AC,T'01 ;RESULT IN AC IS INCORRECT
|
|
CAME AC+1,[XWD 741703,607417]
|
|
ER4 AC+1,T'01 ;C(AC+1) WAS MODIFIED INCORRECTLY
|
|
JUMPL AC+2,E'T'00 ;LOOP ON ERROR SWITCH>
|
|
|
|
|
|
DEFINE SR2 (T,D1A,D1B,D2A,D2B,R1A,R1B,R2A,R2B,OP,S)<
|
|
;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
|
|
;DATA SPECIFIED IN [XWD D1A,D1B] AND [XWD D2A,D2B] S BIT POSITIONS AND
|
|
;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD R1A,R1B] AND
|
|
;[XWD R2A,R2B]
|
|
|
|
E'T'00: MOVE AC,[XWD D1A,D1B] ;INITIALIZE AC
|
|
MOVE AC+1,[XWD D2A,D2B] ;INITIALIZE AC+1
|
|
OP AC,S ;*SHIFT/ROTATE COMBINED S PLACES
|
|
CAME AC,[XWD R1A,R1B] ;IS RESULT IN AC CORRECT?
|
|
ER3 AC,T'01 ;RESULT IN AC IS INCORRECT
|
|
CAME AC+1,[XWD R2A,R2B] ;IS RESULT IN AC+1 CORRECT?
|
|
ER4 AC+1,T'01 ;RESULT IN AC+1 IS INCORRECT
|
|
JUMPL AC+2,E'T'00 ;LOOP ON ERROR SWITCH>
|