Updated the PDP-10 DAKAK diagnostic page, and verified the ability to assemble (but not run) all the original DAKAK source files, after making further improvements to the built-in MACRO-10 Mini-Assembler
This commit is contained in:
parent
e7988597c5
commit
afd621dc79
15 changed files with 2007 additions and 16361 deletions
|
|
@ -1,572 +0,0 @@
|
|||
;MAINDEC-10-DFKCA
|
||||
|
||||
DECVER=002
|
||||
MCNVER=000
|
||||
|
||||
XLIST
|
||||
DEFINE NAME (MCNVER,DECVER),<
|
||||
|
||||
TITLE DFKCA KL10 ADVANCED INSTRUCTION DIAGNOSTIC #1, VERSION MCNVER,DECVER >
|
||||
LIST
|
||||
LALL
|
||||
|
||||
NAME \MCNVER,\DECVER
|
||||
|
||||
XALL
|
||||
|
||||
;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
|
||||
|
||||
DEBUG=100
|
||||
EXCASB=1
|
||||
USRASB=1
|
||||
KI10=1
|
||||
KL10=1
|
||||
KL10P0=1
|
||||
PGMEND=1
|
||||
ERDIAG=1
|
||||
KLOLD=1
|
||||
MODDVU=BEGIN
|
||||
MODDVL=BEGIN
|
||||
;MACROS
|
||||
|
||||
DEFINE SAVEAC (A,B)<
|
||||
MOVEI AC+2,.
|
||||
MOVEM AC+2,TESTPC ;SETUP SUBTEST PC
|
||||
MOVEI AC+2,<AC+2>&17 ;INFORM ERROR ROUTINE WHICH
|
||||
MOVEM AC+2,ERRLOP# ;AC IS USED FOR ITERATION>
|
||||
|
||||
;BEGIN ASSEMBLY PARAMETERS
|
||||
|
||||
SADR1=BEGIN
|
||||
SADR2=RESRT1
|
||||
SADR3=RENTR1
|
||||
SADR4=BEGIN
|
||||
SADR5=BEGIN
|
||||
SADR6=BEGIN
|
||||
SADR7=HALT BEGIN
|
||||
SADR8=HALT BEGIN
|
||||
SADR9=HALT BEGIN
|
||||
SADR10=HALT BEGIN
|
||||
SADR11=HALT BEGIN
|
||||
|
||||
PAREA1=0
|
||||
PAREA2=0
|
||||
PAREA3=SIXBIT/DFKCA/
|
||||
PAREA4=SIXBIT/LPT/
|
||||
PAREA5=0
|
||||
PAREA6=0
|
||||
|
||||
ITERAT=1000
|
||||
DEFINE DMVE (L,A,B,C,D) <
|
||||
;THIS MACRO TESTS THE DMOVE INSTRUCTION
|
||||
;FIRST, AC, AC+1 ARE PRELOADED WITH DATA OTHER THAN THE TEST WORDS.
|
||||
;THEN, THE DATA SPECIFIED BY [XWD A,B] AND [XWD C,D] IS MOVED
|
||||
;FROM MEMORY TO AC, AC+1 VIA THE DMOVE INSTRUCTION.
|
||||
;C(AC) AND C(AC+1) ARE THEN COMPARED WITH THE TEST WORDS
|
||||
;[XWD A,B] AND [XWD C,D], RESPECTIVELY. THE TEST PASSES IF THESE
|
||||
;COMPARISONS AGREE.
|
||||
|
||||
Q'L'0: MOVE AC+5,[XWD A,B] ;INITIALIZE TEST WORDS
|
||||
MOVE AC+6,[XWD C,D] ;FOR COMPARISON
|
||||
MOVE AC,[XWD 707070,707070]
|
||||
MOVE AC+1,[XWD 070707,070707] ;INITIALIZE AC,AC+1
|
||||
DMOVE AC,[XWD A,B ;*MOVE DOUBLE WORD A,B ; C,D
|
||||
XWD C,D] ;FROM MEMORY TO AC, AC+1
|
||||
CAME AC,<AC+5>&17 ;WAS AC LOADED CORRECTLY?
|
||||
ER3 AC,L'1 ;FAIL IF CONTENTS(AC) NOT = A,B
|
||||
CAME AC+1,<AC+6>&17 ;WAS AC+1 LOADED CORRECTLY?
|
||||
ER4 AC+1,L'2 ;FAIL IF CONTENTS(AC+1) NOT = C,D
|
||||
JUMPL SAC,Q'L'0 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
|
||||
DEFINE DMVE17 (L,T,A,B,C,D) <
|
||||
;THIS MACRO TESTS THE DMOVE INSTRUCTION
|
||||
;FIRST, AC, AC+1 ARE PRELOADED WITH DATA OTHER THAN THE TEST WORDS.
|
||||
;THEN, THE DATA SPECIFIED BY [XWD A,B] AND [XWD C,D] IS MOVED
|
||||
;FROM MEMORY TO AC, AC+1 VIA THE DMOVE INSTRUCTION.
|
||||
;C(AC) AND C(AC+1) ARE THEN COMPARED WITH THE TEST
|
||||
;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
|
||||
;THE TEST PASSES IF THESE COMPARISONS AGREE.
|
||||
|
||||
Q'T'0: MOVEM AC,%SV17# ;SAVE AC17
|
||||
Q'L'0: MOVE AC+5,[XWD A,B] ;INITIALIZE TEST WORDS
|
||||
MOVE AC+6,[XWD C,D] ;FOR COMPARISON
|
||||
MOVE AC,[XWD 707070,707070]
|
||||
MOVE AC+1,[XWD 070707,070707] ;INITIALIZE AC,AC+1
|
||||
DMOVE AC,[XWD A,B ;*MOVE DOUBLE WORD A,B ; C,D
|
||||
XWD C,D] ;FROM MEMORY TO AC, AC+1
|
||||
Q'T'3: CAMN AC,<AC+5>&17 ;WAS AC LOADED CORRECTLY?
|
||||
JRST .+4 ;HERE IF NO ERROR
|
||||
MOVEM AC,AC-1 ;STORE INCORRECT RESLUTS
|
||||
MOVE AC,%SV17 ;RESTORE P
|
||||
ER3 AC-1,L'1 ;FAIL IF CONTENTS(AC) NOT = A,B
|
||||
CAMN AC+1,<AC+6>&17 ;WAS AC+1 LOADED CORRECTLY?
|
||||
JRST .+4 ;HERE IF NO ERROR
|
||||
MOVEM AC+1,AC-1 ;STORE INCORRECT WORD
|
||||
MOVE AC,%SV17 ;RESTORE P
|
||||
ER4 AC-1,L'2
|
||||
MOVE AC,%SV17 ;RESTORE AC UNCONDITIONALLY
|
||||
JUMPL SAC,Q'T'0 ;LOOP ON ERROR SWITCH>
|
||||
DEFINE DMVN (L,A,B,C,D) <
|
||||
;THIS MACRO TESTS THE DMOVN INSTRUCTION
|
||||
;FIRST, AC, AC+1 ARE PRELOADED WITH DATA OTHER THAN THE TEST WORDS.
|
||||
;THEN, THE NEGATIVE (TWOS COMPLEMENT) OF THE DATA SPECIFIED BY
|
||||
;[XWD A,B] AND [XWD C,D] IS MOVED FROM MEMORY TO AC, AC+1 VIA
|
||||
;THE DMOVN INSTRUCTION. C(AC) AND C(AC+1) ARE THEN COMPARED
|
||||
;WITH THE NEGATIVE (TWOS COMPLEMENT) OF THE TEST
|
||||
;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
|
||||
;THE TEST PASSES IF THESE COMPARISONS AGREE.
|
||||
|
||||
Q'L'0: DMOVE AC,[XWD 707070,707070
|
||||
XWD 070707,070707] ;INITIALIZE AC,AC+1
|
||||
SETCM AC+5,[XWD A,B] ;INITIALIZE TEST WORDS FOR COMPARISON
|
||||
IFIDN <C,D><0,0>,<
|
||||
SETZ AC+6,
|
||||
ADDI AC+5,1 >
|
||||
IFIDN <C,D><400000,0>,<
|
||||
SETZ AC+6,
|
||||
ADDI AC+5,1 >
|
||||
IFDIF <C,D><0,0>,<
|
||||
IFDIF <C,D><400000,0>,<
|
||||
MOVN AC+6,[XWD C,D]
|
||||
TLZ AC+6,1B18 ;CLEAR SIGN BIT OF LOW ORDER WORD >>
|
||||
DMOVN AC,[XWD A,B ;*MOVE NEGATIVE OF DOUBLE WORD A,B ;
|
||||
XWD C,D] ;C,D FROM MEMORY TO AC, AC+1
|
||||
CAME AC,<AC+5>&17 ;WAS AC LOADED CORRECTLY?
|
||||
ER3 AC,L'1 ;FAIL IF CONTENTS(AC) NOT = COMPLEMENT OF A,B
|
||||
CAME AC+1,<AC+6>&17 ;WAS AC+1 LOADED CORRECTLY?
|
||||
ER4 AC+1,L'2 ;FAIL IF CONTENTS(AC+1) NOT = MINUS C,D
|
||||
JUMPL SAC,Q'L'0 ;LOOP ON ERROR SWITCH>
|
||||
DEFINE DMVN17 (L,A,B,C,D) <
|
||||
;THIS MACRO TESTS THE DMOVN INSTRUCTION
|
||||
;FIRST, AC, AC+1 ARE PRELOADED WITH DATA OTHER THAN THE TEST WORDS.
|
||||
;THEN, THE NEGATIVE (TWOS COMPLEMENT) OF THE DATA SPECIFIED BY
|
||||
;[XWD A,B] AND [XWD C,D] IS MOVED FROM MEMORY TO AC, AC+1 VIA
|
||||
;THE DMOVN INSTRUCTION. C(AC) AND C(AC+1) ARE THEN COMPARED
|
||||
;WITH THE NEGATIVE (TWOS COMPLEMENT) OF THE TEST
|
||||
;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
|
||||
;THE TEST PASSES IF THESE COMPARISONS AGREE.
|
||||
|
||||
Q'L'0: MOVEM AC,%SV17 ;SAVE P
|
||||
DMOVE AC,[XWD 707070,707070
|
||||
XWD 070707,070707] ;INITIALIZE AC,AC+1
|
||||
SETCM AC+5,[XWD A,B] ;INITIALIZE TEST WORDS FOR COMPARISON
|
||||
IFIDN <C,D><0,0>,<
|
||||
SETZ AC+6,
|
||||
ADDI AC+5,1 >
|
||||
IFIDN <C,D><400000,0>,<
|
||||
SETZ AC+6,
|
||||
ADDI AC+5,1 >
|
||||
IFDIF <C,D><0,0>,<
|
||||
IFDIF <C,D><400000,0>,<
|
||||
MOVN AC+6,[XWD C,D]
|
||||
TLZ AC+6,1B18 ;CLEAR SIGN BIT OF LOW ORDER WORD >>
|
||||
DMOVN AC,[XWD A,B ;*MOVE NEGATIVE OF DOUBLE WORD A,B ;
|
||||
XWD C,D] ;C,D FROM MEMORY TO AC, AC+1
|
||||
CAMN AC,<AC+5>&17 ;WAS AC LOADED CORRECTLY?
|
||||
JRST .+4 ;HERE IF TESTS OK
|
||||
MOVEM AC,AC-1 ;SAVE BAD WORD
|
||||
MOVE AC,%SV17 ;RESTORE P
|
||||
ER3 AC-1,L'1 ;FAIL IF CONTENTS(AC) NOT = COMPLEMENT OF A,B
|
||||
CAMN AC+1,<AC+6>&17 ;WAS AC+1 LOADED CORRECTLY?
|
||||
JRST .+4 ;HERE IF TESTS OK
|
||||
MOVEM AC,AC-1
|
||||
MOVE AC,%SV17 ;RESTORE P
|
||||
ER4 AC+1,L'2 ;FAIL IF CONTENTS(AC+1) NOT = MINUS C,D
|
||||
MOVE AC,%SV17 ;RESTORE P UNCODITIONALLY
|
||||
JUMPL SAC,Q'L'0 ;LOOP ON ERROR SWITCH>
|
||||
DEFINE DMVNF (L,A,B,C,D,KIEF,KIUF,KLEF,KLUF) <
|
||||
;**KI10**
|
||||
;THIS MACRO VERIFIES THAT THE DMOVN INSTRUCTION DOES NOT SET OVERFLOW
|
||||
;OR CARRY FLAGS ON THE KI10. FIRST, OVFL AND CRY0,1 FLAGS ARE CLEARED;
|
||||
;THEN,DMOVN IS EXECUTED. NEXT, OVFL AND CRY0,1 FLAGS ARE EXAMINED.
|
||||
;IF ANY OF THESE FLAGS ARE SET, THE TEST FAILS.
|
||||
|
||||
;**KL10**
|
||||
;THIS MACRO VERIFIES THAT THE DMOVN INSTRUCTION DOES SET OVERFLOW
|
||||
;OR CARRY FLAGS ON THE KL10. FIRST, OVFL AND CRY0,1 FLAGS ARE CLEARED;
|
||||
;THEN,DMOVN IS EXECUTED. NEXT, OVFL AND CRY0,1 FLAGS ARE EXAMINED.
|
||||
;IF THE PROPER FLAGS ARE NOT SET, THE TEST FAILS.
|
||||
|
||||
Q'L'0: JFCL 17,.+1 ;CLEAR OVFL AND CRY0,1 FLAGS
|
||||
DMOVN AC+1,[XWD A,B ;*DMOVN TEST
|
||||
XWD C,D]
|
||||
JSP AC,.+1 ;READ FLAGS
|
||||
Q'L'1: TLZ AC,027777 ;CLEAR EXTRA JUNK
|
||||
TLNE AC,USERF ;IN USER MODE ?
|
||||
JRST Q'L'4 ;YES
|
||||
SKIPE KLFLG ;KL10 ?
|
||||
JRST Q'L'3 ;YES
|
||||
;KI10 EXEC MODE
|
||||
CAME AC,[KIEF,,Q'L'1]
|
||||
ER13 AC,L'1 ;FAIL IF OVFL OR CRY0,1 FLG SET
|
||||
Q'L'2: JUMPL SAC,Q'L'0 ;LOOP ON ERROR SWITCH
|
||||
JRST Q'L'6
|
||||
;KL10 EXEC MODE
|
||||
Q'L'3: CAME AC,[KLEF,,Q'L'1]
|
||||
ER13 AC,L'1 ;FAIL IF FLAGS NOT SET
|
||||
JRST Q'L'2
|
||||
;KL10/KI10 USER MODE
|
||||
Q'L'4: SKIPE KLFLG ;KL10 ?
|
||||
JRST Q'L'5 ;YES
|
||||
;KI10 USER MODE
|
||||
CAME AC,[KIUF,,Q'L'1]
|
||||
ER13 AC,L'1 ;FAIL IF ANY FLAGS SET
|
||||
JRST Q'L'2
|
||||
;KL10 USER MODE
|
||||
Q'L'5: CAME AC,[KLUF,,Q'L'1]
|
||||
ER13 AC,L'1 ;FAIL IF FLAGS NOT SET
|
||||
JRST Q'L'2
|
||||
|
||||
Q'L'6: JRST .+1>
|
||||
DEFINE DMVM (L,A,B,C,D) <
|
||||
;THIS MACRO TESTS THE DMOVEM INSTRUCTION
|
||||
;FIRST, TSTWD, TSTWD+1 ARE PRELOADED WITH DATA OTHER THAN THE
|
||||
;TEST WORDS AND AC,AC+1 ARE LOADED WITH THE TEST WORDS.
|
||||
;THEN, THE DATA SPECIFIED BY [XWD A,B] AND [XWD C,D] IS MOVED
|
||||
;FROM AC, AC+1 TO MEMORY (TSTWD, TSTWD+1) VIA
|
||||
;THE DMOVEM INSTRUCTION. C(TSTWD) AND C(TSTWD+1) ARE THEN
|
||||
;COMPARED WITH THE TEST WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
|
||||
;THE TEST PASSES IF THESE COMPARISONS AGREE.
|
||||
|
||||
Q'L'0: DMOVE AC,[XWD 707070,707070
|
||||
XWD 070707,070707] ;INITIALIZE TEST WORDS
|
||||
MOVEM AC,TSTWD ;TSTWD, TSTWD+1 ARE IN MEMORY JUST
|
||||
MOVEM AC+1,TSTWD+1 ;AFTER THE FINAL TEST OF THIS PROGRAM
|
||||
DMOVE AC,[XWD A,B
|
||||
XWD C,D] ;INITIALIZE AC,AC+1
|
||||
DMOVEM AC,TSTWD ;*MOVE DOUBLE WORD FROM AC, AC+1
|
||||
;TO MEMORY (TSTWD, TSTWD+1)
|
||||
DMOVE AC,TSTWD ;PUT RESULTS OF TEST IN AC,AC+1 FOR COMPARISON
|
||||
CAME AC,[XWD A,B] ;WAS TSTWD LOADED CORRECTLY?
|
||||
ER5 AC,L'1 ;FAIL IF CONTENTS(TSTWD) NOT = A,B
|
||||
CAME AC+1,[XWD C,D] ;WAS TSTWD+1 LOADED CORRECTLY?
|
||||
ER6 AC+1,L'2 ;FAIL IF CONTENTS(TSTWD+1) NOT = C,D
|
||||
JUMPL SAC,Q'L'0 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
DEFINE DMVNM (L,A,B,C,D) <
|
||||
;THIS MACRO TESTS THE DMOVNM INSTRUCTION
|
||||
;FIRST, TSTWD, TSTWD+1 ARE PRELOADED WITH DATA OTHER THAN THE
|
||||
;TEST WORDS AND AC, AC+1 ARE LOADED WITH THE TEST WORDS.
|
||||
;THEN, THE NEGATIVE (TWOS COMPLEMENT) OF THE DATA SPECIFIED BY
|
||||
;[XWD A,B] AND [XWD C,D] IS MOVED FROM AC, AC+1 TO MEMORY
|
||||
;(TSTWD, TSTWD+1) VIA THE DMOVNM INSTRUCTION.
|
||||
;C(TSTWD) AND C(TSTWD+1) ARE THEN COMPARED WITH THE
|
||||
;NEGATIVE (TWOS COMPLEMENT) OF THE TEST
|
||||
;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
|
||||
;THE TEST PASSES IF THESE COMPARISONS AGREE.
|
||||
|
||||
Q'L'0: DMOVE AC,[XWD 707070,707070
|
||||
XWD 070707,070707]
|
||||
DMOVEM AC,TSTWD ;INITIALIZE TEST WORDS
|
||||
DMOVE AC,[XWD A,B
|
||||
XWD C,D] ;INITIALIZE AC,AC+1
|
||||
DMOVN AC+5,[XWD A,B
|
||||
XWD C,D] ;SET-UP TO CHECK RESULTS
|
||||
DMOVNM AC,TSTWD ;*MOVE NEGATIVE OF DOUBLE WORD FROM AC, AC+1
|
||||
;TO MEMORY (TSTWD, TSTWD+1)
|
||||
DMOVE AC,TSTWD ;PUT TEST RESULTS IN AC,AC+1
|
||||
CAME AC,<AC+5>&17 ;WAS TSTWD LOADED CORRECTLY?
|
||||
ER5 AC,L'1 ;FAIL IF CONTENTS(TSTWD) NOT = COMPLEMENT OF A,B
|
||||
CAME AC+1,<AC+6>&17 ;WAS TSTWD+1 LOADED CORRECTLY?
|
||||
ER6 AC+1,L'2 ;FAIL IF CONTENTS(TSTWD) NOT = MINUS C,D
|
||||
JUMPL SAC,Q'L'0 ;LOOP ON ERROR SWITCH>
|
||||
DEFINE DMVM17 (L,A,B,C,D) <
|
||||
;THIS MACRO TESTS THE DMOVEM INSTRUCTION
|
||||
;FIRST, TSTWD, TSTWD+1 ARE PRELOADED WITH DATA OTHER THAN THE
|
||||
;TEST WORDS AND AC,AC+1 ARE LOADED WITH THE TEST WORDS.
|
||||
;THEN, THE DATA SPECIFIED BY [XWD A,B] AND [XWD C,D] IS MOVED
|
||||
;FROM AC, AC+1 TO MEMORY (TSTWD, TSTWD+1) VIA THE DMOVEM INSTRUCTION.
|
||||
;C(TSTWD) AND C(TSTWD+1) ARE THEN COMPARED WITH THE TEST
|
||||
;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
|
||||
;THE TEST PASSES IF THESE COMPARISONS AGREE.
|
||||
|
||||
Q'L'0: MOVEM AC,%SV17 ;SAVE AC17 CAUSE IT HAS PDP
|
||||
DMOVE AC,[XWD 707070,707070
|
||||
XWD 070707,070707] ;INITIALIZE TEST WORDS
|
||||
MOVEM AC,TSTWD ;TSTWD, TSTWD+1 ARE IN MEMORY JUST
|
||||
MOVEM AC+1,TSTWD+1 ;AFTER THE FINAL TEST OF THIS PROGRAM
|
||||
DMOVE AC,[XWD A,B
|
||||
XWD C,D] ;INITIALIZE AC,AC+1
|
||||
DMOVEM AC,TSTWD ;*MOVE DOUBLE WORD FROM AC, AC+1
|
||||
;TO MEMORY (TSTWD, TSTWD+1)
|
||||
DMOVE AC,TSTWD ;PUT RESULTS OF TEST IN AC,AC+1 FOR COMPARISON
|
||||
CAMN AC,[XWD A,B] ;WAS TSTWD LOADED CORRECTLY?
|
||||
JRST .+4 ;HERE IF TESTS OK
|
||||
MOVEM AC,AC-1 ;SAVE BAD WORD
|
||||
MOVE AC,%SV17 ;RESTORE P
|
||||
ER5 AC-1,L'1 ;FAIL IF CONTENTS(TSTWD) NOT = A,B
|
||||
CAMN AC+1,[XWD C,D] ;WAS TSTWD+1 LOADED CORRECTLY?
|
||||
JRST .+4 ;HERE IF TESTS OK
|
||||
MOVEM AC,AC-1 ;SAVE BAD WORD
|
||||
MOVE AC,%SV17 ;RESTORE P
|
||||
ER6 AC+1,L'2 ;FAIL IF CONTENTS(TSTWD+1) NOT = C,D
|
||||
MOVE AC,%SV17 ;RESTORE AC UNCONDITIONALLY
|
||||
JUMPL SAC,Q'L'0 ;LOOP ON ERROR SWITCH>
|
||||
DEFINE DMVNM17 (L,A,B,C,D) <
|
||||
;THIS MACRO TESTS THE DMOVNM INSTRUCTION
|
||||
;FIRST, TSTWD, TSTWD+1 ARE PRELOADED WITH DATA OTHER THAN THE
|
||||
;TEST WORDS AND AC, AC+1 ARE LOADED WITH THE TEST WORDS.
|
||||
;THEN, THE NEGATIVE (TWOS COMPLEMENT) OF THE DATA SPECIFIED BY
|
||||
;[XWD A,B] AND [XWD C,D] IS MOVED FROM AC, AC+1 TO MEMORY
|
||||
;(TSTWD, TSTWD+1) VIA THE DMOVNM INSTRUCTION.
|
||||
;C(TSTWD) AND C(TSTWD+1) ARE THEN COMPARED WITH THE
|
||||
;NEGATIVE (TWOS COMPLEMENT) OF THE TEST
|
||||
;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
|
||||
;THE TEST PASSES IF THESE COMPARISONS AGREE.
|
||||
|
||||
Q'L'0: DMOVE AC,[XWD 707070,707070
|
||||
XWD 070707,070707]
|
||||
DMOVEM AC,TSTWD ;INITIALIZE TEST WORDS
|
||||
DMOVE AC,[XWD A,B
|
||||
XWD C,D] ;INITIALIZE AC,AC+1
|
||||
DMOVN AC+5,[XWD A,B
|
||||
XWD C,D] ;SET-UP TO CHECK RESULTS
|
||||
DMOVNM AC,TSTWD ;*MOVE NEGATIVE OF DOUBLE WORD FROM AC, AC+1
|
||||
;TO MEMORY (TSTWD, TSTWD+1)
|
||||
|
||||
DMOVE AC,TSTWD ;PUT TEST RESULTS IN AC,AC+1
|
||||
CAMN AC,<AC+5>&17 ;WAS TSTWD LOADED CORRECTLY?
|
||||
JRST .+4
|
||||
MOVEM AC,AC-1 ;SAVE BAD WORD
|
||||
MOVE AC,%SV17 ;RESTORE P
|
||||
ER5 AC-1,L'1 ;FAIL IF CONTENTS(TSTWD) NOT = COMPLEMENT OF A,B
|
||||
CAMN AC+1,<AC+6>&17 ;WAS TSTWD+1 LOADED CORRECTLY?
|
||||
JRST .+4 ;HERE IF TESTS OK
|
||||
MOVEM AC,AC-1 ;SAVE BAD WORD
|
||||
MOVE AC,%SV17
|
||||
ER6 AC+1,L'2 ;FAIL IF CONTENTS(TSTWD) NOT = MINUS C,D
|
||||
MOVE AC,%SV17
|
||||
JUMPL SAC,Q'L'0 ;LOOP ON ERROR SWITCH>
|
||||
DEFINE DMVNMF (L,A,B,C,D,KIEF,KIUF,KLEF,KLUF) <
|
||||
;**KI10**
|
||||
;THIS MACRO VERIFIES THAT THE DMOVN INSTRUCTION DOES NOT SET OVERFLOW
|
||||
;OR CARRY FLAGS ON THE KI10. FIRST, OVFL AND CRY0,1 FLAGS ARE CLEARED;
|
||||
;THEN,DMOVN IS EXECUTED. NEXT, OVFL AND CRY0,1 FLAGS ARE EXAMINED.
|
||||
;IF ANY OF THESE FLAGS ARE SET, THE TEST FAILS.
|
||||
|
||||
;**KL10**
|
||||
;THIS MACRO VERIFIES THAT THE DMOVN INSTRUCTION DOES SET OVERFLOW
|
||||
;OR CARRY FLAGS ON THE KL10. FIRST, OVFL AND CRY0,1 FLAGS ARE CLEARED;
|
||||
;THEN,DMOVN IS EXECUTED. NEXT, OVFL AND CRY0,1 FLAGS ARE EXAMINED.
|
||||
;IF THE PROPER FLAGS ARE NOT SET, THE TEST FAILS.
|
||||
|
||||
Q'L'0: JFCL 17,.+1 ;CLEAR OVFL AND CRY0,1 FLAGS
|
||||
DMOVE AC,[XWD A,B
|
||||
XWD C,D] ;SETUP INITIAL
|
||||
DMOVNM AC,TSTWD ;*DMOVNM TEST
|
||||
JSP AC,.+1 ;READ FLAGS
|
||||
Q'L'1: TLZ AC,027777 ;CLEAR EXTRA JUNK
|
||||
TLNE AC,USERF ;IN USER MODE ?
|
||||
JRST Q'L'4 ;YES
|
||||
SKIPE KLFLG ;KL10 ?
|
||||
JRST Q'L'3 ;YES
|
||||
;KI10 EXEC MODE
|
||||
CAME AC,[KIEF,,Q'L'1]
|
||||
ER13 AC,L'1 ;FAIL IF OVFL OR CRY0,1 FLG SET
|
||||
Q'L'2: JUMPL SAC,Q'L'0 ;LOOP ON ERROR SWITCH
|
||||
JRST Q'L'6
|
||||
;KL10 EXEC MODE
|
||||
Q'L'3: CAME AC,[KLEF,,Q'L'1]
|
||||
ER13 AC,L'1 ;FAIL IF FLAGS NOT SET
|
||||
JRST Q'L'2
|
||||
;KL10/KI10 USER MODE
|
||||
Q'L'4: SKIPE KLFLG ;KL10 ?
|
||||
JRST Q'L'5 ;YES
|
||||
;KI10 USER MODE
|
||||
CAME AC,[KIUF,,Q'L'1]
|
||||
ER13 AC,L'1 ;FAIL IF ANY FLAGS SET
|
||||
JRST Q'L'2
|
||||
;KL10 USER MODE
|
||||
Q'L'5: CAME AC,[KLUF,,Q'L'1]
|
||||
ER13 AC,L'1 ;FAIL IF FLAGS NOT SET
|
||||
JRST Q'L'2
|
||||
|
||||
Q'L'6: JRST .+1>
|
||||
DEFINE DFA (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
R'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFAD AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
JUMPL AC+4,R'T'00 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
DEFINE DFS (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
R'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFSB AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
JUMPL AC+4,R'T'00 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
DEFINE DFM (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
R'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFMP AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
JUMPL AC+4,R'T'00 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
DEFINE DFD (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
R'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFDV AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
JUMPL AC+4,R'T'00 ;LOOP ON ERROR SWITCH>
|
||||
DEFINE DFARP (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFAD AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T
|
||||
JUMPL AC+4,.-^D6 ;LOOP ON ERROR SWITCH>
|
||||
DEFINE SDFA (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
S'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFAD AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
JUMPL AC+4,S'T'00 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
DEFINE SDFS (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
S'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFSB AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
JUMPL AC+4,S'T'00 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
DEFINE SDFM (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
S'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFMP AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
JUMPL AC+4,S'T'00 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
DEFINE SDFMKL (T,A,B,C,D,E,F,G,H,I,M,K,L,KL1,KL2,KL3,KL4) <
|
||||
S'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFMP AC,[E,,F
|
||||
G,,H]
|
||||
SKIPE KLFLG
|
||||
JRST S'T'05
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
S'T'06: JUMPL AC+4,S'T'00 ;LOOP ON ERROR SWITCH
|
||||
JRST S'T'07
|
||||
|
||||
S'T'05: CAME AC,[KL1,,KL2]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[KL3,,KL4]
|
||||
ER4 AC+1,T'01
|
||||
JRST S'T'06
|
||||
|
||||
S'T'07: JRST .+1 >
|
||||
DEFINE SDFD (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
S'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFDV AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
JUMPL AC+4,S'T'00 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
DEFINE SDFDKL (T,A,B,C,D,E,F,G,H,I,M,K,L,KL1,KL2,KL3,KL4) <
|
||||
S'T'00: DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFDV AC,[E,,F
|
||||
G,,H]
|
||||
SKIPE KLFLG
|
||||
JRST S'T'05
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T'01
|
||||
S'T'06: JUMPL AC+4,S'T'00 ;LOOP ON ERROR SWITCH
|
||||
JRST S'T'07
|
||||
|
||||
S'T'05: CAME AC,[KL1,,KL2]
|
||||
ER3 AC,T'01
|
||||
CAME AC+1,[KL3,,KL4]
|
||||
ER4 AC+1,T'01
|
||||
JRST S'T'06
|
||||
|
||||
S'T'07: JRST .+1 >
|
||||
DEFINE SDFARP (T,A,B,C,D,E,F,G,H,I,M,K,L) <
|
||||
DMOVE AC,[A,,B
|
||||
C,,D]
|
||||
DFAD AC,[E,,F
|
||||
G,,H]
|
||||
CAME AC,[I,,M]
|
||||
ER3 AC,T
|
||||
CAME AC+1,[K,,L]
|
||||
ER4 AC+1,T
|
||||
JUMPL AC+4,.-^D6 ;LOOP ON ERROR SWITCH>
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -8,7 +8,53 @@ PDP-10 KLAD Diagnostics
|
|||
-----------------------
|
||||
|
||||
PCjs has archived selected files from
|
||||
[PDP-10 KLAD Diagnostics Sources](http://pdp-10.trailing-edge.com/klad_sources/index.html), including:
|
||||
[PDP-10 KLAD Diagnostics Sources](http://pdp-10.trailing-edge.com/klad_sources/index.html) and turned them into
|
||||
stand-alone PDP-10 diagnostics, using the new PCjs [MACRO-10 Mini-Assembler](/modules/pdp10/lib/macro10.js). A complete
|
||||
list is provided [below](#list-of-ka10-diagnostics).
|
||||
|
||||
I experimented with assembling an entire diagnostic (**DAKAK**) from all its original pieces, by going to the
|
||||
[DAKAK Diagnostic](dakak/) page and typing the following command:
|
||||
|
||||
a 'dakakt.mac;../param.klm;../fixed.klm;dakakm.mac;../uuoerr.klm;../stor.klm'
|
||||
|
||||
and while the MACRO-10 assembly process works:
|
||||
|
||||
loading dakakt.mac
|
||||
loading param.klm
|
||||
loading fixed.klm
|
||||
loading dakakm.mac
|
||||
loading uuoerr.klm
|
||||
loading stor.klm
|
||||
6301 words loaded at 000137-044630, start address 030000
|
||||
00=000000000000 01=000000000000 02=000000000000 03=000000000000
|
||||
04=000000000000 05=000000000000 06=000000000000 07=000000000000
|
||||
10=000000000000 11=000000000000 12=000000000000 13=000000000000
|
||||
14=000000000000 15=000000000000 16=000000000000 17=000000000000
|
||||
PC=030000 RA=00000000 EA=000000 PS=000000 OV=0 C0=0 C1=0 ND=0 PD=0
|
||||
030000: 254020 027776 JRST @27776
|
||||
|
||||
there are additional modules that must be loaded into the machine as well, which are not yet supported. So it's best
|
||||
to assemble the modified files that I've placed inside each diagnostic's folder. For the [DAKAK Diagnostic](dakak/),
|
||||
that's **DAKAK.MAC**:
|
||||
|
||||
>> a dakak.mac
|
||||
loading dakak.mac
|
||||
5849 words loaded at 000137-044133, start address 030621
|
||||
00=000000000000 01=000000000000 02=000000000000 03=000000000000
|
||||
04=000000000000 05=000000000000 06=000000000000 07=000000000000
|
||||
10=000000000000 11=000000000000 12=000000000000 13=000000000000
|
||||
14=000000000000 15=000000000000 16=000000000000 17=000000000000
|
||||
PC=030621 RA=00000000 EA=000000 PS=000000 OV=0 C0=0 C1=0 ND=0 PD=0
|
||||
030621: 254000 030622 JRST 30622
|
||||
|
||||
If the machine is able to run to the end of the diagnostic (which can be located by looking at the diagnostic's original
|
||||
MACRO-10 listing file) without stopping on an UUO opcode, then you can assume it passed.
|
||||
|
||||
List of KA10 Diagnostics
|
||||
------------------------
|
||||
|
||||
The following list of KA10 Diagnostics is not comprehensive. It's simply a list of thosr diagnostics we have archived and
|
||||
tested with PDPjs so far.
|
||||
|
||||
- [KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA)](dakaa/)
|
||||
- TEST OF JUMP, JUMPA AND SKIPX INSTRUCTIONS
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
171
apps/pdp10/diags/klad/SPCCPU.KLM.txt
Normal file
171
apps/pdp10/diags/klad/SPCCPU.KLM.txt
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
SUBTTL *SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76
|
||||
|
||||
;NEW DEFINITIONS USED BY THE KL10 SUBROUTINE PACKAGE
|
||||
|
||||
AC0= 0
|
||||
DIAGNOS=30000 ;PDP-10 DIAGNOSTIC START ADDRESS
|
||||
DDT= 10000 ;PDP-10 DDT START ADDRESS
|
||||
DIAMON= 20000 ;PDP-10 DIAMON LOADER START ADDRESS
|
||||
DONG11= 1B22 ;11 DOORBELL (FROM THE 10)
|
||||
|
||||
;DTE20 DEVICE CODES
|
||||
|
||||
DTE== 200 ;DTE0
|
||||
DTE0== 204
|
||||
DTE1== 204
|
||||
DTE2== 210
|
||||
DTE3== 214
|
||||
|
||||
;KL10 EPT COMMUNICATION AREA
|
||||
|
||||
$STD= 440 ;PDP-10 DIAGNOSTIC START ADDRESS
|
||||
$DDT= 441 ;PDP-10 DDT START ADDRESS
|
||||
$STL= 442 ;PDP-10 LOADER START ADDRESS
|
||||
$STM= 443 ;PDP-10 MONITOR START ADDRESS
|
||||
|
||||
$DTFLG= 444 ;DTE20 OPERATION COMPLETE FLAG
|
||||
$DTCLK= 445 ;DTE20 CLOCK INTERRUPT FLAG
|
||||
$DTCI= 446 ;DTE20 CLOCK INTERRUPT INSTRUCTION
|
||||
$DTT11= 447 ;DTE20 10 TO 11 ARGUMENT
|
||||
$DTF11= 450 ;DTE20 11 TO 10 ARGUMENT
|
||||
$DTCMD= 451 ;DTE20 TO 11 COMMAND WORD
|
||||
$DTSEQ= 452 ;DTE20 OPERATION SEQUENCE NUMBER
|
||||
$DTOPR= 453 ;DTE20 OPERATIONAL DTE #
|
||||
$DTCHR= 454 ;DTE20 LAST TYPED CHARACTER
|
||||
$DTMTD= 455 ;DTE20 MONITOR TTY OUTPUT COMPLETE FLAG
|
||||
$DTMTI= 456 ;DTE20 MONITOR TTY INPUT FLAG
|
||||
|
||||
$DTSWR= 457 ;DTE20 CONSOLE SWITCH REGISTER
|
||||
;SPECIAL "FIXED" REASSIGNMENTS
|
||||
|
||||
$$LOC=. ;SAVE CURRENT LOCATION
|
||||
|
||||
LOC 30000
|
||||
$$BEGIN:JRST $$START ;SETUP SPECIAL START
|
||||
JRST $$START ;"DIAMON" CHAIN START ADDRESS
|
||||
|
||||
LOC 440
|
||||
$STD: JRST BEGIN ;SETUP FOR "STD"
|
||||
LOC 443
|
||||
$STM: JRST $SPEC ;SIMPLE RUN CONTROL
|
||||
|
||||
LOC 30057
|
||||
$BEGEND:JRST $SPBEND ;SETUP SPECIAL "BEGEND"
|
||||
|
||||
;SPECIAL MUUO, TRAP & PAGE FAIL SETUP
|
||||
|
||||
LOC 420
|
||||
$$420: HALT . ;KI10 PAGE FAIL
|
||||
$$421: JFCL ;OVERFLOW
|
||||
$$422: HALT . ;PUSHDOWN OVERFLOW
|
||||
$$423: HALT . ;TRAP 3
|
||||
$$424: 0 ;MMUO
|
||||
$$425: 0 ;MMUO PC
|
||||
$$426: 0 ;KI10-PAGE FAIL, KL10-PROCESS CONTEXT
|
||||
$$427: HALT .
|
||||
$$430: 427 ;MMUO NEW PC'S
|
||||
$$431: 427
|
||||
$$432: 427
|
||||
$$433: 427
|
||||
$$434: 427
|
||||
$$435: 427
|
||||
$$436: 427
|
||||
$$437: 427
|
||||
|
||||
LOC 500
|
||||
$$500: 0 ;KL10 PAGE FAIL WORD
|
||||
$$501: 0 ;KL10 PAGE FAIL PC
|
||||
$$502: 503 ;KL10 PAGE FAIL NEW PC
|
||||
$$503: HALT .
|
||||
LOC $$LOC ;RESET CURRENT LOCATION
|
||||
|
||||
;SPECIAL STARTUP SEQUENCE
|
||||
|
||||
$$START:SETZM USER
|
||||
JSP 0,.+1 ;IN USER MODE ?
|
||||
TLNE 0,USERF
|
||||
SETOM USER ;YES, SET CONTROL WORD
|
||||
SKIPN MONFLG ;SPECIAL USER MODE ?
|
||||
SETZM USER ;YES, RUN AS EXEC
|
||||
SKIPE USER
|
||||
JRST START ;USER MODE, DON'T NEED CPU TYPE
|
||||
|
||||
$STKIL: SKIPN MONTEN ;LOADED BY "DIAMON" ?
|
||||
SETOM ITRCNT ;NO, RUN FOREVER
|
||||
SETZM KLTYP
|
||||
SETZM KLFLG ;ASSUME KI10
|
||||
MOVE 1,[1,,1]
|
||||
BLT 1,1 ;HOPE THIS WORKS
|
||||
CAMN 1,[1,,1] ;IF AC NE 1,,1 AFTER BLT, KL10
|
||||
JRST START ;KI10, NO ADDITIONAL SETUP
|
||||
|
||||
$STKL: CONO APR,10040 ;SET BBD NOT BIT
|
||||
CONI APR,0
|
||||
CONO APR,20040 ;CLEAR BBD NOT BIT
|
||||
TRNN 0,40 ;IF SET, KL10
|
||||
AOS KLTYP ;IF NOT, BBD
|
||||
SETZM $DTFLG
|
||||
SETZM $DTCLK
|
||||
MOVE $DTOPR ;GET DTE #
|
||||
ORM $$DTE0 ;INSERT IN DTE I/O INSTS
|
||||
ORM $$DTE1
|
||||
ORM $$DTE2
|
||||
ORM $$DTE3
|
||||
SETOM KLFLG ;SET KL10 CONTROL FLAG
|
||||
JRST START
|
||||
|
||||
$SPEC: MOVE [JRST STARTA] ;SIMPLE RUN CONTROL
|
||||
MOVEM $SPB1
|
||||
JRST START
|
||||
;SPECIAL "BEGEND" ROUTINE
|
||||
|
||||
$SPBEND:AOS PASCNT ;INCREMENT PASS COUNT
|
||||
SOS ITRCNT ;DECREMENT ITERATION COUNT
|
||||
$SPB1: SKIPN USER
|
||||
JRST $SPBEX ;EXEC MODE
|
||||
|
||||
$SPBUS: SKIPE ITRCNT ;USER MODE, COMPLETED ?
|
||||
JRST STARTA ;NO, KEEP RUNNING
|
||||
SKIPN MONTEN ;DONE, LOADED BY "DIAMON" ?
|
||||
EXIT ;NO, RETURN TO MONITOR
|
||||
JRST @RETURN ;YES, RETURN TO "DIAMON"
|
||||
|
||||
$SPBEX: SKIPE KLFLG
|
||||
JRST $SPBKL ;KL10 & EXEC
|
||||
DATAO PI,ITRCNT ;KI10 & EXEC, DISPLAY ITER COUNT
|
||||
SKIPE ITRCNT
|
||||
JRST STARTA ;NOT COMPLETED YET
|
||||
JRST @RETURN ;DONE
|
||||
|
||||
$SPBKL: SKIPN ITRCNT
|
||||
JRST $SPKLD ;KL10, EXEC & COMPLETED
|
||||
|
||||
SKIPGE MONCTL
|
||||
JRST STARTA ;"DIAMON" CONTROL
|
||||
MOVEI 0,404 ;NOTIFY PDP-11 OF END OF PASS
|
||||
MOVEM 0,$DTCMD
|
||||
SETZM $DTFLG
|
||||
SKIPN KLTYP
|
||||
$$DTE0: CONO DTE,DONG11
|
||||
SKIPE KLTYP
|
||||
$$DTE1: CONO DTE,10000
|
||||
SKIPN $DTFLG ;WAIT TILL 11 RESPONDS
|
||||
JRST .-1
|
||||
JRST STARTA ;KEEP RUNNING
|
||||
|
||||
;SPECIAL KL10 COMPLETED ROUTINE
|
||||
|
||||
$SPKLD: SKIPE MONTEN
|
||||
JRST @RETURN ;LOADED BY "DIAMON"
|
||||
|
||||
MOVEI 0,403 ;NOTIFY PDP-11 OF COMPLETION
|
||||
MOVEM 0,$DTCMD
|
||||
SETZM $DTFLG
|
||||
SKIPN KLTYP
|
||||
$$DTE2: CONO DTE,DONG11
|
||||
SKIPE KLTYP
|
||||
$$DTE3: CONO DTE,10000
|
||||
SKIPN $DTFLG ;SHOULD NEVER HAPPEN
|
||||
JRST .-1 ;11 NEVER RETURNS ON END OF PROGRAM
|
||||
HALT BEGIN ;IF IT DOES, HALT.
|
||||
|
||||
21
apps/pdp10/diags/klad/STOR.KLM.txt
Normal file
21
apps/pdp10/diags/klad/STOR.KLM.txt
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
SUBTTL *STOR* RESERVED STORAGE, JULY 19,1977
|
||||
|
||||
;PROGRAM LITERALS
|
||||
|
||||
XLIST
|
||||
IFNDEF $LPAPER,<LIST>
|
||||
LIT
|
||||
LIST
|
||||
ENDSLD: 0
|
||||
|
||||
IFDEF DEBUG,<
|
||||
PATCH: BLOCK DEBUG ;PATCHING AREA
|
||||
>
|
||||
|
||||
;PROGRAM VARIABLES
|
||||
VAR
|
||||
|
||||
IFDEF PGMEND,<
|
||||
END: 0
|
||||
END BEGIN >
|
||||
|
||||
|
|
@ -7,7 +7,7 @@ machines:
|
|||
type: pdp10
|
||||
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||
debugger: true
|
||||
commands: a 'dakakt.mac;../param.klm;../fixed.klm;dakakm.mac;../uuoerr.klm'
|
||||
commands: a dakak.mac
|
||||
---
|
||||
|
||||
PDP-10 KA10 Basic Instruction Diagnostic #11
|
||||
|
|
@ -18,7 +18,9 @@ The *PDP-10 KA10 Basic Instruction Diagnostic #11* (MAINDEC-10-DAKAK) test code
|
|||
[DAKAKT.MAC](DAKAKT.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakakt.mac.html)]
|
||||
for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
|
||||
|
||||
Resources for this test include:
|
||||
This diagnostic "TESTS THE MULTIPLY INSTRUCTION AND THE MULTIPLY ALGORITHM."
|
||||
|
||||
Resources for this diagnostic include:
|
||||
|
||||
- [Instructions](#dakaktxt)
|
||||
- [History](#dakakhst)
|
||||
|
|
@ -38,6 +40,23 @@ This command:
|
|||
will automatically read the [DAKAK.MAC](DAKAK.MAC.txt) source file (a slightly modified copy of [DAKAKM.MAC](DAKAKM.MAC.txt)),
|
||||
assemble it, and then load the binary image at the location specified in the file.
|
||||
|
||||
To assemble the diagnostic using the original DEC source files:
|
||||
|
||||
a 'dakakt.mac;../param.klm;../fixed.klm;dakakm.mac;../uuoerr.klm;../stor.klm'
|
||||
|
||||
The quotes (either single or double) are required to prevent the PDPjs Debugger from interpreting the filenames as
|
||||
separate commands, because a semicolon is the Debugger's normal command separator.
|
||||
|
||||
If you want a machine to automatically assemble and load those files on startup, you can add the following machine configuration
|
||||
setting in the page's Front Matter:
|
||||
|
||||
commands: a 'dakakt.mac;../param.klm;../fixed.klm;dakakm.mac;../uuoerr.klm;../stor.klm'
|
||||
|
||||
However, in this case, you *must* use `'` as the quoting sequence, because of the way these settings are encoded into
|
||||
JavaScript parameters; e.g.:
|
||||
|
||||
embedPDP10(...,'{commands:"a 'dakakt.mac;../param.klm;../fixed.klm;dakakm.mac;../uuoerr.klm;../stor.klm'"}');
|
||||
|
||||
---
|
||||
|
||||
DAKAK.TXT
|
||||
|
|
|
|||
Loading…
Reference in a new issue