;DAKAI MCNVER==0 DECVER==2 XLIST DEFINE NAME (MCNVER,DECVER)< TITLE DAKAI PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 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 KLOLD==1 DEBUG=40 EXCASB=1 USRASB=1 KA10=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/DAKAI/ 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,&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,&17 ;SETUP AC-2 FOR COMPARISON MOVEI AC,XX ;SETUP AC RIGHT HRLI AC,XX ;SETUP AC LEFT MOVEM AC,&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>