Google
 

Trailing-Edge - PDP-10 Archives - klad_sources - klad.sources/dbkait.mac
There are no other files named dbkait.mac in the archive.
;DBKAI

	MCNVER==0
	DECVER==3


	XLIST
DEFINE	NAME	(MCNVER,DECVER)<

TITLE	DBKAI PDP-10  KI10 BASIC INSTRUCTION DIAGNOSTIC (9) MCNVER,DECVER
>
	LIST
	LALL

	NAME	\MCNVER,\DECVER

;(LOGICAL SHIFT, ROTATE, ARITHMETIC SHIFT; SINGLE AND COMBINED)

;COPYRIGHT 1975
;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
KI10=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/DBKAI/
PAREA4=SIXBIT/PNT/
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	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>