IMD 1.16: 2/09/2008 10:33:42 84-93814-01 b200 (f81401) pat 495 source product diskette    @0|)wwЀЀtQql)  " }gA `_l M@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOS4 MF181110917441804811109174418 8111091744180F81401 VOLPAT495 DIAGNOSTIC 84-93814-01-B200   IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII_l M@iGyy GGG`HZ@ b G`^Y e IQ BBp@;:9 :7P@ G:پN 8!0. * C'xC# b# }B @0DAJL w+™ЀЀΖQA1"   i ž} š} @EEFF)DEۄF8 џ} ԟ} ̟} * `jUBBI,v BI, # @ G9H@pܾrCHC C GTq` Lg"gEXC P+s=胾P+c fQN p $Rxnj  ޔniZ ތ⊞ } }HGž Ÿ@ALS)"$ C k20j.h( +$`%ꂜ\1 !M' y %'+os慾)sY ed|{ @8 o O m J K i gN )V% t%sLn`"E F. F„ D>) =`;nrgy w"G,{Kq1 A&}E*`(t@% ;c  765y342(.OS:: SYS"iwvc Bc A@6<# Ic B# gIjHc r TITL PAT495.NUC -- NM495 NUCLEUS SECTION 94-93814-10 NAM COUNT1 NAM COUNT2 NAM PUPCT NAM PDNCT NAM PFERRS NAM PATEND MACHINE =:20 NAM DEFAULT * * MOVE ROUTINE * * MOVES PAT FROM ANY START LOCATION TO START LOCATION 0 * ABS 0 NOP FILLER NOP COPY P,X COPY P TO X (:XXXQ+) SUB =3,X SOURCE START ADDRESS COPY =0,Y START-OF-DESTINATION ADDRESS  SBIT 6,S SET XA BIT WORD :C287 COPY $+9,Q -- PROGRAM LENGTH SELP Y,4 0 TO CONSOLE  HLT * WORD :8285 COPY $+6,A -- MOVE ROUTINE ADDR. ADD X,A ADD DISPLACEMENT OF PAT IN MEMORY WORD :8681 COPY A,$+2 WORD :9F80 JMP *$+1 -- JUMP TO MANUAL MOVE ROUTINE RES 1,0 LENGTH RES 1 ADDR. OF END OF PAT (PATEND) MOVADR RES 1 ADDR. OF MOVE ROUTINE (MOVE) TITL * * WORD AND TEMP. LOCATIONS USED BY PAT *  ABS :10 TEMP01 RES 1,0 TEMP02 RES 1,0 TEMP RES 1,0 P55AA WORD :55AA NAA55 WORD :AA55 PTFFFF WORD :FFFF PTF0F0 WORD :F0F0 PT00FF WORD :00FF PT0000 WORD 0 PT7FFF WORD :7FFF PT5555 WORD :5555 PT6666 WORD :6666 PTAAAA WORD :AAAA PTFFFE WORD :FFF E PT8000 WORD :8000 PTAA00 WORD :AA00 PT55AA EQU P55AA PTAA55 EQU NAA55 * * I/O TEST MODULE INTERRUPT VECTOR (:20) *  ABS :20 WORD 0 WORD 0 WORD 0 WORD 0 TITL * * EQUATES USED BY PAT * STATUS EQU :150 STACKP EQU :0100 DATSAV EQU DTEMP PATEND EQU :4800 * * (PSW)--STATUS REGISTER EQUATES CY EQU 0 CARRY BIT OV EQU 1 OVERFLOW BIT BY EQU 2 BYTE MODE BIT BM EQU BY ALTERNATE NAME CI EQU 4 CONSOLE INTERRUPT ENABLE BIT RI EQU 5 REAL-TIME CLOCK INTERRUPT ENABLE BIT XA EQU 6 EXTENDED ADDRESSING BIT INT EQU 8 INTERRUPTS ENABLE BIT UM EQU 10 USER MODE BIT UP EQU 11 USER PROTECT BIT TITL * * OTHER WORD AND TEMP LOCATIONS * ATEMP RES 1,0 XTEMP RES 1,0 QTEMP RES 1,0 YTEMP RES 1,0 KTEMP RES 1,0 LTEMP RES 1,0 MACHIN RES 1,0 MACHINE TYPE PCOUNT RES 1,0 IDP TEST COUNTER COUNT1 RES 1,0 PASS COUNTER COUNT2 RES 1,0 PASS COUNTER IDPCNT RES 1,0 IDP PASS COUNTER STATSV WORD :0150 JMP1 WORD :9F80 JMP *$+1 RELATIVE JST1 WORD :BF80 JST *$+1 RELATIVE HLT1 HLT HLT INSTRUCTION * * CONTXT RES 9,0 CONTEXT BLOCK STARTP WORD START REDOPAT WORD :0BF8 TITL * * I/O TEST MODULE ECHO INTERRUPT VECTOR (:40) * ABS :40 JST *$+1 WORD 0 * * ROUTINE TO INDICATE UNEXPECTED TRAP ON CONSOLE DATA REGISTER * LIGHTS ENT IN 4,A GET CONSOLE DATA REGISTER AND =:FF,A PRESERVE THE TEST NUMBER OR PTAA00,A SET UPPER BYTE TO FLAG UNEXPECTED TRAP SELP A,4 OUTPUT TO CONSOLE DISPLAY JMP *LIGHTS * * * UNIMPLEMENTED INSTRUCTION TRAP ROUTINE * UIT1 EQU $ JST LIGHTS ERROR: UNEXPECTED,UNIMPLEMENTED,INSTRUCTION JMP *STARTP * * MEMORY EXCEPTION TRAP ROUTINE * UMT1 EQU $ WORD STATUS WORD STACKP ERROR: UNEXPECTED,MEMORY,EXCEPTION JMP *STARTP TITL * * SYSTEM/USER TRAP ROUTINE * SUTRAP WORD STATUS WORD STACKP HLT LCNTX * * PRIVILEGED OPERATION TRAP ROUTINE * PPIT1 EQU $ WORD STATUS WORD STACKP ERROR: UNEXPECTED,PRIVILEGED,OPERATION LCNTX * * SEMAPHORE TRAP ROUTINE * SEMA4:1 WORD STATUS  WORD STACKP HLT LCNTX * * SYSTEM STACK EXCEPTION TRAP ROUTINE * SSET1 EQU $ ERROR: UNEXPECTED,SYSTEM,STACK,EXCEPTION JMP START * * USER STACK EXCEPTION TRAP ROUTINE * USET1 EQU $ JST LIGHTS ERROR: UNEXPECTED,USER,STACK,EXCEPTION JMP START TITL * * I/O TEST MODULE REAL-TIME CLOCK INTERRUPT VECTOR (:60) * ABS :60 IMS $+1 WORD 0 * * I/O TEST MODULE DMA COMPLETE INTERRUPT VECTOR (:62) * JST *$+1 WORD 0 * * * CONSOLE INTERRUPT ROUTINE * CONINT WORD STATUS WORD STACKP OUT A,1 RESET CONSOLE INTERRUPTS IN 4,A COPY A,DTEMP COPY =-10,Q COPY PTAAAA,A CONINT2 SELP A,4 COPY DELAY1,A COPY A,TIMER IMS TIMER JMP $-1 IN 4,A ROTATE A,L,1 IJNE Q,CONINT2 COPY DTEMP,A SELP A,4 LCNTX DELAY1 RES 1,:0000 CONSOLE INTERRUPT TEST DELAY DTEMP RES 1,0 TEMPORARY DATA REGISTER STORAGE TIMER RES 1,0 * * POWER UP TRAP VECTOR * ABS :80 POWUP JMP *$+1 PUPPTR WORD PUPRTN * * UNIMPLEMENTED INSTRUCTION TRAP VECTOR (:84) * ABS  :84 LOC84 RES 2,0 INTERRUPT LOC + 1 LOC85 EQU $-1 INTERRUPT INSTRUCTION JMP *$+1 UNIMPT WORD UIT1 * * MEMORY EXCEPTION TRAP VECTOR (:88) * UNMEM0 RES 2,0 P+1 UNMEM1 EQU $-1 I SCNTX UMT1 UNMEM3 EQU $-1 * *  POWER FAIL TRAP VECTOR (:8C) * PWNVEC RES 2,0 P+1 SCNTX PDWN PDNPTR EQU $-1 * * RES 1,:0E0D TITL * *  REAL TIME CLOCK INTERRUPT CELLS (:91) * ABS :91 RTCTIM WORD 0 RTC TIMING CELL * JST *$+1 RTC TIMING CELL OVERFLOW VECTOR RTCPTR WORD 0 * * CONSOLE INTERRUPT VECTOR (:94) * SCNTX CONINT * * DIVIDE/FLOATING POINT TRAP ROUTINE * (ARITHMETIC EXCEPTION TRAP ROUTINE) * AET1 EQU $ JST LIGHTS ERROR: UNEXPECTED,ARITHMETIC,EXCEPTION JMP START * * USER STACK EXCEPTION TRAP VECTOR (:9C) * ABS :9C RES 2,0 JMP *$+1 WORD USET1 TITL * USER TRAP VECTOR (:A0) * ABS :A0 UTRAP1 RES 2,0 UTRAP2 EQU $-1 UTRAP3 SCNTX SUTRAP UTRAP4 EQU $-1 * * SYSTEM TRAP VECTOR (:A4) * STRAP1 RES 2,0 STRAP2 EQU $-1 STRAP3 SCNTX SUTRAP STRAP4 EQU $-1 * * DIVIDE FAULT/FLOATING POINT EXPONENT OVERFLOW TRAP VECTOR (:A8) * (ARITHMETIC EXCEPTION TRAP VECTOR) * ABS :A8 ARERR EQU $ ARERR0 RES 2,0 JMP *$+1 WORD AET1 * *  PRIVILEGED OPERATION TRAP VECTOR (:AC) * PPIT RES 2,0 SCNTX PPIT1 * SEMAPHORE TRAP VECTOR (:B0) * SEMA4: RES 2,0 SCNTX SEMA4:1 TITL * * SYSTEM STACK EXCEPTION TRAP VECTOR (:B4) * RES 2,0 JMP *$+1 WORD SSET1 * * POWER FAIL TRAP ROUTINE * PDWN EQU $ WORD STATUS WORD STACKP IN :04,A READ DATA REGISTER COPY A,DATSAV SAVE DATA REG. IMS PDNCT BUMP DOWN COUNTER NOP HLT * * POWER UP TRAP ROUTINE * PUPRTN EQU $  SIN 15 COPY *PWRVC2,A TEST FOR COLD START (PWRVC2 ALTERED ON POWER FAIL) JEQ A,START JUMP IF COLD START PRTN00 IMS PUPCT BUMP POWER UP COUNT NOP PRTN01 EQU $ PRTN02 COPY DATSAV,A SELP A,4 RESTORE CONSOLE DATA REGISTER AND =REDOPAT,A SEE IF CURRENT TEST IS RESUMMABLE JGT A,START JUMP IF NOT COPY PUPCT,A FETCH POWER UP COUNT XOR PDNCT,A COMPARE TO POWER DOWN COUNT JNE A,PRTN03 JUMP IF MISCOMPARE PRTN021 LCNTX * HERE IF PF & RESUMMABLE & COUNTS COMPARE PRTN03 EQU $ HERE IF PF & RESUMMABLE & MISCOMPARE  IMS PFERRS BUMP POWER UP/DOWN MISCOMPARE COUNTER NOP SIN 13 COPY DMAND2,A AND =:02,A JNE A,PRTN04 IF BIT 1 SET, DO NOT HALT ERROR: POWER,UP/DOWN,COUNTS,NOT,EQUAL PRTN04 COPY PDNCT,A  COPY A,PUPCT SET UP/DOWN COUNTS EQUAL START EQU $ COPY STARTPTR,A COPY CONTXPTR,X LOAD CONTEXT POINTER COPY A,0(X) STORE START ADDRESS ADD =:50,A COPY A,2(X) STORE PROCESOR STATUS WORD (PSW) LCNTX CONTXPTR WORD CONTXT STARTPTR WORD :0FF POINTER TO START OF PROGRAM PUPCT WORD 0 POWER-UP COUNT PDNCT WORD 0 POWER-DOWN COUNT PFERRS WORD 0 POWER UP/DOWN MISCOMPARE COUNTER PWRVEC WORD POWUP PWRVC2 WORD PWNVEC POINTER TO PROGRAM RETURN POINTER DEMAND RES 1,0 MODE SEL WORD 1 DMAND2 RES  1,0 MODE SEL WORD 2 MEMFLAG RES 1,0 PARTIAL-MEMORY TESTING FLAG DEFAULT WORD :7FF DEFAULT TEST SELECTION SAVE END COPY A,2(X) STORE PROCESOR STATUS WORD (PSW) LCNTX CONTXPTR WORD CONTXT STARTPTR WORD :0FF POINTER TO START OF PROGRAM PUPCT WORD 0 POWER-UP COUNT PDNCT WORD 0 POWER-DOWN COUNT PFERRS WORD 0 POWER UP/DOWN MISCOMPARE COUNTER PWR VEC WORD POWUP PWRVC2 WORD PWNVEC POINTER TO PROGRAM RETURN POINTER DEMAND RES 1,0 MODE SEL WORD 1 DMAND2 RES  1,0 MODE SEL WORD 2 MEMFLAG RES 1,0 PARTIAL-MEMORY TESTING FLAG DEFAULT WORD :7FF DEFAULT TEST SELEC TITL PAT495P1 -- BASIC INSTRUCTION SET TESTING 84-93814-11 TITL BASIC INSTRUCTION DIAGNOSTIC -- SEC. A0-1 NAM PAT495 NAM A01000 NAM A02000 MACHINE =:20 ************************************************** * * *------------ SECTION A0 ------------ * * OBJECTIVE: IN THIS SECTION SOME DEGREE OF * CONFIDENCE IS OBTAINED ON CERTAIN * BASIC INSTRUCTIONS. * * INSTRUCTIONS: THE FOLLOWING INSTRUCTIONS ARE * TESTED.(IN ORDER OF THE LIST). * NOTE:ONLY ABSOLUTE DIRECT ADDRESSING IS USED: * * HLT HALT A01000 * COPY P,A LOAD 'A' FROM 'P' A01000 * SELP A,4 DISPLAY 'A' A01000 * JST MEM JUMP AND STORE  A01000 * JMP MEM UNCONDITIONAL JMP A01000 * COPY LIT,2REG A02000 * CSK 2REG,LIT A02000 * COPY MEM,2REG LOAD (DIRECT ADD.) A02000 * CSK 2REG,MEM ARITH COMP A&Q  A02000 * COPY 2REG,MEM STORE (DIRECT ADD.) A02000 * COPY 8REG,8REG REG TO REG LOAD A03000 * JEQ 4REG,MEM A04000 * JNE 4REG,MEM A04000 * JLT 4REG,MEM A04000 * JLE 4REG,MEM A04000 * JGT 4REG,MEM A04000 * JGE 4REG,MEM A04000 * OR MEM,2REG INCLUSIVE OR A06000 * XOR MEM,2REG EXCLUSIVE OR A07000 * AND MEM,2REG A08000 * RBIT OV,S A0A000 * SBIT OV,S  A0A000 * JT OV,MEM A0A000 * JF OV,MEM A0A000 * SBIT BY,S BYTE MODE A0B000 * RBIT BY,S WORD MODE A0B000 * SIN STATUS INHIBIT A0C000 * IMS MEM INCR. MEM AND SKIP A0D000 * SHIFT 4REG,LO,CNT A0E000 * FMT 4REG A0F000 * XNX 4REG A10000 * IN 4,4REG  A11000 * ************************************************** TITL ************************************************** * * *------TEST STRUCTURE------- * * FROM HERE ONWARD STEP BY STEP CONFIDENCE IS * GAINED IN VARIOUS INSTRUCTIONS BY EXECUTING * EACH INSTRUCTION TO PERFORM ITS SIMPLEST * FUNCTION IN ABSOLUTE DIRECT ADDRESSING AND * WORD MODE. NORMALLY TWO INSTRUCTIONS ARE * TAKEN IN PAIR TO TEST EACH OTHER USING * KNOWN WORKING INSTRUCTIONS. * * BY THE END OF THIS TEST IT CAN BE SAFELY * ASSUMED THAT ALL THE INSTRUCTIONS LISTED * ABOVE ARE PERFORMING THEIR FUCTION UNDER * ABSOLUTE DIRECT ADDRESSING AND WORD MODE. * * THIS SECTION (A0) PROVIDES BASIC CONFIDENCE * AND TOOLS FOR EXTENSIVE CHECKOUT OF * INSTRUCTIONS IN THE FOLLOWING SECTIONS. * **********************************************************  TITL * * LOAD CONSOLE INTERRUPT TEST DELAY CELL * ABS DELAY1 WORD :0000 * ABS :FF PAT495 HLT TITL ******************************************************* * * * PAT INITIALIZATION * * ******************************************************* JMP DEFLT DEFAULT MODE STARTING POINT JMP DEMND DEMAND MODE STARTING POINT  JMP RESTRT DEMAND MODE RESTART POINT DEFLT EQU $ DEFAULT MODE INITIALIZATION COPY A,DMAND2 SET DEMAND SELECTION WORD 2 COPY DEFAULT,A SELECT TESTS 1,2,3,5,6,7,8,9,A * TEST 4 RUN IF I/O CARD PRESENT COPY A,DEMAND COPY TO DEMAND MODE SELECTION WORD 1 COPY =0,Q COPY Q,PUPCT CLEAR POWER UP COUNT COPY Q,PDNCT CLEAR POWER DOWN COUNT JMP A01000 START IDP DEMND EQU $ DEMAND MODE INITIALIZATION COPY =0,Q COPY Q,PUPCT CLEAR POWER-UP COUNT COPY Q,PDNCT CLEAR POWER-DOWN COUNT COPY Q,PFERRS CLEAR POWER UP/DOWN MISCOMPARE COUNTER COPY Q,COUNT1 CLEAR PASS COUNTER COPY Q,COUNT2 CLEAR PASS COUNTER RESTRT COPY A,DMAND2 SET DEMAND SELECTION WORD 2 IN 4,A INPUT TEST SELECTION FROM CONSOLE WORD REGISTER COPY A,DEMAND SET DEMAND MODE SELECTION WORD 1 TITL ************************************************** * *----- SECTION A0 TEST 1 ----- * TEST: HLT, COPY P,A, SELP A,4 * JST, ERROR MACRO, AND JMP * * HALT1 -- :C000 * HALT2 -- :XX17 * HALT3 -- MACHINE TYPE * ****************************************************** * A01000 EQU $ COPY =:C000,A GET REVISION LEVEL OF PAT495 SELP A,4 DISPLAY IT ERROR: --HALT1-- DISPLAY :B300 * COPY P,A SELP A,4 ERROR: --HALT2--DISPLAY,:XX17,-,TEST,ERROR,MACRO * * ---- IF PROGRAM COUNTER INCREMENTS PROPERLY, * ---- THEN COPY 8REG,P IS VERIFIED *  FMT A FETCH MACHINE TYPE IN 'A' SELP A,4 DISPLAY MACHINE TYPE HLT HALT3--DISPLAY MACHINE TYPE COPY A,MACHIN SAVE MACHINE TYPE FOR FUTURE JMP A01020 TEST JMP ERROR: ERROR,--,JMP,FAILED A01020 EQU $ JMP A01000 LOOP PATCH ORG $-1 NOP COPY =0,A COPY A,MEMFLAG INITIALIZE PARTIAL-MEMORY TEST FLAG TITL * * INITIALIZATION * A02000 EQU $ ABS STARTPTR WORD A02000 INSERT WORD  ORG A02000 ORG BACK * OUT A,4 RESET MMU SIN 2 COPY STATSV,A COPY A,S JMP PART1 LPOOL PART1 COPY =0,A COPY A,IDPCNT CLEAR IDP PASS COUNTER SELP A,:5E INITIALIZE I/O TEST MODULE  COPY HLT1,A HLT INSTRUCTION COPY A,1 STORE AT LOCATION 1 A02002 EQU $ COPY =1,A COPY A,PCOUNT INITIALIZE IDP TEST COUNTER SELP A,4 DISPLAY IDP TEST CODE TITL ******************************************************* * * ----- A02000 ----- * * ----- TEST COPY LIT,2REG AND CSK 2REG,LIT * ******************************************************* CSK A,=:1 NOP ERROR: --ERROR,CSK,FAILED,A=1 CSK A,=0 ERROR: '--ERROR--CSK FAILED ' JMP $+2 ERROR: --ERROR--,CSK,FAILED CSK A,=2 JMP $+3 NOP ERROR: --ERROR--,CSK,FAILED CO PY =:FF,Q CSK Q,=:FF NOP ERROR: IF,Q=:FF,CSK,FAILED,ELSE,COPY,FAILED TITL *************************************************** * * IN THE FOLLOSING TEST, COPY MEM,2REG, * CSK 2REG,MEM, AND COPY 2REG,MEM ARE TESTED * ************************************************** A02010 EQU $ COPY PTFFFF,A LOAD'A'WITH FFFF CSK A,PTFFFF 'A' SHOULD BE FFFF NOP  ERROR: IF,'A'=:FFFF,CSK,FAILED,ELSE,COPY,FAILED. COPY PTFFFF,Q LOAD 'Q' WITH FFFF CSK Q,PTFFFF NOP ERROR: IF,'Q'=:FFFF,CSK,FAILED,ELSE,COPY,FAILED CSK A,PT0000 'A' LT 0 JMP $+3 NOP ERROR: 'A',SHOULD,BE,:FFFF CSK A,PTFFFE JMP $+2 JMP $+2 ERROR: 'A',SHOULD,=,:FFFF COPY A,TEMP01 CSK A,TEMP01 NOP ERROR: COPY,FAILED,'A'=,:FFFF JMP A02000 ORG $-1  NOP IMS PCOUNT SHOULD = :0002 JMP A03000 * PWRVC3 WORD POWUP TITL ************************************************** * ----- A03000 ----- * * ----- TEST ON COPY 7REG,7REG ----- * * ----- NOTE - COPY REG,P AND COPY P,REG *  ARE TESTED IN SEC. A01000 * ************************************************** A03000 COPY =0,Q LOAD 'Q' WITH ZEROS COPY PTFFFF,A LOAD 'A' WITH FFFF TRLD: A,Q,X,PTFFFF TRLD: A,Q,Y,PTFFFF TRLD: A,Q,K,PTFFFF  TRLD: A,Q,L,PTFFFF COPY STATSV,A TRLD: A,Q,S,STATSV COPY PTFFFF,Q LOAD 'Q' WITH FFFF TRLD: Q,A,X,PTFFFF JMP A03000 ORG $-1 NOP IMS PCOUNT SHOULD = :0003 TITL *************************************************** * * -------A04000------ * * -----TEST FOR JMP, JEQ, JNE, JGT, JGE, JLT, JLE * *************************************************** A04000 EQU $ COPY PTFFFF,A JEQ A,$+2 JMP $+2 ERROR: JEQ,FAILED,ON,A,<,0 JNE A,$+2 ERROR: JNE,FAILED,ON,A,<,0 JLT A,$+2 ERROR: JLT,FAILED,ON,A,<,0 JGE A,$+2 JMP $+2 ERROR: JGE,FAILED,ON,A,<,0 * COPY =0,Q JEQ Q,$+2 ERROR: JEQ,FAILED,ON,Q,=,0  JNE Q,$+2 JMP $+2 ERROR: JNE,FAILED,ON,Q,=,0 JLT Q,$+2 JMP $+2 ERROR: JLT,FAILED,ON,Q,=,0 JLE Q,$+2 ERROR: JLE,FAILED,ON,Q,=,0 JGT Q,$+2 JMP $+2 ERROR: JGT,FAILED,ON,Q,=,0 JGE Q,$+2 ERROR: JGE,FAILED,ON,Q,=,0 * COPY =1,X JLE X,$+2 JMP $+2  ERROR: JLE,FAILED,ON,X,>,0 JGT X,$+2 ERROR: JGT,FAILED,ON,X,>,0 JMP A04000 ORG $-1  NOP IMS PCOUNT SHOULD = :0004 JMP A06000 LPOOL TITL ************************************************** * * ----- A06000 ----- * *----- TEST FOR OR MEM,2REG (INCLUSIVE OR) * * ************************************************** A06000 EQU $ COPY PT00FF,A COPY PTF0F0,Q COPY Q,TEMP01 STORE '0' OR TEMP01,A  CSK A,=:F0FF NOP ERROR: 'OR',FAILED,'A',SHOULD,BE,:F0FF * *************************************************** * * ------A07000------ * * TEST FOR XOR MEM,2REG (EXCLUSIVE OR) * * *************************************************** C OPY PT00FF,Q COPY PTF0F0,A COPY A,TEMP01 XOR TEMP01,Q CSK Q,=:F00F NOP ERROR: 'XOR',FAILED, QREG,SHOULD,=,:F00F TITL ************************************************** * * ----- A08000 ----- * * TEST FOR AND MEM,2REG * * ************************************************** COPY PT00FF,A COPY PTF0F0,Q COPY Q,TEMP01 STORE 'Q' AND TEMP01,A TEMP01=0, A=:FFFF CSK A,=:F0 NOP ERROR: 'AND',FAILED,'A',SHOULD,BE,:F0 JMP A06000 ORG  $-1 NOP IMS PCOUNT SHOULD = :0005 TITL ************************************************** * * ----- A0A000 ----- * * TESTS FOR RBIT OV,S SBIT OV,S JT OV,MEM JF OV,MEM * * ************************************************** * * DETAIL TEST ON STATUS WORD (OV AND BYTE MODE ) * * A0A000 EQU $ COPY STATSV,A COPY A,S RESET STATUS  COPY =2,A OR STATSV,A NORMAL STATUS W/ OV SET COPY A,TEMP01 SBIT OV,S SET OVERFLOW  COPY S,Q LOAD Q FROM S CSK Q,TEMP01 NOP ERROR: ---ERROR-,SBIT,FAILED-- JF OV,$+3  JT OV,$+3 ERROR: ---ERROR-,JT,FAILED,OV=1 ERROR: ---ERROR-,JF,FAILED,OV=1 COPY S,Q CSK  Q,STATSV NOP ERROR: 'JT',DID,NOT,RESET,OV,BIT JT OV,$+3 JF OV,$+3 ERROR: ---ERROR-,JF,FAILED,OV=0 ERROR: ---ERROR-,JT,FAILED,OV=0 SBIT OV,S SET OV RBIT OV,S COPY =:FF,Q COPY S,Q CSK Q,STATSV NOP ERROR: ---ERROR---,RBIT,FAILED JMP A0A000 ORG $-1 NOP IMS PCOUNT SHOULD BE :0006 TITL *************************************************** * * ----- A0B000 ----- * *----- TEST FOR SBM AND SWM * CHECK TO SEE IF SBM TURNS ON BIT 2 IN PSW * AND SWM TURNS OFF BIT 2 IN PSW * * ************************************************** A0B000 EQU $ COPY =0,Q ZERO Q REG COPY STATSV,A CLEAR A REG COPY A,S ZERO PSW COPY =4,Q OR STATSV,Q NORMAL STATUS W/ BYTE MODE SET COPY Q,TEMP01 SBIT BY,S BYTE MODE BIT ON COPY S,A RBIT BY,S BYTE MODE BIT OFF CSK A,TEMP01 NOP ERROR: 'SBM',DID,NOT,SET,BYTE,MODE,BIT. COPY S,A  CSK A,STATSV NOP ERROR: 'SWM',DID,NOF,TURN,OFF,BYTE,MODE,BIT JMP A0B000 ORG $-1  NOP IMS PCOUNT SHOULD = :0007 TITL ************************************************** * * ----- A0C000 ----- * *----- SIMPLE TEST ON SIN . FORCED WORD MODE AND * EFFECT ON Q REG ARE CHECKED HERE.FORCED * INTERRUPT * * ************************************************** A0C000 EQU $ COPY =4,A OR STATSV,A COPY =:00FF,Q 00FF TO Q REG COPY Q,TEMP01 COPY A,S SET S TO BYTE MODE SIN :6 COPY TEMP01,A LOAD A WITH 00FF CSK A,=:00FF NOP ERROR: 'SIN',FAILED,'A'=:00FF,=TEMP01 COPY STATSV,A COPY A,S  RESTORE 'S' TO WORD MODE JMP A0C000 ORG $-1 NOP IMS PCOUNT SHOULD = :0008 JMP  A0D000 LPOOL TITL *************************************************** * * ------A0D000------- * * -----TEST FOR IMS M EM ------- * ************************************************** A0D000 EQU $ COPY =:FE,A COPY A,TEMP01 STORE AREG IMS TEMP01  JMP $+2 ERROR: 'IMS',FAILED,AREG,SHOULD,BE,:00FE COPY TEMP01,A CSK A,=:FF NOP ERROR: IMS,FAILED,---,NO,INCREMENT COPY PTFFFF,A :FFFF TO 'A' COPY A,TEMP01 STORE 'A' AT TEMP01 IMS TEMP01 -1+1 = 0 ERROR: 'IMS',FAILED,'A',SHOULD,BE,:FFFF,AND,TEMP01,SHUD,BE,0 COPY PT7FFF,A :7FFF TO 'A' COPY A,TEMP01 IMS TEMP01 :7FFF+1=:8000, OV SET JMP $+2 ERROR: 'IMS',FAILED,TEMP01,SHOULD,BE,:8000 JT OV,$+2 ERROR: 'IMS',FAILED,TEMP01,=:8000,OV=1,:7FFF+1,=:8000 JMP A0D000 ORG $-1 NOP  IMS PCOUNT SHOULD = :0009 TITL ************************************************** * * ---- A0E000 ---- * * SHIFT  4REG,LO,CNT * ************************************************** * * SHIFT A,LO,CNT * A0E000 EQU $ COPY STATSV,A  COPY A,S COPY PT5555,A SHIFT A,LO,1 CSK A,PTAAAA NOP ERROR: SHIFT,FAILED,--,A,SHOULD,=,:AAAA * * SHIFT Q,LO,4 * COPY PTAAAA,Q SHIFT Q,LO,4 CSK Q,=:AAA0 NOP ERROR: SHIFT,FAILED,--,Q,SHOULD,=,:AAA0 * * SHIFT X,LO,9 * COPY PT6666,X SHIFT X,LO,8 COPY X,A CSK A,=:6600 NOP ERROR: SHIFT,FAILED,--,X,SHOULD,=,:6600 JT OV,$+2 JMP $+2 ERROR: SHIFT,FAILED,--,OV,WAS,SET * * SHIFT Y,LO,13 * COPY PTAAAA,Y SHIFT Y,LO,13 COPY Y,A CSK A,=:4000 NOP ERROR: SHIFT,FAILED,--,Y,SHOULD,=,:4000 JT OV,$+2 ERROR: SHIFT,FAILED,--,OV,WAS,NOT,SET PATCHX A0E000 JMP A0F000 LPOOL TITL ******************************************************* * *----- SECTION A0F000 ----- * * FMT 4REG * ******************************************************* * A0F000 EQU $ COPY STATSV,A COPY A,S COPY PTFFFF,Y FMT Y FETCH M/C TYPE IN 'Y' COPY Y,A CSK A,MACHIN COMPARE WITH EXPECTED MACHINE TYPE NOP ERROR: 'FMT',FAILED TITL ************************************************** * * ---- A10000 ---- * * XNX 4REG * ************************************************** A10000 EQU $ COPY =:10,A XNX A COPY =:20,Q CSK Q,=:30 NOP  ERROR: XNX,FAILED,--,Q,SHOULD,=,:30 JMP A0F000 ORG $-1 NOP IMS PCOUNT SHOULD = :000B TITL ******************************************************* * * ---- A11000 ---- * * IN 4,REG INPUT FROM CONSOLE WORD REGISTER * ******************************************************* A11000 COPY PTFFFF,A SELP A,4 IN  4,Q CSK Q,PTFFFF NOP ERROR: Q,SHOULD,=,:FFFF.,IF,DISPLAY=Q,THEN,SELP,FAILED,ELSE,IN COPY PTAAAA,Q SELP Q,4 IN 4,X COPY X,A CSK A,PTAAAA NOP ERROR: X,SHOULD,=,:AAAA.,IF,DISPLAY=X,THEN,SELP,FAILED,ELSE,IN COPY PT5555,X SELP X,4 IN 4,Y COPY Y,A CSK A,PT5555 NOP ERROR: Y,SHOULD,=:5555.,IF,DISPLAY=Y,THEN,SELP,FAILED,ELSE,IN COPY PT6666,Y SELP Y,4 IN 4,A CSK A,PT6666 NOP ERROR: A,SHOULD,=:6666.,IF,D ISPLAY=A,THEN,SELP,FAILED,ELSE,IN COPY =1,A IDP TEST CODE SELP A,4 OUTPUT TO CONSOLE JMP A11000 PATCH FOR LOOPING ORG $-1 JMP *A11001 PATCH FOR LOOPING ORG $-1 NOP  OVERLAY WITH NOP * COPY PCOUNT,A CSK A,=:000B NOP ERROR: SOME,OF,TESTS,NOT,EXECUTED JMP A12000 A11001 WORD A02000 LPOOL A12000 EQU $ TITL INSTRUCTION DIAGNOSTIC -- SEC. B0-1 ******************************************************* * * *------------ SECTION B0 ------------ * * OBJECTIVE: IN THIS SECTION EXTENSIVE TESTING OF * THE FOLLOWING INSTRUCTIONS IS DONE. * * * COPY 4REG,MEM * * ******************************************************* * * *----- TEST STRUCTURE ----- * * GENERAL: EACH INSTRUCTION TEST IS VERIFIED UNDER * THE FOLLOWING CONDITIONS: * * (1) ADDRESSING MODES: THERE ARE SIX MODES. * ABSOLUTE DIRECT ADDRESSING (SPAD) * ABSOLUTE INDIREC ADDRESSING * RELATIVE DIRECT ADDRESSING * RELATIVE INDIRECT ADDRESSING * INDEXED DIRECT ADDRESSING * INDEXED INDIRECT ADDRESSING * * (2) WORD MODE * * (3) BYTE MODE * * (4) MULTIPLE LEVEL INDIRECT ADDRESSING * ******************************************************* TITL ******************************************************* * * PROGRAM STRUCTURE: PROGRAM IS DIVIDED INTO THE * FOLLOWING SECTIONS: * * B04000 -- IN THIS SECTION 'COPY 4REG,MEM' * INSTRUCTION IS TESTED UNDER ALL THE * ADDRESSING MODES AND UNDER WORD MODE. * * B05000 -- SAME TEST AS IN SECTION B04000 EXCEPT IT IS * PERFORMED UNDER BYTE MODE. * * B06000 -- IN THIS SECTION 'COPY 4REG,MEM' AND *  'CSK 2REG,MEM' ARE EXECUTED UNDER MULTIPLE LEVEL * INDIRECT ADDRESSING FOR WORD MODE. * ************************************************************* TITL ************************************************** * *----- B04000 ----- * * ADDRESSIN MODES ON COPY 4REG,MEM * -- WORD MODE -- ************************************************** * * ****** * ABSOLUTE DIRECT ADDRESSING. USING 'A'. * -- WORD MODE -- ****** * B04000 EQU $ COPY STATSV,A COPY A,S ZERO PSW COPY =:0F,A COPY A,TEMP01 STORE'A' CSK A,TEMP01 NOP ERROR: 'A'=,TEMP01,=:0F,IF,NOT,COPY,FAILED,ELSE,CSK TITL ****** * ABSOLUTE INDIRECT ADDRESSING USING 'A' * -- WORD MODE -- * COPY A,*MEM ****** * * COPY A,*MEM * B04010 EQU $ COPY STATSV,A COPY A,S CLEAR 'S' COPY =TEMP01,A  COPY A,TEMP02 COPY =:0F,A COPY A,*TEMP02 CSK A,TEMP01 NOP ERROR: CSK,FAILED,IF,'A'=,TEMP01=,:0F,ELSE,COPY,FAILED. PATCHX B04000 TITL ****** * RELETIVE DIRECT ADDRESSING. USING 'A' * -- WORD MODE -- * COPY A,MEM ****** * * COPY A,MEM * B04020 EQU $ COPY STATSV,A COPY A,S ZERO 'S' COPY =:0F,A COPY A,CEL442 STORE 'A' CSK A,CEL442 NOP ERROR: CSL,FAILED,IF,A=CEL442=:0F,ELSE,COPY,FAILED TITL ***** * RELATIVE INDIRECT ADDRESSING USING AREG * -- WORD MODE -- * COPY A,*MEM ***** * * COPY A,*MEM  * B04030 EQU $ COPY STATSV,A COPY A,S ZERO PSW COPY =CEL442,A COPY A,CEL441 CEL441 = CEL442 ADD. COPY =:FF,A FF TO 'A' COPY A,*CEL441 CSK A,CEL442 NOP ERROR: CSK,FAILED,IF,'A'=CEL442,=:FF,ELSE,COPY,FAILED PATCHX B04020 JMP B04040 LPOOL TITL ****** * INDEXED ADDRESSING USING 'X'. (DIRECT) * -- WORD MODE -- * COPY A,1(X) ****** CEL440 WORD 0 CEL441 WORD 1 CEL442 WORD 0 * * COPY A,1(X) * B04040 EQU $ COPY STATSV,A COPY A,S ZERO PSW COPY =CEL441,X CEL441 ADD IN X  COPY =:F0,A COPY A,1(X) STORE 'A' AT CEL442 CSK A,CEL442 NOP ERROR: CSK,FAILED,IF,'A'=,CEL442,=:F0,ELSE,COPY,FAILED. TITL ****** * INDEXED ADDRESSING USING 'Y'. (DIRECT) * -- WORD MODE -- * COPY A,1(Y) ****** * * * COPY A,1(Y) * B04050 EQU $ COPY STATSV,A COPY A,S ZERO PSW COPY =CEL441,Y CEL441 ADD IN 'Y' COPY =:A5,A LOAD 'A' WITH :00A5 COPY A,1(Y) STORE 'A' AT CEL442 CSK A,CEL442 NOP ERROR: CSK,FAILED,IF,'A'=:A5,=CEL442,ELSE,COPY,FAILED TITL ****** * INDEXED ADDRESSING USING 'X','Y'.(DIRECT) * -- WORD MODE -- * COPY A,1(X,Y) ****** * * COPY A,1(X,Y) * B04060 EQU $ COPY STATSV,A COPY A,S COPY =CEL440,Y COPY =1,X COPY =:5A,A COPY A,1(X,Y) STORE AT CEL442 CSK A,CEL442 NOP ERROR: CSK,FAILED,IF,A=:5A=CEL442,ELSE,COPY,FAILED PATCHX B04040 JMP B04070 TITL ****** * INDIRECT INDEXED ADDRESSING USING 'X'. * -- WORD MODE -- * COPY A,*1(X) ****** CEL470 WORD 0 CEL471 WORD 1 CEL472 WORD 0 * * COPY A,*1(X) * B04070 EQU $ COPY STATSV,A COPY A,S COPY =1,A COPY A,TEMP01 COPY =CEL471,X COPY =:FF,A LOAD :00FF IN 'A' COPY A,*TEMP01(X) CEL472=:00FF CSK A,CEL472 NOP ERROR: CSK,FAILED,IF,'A'=:FF,=CEL472,ELSE,COPY,FAILED TITL ****** * INDIRECT INDEXED ADDRESSING USING 'Y'. * -- WORD MODE -- * COPY A,*1(Y) ****** * * COPY A,*1(Y) * B04080 EQU $ COPY STATSV,A COPY A,S ZERO PSW COPY =CEL472,A COPY A,CEL471 CEL471=.CEL472 ADD. COPY =CEL470,Y COPY =:0F,A LOAD 'A' BY :000F COPY A,*1(Y) CEL472=:000F CSK A,CEL472 NOP ERROR: CSK,FAILED,IF,'A'=:0F,=CEL472,ELSE,COPY,FAILED TITL ****** * INDIRECT INDEXED ADDRESSING USING X,Y. * -- WORD MODE -- * COPY A,*1(X,Y) ****** * * COPY A,*1(X,Y) * B04090 EQU $  COPY =1,A COPY A,CEL471 COPY STATSV,A COPY A,S ZERO S REG COPY =CEL471,X CEL471 ADD IN'X' COPY =CEL470,Y CEL470 ADD IN 'Y' COPY =:55,A COPY A,*1(X,Y) STORE A AT CEL472 CSK A,CEL472 NOP ERROR: CSK,FAILED,IF,A=:55=CEL472,ELSE,COPY,FAILED PATCHX B04070 JMP B04100 LPOOL TITL ****** * ADDRESSING MODES ON 'Q', 'X', AND 'Y' * EACH REGISTER IS TESTED UNDER ONE * ADDRESSING MODE ONLY. SELECTION OF A * REGISTER AND ADDRESSING MODE IS RANDOM. * -- WORD MODE -- ****** CEL410 WORD 0 CEL411 WORD 0 CEL412 WORD 0 * ****** * RELATIVE INDIRECT ADDRESSING US  ING 'Q'. * COPY Q,*MEM ****** * * COPY Q,*MEM * B04100 EQU $ COPY PT6666,Q COPY STATSV,A COPY A,S CLEAR 'S' COPY =CEL412,A COPY A,CEL411 CEL411 =ADD.OF CEL412 COPY Q,*CEL411 STORE 'Q' AT CEL412 CSK Q,CEL412 NOP ERROR: CSK,FAILED,IF,'Q'=:6666,=CEL412,ELSE,COPY,FAILED TITL ****** * INDEXED INDIRECT ADDRESSING USING INDEX * REGISTER 'Y' ON ''X' * -- WORD MODE -- * COPY X,*1(Y) ****** * * COPY X,*1(Y) * B04110 EQU $ COPY PT00FF,X COPY STATSV,A COPY A,S CLEAR 'S' COPY =CEL412,A COPY A,CEL411 CEL411=ADD.OF CEL412 COPY =CEL410,Y COPY X,*1(Y) STORE'X' AT CEL412 COPY X,A CSK A,CEL412 NOP ERROR: 'A'=,CEL412=,:00FF,CEL411=,CEL412 ADDRESS,'Y'=,CEL410,ADD TITL ****** *  INDEXED INDIRECT ADDRESSING USING INDEX * REGISTER 'X' ON 'Y' * -- WORD MODE -- * COPY Y,*1(X) ****** * * COPY Y,*1(X) * B04120 EQU $ COPY PTF0F0,Y COPY STATSV,A COPY A,S COPY =1,A COPY A,TEMP01 COPY =CEL411,X COPY Y,*TEMP01(X) STORE Y AT CEL412 COPY Y,A CSK A,CEL412 NOP ERROR: AREG=YREG=CEL412=:F0F0,CEL411=CEL412,ADDR PATCHX B04100 COPY PCOUNT,A CSK A,=:0010 NOP ERROR: SOME,OF,TESTS,NOT,EXECUTED JMP B05000 LPOOL TITL INSTRUCTION DIAGNOSTIC -- SEC. B0-5 ************************************************** *----- B05000 ----- * ADDRESSING MODES ON COPY 4REG,MEM * -- BYTE MODE -- ************************************************** * ABSOLUTE DIRECT ADDRESSING MODE. USING 'A' * -- BYTE MODE -- * COPYB A,SPAD ****** B05000 EQU $ COPY STATSV,A COPY A,S  CLEAR 'S' COPY =0,A COPY A,TEMP01 COPY PTAA55,A COPY PT55AA,Q SBIT BY,S COPYB A,TEMP01 RBIT BY,S COPY =:5500,A CSK A,TEMP01 NOP ERROR: COPY,FAILED,--,A,=,TEMP01,=,:5500 SBIT BY,S COPYB Q,TEMP01+1 RBIT BY,S CSK Q,TEMP01 NOP ERROR: COPY,FAILED,--,Q,=,TEMP01,=,:55AA PATCHX B05000 TITL ****** * ABSOLUTE INDIRECT ADDRESSING. USING 'A' * -- BYTE MODE -- *  COPY A,*SPAD ****** * * COPY A,*SPAD * B05010 EQU $ COPY =TEMP01,A SHIFT A,LO,1 TEMP01 BYTE ADD. IN 'A' COPY A,TEMP02 TEMP02 = TEMP01 BYTE ADD. COPY =0,A COPY A,TEMP01 COPY STATSV,A COPY A,S CLEAR 'S' COPY PTAA55,A SBIT BY,S COPY A,*TEMP02 :55 TO TEMP01 BYTE 0 RBIT BY,S COPY =:5500,A CSK A,TEMP01 NOP ERROR: COPY,FAILED,--,A=TEMP01=:5500 PATCHX B05010 JMP B05020 LPOOL TITL ******************************** *  RELATIVE DIRECT ADDRESSING USING 'A' * -- BYTE MODE -- * COPYB A,MEM ****** * * COPYB A,MEM * B05020 EQU $  COPY STATSV,A COPY A,S CLEAR 'S' COPY =0,A COPY A,CEL542 COPY PTAA55,A COPY PT55AA,Q SBIT BY,S COPYB A,CEL542 RBIT BY,S COPY =:5500,A CSK A,CEL542 NOP  ERROR: COPY,FAILED,--,A,=,CEL542,=,:5500 SBIT BY,S COPYB Q,CEL542+1 RBIT BY,S CSK Q,CEL542   NOP ERROR: COPY,FAILED,--,Q,=,CEL542,=,:55AA PATCHX B05020 TITL ****** * RELATIVE INDIRECT ADDRESSING USING 'A' * -- BYTE MODE -- * COPY A,*MEM MEM = BYTE ADD. OF DESTINATION. ****** * * * COPY A,*MEM * B05030 EQU $ COPY =0,A COPY A,CEL540 COPY =CEL540,A SHIFT A,LO,1 COPY A,CEL542 IMS  CEL542 CEL542 = CEL540 BYTE 1 ADD COPY STATSV,A COPY A,S COPY =:AA,A COPY PT55AA,Q  SBIT BY,S COPY Q,*CEL542 RBIT BY,S CSK A,CEL540 NOP ERROR: COPY,FAILED,--,Q,=,CEL540,=,:AA PATCHX B05030 JMP B05040 LPOOL TITL ****** * INDEXED DIRECT ADDRESSING. INDEX REG IS X * -- BYTE MODE-- * COPY A,(NTCX) XREG=BYTE ADDR * EA=XREG+CNT ********* CEL540 WORD 0 CEL541 WORD 0 CEL542 WORD 0 * * COPY A,1(X) * B05040 EQU $ COPY =CEL541,X SHIFT X,LO,1 CEL541 BYTE ADD IN 'X' COPY STATSV,A COPY A,S COPY =0,A COPY A,CEL542 COPY =:5566,A SBIT BY,S COPY A,2(X) :66 TO CEL542 BYTE 0 RBIT BY,S COPY =:6600,A CSK A,CEL542 NOP ERROR: COPY,FAILED,--,A,=,CEL542,=,:6600 PATCHX B05040 JMP B05050 LPOOL TITL ****** * INDEXED DIRECT ADDRESSING. INDEX REG. = 'Y' * -- BYTE MODE -- * COPY A,CNT(Y) 'Y'= WORD ADD * EA = 2(Y) + CNT ****** * * COPY A,CNT(Y) * B05050 EQU $ COPY =CEL541,Y CEL541 WORD ADD IN 'Y' COPY STATSV,A COPY A,S COPY =0,A COPY  A,CEL542 COPY =:5566,A SBIT BY,S COPY A,2(Y) CEL542 BYTE0 =:66 RBIT BY,S COPY =:6600,A CSK A,CEL542 NOP ERROR: COPY,FAILED,--,A,=,CEL542,=,:6600 PATCHX B05050 JMP B05060 LPOOL TITL ****** * INDEXED DIRECT ADDRESSING USING 'X' & 'Y' * -- BYTE MODE -- * COPY A,CNT(X,Y) 'X'=BYTE ADD. * 'Y'= WORD ADD. * EA = 2(Y) + CNT + (X) ****** * * COPY A,CNT(X,Y) * B05060 COPY =CEL540,Y CEL540 WORD ADDRESS IN 'Y' COPY =2,X COPY STATSV,A COPY A,S COPY =0,A  COPY A,CEL542 COPY =:5566,A SBIT BY,S COPY A,2(X,Y) CEL542 BYTE 0 = :66 RBIT BY,S COPY =:6600,A CSK A,CEL542 NOP ERROR: COPY,FAILED,--,CEL542=:6600 PATCHX B05060 JMP B05070 LPOOL TITL ****** * INDEXED INDIRECT ADDRESSING USING XREG * -- BYTE MODE -- * COPY A,*CNT(X) AP =(CNT) (AP)=BYTE ADD * EA= (AP)+(X) *  'X'=BYTE ADD ****** * CEL570 WORD 0 CEL571 WORD 0 CEL572 WORD 0 * * COPY A,*CNT(X) * B05070 EQU  $ COPY =2,A COPY A,TEMP01 COPY =CEL571,X SHIFT X,LO,1 CEL571 BYTE ADD IN 'X' COPY STATSV,A COPY A,S COPY =0,A COPY A,CEL572 COPY =:66FF,A SBIT BY,S COPY A,*TEMP01(X) CEL572 BYTE0 =:FF RBIT BY,S COPY =:FF00,A CSK A,CEL572 NOP ERROR: COPY,FAILED,--,A,=,CEL572,=,:FF00 PATCHX B05070 TITL ****** * INDEXED INDIRECT ADDRESSING USING 'Y'. * -- BYTE MODE -  - * COPY A,*CNT(Y) AP=(CNT)+(Y) (AP)=BYTE ADD. * EA=(AP) ****** * * COPY A,*CNT(Y) * B05080 EQU  $ COPY =CEL572,A SHIFT A,LO,1 CEL572 BYTE ADD IN 'A' COPY A,CEL571 COPY =CEL570,Y  COPY STATSV,A COPY A,S COPY =0,A COPY A,CEL572 COPY =:66FF,A SBIT BY,S COPY A,*1(Y) CEL572 BYTE0 =:FF RBIT BY,S COPY =:FF00,A CSK A,CEL572 NOP ERROR: COPY,FAILED,--,A,=,CEL572,=,:FF00 PATCHX B05080 TITL ****** * INDEXED INDIRECT ADDRESSING USING AREG AND YREG * -- BYTE MODE -- * COPY A,*CNT(X,Y) AP=(Y)+(CNT) * EA=(AP)+(X) ****** * * COPY A,*CNT(X,Y) * B05090 EQU $ COPY =CEL572,A SHIFT A,LO,1 CEL572 BYTE ADDR IN AREG COPY A,CEL571 COPY =CEL570,Y COPY =0,X COPY STATSV,A COPY A,S COPY =0,A COPY A,CEL572 COPY =:FF66,A COPY =:66FF,Q SBIT BY,S  COPY A,*1(X,Y) CEL572 BYTE0 =:66 RBIT BY,S COPY =:6600,A CSK A,CEL572 NOP ERROR: COPY,FAILED,--,A,=,CEL572,=,:6600 COPY =1,X SBIT BY,S COPY Q,*1(X,Y) CEL572 BYTE1 =:FF RBIT BY,S CSK Q,CEL572 NOP ERROR: COPY,FAILED,--,Q,=,CEL572,=,:66FF PATCHX B05090 JMP B050B0  LPOOL TITL ****** * TEST ADDRESSING MODES ON 'X' & 'Y'. * -- BYTE MODE -- ****** * CEL5A0 WORD 0 CEL5A1 WORD  0 CEL5A2 WORD 0 ****** * INDEXED DIRECT ADDRESSING * --BYTE MODE -- * COPY X,CNT(Y) * COPY Y,CNT(X) ****** * * * COPY X,CNT(Y) * B050B0 EQU $ COPY =CEL5A0,Y COPY PT5555,X COPY STATSV,A COPY A,S SBIT BY,S COPY X,2(Y) CEL5A1 BYTE0 =:55 COPY X,3(Y) CEL5A1 BYTE1 =:55 RBIT BY,S  COPY PT5555,A CSK A,CEL5A1 NOP ERROR: COPY,FAILED.,'X'=:5555,CEL5A1=,:5555 * * COPY Y,CNT(X) * B050B1 EQU $ COPY =CEL5A0,X SHIFT X,LO,1 CEL5A0 BYTE ADDR IN XREG COPY PTF0F0,Y COPY STATSV,A COPY A,S SBIT BY,S COPY Y,2(X) CEL5A1 BYTE 0 =:F0 COPY Y,3(X) BYTE 1 = :F0 RBIT BY,S COPY PTF0F0,A CSK A,CEL5A1 NOP ERROR: COPY,FAILED,'Y'=,:F0F0,=CEL5A1 PATCHX B050B1 JMP B06000 TITL INSTRUCTION DIAGNOSTIC -- SEC. B0-6 ************************************************** * ----- B06000 ----- * * TEST COPY 4REG,MEM USING MULTIPLE LEVEL * INDIRECT ADDRESSING FOR WORD MODE. * ************************************************** * * INDEXED INDIRECT ADDRESSING USING 'X'. * * COPY A,*TEMP01(X) TEMP01 = AP1 * (TEMP01) = TEMP02 = AP2 XA=0, BIT 15=1 *  (TEMP02) + (X) = EA ************************************************* * * COPY A,*MEM(X) B06000 EQU $ COPY =0,A  COPY A,S RESET XA COPY A,TEMP02 COPY =TEMP02,A OR =:8000,A COPY A,TEMP01 TEMP01 = TEMP02 ADD + BIT 15 SET COPY =TEMP,X COPY PTFFFF,A COPY A,*TEMP01(X) :FFFF TO TEMP COPY STATSV,Q COPY Q,S CSK A,TEMP NOP ERROR: CSK,FAILED,IF,'A'=,:FFFF,=TEMP,ELSE,COPY P  ATCHX B06000 TITL ************************************************* * * INDEXED INDIRECT ADRESSING USING 'Y'. * * COPY A,*TEMP01(Y) TEMP01 + (Y) = AP1 * (AP1) = TEMP02 = AP2 XA=0, BIT 15=1 *  (TEMP02) = EA * ************************************************* * * COPY A,*0(Y) * B06010 EQU $ COPY =0,A COPY A,S RESET XA COPY =TEMP,A COPY A,TEMP02 TEMP02 = TEMP ADD. COPY =TEMP02,A  OR PT8000,A COPY A,TEMP01 TEMP01 = TEMP02 ADD + BIT15 SET COPY =TEMP01,Y COPY PTAAAA,Q COPY Q,*0(Y) :AAAA TO TEMP COPY STATSV,A COPY A,S CSK Q,TEMP NOP ERROR: CSK,FAILED,IF,AREG=:FFFF=TEMP,ELSE,COPY,FAILED PATCHX B06010 COPY PCOUNT,A CSK A,=:1D NOP ERROR: SOME,OF,TESTS,NOT,EXECUTED GLPOL: TITL INSTRUCTION DIAGNOSTIC -- SEC. B1-1 ****************************************************** * * ----------- SECTION B1 ---------- * * TESTING OF THE FOLLOWING INSTRUCTIONS: * * COPY MEM,4REG B11000 * CSK 2REG,MEM B12000 * ADD MEM,4REG B13000 *  SUB MEM,4REG B14000 * JST MEM B16000 * EXCH MEM,4REG B17000 * ****************************************************** TITL ****************************************************** * * ----------- TEST STRUCTURE ---------- * * B11000 -- COPY MEM,4REG IS TESTED IN BYTE MODE * (WORD MODE TESTED IN SEC. A0). BYTE *  ADDRESSABILITY OF THREE SUCCESSIVE * BYTES IS TESTED. ONE ADDRESSING MODE * IS TESTED * * B12000 -- SAME AS B11000, PLUS ONE SPECIAL CASE IS TESTED * * B13000 -- ADD MEM,4REG IS TESTED FOR POSITIVE * AND NEGATIVE OVERFLOW, IN ADDITION TO * NORMAL OPERATION, WITH ONE ADDRESSING * MODE. WORD MODE AND BYTE MODE ARE TESTED * * B14000 -- SUB MEM,4REG IS TESTED WITH ONE ADDRESSING * MODE. WORD MODE AND BYTE MODE ARE TESTED. * * B16000 -- JST MEM IS TESTED WITH ONE ADDRESSING MODE * * B17000 -- EXCH MEM,4REG IS TESTED WITH ALL ADDRESSING * MODES. WORD MODE AND BYTE MODE ARE TESTED. * ****************************************************** TITL ******************************************************* * * ---- SECTION B11000 ---- * * TEST COPY MEM,REG USING * POST INDEXED DIRECT ADDRESSING - BYTE MODE. * THREE ADJACENT BYTE ADDRESSES ARE CHECKED. * ******************************************************* B11000 COPY PT55AA,A COPY A,TEMP01 COPY A,TEMP02 COPY =TEMP01,X SHIFT X,LO,1 SBIT BY,S COPY 0(X),A COPY 1(X),Q COPY 2(X),Y RBIT BY,S CSK A,=:55 NOP ERROR: COPY,FAILED,--,AREG,SHOULD,BE,=:55 CSK Q,=:AA NOP ERROR: COPY,FAILED,--,QREG,SHOULD,BE,=:AA CSK Y,=:55 NOP ERROR: COPY,FAILED,--,Y,SHOULD,=,:55 PATCHX B11000  TITL INSTRUCTION DIAGNOSTIC -- SEC. B1-2 ******************************************************* * * TEST CSK REG,MEM USING * PRE INDEXED DIRECT ADDRESSING - BYTE MODE. * ******************************************************* B12000 EQU $ COPY PT00FF,A COPY A,TEMP01 COPY PT55AA,A COPY A,TEMP02 COPY =TEMP01,Y COPY  =:55,A SBIT BY,S CSK A,0(Y) COMPARE A TO 0 ERROR: CSK,FAILED,--,A,>,MEM JMP $+2 ERROR: CSK,FAILED,--,A,>,MEM SBIT BY,S CSK A,1(Y) COMPARE A TO :FF JMP $+3 NOP ERROR: CSK,FAILED,--,A,<,MEM SBIT BY,S CSK A,2(Y) COMPARE A TO :55 NOP ERROR: CSK,FAILED,--,A,=,MEM  RBIT BY,S TITL ****** * * SPECIAL CASE CSK TEST -- WORD MODE * ****** COPY PT8000,Q COPY =1,A  COPY A,TEMP01 CSK Q,TEMP01 JMP $+3 NOP ERROR: CSK,FAILED,--,Q,<,MEM PATCHX B12000 TITL INSTRUCTION DIAGNOSTIC -- SEC. B1-3 ******************************************************* * * ---- SECTION B1-3 * * TEST ADD MEM,REG USING * DIRECT RELATIVE ADDRESSING * ******************************************************* * * ADD MEM,A WORD MODE * B13000 EQU $ COPY STATSV,A COPY A,S COPY PT5555,A COPY A,CEL300 COPY =:1FFF,A ADD CEL300,A CSK A,=:7554 NOP ERROR: ADD,FAILED,--,AREG,SHOULD,=:7554 * * ADD MEM,Q OVERFLOW * COPY =:5AAA,A COPY A,CEL300 COPY =:2FFF,Q ADD CEL300,Q JT OV,$+2 ERROR: ADD,FAILED,--,DID,NOT,SET,OVERFLOW CSK Q,=:8AA9 NOP ERROR: ADD,FAILED,--,Q,SHOULD,=,:8AA9 * * ADD MEM,X OVERFLOW *  COPY STATSV,A COPY A,S COPY PTAAAA,A COPY A,CEL300 COPY =:A000,X ADD CEL300,X  JT OV,$+2 ERROR: ADD,FAILED,--,DID,NOT,SET,OVERFLOW COPY X,A CSK A,=:4AAA NOP  ERROR: ADD,FAILED,--,X,SHOULD,=,4AAA * * ADDB MEM,Y BYTE MODE * COPY STATSV,A COPY A,S COPY =:0010,Y COPY =:FF10,Q COPY Q,CEL300 SBIT BY,S ADDB CEL300,Y RBIT BY,S COPY  Y,A CSK A,=:010F NOP ERROR: ADDB,FAILED,--,Y,SHOULD,=,:010F PATCHX B13000 JMP B14000  LPOOL CEL300 RES 1,0 TITL INSTRUCTION DIAGNOSTIC -- SEC. B1-4 ******************************************************* * * ---- SECTION B14000 * * TEST SUB MEM,REG USING * ABSOLUTE DIRECT ADDRESSING * ******************************************************* * * SUB MEM,A * B14000 COPY STATSV,A COPY A,S COPY =:0100,A COPY A,TEMP01 COPY =:000A,A SUB TEMP01,A CSK A,=:FF0A NOP ERROR: SUB,FAILED,--,AREG,SHOULD,=:FF0A * *  SUBB MEM,Q * COPY =:50,Q COPY =:48,A COPY A,TEMP01 SBIT BY,S SUBB TEMP01+1,Q RBIT BY,S CSK Q,=:08 NOP ERROR: SUBB,FAILED,--,Q,SHOULD,=,:0008 PATCHX B14000 TITL INSTRUCTION DIAGNOSTIC -- SEC. B1-6 ******************************************************* * * TEST JST MEM USING * RELATIVE DIRECT ADDRESSING * ******************************************************* B16000 EQU $ COPY STATSV,A COPY A,S JST B16002 B16001 EQU $  ERROR: JST,FAILED JMP B16003 B16002 ENT COPY =B16001,A CSK A,B16002 NOP ERROR: JST,FAILED,--,WRONG,RETURN,ADDRESS IMS B16002 JMP *B16002 B16003 EQU $ PATCHX B16000 TITL INS TRUCTION DIAGNOSTIC -- SEC. B1-7 ******************************************************* * *------------ SECTION B1-7 ------------- * * OBJECTIVE: EXTENSIVE TESTING OF THE FOLLOWING * INSTRUCTIONS: * * EXCH MEM,4REG * * *----- TEST STRUCTURE ----- * * 'EXCH' IS VERIFIED UNDER ALL THE ADDRESSING * MODES, WORD MODE AND BYTE MODE * ******************************************************* TITL ******************************************************* * *----- SECTION B17000 ----- * **** * -- WORD MODE -- * ABSOLUTE DIRECT ADDRESSING * ******************************************************* B17000 EQU  $ COPY =0,A COPY PTF0F0,Q COPY Q,TEMP01 EXCH TEMP01,A COPY =0,Q CSK Q,TEMP01 NOP ERROR: 'EXCH',FAILED,-,TEMP01,SHOULD,=0 CSK A,PTF0F0 NOP ERROR: 'EXCH',FAILED,AREG,SHOULD,=:F0F0 TITL ********* * * ABSOLUTE INDIRECT ADDRESSING * ---WORD MODE--- * ******** B17010 EQU $ COPY PTF0F0,Q COPY PTFFFF,X COPY =TEMP01,A COPY A,TEMP02 COPY Q,TEMP01 EXCH *TEMP02,X COPY PTFFFF,A CSK A,TEMP01 NOP ERROR: 'EXCH',IN,INDIRECT,ADD,FAILED COPY X,A CSK A,PTF0F0 NOP  ERROR: EXCH,FAILED,X,SHOULD,=,:F0F0 PATCHX B17000 JMP B17020 TITL ****** * *----- B17020 ----- * * RELATIVE DIRECT AND INDIRECT ADDRESSING * --WORD MODE-- * ***** CEL171 RES 1,0 CEL172 RES 1,0 B17020 EQU $ COPY  PTFFFF,A COPY PTF0F0,Q COPY Q,CEL175 EXCH CEL175,A COPY PTFFFF,Q CSK Q,CEL175  NOP ERROR: EXCH,FAILED,CEL175,SHOULD,=,:FFFF CSK A,PTF0F0 NOP ERROR: EXCH,FAILED,A,SHOULD,=,:F0F0 * * INDIRECT RELATIVE * COPY =CEL174,A COPY A,CEL173 COPY PT00FF,X COPY =0,A  COPY A,CEL174 EXCH *CEL173,X COPY PT00FF,A CSK A,CEL174 NOP ERROR: EXCH,FAILED,CEL174,SHOULD,=,:00FF COPY X,A CSK A,=0 NOP ERROR: EXCH,FAILED,X,SHOULD,=,0 PATCHX B17020  JMP B17030 LPOOL TITL ****** * ---B17030--- * * INDEX DIRECT AND INDIRECT ADDRESSING USING XREG * --WORD MODE-- ****** CEL173 WORD 0 CEL174 WORD 0 CEL175 WORD 0 B17030 EQU $ COPY PT00FF,Q COPY PTFFFF,Y COPY PTFFFF,A COPY =CEL174,X CEL174 ADD IN 'X' COPY Q,CEL175 EXCH 1(X),Y CEL175 SHULD = :FFFF CSK A,CEL175 NOP ERROR: 'EXCH',FAILED,CEL175,SHULD,=:FFFF COPY Y,A CSK A,PT00FF  NOP ERROR: EXCH,FAILED,A,SHOULD,=,:00FF * * INDIRECT INDEX 'X' * COPY =1,A COPY A,TEMP01  COPY =CEL174,X COPY =0,A COPY A,CEL175 EXCH *TEMP01(X),Y CSK Q,CEL175 NOP  ERROR: 'Q',SHULD,=,CEL175,=:00FF COPY Y,A CSK A,=0 NOP ERROR: EXCH,FAILED,Y,SHOULD,=,0 PATCHX B17030 TITL ****** * *----- B17040 ----- * * INDEX DIRECT AND INDIRECT ADDRESSING USING 'Y' * --WORD MODE-- * ****** B17040 EQU $ COPY PTFFFF,A COPY PT00FF,Q COPY PTFFFF,X COPY =CEL173,Y COPY   Q,CEL174 EXCH 1(Y),X CSK A,CEL174 NOP ERROR: 'A',SHOULD,=,CEL174,=:FFFF COPY X,A  CSK A,PT00FF NOP ERROR: EXCH,FAILED,X,SHOULD,=,:00FF * * INDIRECT INDEX 'Y' * COPY =CEL175,A  COPY A,CEL174 COPY =CEL173,Y COPY =0,A COPY A,CEL175 EXCH *1(Y),X CSK Q,CEL175 NOP ERROR: QREG,SHOULD,=CEL175=:00FF COPY X,A CSK A,PT0000 NOP ERROR: EXCH,FAILED,XREG,SHOULD,=0 PATCHX B17040 TITL ********* * *----- B17050 ----- * * INDEX DIRECT AND INDIRECT ADDRESSING USING HX' 'Y' * --WORD MODE-- * ****** B17050 EQU $ COPY  PTFFFF,A COPY PTFFFF,Q COPY =CEL173,Y COPY =1,X COPY X,CEL175 EXCH 1(X,Y),A  CSK Q,CEL175 NOP ERROR: 'Q',SHULD,=,CEL175,=:FFFF CSK A,=1 NOP ERROR: EXCH,FAILED,A,SHOULD,=,1 * * INDIRECT INDEX 'X' 'Y' * COPY =1,X COPY X,CEL174 CEL174 = 1 COPY =CEL173,Y  COPY =CEL174,X COPY A,CEL175 CEL 175 = 1 COPY PTFFFF,A EXCH *1(X,Y),Q CSK A,CEL175 NOP ERROR: 'A',SHULD,=,CEL175,=:FFFF CSK Q,=1 NOP ERROR: EXCH,FAILED,Q,SHOULD,=,1  PATCHX B17050 JMP B17060 LPOOL TITL ****** * *----- B17060 ----- * * ABSOLUTE DIRECT AND INDIRECT ADDRESSING * -- BYTE MODE -- * ****** B17060 EQU $ COPY PTF0F0,Q COPY PT6666,Y COPY Q,TEMP01  :F0F0 - TEMP01 SBIT BY,S EXCHB Y,TEMP01 RBIT BY,S COPY =:66F0,A CSK A,TEMP01  NOP ERROR: 'A',SHULD,=,TEMP01,=:66F0 COPY Y,A CSK A,=:F0 NOP ERROR: EXCHB,FAILED,YREG,SHOULD,=:F0 * * ABSOLUTE INDIRECT * COPY PT00FF,X COPY =TEMP01,A SHIFT A,LO,1 BYTE ADDRESS COPY A,TEMP02 TEMP02 = TEMP01 BYTE ADDRESS (BYTE 0) COPY A,TEMP IMS TEMP TEMP = TEMP01 BYTE ADDRESS (BYTE 1) COPY PT55AA,A COPY A,TEMP01 SBIT BY,S EXCH Q,*TEMP02 TEMP01 BYTE0 =F0 EXCH X,*TEMP TEMP01 BYTE1 = FF RBIT BY,S COPY =:F0FF,A CSK A,TEMP01 NOP ERROR: EXCH,FAILED,A,SHOULD,=,:F0FF CSK Q,=:55 NOP ERROR: EXCH,FAILED,Q,SHOULD,=,:55 COPY X,Q CSK Q,=:AA NOP ERROR: EXCH,FAILED,X,SHOULD,=,.:66  PATCHX B17060 JMP B17070 TITL ****** * *----- B17070 ----- * * RELATIVE DIRECT AND INDIRECT ADDRESSING * -- BYTE MODE -- * ****** CEL177 RES 1 CEL178 RES 1 B17070 EQU $ COPY =:F0AA,A COPY PTAAAA,Q COPY PTF0F0,X COPY Q,CEL177 :AAAA IN SBIT BY,S EXCHB X,CEL177 RBIT BY,S CSK A,CEL177 NOP ERROR: 'A',SHULD,=,CEL177,=:F0AA COPY X,A CSK A,=:AA NOP ERROR: EXCH,FAILED,X,SHOULD,=,:AA * * INDIRECT RELATIVE * COPY =CEL178,A SHIFT A,LO,1 BYTE ADD COPY A,CEL177 COPY Q,CEL178 COPY PTF0F0,X COPY =:F0AA,A SBIT BY,S EXCH X,*CEL177 RBIT BY,S CSK A,CEL178 NOP ERROR: 'A',SHOULD,=,CEL178,=:AAF0 COPY X,A CSK A,=:AA NOP ERROR: EXCH,FAILED,XR EG,SHOULD,=:AA PATCHX B17070 JMP B17080 LPOOL TITL ******* * * ---B17080--- * * INDEX DIRECT AND INDIRECT ADDRESSING 'X' AND 'Y' * --BYTE MODE -- * ***** CEL179 RES 1 CEL180 RES 1 CEL181 RES 1 B17080 EQU $ COPY PTFFFF,A  COPY PTF0F0,Q COPY =CEL179,X SHIFT X,LO,1 CEL179 BYTE ADD IN 'X' COPY A,CEL179  CEL179 = :FFFF. COPY Q,CEL180 CEL180 = :F0F0 COPY =CEL179,Y CEL179 WORD ADD IN 'Y' SBIT BY,S EXCH 1(X),Q CEL179 = :FFF0, Q=:00FF EXCHB 2(Y),A CEL180 = :FFF0, A=:00F0 RBIT BY,S CSK A,=:F0 NOP ERROR: EXCH,FAILED,A,SHOULD,=,:F0 CSK Q,=:FF NOP ERROR: EXCH,FAILED,A,SHOULD,=,:FF COPY =:FFF0,A CSK A,CEL179 NOP ERROR: 'A',SHOULD,=,CEL179,=:FFF0 CSK A,CEL180 NOP ERROR: CEL180,SHOULD,=:FFF0 * * INDIRECT INDEX USING (X) * COPY =2,A COPY A,TEMP01 COPY =CEL179,X SHIFT X,LO,1 CEL179 BYTE ADD IN 'X' COPY PT5555,A COPY A,CEL180 COPY =0,Q SBIT BY,S EXCH *TEMP01(X),Q RBIT BY,S COPY =:0055,A CSK A,CEL180 NOP ERROR: 'A',SHULD,=,CEL180,=:0055 CSK Q,=:55 NOP ERROR: EXCH,FAILED,Q,SHOULD,=,:55 * * INDIRECT INDEX USING (Y) * COPY =CEL179,Y COPY =CEL181,A SHIFT A,LO,1 COPY A,CEL180  COPY PTF0F0,A COPY A,CEL181 COPY PTFFFF,A SBIT BY,S EXCH A,*1(Y) RBIT BY,S COPY =:FFF0,Q CSK Q,CEL181 NOP ERROR: EXCH,FAILED,CEL181,SHOULD,=:FFF0 CSK A,=:F0 NOP ERROR: EXCH,FAILED,AREG,SHOULD,=:F0 PATCHX B17080 GLPOL: TITL ***** * *----- B17090 ----- * * INDEX DIRECT AND INDIRECT ADDRESSING USING (X,Y) * -- BYTE MODE -- * ****** B17090 EQU $ COPY =CEL180,Y COPY =1,X COPY PTFFFF,A COPY A,CEL181 COPY PTF0F0,A SBIT BY,S EXCH 2(X,Y),A RBIT BY,S CSK A,=:FF NOP ERROR: EXCH,FAILED,A,SHOULD,=,:FF COPY =:FFF0,A CSK A,CEL181 NOP ERROR: EXCH,FAILED,CEL181,SHOULD,=,:FFF0 * * INDIRECT INDEX *  COPY PTFFFF,Q COPY =CEL181,A SHIFT A,LO,1 CEL181 BYTE ADD IN HA' COPY A,CEL180 COPY =CEL179,Y 'Y' = CEL179 ADD COPY =0,X COPY PT6666,A COPY A,CEL181 CEL181 =:6666  COPY =:FF66,A SBIT BY,S EXCH *1(X,Y),Q RBIT BY,S CSK A,CEL181 NOP ERROR: 'A',SHULD,=,CEL181,=:FF00 CSK Q,=:66 NOP ERROR: EXCH,FAILED,Q,SHOULD,=,:66 PATCHX B17090 TITL ***** * *----- B170A0 ----- * * INDEX MULTILEVEL INDIRECT ADDRESSING USING 'X' * ***** B170A0 EQU $ COPY =0,A  COPY A,S COPY A,TEMP02 COPY =TEMP02,A OR =:8000,A COPY A,TEMP01 COPY =TEMP,X COPY PTAAAA,A COPY A,TEMP COPY PTFFFF,A  EXCH A,*TEMP01(X) CSK A,PTAAAA NOP ERROR: EXCH,FAILED,AREG,SHOULD,=:AAAA COPY TEMP,Q CSK Q,PTFFFF NOP ERROR: EXCH,FAILED,TEMP,SHOULD,=,:FFFF * * INDEX MULTILEVEL INDIRECT ADDRESSING USING 'Y' * B170B0 EQU $   COPY =0,A COPY A,S COPY =TEMP,A COPY A,TEMP02 COPY =TEMP02,A OR PT8000,A  COPY A,TEMP01 COPY =TEMP01,Y COPY PTFFFF,A COPY A,TEMP COPY PTAAAA,Q EXCH Q,*0(Y) CSK Q,PTFFFF NOP ERROR: EXCH,FAILED,Q,SHOULD,=,:FFFF COPY TEMP,A CSK A,PTAAAA  NOP ERROR: EXCH,FAILED,TEMP,SHOULD,=,:AAAA COPY STATSV,A COPY A,S PATCHX B170A0 COPY PCOUNT,A CSK A,=:2C NOP ERROR: SOME,OF,TESTS,NOT,EXECUTED GLPOL: TITL INSTRUCTION DIAGNOSTIC -- SEC. C ************************************************** * * ----------- SECTION C ---------- * * TESTING OF THE FOLLOWING INSTRUCTIONS: * * NEG 8REG,8REG C02000 * ADD 8REG,8REG C11000 * SUB 8REG,8REG C12000 * AND 8REG,8REG C13000 * XOR 8REG,8REG C14000 * OR 8REG,8REG C15000 * CSM 8REG,8REG C21000 * CSN 8REG,8REG C22000 * CSK 8REG,8REG C23000 * EXCH 8REG,8REG C24000 * COMP 8REG,8REG C25000 * ************************************************** * * ----------- TEST STRUCTURE ---------- * * EACH INSTRUCTION IS TESTED FOR CORRECT * OPERATION WITH A DIFFERENT REGISTER PAIR * FOR EACH INSTRUCTION, OR EACH CONDITION * OF AN INSTRUCTION. NEG & ADD ARE CH TITL PAT495P2 UMT & RCT & I/O TEST 84-93814-12 TITL UNIMPLEMENTED INSTRUCTION TEST NAM UIT NAM RTC NAM IOT  MACHINE =:20 ORG PART2ST *********************************************************** * * ---------- UNIMPLEMENTED INSTRUCTION TEST ---------- * * THIS TEST EXECUTES EACH UNIMPLEMENTED INSTRUCTION * TO MAKE SURE THAT EACH WILL INVOKE AN UNIMPLEMENTED * INSTRUCTION TRAP. THE INSTRUCTION SKELETONS ARE * PROVIDED IN A WORD TABLE (UITAB) * ********************************************************** P13000 EQU $ UIT EQU $ COPY DEMAND,A FETCH TEST SELECTION TBIT 1,A RUN THIS TEST? JF OV,P13025 NO,ABORT COPY =LOC84,Y YES, POINT TO UIT VECTOR COPY =2,A SELP A,4 ANNOUNCE THIS TEST COPY =P13019,A GET ADDRESS OF TEMP UIT TRAP ROUTINE COPY A,3(Y) STORE IT INTO TRAP VECTOR COPY =0,A COPY A,INSTRU INITIALIZE INSTRUCTION HOLDER COPY STATSV,A COPY A,S INITIALIZE STATUS TITL * * ROUTINE WHICH INCREMENTS A COUNTER (INSTRU) * AND PICKS BIT PATTERNS WHICH ARE UNIMPLEMENTED * INSTRUCTIONS AS DEFINED BY A TABLE (UITAB). * P13010 EQU $ IMS INSTRU INCREMENT CURRENT INSTRUCTION CELL JMP $+2 CONTINUE TEST JMP P13025 END OF UIT, EXIT TBIT 15,A JT OV,P13025 COPY =0,X CLEAR UITAB INDEX P13011 COPY INSTRU,A GET CURRENT INSTRUCTION XNX X  AND MSKTAB,A MASK OFF 'DON'T CARE' BITS XNX X CSK A,UITAB COMPARE TO SKELETON FROM TABLE NOP  JMP $+2 NO MATCH JMP P13015 UNIMP. INSTR. FOUND ADD =1,X INCREMENT UITAB INDEX  COPY X,Q CSK Q,TSTSIZ REACHED END OF UITAB ? JMP P13011 NO, LOOP TO CONTINUE NOP JMP   P13010 END OF UITAB, GET NEXT INSTR. FOR TESTING TITL * * ROUTINE TO TEST AN UNIMPLEMENTED INSTRUCTION * WHICH HAS BEEN FOUND BY THE PRECEEDING ROUTINE * P13015 EQU $ COPY INSTRU,A GET UNIMPLEMENTED INSTRUCTION COPY A,P13016 STORE FOR EXECUTION AND =:FF00,A ISOLATE UPPER 8 BITS FOR DISPLAY ADD =2,A UIT TEST CODE SELP A,4 OUTPUT TO CONSOLE COPY =0,A COPY A,0(Y) CLEAR FIRST WORD OF TRAP * * P13016 HLT EXECUTE UNIMPLEMENTED INSTRUCTION HERE P13017 NOP FILLER FOR MULTI-WD. MEM. REF. INSTRUCTIONS * * P13018 EQU $ ERROR: INSTRUCTION,AT,P13016,DID,NOT,CAUSE,TRAP JMP P13010 FIND NEXT UNIMP. INSTR. * * TEMPORARY UNIMPLEMENTED INSTRUCTION TRAP ROUTINE * P13019 EQU $ COPY 0(Y),A GET 1ST WORD OF TRAP (:84) COPY INSTRU,Q GET INSTRUCTION AND =:9F00,Q MASK OFF ''DON'T CARE'' BITS CSK Q,=:0700 MULTI-WD. MEM. REF. CLASS ? NOP JMP P13020 NO CSK A,=P13018 LOC :84 SHOULD BE P+2 NOP ERROR: LOC,:84,SHOULD,BE,P13018,ADDRESS JMP P13022 * P13020 CSK A,=P13017 LOC :84 SHOULD BE P+1 NOP ERROR: LOC.,:84,SHOULD,BE,P13017,ADDR. P13022 COPY 1(Y),A GET 2ND WORD FROM TRAP CSK A,P13016 NOP ERROR: LOC.,:85,SHOULD,BE,INSTR.,AT,P13016 JMP P13010 FIND NEXT UNIMP. INSTR. P13025 COPY =UIT1,A UNEXPECTED UIT SERVICE ROUTINE COPY A,3(Y) STORE IN 4TH WORD OF TRAP * * JMP P13000 PATCH FOR LOOPING ORG $-1 NOP JMP P13900 LPOOL TITL * * TABLE OF UNIMPLEMENTED INSTRUCTIONS * UITAB EQU $ UNIMPLEMENTED CODES WORD :6600 :66XX, :76XX WORD :4600 :46XX WORD :7C07 :7CX7 WORD :7C00 :7C0X (CHARACTER/NUMERIC) WORD :1C00 :1CXX, :3CXX WORD :1D00 :1DXX, :3DXX, :5DXX, :7DXX (LIST INSTRUCTIONS) WORD :5C05 :5C05 (4/10S INSTR) WORD :5C55 :5C55  WORD :5C65 :5C65, :5C75 WORD :5C85 :5C85-:5CF5 WORD :5C06 :5CX6, :5CX7 (SOME 4/10S INSTRUCTINS) WORD :5C08 :5CX8-:5CXF (4/10S INSTRUCTIONS) WORD :2600 :26X0-:26X7 WORD :2608 :26X8, :26X9 WORD :260C :26XC WORD :261D :261D WORD :262D :262D WORD :260E :26XE, :26XF WORD :0E0E :0EXE, :2EXE, :4EXE, :6EXE WORD :0F0D :0FXD, :2FXD, :4FXD, :6FXD WORD :0F0E :0FXE,:2FXE,:4FXE,:6FXE,:0FXF,:2FXF,:4FXF,:6FXF WORD :1F03 :1F03-:1F73 WORD :0F04 :0FX4,:2FX4,:4FX4,:6FX4,:0FX6,:2FX6,:4FX6,:6FX6 * TSTSIZ WORD $-UITAB INSTRU RES 1,0 TITL * * TABLE OF UNIMP. INSTR. MASKS * MSKTAB EQU $ WORD :EF00 WORD :FF00 WORD :FF0F WORD :FFF0 WORD :DF00 WORD :9F00 WORD :FFFF  WORD :FFFF WORD :FFEF WORD :FF8F WORD :FF0E WORD :FF08 WORD :FF08 WORD :FF0E WORD :FF0F WORD :FFFF WORD :FFFF WORD :FF0E WORD :9F0F WORD :9F0F WORD :9F0E WORD :FF8F WORD :9F0D * P13900 EQU $ TITL REAL TIME CLOCK TEST ******************************************************* * * ---------- REAL TIME CLOCK TEST ---------- * * THIS TEST VERIFIES CORRECT OPERATION OF THE REAL TIME * CLOCK INCREMENT AND INTERRUPT. THE INCREMENT CELL IS * SET TO A 3 SECOND COUNT, AND IS ALLOWED TO INCREMENT * TO ZERO, WITH THE TEST CHECKING THE INCREMENTING * PROC ESS. AS THE INCREMENT COUNT GOES TO ZERO, AN * INTERRUPT SHOULD OCCUR. * ******************************************************* RTC EQU $ N31000 EQU $ COPY DEMAND,A TEST SELECTION AND =8,A JNE A,$+3 IF BIT 3 SET, EXECUTE TEST JMP *$+1 BIT 3 RESET, ABORT TEST WORD N31040 POINTER TO END OF RTC TEST * COPY =:03,A RTC TEST CODE SELP A,4 OUTPUT TO CONSOLE COPY =:91,X RTC INCREMENT CELL LOCATION * COPY =N31025,A RTC INTERRUPT SERVICE ROUTINE COPY A,2(X) PUT IN :93 COPY STATSV,A COPY A,S TITL N31010 EQU $ COPY =:FF10,A DEC. -240 COUNT FOR INCREMENT CELL COPY A,0(X) THIS SHOULD GIVE A 2 SECOND WAIT COPY =:FF11,A VALUE FOR IMAGE COUNTER COPY A,COUNT  SBIT 8,S ENABLE INTERRUPTS SBIT 5,S ENABLE RTC N31011 COPY =0,Q CLEAR DELAY COUNTER IMS COUNT COMPARISON VALUE FOR INCREMENT CELL NOP N31012 EQU $ IJEQ Q,N31013 INCREMENT DELAY COUNTER, JUMP IN EXPIRED COPY 0(X),A GET INCREMENT CELL CSK A,COUNT HAS INCREMENT OCCURED YET ? NOP  JMP N31012 NO, COUTINUE DELAY LOOP CSK A,=0 HAS INCREMENT CELL GONE TO ZERO ? NOP JMP $+2 NO, OK JMP N31014 YES, ERROR * TBIT 4,A COPY BIT 4 TO OV FOR DISPLAY JMP N31011 WAIT FOR NEXT INCREMENT * N31013 RBIT 5,S DISABLE RTC ERROR: TIMER,EXPIRED,BEFORE,INCREMENT,OCCURED JMP  N31028 N31014 RBIT 5,S DISABLE RTC ERROR: INCREMENT,CELL,WENT,TO,ZERO,WITH,NO,INTERRUPT JMP N31028 TITL N31025 ENT INTERRUPT SERVICE ROUTINE COPY 0(X),A GET INCREMENT CELL CSK A,=0 NOP ERROR: INCREMENT,CELL,SHOULD,BE,0,ON,INTERRUPT COPY COUNT,A JEQ A,$+2 ERROR: INCREMENT,CELL,SHOULD,HAVE,VALUE,IN,'COUNT' N31028 EQU $ RBIT 5,S DISABLE RTC SBIT 8,S ENABLE INTERRUPTS JMP N31000 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP N31029 JMP N31030 EXIT COUNTA RES 1,0 CHECK COUNT OVERFLOW CELL COUNT RES 1,0 CHECK COUNT FOR INCREMENT CELL LPOOL TITL *********************************************************************** * * RTC CONSISTANCY TEST * * THE RTC IS RUN FOR ABOUT 1/8 SECOND (16 TICS) AND * AN AVERAGE 2 TIC SOFTWARE COUNT IS TAKEN. A + AND - * 3% WINDOW IS CALCULATED ON THIS SOFTWARE COUNT, AND * USED TO DETERMINE THE CONSISTENCY OF THE RTC OVER A * 4 SECOND SPAN * ************************************************************************ * N31030 EQU $ RBIT 4,S DISABLE CONSOLE INTERRUPT RBIT 8,S INHIBIT INTERRUPTS COPY =:FFF7,A SET LOOP TO 9 TIMES COPY A,N3LOOP COPY =0,A CLEAR SOFTWARE COUNT COPY A,COUNT COPY A,COUNTA N31031 COPY =:FFFE,A MINUS TWO TICS COPY A,0(X) STORE AT :91 COPY =N31032,A INTERRUPT RETURN COPY A,2(X) STORE AT :93 SBIT 5,S ENABLE RTC SBIT 8,S START RTC RES $;:F-$&:F,0 IMS INSTR. MUST BE AT LOC. :XXXF N310311 IMS COUNT JMP $-1 IMS COUNTA JMP N310311 ERROR: NO,INTERRUPT,OR,COUNT,OVERFLOW * N31032 ENT RBIT 8,S STOP RTC COPY 0(X),A CHECK TIC COUNT  = 0 CSK A,=0 NOP ERROR: RTC,COUNT,CELL,NOT,=,0,AT,INTERRUPT COPY N3LOOP,A CSK A,=:FFF7 THROW AWAY FIRST NOP JMP $+4 COPY =0,A FIRST COPY A,COUNT COPY A,COUNTA IMS  N3LOOP FINISHED? JMP N31031 NO COPY COUNTA,A YES,AVERAGE COPY COUNT,Q SHIFT AQ,RO,3 DIVIDE BY 8 COPY A,LOW THIS IS A TWO TIC SOFTWARE AVERAGE COPY Q,LOW+1 SHIFT AQ,RO,5 6 % WINDOW  COPY A,RTCSAVE COPY Q,RTCSAVE+1 RBIT CY,S ADDC LOW+1,Q ADDC LOW,A COPY A,HIGH COPY Q,HIGH+1 COPY LOW,A COPY LOW+1,Q SBIT CY,S SUBC RTCSAVE+1,Q TBIT CY,S JT OV,$+2 SUB =1,A SUB RTCSAVE,A COPY A,LOW COPY Q,LOW+1 TITL * * SECOND PART OF TEST BEGINS HERE * COPY =:FF10,A SET UP FOR 4 SECOND RUN COPY A,N3LOOP N31033 COPY =0,A COPY A,COUNT COPY =:FFFE,A USE MINUS TWO AGAIN COPY A,0(X) STORE IN :91  COPY =N31034,A RTC INTERRUPT SERVICE ROUTINE LOCATION COPY A,2(X) STORE IN :93 SBIT 5,S ENABLE RTC SBIT 8,S START RTC RES $;:F-$&:F,0 IMS INSTR. MUST BE AT LOC. :XXXF N310341 IMS COUNT JMP $-1 IMS COUNTA JMP N310341 ERROR: NO,INTERRUPT,OR,COUNT,OVERFLOW * N31034 ENT RBIT 8,S STOP RTC COPY 0(X),A CHECK TIC COUNT = 0 CSK A,=0 NOP ERROR: RTC,COUNT,CELL,NOT,=,0,ON,INTERRUPT COPY  N3LOOP,A CSK A,=:FF10 THROW AWAY FIRST NOP JMP $+2 JMP N31035 FIRST * AND =:F0,A -- SHIFT A,LO,8 -- CONSOLE ADD =3,A -- DISPLAY SELP A,4 -- * COPY COUNT,A CSK A,HIGH+1 DOES COUNT FIT IN WINDOW JMP $+3 NOP ERROR: COUNT,IS,ABOVE,LIMIT,-,RTC,PERIOD,TOO,HIGH CSK A,LOW+1 ERROR: COUNT,IS,BELOW,LIMIT,-,RTC,PERIOD,TOO,LOW NOP N31035 EQU $ IMS N3LOOP ARE WE FINISHED? JMP N31033 NO * JMP N31030 PATCH FOR LOOPING ORG $-1 JMP *LOOP PATCH FOR LOOPING THROUGH ENTIRE RTC TEST ORG $-1 NOP  OVERLAY WITH NOP JMP N31040 * LOOP WORD N31000 POINTER TO BEGINNING OF RTC TEST HIGH RES 2,0  HIGH LIMIT LOW RES 2,0 LOW LIMIT N3LOOP RES 1,0 LOOP CONTROL RTCSAVE RES 2,0 LPOOL N31040 EQU  $ TITL I/O TEST -- INITIALIZATION ******************************************************* * * ---------- I/O TEST ---------- * * THE I/O TEST (IOT) TESTS ALL INPUT / OUTPUT * FUNCTIONS OF THE PROCESSOR. IN ADDITION, IT * VERIFIES ALL SIGNALS ON THE MOTHERBOARD, * AND TESTS ALL PROCESSOR FUNCTIONS ASSOCIATED * WITH INTERRUPTS (IE INSTRUCTION EXECUTION * UNDER INTERRUPTS, AND INSTRUCTION NON- * INTERRUPTABILITY). * FOLLOWING ARE THE INDIVIDUAL TESTS IN IOT: * * 1. DEVICE ADDRESS FUNCTION CODE EXERCISE * 2. PROGRAMMED I/O INSTRUCTION TESTING * 3. I/O CLOCKS TESTING * 4. INTERRUPT INSTRUCTION TESTING * 5. AUTO I/O INSTRUCTION TESTING *  6. NON-INTERRUPTABILITY TESTING * 7. DMA TESTING * 8. POWER-FAIL TESTING * * NOTE - THIS TEST REQU IRES THAT THE I/O TEST * MODULE BE INSTALLED IN THE SYSTEM. * ******************************************************* TITL * * DEVICE ADDRESS AND FUNCTION CODE EQUATES * DA0A EQU :50 DA0B EQU :58 DA0C EQU :60 DA15 EQU :A8 FC0 EQU 0 FC1 EQU 1 FC2 EQU 2 FC3 EQU 3 FC4 EQU 4 FC5 EQU 5 FC6 EQU 6 FC7 EQU  7 TITL * * INITIALIZATION * IOT EQU $ G00000 EQU $ COPY DEMAND,A TEST SELECTION AND =:10,A TEST BIT 4 JEQ A,G00002 SET, DO I/O TEST COPY =:0F04,A IOT RUN INDICATOR SELP A,4 COPY =0,A IN :50,A CLSN =:AF,A TEST FOR TEST BOARD RESPONSE JMP $+3 G00002 JMP *$+1 WORD PART3ST COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY STATSV,A  COPY A,S INITIALIZE STATUS * G00012 EQU $ G00019 EQU $ COPY =UNMEM0,X ADDRESS OF MEMORY EXCEPTION TRAP VECTOR COPY =UMT1,A UNEXPECTED UNINST. MEM TRAP ROUTINE ADDR. COPY A,3(X) STORE INTO 4TH WORD OF TRAP TITL ************************************************************************** * * DEVICE ADDRESS / FUNCTION CODE TESTING * * THE FOLLOWING DEVICE ADDRESS / FUNCTION CODE * COMBINATIONS ARE TESTED: * * DA0A FC0 * DA0A FC1 * DA0A FC2 *  DA0B FC3 * DA0B FC4 * DA0B FC5 * DA0B FC6 * DA0B FC7 * DA15 FC2 * * EACH OF THESE PAIRS IS DEFINED TO * CAUSE THE I/O TEST CARD TO RETURN THE * 1'S COMPLIMENT OF THE DAFC COMBINATION. * ************************************************** TITL ****** * * DEVICE ADDRESS / FUNCTION CODE EXERCISE * ****** * * FIRST TEST DEVICE ADDRESS 0B, FUNCTION CODES 0-7 USING A REG * G01010 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY =0,X INDEX FOR IN INSTRUCTION COPY =:AF,Y INDEX FOR CLSN INSTRUCTION G01012 EQU $ COPY =0,A XNX X FUNCTION CODE IS DETERMINED BY X REG IN DA0A;FC0,A 'A' SHOULD BE 1'S COMPLIMENT OF DA&FC XNX Y CLSN =0,A VALUE FOR COMPARISON IS IN Y REG. JMP $+2  OK ERROR: DEVICE ADDR / FUNCTION CODE FAILURE * FC IS IN X REGISTER *  COMPLIMENTED VALUE IS IN Y REGISTER * CLSN =7,X REACHED LAST FUNCTION CODE ? JMP G01015 YES, END REACHED - NEXT TEST ADD =1,X SUB =1,Y JMP G01012 LOOP TO CONTINUE TITL * * NEXT TEST DEVICE ADDRESS 15, FUNCTION CODE 2 USING Q REG * G01015 EQU $ COPY =0,A IN DA15;FC2,Q 'Q' SHOULD BE 1'S COMPLIMENT OF DA&FC CLSN =:55,Q JMP $+2 ERROR: DEVICE ADDR / FUNCTION CODE FAILURE. * JMP G01010 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G02000 LPOOL TITL ************************************************************* * * OUT 4REG,DAFC G02000 * IN DAFC,4REG G02000 * SELP 4REG,DAFC G03000 * SST DAFC G04000 * * IN AND OUT ARE TESTED WITH 4 REGISTERS AND * WITH 4 DATA PATTERNS (:FFFF, :AAAA, :5555, * AND :0000). DATA IS OUTPUT TO THE I/O TEST CARD * USING OUT,  AND THEN READ BACK IN USING IN. * * SELP IS TESTED WITH ONLY THE A REGISTER * * SST IS TESTED FOR BOTH A TRUE AND A FALSE * SENSE RESPONSE. * ************************************************** TITL ****** * * OUT 4REG,DAFC * IN DAFC,4REG * ****** G02000 EQU $ COPY PT0000,Q INITIALIZE Q COPY PTFFFF,A INITIALIZE A OUT  Q,DA15;FC0 WRITE WORD TO HOLDING REG IN DA15;FC0,A READ IT BACK CSK A,PT0000 NOP ERROR: WORD,BUS,FAILURE,--,A,SHOULD,=,0 * COPY PTAAAA,X INITIALIZE X OUT X,DA15;FC0 WRITE WORD TO HOLDING REG. IN DA15;FC0,Q READ IT BACK CSK Q,PTAAAA NOP ERROR: WORD,BUS,FAILURE,--,Q,SHOULD,=,:AAAA TITL COPY PT5555,Y INITIALIZE Y OUT Y,DA15;FC0 WRITE WORD TO HOLDING REG IN DA15;FC0,X READ IT BACK COPY X,Q CSK Q,PT5555 NOP ERROR: WORD,BUS,FAILURE,--,X,SHOULD,=,:5555 * COPY PTFFFF,A OUT A,DA15;FC0 WRITE WORD TO HOLDING REG. IN DA15;FC0,Y READ IT BACK COPY Y,Q CSK Q,PTFFFF  NOP ERROR: WORD,BUS,FAILURE,--,Y,SHOULD,=,:FFFF * JMP G02000 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP TITL ****** * * SELP 4REG,DAFC * ****** G03000 EQU $ COPY =0,Q SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY PT6666,A SELP A,DA15;FC7 WRITE DATA TO HOLDING REGISTER IN DA15;FC0,Q READ IT BACK CSK Q,PT6666 NOP ERROR: DATA,BUS,FAILURE,--,QREG,SHOULD,=:6666 ******* * * SST DAFC * ******* G04000 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SST DA15;FC1 TEST FOR I/O BOARD INSTALLED ERROR: SST,FAILED,--,SHOULD,SKIP SST 4 UNDEFINED DEVICE ADDRESS JMP $+2 ERROR: SST,FAILED,--,SHOULD,NOT,SKIP * JMP G03000 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP TITL I/O TEST -- I/O CLOCKS TESTING ************************************************** * * VERIFY I/O CLOCKS (IOCL AND CLK) AND CLOCK *  SIGNAL ROUTING ON MOTHERBOARD. * ************************************************** G05000 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SELP A,DA15;FC4 ENABLE I/O CLOCKS SST DA0A;FC0 TEST I/O CLOCK (IOCL) ERROR: I/O,CLOCK,(IOCL),NOT,RUNNING SST DA0A;FC1 TEST CLOCK (CLK) ERROR: CLOCK,(CLK),NOT,RUNNING  SELP A,DA15;FC5 DISABLE I/O CLOCKS SST DA0A;FC0 TEST I/O CLOCK (IOCL) JMP $+2 OK ERROR: I/O,CLOCK,(IOCL),IS,STILL,RUNNING SST DA0A;FC1 TEST CLOCK (CLK) JMP $+2 ERROR: CLOCK,(CLK),IS,STILL,RUNNING * JMP G05000 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP TITL I/O TEST -- INTERRUPT INSTRUCTION TESTING ******************************************************* * * JST MEN AS INTERRUPT INSTRUCTION * IMS MEM AS INTERRUPT INSTRUCTION * JSK MEM AS INTERRUPT INSTRUCTION * NOP  AS INTERRUPT INSTRUCTION * * INSTRUCTIONS ARE TESTED FOR DEFINED ASPECTS * OF OPERATION AS INTERRUPT INSTRUC TIONS. * IMS IS TESTED ON A NORMAL AND AN EOB INTERRUPT. * JSK IS TESTED IN BOTH NORMAL OPERATION AND IN * TRAP OPERATION. THIS ALLOWS TESTING OF PARTICULAR * CHARACTERISTICS OF TRAP OPERATION WHEN CAUSED BY * AN INTERRUPT INSTRUCTION. * SIN IS TESTED FOR ABILITY TO INHIBIT INTERRUPTS. * ******************************************************* TITL ****** * * TEST SIN FOR INTERRUPT INHIBIT * TEST JST AS INTERRUPT INSTRUCTION * AND VERIFY INTERRUPT TO OCCUR * ******* G06000 EQU $ COPY JST1,A JST INSTRUCTION COPY A,:20 STORE IN INTERRUPT VECTOR COPY =G06003,A INT. SERVICE ROUTINE ADDR. COPY A,:21 COPY =:40,Y EOB INTERRUPT LOCATION COPY =G06006,A EOB INTERRUPT SERVICE ROUTINE ADDR. COPY A,1(Y) RBIT 8,S DISABLE INTERRUPTS COPY =0,A COPY A,G06003 CLEAR SUBROUTINE RETURN POINTER SELP A,DA0B;FC6 INITIALIZE I/O MODULE  SELP A,DA15;FC3 SET IUR (INTERNAL) STIMULUS NOP NOP SST DA0A;FC2 IS IUR PENDING YET ? JMP $-1 NO, LOOP UNTIL READY SIN 2 SBIT 8,S ENABLE INTERRUPTS NOP ADD =1,A  THIS INSTRUCTION SHOULD EXECUTE BEFORE INTERRUPT G06002 ADD =1,A THIS INSTRUCTION SHOULD NOT EXECUTE RBIT 8,S  DISABLE INTERRUPTS ERROR: INTERRUPT,DID,NOT,TAKE,PLACE JMP G06010 ERROR EXIT G06003 ENT CSK A,=1 NOP ERROR: SIN,ALLOWED,WRONG,NUMBER,OF,INSTRUCTIONS,TO,EXECUTE COPY S,A AND =:0100,A TEST BIT 8 JEQ A,$+2 ERROR: JST,FAILED,--,INT,BIT,OF,S,REG,WAS,NOT,RESET COPY G06003,A FETCH SUBROUTINE RETURN POINTER CSK A,=G06002 COMPARE WITH EXPECTED VALUE NOP ERROR: JST,FAILED,--,STORED,WRONG,RETURN,POINTER JMP G06010 G06006 ENT ERROR: JST,FAILED,--,SHOULD,NOT,GET,EOB,INTERRUPT TITL ****** * * IMS AS INTERRUPT INSTRUCTION * ****** G06010 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY A,S  INITIALIZE STATUS SBIT 8,S ENABLE INTERRUPTS COPY IMS1,A IMS $+1 INSTRUCTION COPY A,:20 STORE IN INTERRUPT LOCATION COPY PT7FFF,A :7FFF - INITIAL COUNT FOR IMS COPY A,:21 COPY =G06014,A EOB INTERRUPT SERVICE ROUTINE LOCATION COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION COPY =0,A SELP A,DA15;FC3 SET IUR (INTERNAL) STIMULUS NOP ERROR: INTERRUPT,DID,NOT,TAKE,PLACE JMP G06020 ERROR EXIT * G06014 ENT COPY :21,A FETCH IMS COUNT CELL JEQ A,$+2 ERROR: COUNT,CELL,SHOULD,=,0,ON,ECHO,INTERRUPT COPY =0,A EXCH A,S INITIALIZE STATUS AND SAVE PREVIOUS STATUS CSK A,S NOP ERROR: IMS,ALTERED,STATUS JMP G06000 PATCH FOR LOOPING ORG $-1 NOP COPY =:FF04,A IOT RUN INDICATOR SELP A,4 JMP G06020 * * * IMS1 IMS $+1 JSK1 JSK *$+1 * * * LPOOL * * DDSTACK RES 8,0 DDSTACKL EQU DDSTACK DDSTACK LIMIT DDSTACK2 EQU DDSTACK+6 DDSTACK CELL 7 DDSTACK1 EQU DDSTACK+7 DDSTACK CELL 8 DDSTACKK EQU DDSTACK+8 DDSTACK POINTER (INITIAL) TITL ****** * * JSK AS INTERRUPT INSTRUCTION * ****** G06020 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY   STATSV,A COPY A,S INITIALIZE STATUS COPY JSK1,A JSK *$+1 INSTRUCTION COPY A,:20 STORE IN INTERUPT LOCATION (:20) COPY =G06025,A INTERRUPT SERVICE ROUTINE LOCATION COPY A,:21 STORE AT :21  COPY =G06027,A EOB INTERRUPT SERVICE ROUTINE LOCATION COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION (:41) COPY =:9C,X STACK EXCEPTION TRAP LOCATION COPY JST1,A JST *$+1 INSTRUCTION COPY A,2(X) STORE IN 3RD WORD OF TRAP COPY =G06028,A STACK EXCEPTION TRAP SERVICE ROUTINE LOC. COPY A,3(X) STORE IN 4TH WORD OF TRAP (:9F) COPY =STACKL,A STACK LIMIT COPY A,L LOAD L REGISTER COPY =STACKK,A STACK POINTER  COPY A,K LOAD K REGISTER COPY =0,A COPY A,STACK1 CLEAR STACK COPY A,0(X) CLEAR TRAP LOCATIONS COPY A,1(X) SIN 1 SELP A,DA15;FC3 SET IUR STIMULUS NOP G06023 EQU $ ERROR: INTERRUPT,DID,NOT,OCCUR JMP G06029 ERROR EXIT TITL * * INTERRUPT SERVICE ROUTINE * G06025 EQU $ SIN  3 COPY STATSV,A FETCH VALUE FOR S REG. RBIT 8,A TURN OFF INT BIT EXCH A,S INITIALIZE STATUS AND SAVE PREVIOUS STATUS CSK A,STATSV COMPARE STATUS WITH EXPECTED VALUE NOP ERROR: JSK,FAILED,--,S,REG,WAS,ALTERED COPY K,A GET STACK POINTER CSK A,=STACK1 COMPARE WITH EXPECTED VALUE NOP  ERROR: JSK,FAILED,--,K,CONTAINS,WRONG,VALUE COPY STACK1,A GET STORED,P,COUNTER CSK A,=G06023 COMPARE WITH EXPECTED VALUE NOP ERROR: JSK,FAILED,--,WRONG,VALUE,OF,P,SAVED,IN,STACK JMP G06029 EXIT * G06027 ENT EOB INT. SERVICE ROUTINE ERROR: SHOULD,NOT,RECEIVE,EOB,INTERRUPT JMP G06029 * G06028 ENT STACK EXCEPTION TRAP ROUTINE ERROR: UNEXPECTED,STACK,EXCEPTION,TRAP * G06029 JMP G06020 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G06030  LPOOL TITL ****** * * JSK AS INTERRUPT INSTRUCTION * WITH FORCED STACK OVERFLOW TRAP * ****** G06030 EQU $  COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS COPY =G06035,A INTERRUPT SERVICE ROUTINE LOCATION COPY A,:21 COPY =G06037,A EOB INTERRUPT SERVICE ROUTINE LOCATION  COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION COPY =G06038,A STACK TRAP SERVICE ROUTINE LOCATION COPY A,3(X) STORE IN 4TH WORD OF TRAP (:8F) COPY =STACKL,A STACK LIMIT COPY A,L LOAD L REGISTER COPY =STACK1,A STACK POINTER COPY A,K LOAD K REGISTER COPY =0,A COPY A,STACK2 CLEAR STACK COPY A,0(X) CLEAR TRAP LOCATIONS COPY A,1(X) SIN 1 SELP A,DA15;FC3 SET IUR (INTERNAL) STIMULUS  NOP G06033 EQU $ ERROR: INTERRUPT,DID,NOT,OCCUR JMP G0603A ERROR EXIT LPOOL TITL * * TRAP SERVICE ROUTINE * * * FIRST CHECK THAT TRAP EXECUTION AUTOMATICALLY DOES A SIN 15 * G06038 ENT COPY JST1,A JST *$+1 COPY A,:20 STORE AT INTERRUPT LOCATION COPY =G06039,A TRAP SERVICE ROUTINE ADDRESS COPY A,:21   STORE AT INTERRUPT LOCATION COPY STATSV,Q FETCH INITIAL VALUE FOR S REG EXCH Q,S RESTORE SREG AND SAVE PREVIOUS STATUS COPY =0,A IJNE A,$ WAIT FOR 2ND INTERRUPT ERROR: 2ND,INTERRUPT,DID,NOT,OCCUR JMP G06034 ERROR EXIT G06039 ENT CSK A,=8 NOP ERROR: TRAP,EXECUTION,DID,NOT,AUTOMATICALLY,DO,SIN,15 * * CHECK POST-TRAP STATUS * G06034 TBIT 8,Q COPY INT BIT TO OV JF OV,$+2 TEST INT BIT ERROR: JST,AT,TRAP,LOCATION,SHOULD,RESET,INT,BIT SBIT 8,Q SET INT BIT CSK Q,STATSV NOP ERROR: JSK,AT,INTERRUPT,LOCATION,OR,JST,AT,TRAP,LOCATION *  ALTERED STATUS (OTHER THAN INT BIT) * * CHECK POST TRAP POINTERS * COPY K,A GET STACK POINTER  CSK A,=STACK2 COMPARE WITH EXPECTED VALUE NOP ERROR: JSK,FAILED,--,K,CONTAINS,WRONG,VALUE COPY STACK2,A GET STORED P COUNTER CSK A,=G06033 COMPARE WITH EXPECTED VALUE NOP ERROR: JSK,FAILED,--,WRONG,VALUE,OF,P,SAVED,IN,STACK COPY 0(X),A FETCH 1ST WORD OF TRAP (:9C) CSK A,=G06035 SHOULD BE EFFECTIVE ADDRESS OF JSK INST NOP ERROR: LOC.,POINTER,AT,TRAP,LOADED,WITH,WRONG,VALUE COPY 1(X),A FETCH 2ND WORD OF TRAP (:9D) CSK A,JSK1 SHOULD BE JSK INSTRUCTION NOP ERROR: WRONG,INSTRUCTION,STORED,AT,TRAP,LOC. COPY G06038,A GET TRAP SERVICE ROUTINE RETURN POINTER CSK A,=G06035 SHOULD BE EFFECTIVE ADDRESS OF JSK INST. NOP ERROR: WRONG,RETURN,POINTER,WAS,STORED,AT,G06038 JMP G0603A LPOOL TITL * G06035 EQU $ INTERRUPT SERVICE ROUTINE RBIT 8,S DISABLE INTERRUPTS ERROR: JSK,FAILED,--,SHOULD,TAKE,TRAP JMP G0603A ERROR EXIT * G06037 ENT EOB INTERRUPT SERVICE ROUTINE ERROR: SHOULD,NOT,GET,EOB,INTERRUPT * G0603A EQU $  JMP G06030 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP * COPY JMP1,A JMP *$+1 INSTRUCTION COPY A,2(X) STORE AT 3RD WORD OF TRAP COPY =USET1,A UNEXPECTED STACK TRAP SERVICE ROUTINE COPY A,3(X) STORE AT 4TH WORD OF TRAP JMP G06050 LPOOL TITL ****** * * TEST THAT XA IS FORCED ON TEMPORARILY * BY EXECUTION OF AN INTERRUPT INSTRUCTION * ****** G06050 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS COPY =:88,X UNINSTALLED MEMORY TRAP COPY =G06056,A UMT SERVICE ROUTINE COPY A,3(X) COPY JMP1,A GET JMP INDIRECT INSTR. COPY A,2(X) COPY IMS2,A IMS *$+1 COPY A,:20 STORE AT INTERRUPT LOCATION COPY L8001,A ADDRESS OF IMS COUNT CELL (:8001) COPY A,:21 * SBIT 6,S SET XA BIT COPY =-1,A COPY A,*L8001 INITIALIZE IMS COUNT CELL (:8001) COPY =G06054,A EOB INTERRUPT SERVICE ROUTINE ADDRESS COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION * RBIT 6,S RESET XA BIT COPY =0,A SELP A,DA15;FC3 SET IUR STIMULUS  NOP RBIT 8,S DISABLE INTERRUPTS ERROR: INTERRUPT,DID,NOT,OCCUR JMP G06059 ERROR EXIT TITL * EOB INTERRUPT SERVICE ROUTINE * G06054 ENT COPY =:0E0D,A EXPECTED CONTENTS OF LOCATION 1 EXCH A,1   TEST LOCATION 1 CSK A,=:0E0D NOP JMP $+2 ERROR JMP $+3 ERROR: LOCATION,1,ALTERED,--,XA,WAS,NOT,FORCED,ON JMP G06059 SBIT 6,S TURN ON XA BIT COPY *L8001,A FETCH IMS COUNT CELL (:8001) JEQ A,G06059 ERROR: IMS,COUNT,CELL,NOT,ZERO,AT,EOB,INTERRUPT JMP $+2 * * UNINSTALLED MEMORY TRAP SERVICE ROUTINE * G06056 EQU $ G06059 EQU $ COPY =:5C35,A SCNTX INSTRUCTION...RESTORE TRAP COPY A,2(X)  COPY =UMT1,A UNEXPECTED UMT SERVICE ROUTINE ADDR. COPY A,3(X) STORE AT 4TH WORD OF TRAP (:8F) JMP G06050 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G07000 IMS2 IMS *$+1 L8001 WORD :8001 LPOOL TITL I/O TEST -- AUTO I/O TESTING ******************************************************* * * AIN DAFC * AIB DAFC * AOT DAFC * AOB DAFC * EACH INSTRUCTION IS USED TO TRANSFER A 6 WORD * BLOCK OF DATA. THE DATA TRANSFERED IS CHECKED * AFTER THE EOB INTERRUPT. ALSO CORRECT TERMINAL * STATE OF THE WORD/BYTE COUNTER AND ADDRESS POINTER * ARE CHECKED AFTER THE EOB INTERRUPT. * * SINCE THE I/O TEST BOARD HAS ONLY A 1 WORD * HOLDING REGISTER, AOT AND AOB CAN BE USED * TO TRANSFER ONLY ONE WORD/BYTE BEFORE THE * EOB INTERRUPT. A SERIES OF THESE TRANSFERS * IS PERFORNED, UNTIL A TOTAL OF 6 WORDS HAS * BEEN TRANSFERED. AFTER THE LAST EOB INTERRUPT, * THE COUNTER AND ADDRESS POINTER ARE CHECKED * (AOT AND AOB ONLY) * * AIN IS TESTED WITH DEVICE ADDRESS 0B AND * FUNCTION CODE 2. THE I/O TEST MODULE WILL * RESPOND TO THIS COMBINATION BY ROTATING * ITS HOLDING REGISTER WORD RIGHT ONE PLACE * AFTER EACH WORD HAS BEEN TRANSFERED. ALSO, * EVERY OTHER WORD TRANSFERED WILL BE ZEROS, *  STARTING WITH THE FIRST WORD. * ******************************************************* TITL ****** * * AIN AS INTERRUPT INSTRUCTION * ****** AIN1 AIN DA0B;FC2 AIB1 AIB DA15;FC0 G07000 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY STATSV,A COPY A,S INITIALIZE STATUS COPY AIN1,A AIN DA0B;FC2  COPY A,:20 STORE AT INTERRUPT LOCATION COPY WLEN,A NEGATIVE WORD COUNT COPY A,:21 COPY WPOINT,A WORD ADDRESS POINTER FOR AIN COPY A,:22 COPY =G07005,A EOB INTERRUP SERVICE ROUTINE LOCATION COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION COPY =5,X -- COPY =0,A -- CLEAR G07002 XNX X  -- AIN COPY A,PNT1 -- BUFFER JNED X,G07002 -- COPY =:F0AA,A WORD VALUE OUT A,DA15;FC0 OUTPUT TO HOLDING REGISTER COPY =0,A SELP A,DA15;FC3 SET IUR (INTERNAL) STIMULUS NOP RBIT  8,S DISABLE INTERRUPTS ERROR: NO,EOB,INTERRUPT JMP G07009 ERROR EXIT TITL * * EOB INTERRUPT SERVICE ROUTINE * G07005 ENT COPY :21,A FETCH AIN WORD COUNT TBIT 15,A COPY APX BIT TO OV JT OV,$+2 TEST APX BIT ERROR: APX,BIT,SHOULD,REMAIN,ON RBIT 15,A RESET APX BIT JEQ A,$+2 COUN T SHOULD BE 0 ERROR: WORD,COUNT,NOT,ZERO,ON,EOB,INTERRUPT COPY :22,A FETCH AIN WORD POINTER CSK A,=PNT1+5 SHOULD POINT TO END OF BLOCK NOP ERROR: TERMINAL,AIN,POINTER,HAS,WRONG,VALUE COPY =0,X INITIALIZE INDEX COPY =:7855,Q COMPARISON DATA VALUE G07007 XNX X COPY PNT1,A READ A WORD FROM BUFFER INDEXED BY X JEQ A,$+2 ERROR: WRONG,DATA,TRANSFERED,--,INDEX,IS,IN,XREG ADD =1,X INCREMENT INDEX XNX X COPY PNT1,A CSK A,Q COMPARE WORD READ WITH EXPECTED DATA NOP  ERROR: WRONG,WORD,TRANSFERED,--,A=ACTUAL;,Q=EXPECTED ROTATE Q,L,14 SHIFT WORD FOR NEXT COMPARE (=ROTATE R,Q,2)  ADD =1,X INCREMENT INDEX CSK X,=6 END OF WORD ? NOP JMP G07007 NO, LOOP TO CONTINUE G07009 JMP G07000 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G07010  LPOOL TITL ****** * * AIB AS INTERRUPT INSTRUCTION * ****** G07010 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS COPY AIB1,A AIB DA15;FC0 COPY A,:20 STORE AT INTERRUPT LOCATION COPY BLEN,A NEGATIVE BYTE LENGTH COPY A,:21 COPY =PNT1,A -- FORM  SHIFT A,LO,1 -- INITIAL SUB =1,A -- AIB POINTER COPY A,:22 COPY =G07015,A EOB INTERRUPT SERVICE ROUTINE LOCATION COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION COPY =5,X -- COPY =0,A  -- CLEAR G07012 XNX X -- AIN COPY A,PNT1 -- BUFFER JNED X,G07012 -- COPY PTAA55,A WORD VALUE OUT A,DA15;FC0 OUTPUT TO HOLDING REGISTER COPY =0,A SELP A,DA15;FC3 SET IUR (INTERNAL) STIMULUS NOP RBIT 8,S DISABLE INTERRUPTS ERROR: NO,EOB,INTERRUPT JMP G07019 ERROR EXIT TITL * * EOB INTERRUPT SERVICE ROUTINE * G07015 ENT COPY :21,A FETCH AIB BYTE COUNT TBIT 15,A COPY APX BIT TO OV JT OV,$+2 TEST APX BIT ERROR: APX,BIT,SHOULD,REMAIN,ON RBIT 15,A RESET APX BIT JEQ A,$+2 COUNT,SHOULD,BE,ZERO ERROR: BYTE,COUNT,NOT,ZERO,ON,EOB,INTERRUPT COPY :22,A FETCH AIB BYTE POINTER COPY =PNT2,Q -- FORM SHIFT Q,LO,1 -- TERMINAL SUB =1,Q -- AIB POINTER CSK A,Q COMPARE WITH AIB POINTER NOP ERROR: TERMINAL,AIB,POINTER,SHOULD,=QREG COPY =0,X INITIALIZE INDEX COPY PT5555,Q COMPARISON DATA VALUE G07017 XNX X COPY PNT1,A READ WORD FROM BUFFER INDEXED BY YREG CSK A,Q NOP ERROR: BAD,DATA,TRANSFERED,--,A=ACTUAL,Q=EXPECTED ADD =1,X CSK X,=6 END OF BUFFER ? NOP JMP G07017 NO, LOOP TO CONTINUE TITL G07019 JMP  G07010 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G07020 SPACE 5 * * DATA * AOT1 AOT DA15;FC0 AOB1 AOB DA15;FC0 * PNT1 WORD 0 WORD 0 WORD 0 WORD 0  WORD 0 WORD 0 PNT2 EQU $ WPOINT WORD PNT1-1 WLEN WORD PNT1-PNT2 BLEN WORD PNT1-PNT2%1 * LPOOL TITL ****** * * AOT AS INTERRUPT INSTRUCTION * ****** G07020 EQU $ COPY =0,A SELP A,DA0B;FC6 INITI ALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS COPY AOT1,A AOT DA15;FC0 COPY A,:20 STORE AT INTERRUPT LOCATION COPY WPOINT,A WORD POINTER FOR AOT COPY A,:22 COPY =0,X INITIALIZE INDEX  COPY =:1111,A WORD FOR BUFFER G07022 XNX X COPY A,PNT1 FILL BUFFER SHIFT A,LO,1 CHANGE WORD  ADD =1,X INCREMENT INDEX CSK X,=6 END OF BUFFER ? NOP JMP G07022 NO, LOOP TO CONTINUE COPY =G07025,A EOB INTERRUPT SERVICE ROUTINE LOCATION COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION  COPY =0,X INITIALIZE BUFFER INDEX TITL G07023 EQU $ COPY =-1,A NEGATIVE WORD COUNT COPY A,:21 STORE AT INTERRUPT LOCATION COPY =0,A SELP A,DA15;FC3 SET IUR (INTERNAL) STIMULUS NOP RBIT 8,S DISABLE INTERRUPTS ERROR: NO,EOB,INTERRUPT JMP G07029 ERROR EXIT * * EOB INTERRUPT SERVICE ROUTINE * G07025 ENT IN DA15;FC0,A INPUT DATA FROM HOLDING REGISTER XNX X COPY PNT1,Q GET COMPARISON DATA FROM BUFFER CSK A,Q NOP ERROR: WRONG,WORD,TRANSFERED,--,A=ACTUAL;,Q=EXPECTED COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS ADD =1,X INCREMENT BUFFER INDEX CSK X,=6 END OF AOT SEQUENCE ? NOP  JMP G07023 NO, LOOP TO CONTINUE TITL COPY :21,A FETCH AOT WORD COUNT TBIT 15,A COPY APX BIT TO OV JT OV,$+2 TEST APX BIT ERROR: APX,BIT,SHOULD,REMAIN,ON RBIT 15,A RESET APX BIT JEQ A,$+2 COUNT SHOULD BE ZERO ERROR: WORD,COUNT,NOT,ZERO,ON,EOB,INTERRUPT COPY :22,A FETCH AOT POINTER CSK A,=PNT1+5 SHOULD POINT TO END OF BLOCK NOP ERROR: TERMINAL,AOT,POINTER,HAS,WRONG,VALUE * G07029 JMP G07020 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G07030 LPOOL TITL ****** * * AOB AS INTERRUPT INSTRUCTION * ****** G07030 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS COPY AOB1,A AOB DA15;FC0 COPY A,:20 STORE AT INTERRUPT LOCATION COPY =PNT1,A -- FORM SHIFT A,LO,1 -- INITIAL SUB =1,A -- AOB POINTER COPY A,:22 COPY =0,X INITIALIZE BUFFER INDEX COPY PT5555,A WORD FOR BUFFER G07032 XNX X COPY A,PNT1  FILL BUFFER SHIFT A,LO,1 CHANGE WORD ADD =1,X INCREMENT BUFFER INDEX CSK X,=6 END OF BUFFER ? NOP JMP G07032 NO, LOOP TO CONTINUE COPY =G07035,A EOB INTERRUPT SERVICE ROUTINE LOCATION COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION COPY =0,X INITIALIZE BUFFER INDEX RBIT CY,S  INITIALIZE UPPER/LOWER BYTE INDICATOR TITL G07033 COPY =-1,A NEGATIVE BYTE COUNT COPY A,:21 STORE AT INTERRUPT LOCATION COPY =0,A SELP A,DA15;FC3 SET IUR (INTERNAL) STIMULUS NOP RBIT 8,S DISABLE INTERRUPTS ERROR: NO,EOB,INTERRUPT JMP G0703A ERROR EXIT * * EOB INTERRUPT SERVICE ROUTINE * G07035 ENT IN DA15;FC0,A INPUT DATA FROM HOLDING R EGISTER JT CY,G07037 JMP IF ON LOWER BYTE SHIFT A,LO,8 MOVE DATA TO UPPER BYTE COPY A,K STORE TEMPORARILY SBIT CY,S  SET BYTE INDICATOR (LOWER BYTE) JMP G07038 G07037 OR K,A COMBINE THE TWO BYTES FOR FULL WORD XNX X COPY PNT1,Q GET EXPECTED WORD FROM BUFFER CSK A,Q NOP ERROR: WRONG,WORD,TRANSFERED,--,A=ACTUAL;,Q=EXPECTED RBIT CY,S RESET BYTE INDICATOR (UPPER BYTE) ADD =1,X INCREMENT BUFFER INDEX  CSK X,=6 END OF BUFFER ? NOP JMP $+2 NO, CONTINUE JMP G07039 YES, EXIT LOOP G07038 COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS JMP G07033  LOOP TO CONTINUE TITL G07039 EQU $ COPY :21,A FETCH AOB BYTE COUNT TBIT 15,A COPY APX BIT TO OV  JT OV,$+2 TEST APX BIT ERROR: APX,BIT,SHOULD,REMAIN,ON RBIT 15,A RESET APX BIT JEQ A,$+2 COUNT SHOULD BE ZERO ERROR: BYTE,COUNT,NOT,ZERO,ON,EOB,INTERRUPT COPY :22,A FETCH AOB BYTE POINTER COPY =PNT2,Q -- FORM SHIFT Q,LO,1 -- TERMINAL SUB =1,Q -- AOB POINTER CSK A,Q  NOP ERROR: WRONG,TERMINAL,AOB,POINTER,--,A=ACTUAL;,Q=EXPECTED * G0703A JMP G07030 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP TITL ****** * * AIB OPERATION OF APX BIT * ****** G07040 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS COPY AIB2,A AIB DA15;FC0 COPY A,:20 STORE AT INTERRUPT LOCATION COPY =-1,A BYTE COUNT COPY A,:21 COPY PTFFFF,A BYTE ADDRESS POINTER COPY A,:22 COPY =G07046,A EOB INTERRUPT SERVICE ROUTINE ADDRESS COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION (:41) COPY =0,A SELP A,DA15;FC3 SET IUR STIMULUS NOP RBIT 8,S DISABLE INTERRUPTS ERROR: INTERRUPT,DID,NOT,OCCUR JMP G07049 ERROR EXIT TITL * * INTERRUPT SERVICE ROUTINE * G07046 ENT COPY :21,A TBIT 15,A COPY APX BIT TO OV JF OV,$+2 TEST APX BIT ERROR: APX,BIT,SHOULD,BE,OFF  RBIT 15,A TURN OFF APX BIT JEQ A,$+2 TEST BYTE COUNT ERROR: BYTE,COUNT,SHOULD,BE,ZERO,AT,EOB,INT. COPY :22,A JEQ A,$+2 TEST ADDRESS POINTER ERROR: ADDRESS,POINTER,SHOULD,BE,ZERO * G07049 JMP G07040 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP TITL ****** * * AOB OPERATION OF APX BIT * ****** G07050 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S  ENABLE INTERRUPTS COPY AOB2,A AOB DA15;FC0 COPY A,:20 STORE AT INTERRUPT LOCATION COPY =-1,A BYTE COUNT COPY A,:21 COPY PTFFFF,A BYTE ADDRESS POINTER COPY A,:22 COPY =G07056,A EOB INTERRUPT SERVICE ROUTINE LOCATION COPY A,1(Y) STORE AT EOB INTERRUPT LOCATION COPY =0,A SELP  A,DA15;FC3 SET IUR STIMULUS NOP RBIT 8,S DISABLE INTERRUPTS ERROR: INTERRUPT,DID,NOT,OCCUR  JMP G07059 ERROR EXIT TITL * * INTERRUPT SERVICE ROUTINE * G07056 ENT COPY :21,A TBIT 15,A COPY APX BIT TO OV JF OV,$+2 TEST APX BIT ERROR: APX,BIT,SHOULD,BE,OFF RBIT 15,A TURN OFF APX BIT JEQ A,$+2 TEST BYTE COUNT ERROR: BYTE,COUNT,SHOULD,BE,ZERO COPY :22,A JEQ A,$+2  ERROR: ADDRESS,POINTER,SHOULD,BE,ZERO * G07059 JMP G07050 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G08000 * AIB2 AIB DA15;FC0 AOB2 AOB DA15;FC0 * LPOOL TITL ******************************************************* * * NON-INTERRUPTABILITY TESTING * * JST MEM * JSTE MEM * JSK MEM * JSKE MEM * PUSH VAL * POP * SBIT 8,S * CBIT 8,S * COPY 8REG,S * XNX 4REG * UIS * *  ALL INSTRUCTIONS ARE TESTED FOR BEING * NON-INTERRUPTABLE. THE NON-INTERRUPTABILITY * OF STATUS REGISTER BIT CHANGE INSTRUCTIONS * IS TESTED ONLY WHEN THE INT BIT IS CHANGED. * THE NON-INTERRUPTABILITY TESTING OF XNX * REFERES TO TESTING THAT XNX DOES NOT ALTER * THE NON-INTERRUPTABILITY OF A NON-INTERRUPTABLE * INSTRUCTION WHICH IT INDEXES. * ******************************************************* TITL ****** * * JST MEM AS NON-INTRUPTABLE INSTRUCTION * ****** G08000 COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY STATSV,A RESTORE STATUS COPY A,S COPY JST1,A JST *$+1 COPY A,:20 STORE AT INTERRUPT LOCATION COPY =G08007,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,:21 COPY =0,A SIN 2 SELP A,DA15;FC3 SET IUR (INTERNAL) STIMULUS  NOP JST G08004 RBIT 8,S ERROR: JST,FAILED,--,DID,NOT,JUMP JMP G08009 ERROR EXIT G08004 ENT COPY =1,A NOP NOP TO ALLOW INTERRUPT RBIT 8,S ERROR: INTERRUPT,DID,NOT,OCCUR JMP G08009 ERROR EXIT G08007 ENT INTERRUPT SERVICE ROUTINE JNE A,$+2 ERROR: JST,IS,INTERRUPTABLE G08009 JMP G08000 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP TITL ****** * JSTE MEM AS NON-INTERRUPTABLE INSTRUCTION * ****** G08010 COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY STATSV,A COPY A,S INITIALIZE STATUS COPY =G08016,A INTERRUPT LOCATION COPY A,:21 STORE AT INTERRUPT LOCATION COPY =0,A SIN 2 SELP A,DA15;FC3 SET IUR STIMULUS NOP JSTE G08014 SHOULD BE NON-INTERRUPTABLE RBIT 8,S ERROR: JSTE,FAILED,--,DID,NOT,JUMP JMP G08019 ERROR EXIT G08014 ENT  COPY =1,A COPY SHOULD EXECUTE BEFORE INTERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S  ERROR: NO,INTERRUPT,RECIEVED JMP G08019 ERROR EXIT G08016 ENT INTERRUPT SERVICE ROUTINE JNE  A,$+2 ERROR: JSTE,IS,INTERRUPTABLE G08019 JMP G08010 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G08020 LPOOL TITL ****** * * JSK MEM AS NON-INTERRUPTABLE INSTRUCTION * ****  ** G08020 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY STATSV,A COPY A,S  INITIALIZE STATUS COPY =G08026,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,:21 STORE AT INTERRUPT LOCATION COPY =:9C,X STACK TRAP LOCATION COPY =G08028,A TRAP SERVICE ROUTINE ADDRESS COPY A,3(X) STORE IN 4TH WORD OF TRAP COPY =STAKLP2,A STACK LIMIT COPY A,L LOAD L REGISTER COPY =STAKKP2,A STACK POINTER COPY A,K LOAD K REGISTER COPY =0,A SIN 2 SELP A,DA15;FC3 SET IUR STIMULUS NOP JSK G08024 SHOULD BE NON-INTERRUPTABLE RBIT 8,S ERROR: NO,JSK JMP G08029 ERROR EXIT G08024 EQU $ COPY =1,A COPY SHOULD EXECUTE BEFORE INTERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S ERROR: INTERRUPT,DID,NOT,OCCUR JMP G08029 ERROR EXIT TITL G08026 ENT INTERRUPT SERVICE ROUTINE JNE A,$+2 ERROR: JSK,IS,INTERRUPTABLE JMP G08029 EXIT G08028 EQU $ STACK TRAP SERVICE ROUTINE SIN 1 RBIT 8,S DISABLE INTERRUPTS ERROR: UNEXPECTED,STACK,OVERFLOW G08029 JMP G08020 PATCH FOR LOOPING ORG $-1 NOP TITL ****** * * JSKE MEM AS NON-INTERRUPTABLE INSTRUCTION * ****** G08030 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY STATSV,A COPY A,S INITIALIZE STATUS COPY =G08036,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,:21 STORE AT INTERRUPT LOCATION COPY =G08038,A STACK TRAP SERVICE ROUTINE ADDRESS COPY  A,3(X) STORE IN 4TH WORD OF TRAP (:9F) COPY =STAKLP2,A STACK LIMIT COPY A,L INITIALIZE L REGISTER  COPY =STAKKP2,A STACK POINTER COPY A,K INITIALIZE K REGISTER COPY =0,A SIN 2 SELP A,DA15;FC3 SET IUR STIMULUS NOP JSKE G08034 SHOULD BE NON-INTERRUPTABLE RBIT 8,S DISABLE INTERRUPTS ERROR: JSKE,FAILED,--,DID,NOT,JUMP JMP G08039 ERROR EXIT G08034 EQU $ COPY =1,A COPY SHOULD EXECUTE BEFORE INTERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S ERROR: INTERRUPT,DID,NOT,OCCUR JMP G08039 ERROR EXIT TITL G08036 ENT INTERRUPT SERVICE ROUTINE JNE A,$+2  ERROR: JSKE,IS,INTERRUPTABLE JMP G08039 EXIT G08038 EQU $ STACK TRAP SERVICE ROUTINE SIN 1  RBIT 8,S DISABLE INTERRUPTS ERROR: UNEXPECTED,STACK,OVERFLOW TRAP G08039 JMP G08030 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G08040 SPACE 4 * * DATA * STAKP2 RES  13,0 STAKLP2 EQU STAKP2 STAK1P2 EQU STAKP2+7 STAKKP2 EQU STAKP2+8 STAKXP2 EQU STAKP2+13 * LPOOL TITL ******* * * PUSH VAL AS NON-INTERRUPTABLE INSTRUCTION * ******* G08040 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY STATSV,A COPY A,S INITIALIZE STATUS COPY =G08046,A INTERRUPT SERVICE ROUTINE ADDRESS  COPY A,:21 STORE AT INTERRUPT LOCATION COPY =G08048,A STACK TRAP SERVICE ROUTINE ADDRESS COPY A,3(X! ) STORE IN 4TH WORD OF TRAP (:9F) COPY =STAKLP2,A STACK LIMIT COPY A,L INITIALIZE L REGISTER COPY =STAKXP2,A STACK POINTER COPY A,K INITIALIZE K REGISTER COPY =0,A SIN 2 SELP A,DA15;FC3 SET IUR STIMULUS NOP PUSH 0 SHOULD BE NON-INTERRUPTABLE COPY =1,A COPY SHOULD EXECUTE BEFORE INTERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S DISABLE INTERRUPTS ERROR: INTERRUPT,DID,NOT,OCCUR JMP G08049 ERROR EXIT G08046 ENT INTERRUPT SERVICE ROUTINE JNE A,$+2 ERROR: PUSH,IS,INTERRUPTABLE JMP G08049 TITL G08048 EQU $ STACK OVERFLOW TRAP ROUTINE SIN  1 RBIT 8,S ERROR: UNEXPECTED,STACK,OVERFLOW,TRAP * G08049 JMP G08040 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP * COPY =USET1,A UNEXPECTED STACK TRAP ROUTINE ADDR. COPY A,3(X) STORE IN 4TH WORD OF TRAP TITL ****** * * POP AS INTERRUPT INSTRUCTION * ****** G08050 EQU $ COPY =0,A  SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY STATSV,A COPY A,S INITIALIZE STATUS COPY =G08056,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,:21 STORE AT INTERRUPT LOCATION COPY =STAKLP2,A STACK LIMIT COPY A,L INITIALIZE L REGISTER COPY =STAK1P2,A STACK POINTER COPY A,K INITIALIZE K REGISTER COPY STATSV,A INITIALIZE STACK COPY A,STAK1P2+1 COPY =0,A COPY A,STAK1P2+2 * SIN 2 SELP A,DA15;FC3 SET IUR STIMULUS NOP POP SHOULD BE NON-INTERRUPTABLE COPY =1,A COPY SHOULD EXECUTE BEFORE INT?e811109174418811109174418811109174523e@811109174418811109174418811109174521" e811109174418811109174418811109174418e811109174418811109174418811109174418811109174418811109174418811109174418e8109290859232581092908592625811109174736edK8111091744127581110917450850811109175246exb 8011251430567580112514312725811109175503d e# =)8106301217490081063012175450811109180718$ % & ' ( ) * + . PAT495 NUCPAT495P1 ASMPAT495P2 ASM PAT495P4 ASM, ECKED * FOR CORRECT SETTING OF OV. CSM, CSN, & CSK * ARE CHECKED FOR ALL COMPARE OUTCOMES. * **************************************************** TITL ******** * * ---C02000--- * * NEG Q,A * ***** C02000 EQU $ COPY PT5555,Q  COPY =0,A NEG Q,A CSK A,=:AAAB NOP ERROR: NEG,FAILED,--,A,SHOULD,=,:AAAB COPY =:8000,X NEG X,Q JT OV,$+2 ERROR: NEG,FAILED,--,DID,NOT,SET,OV CSK Q,PT8000 NOP ERROR: NEG,FAILED,--,Q,SHOULD,=,:8000 TITL INSTRUCTION DIAGNOSTIC -- SEC. C1-1 ***** * * ---- C11000 * * ADD Y,X * ***** C11000 EQU $ COPY PT6666,Y COPY =:0FFF,X ADD Y,X COPY X,A CSK A,=:7665 NOP ERROR: ADD,FAILED,--,X,SHOULD,=,:7665 *** * ADD L,Y POS. OVERFLOW *** COPY PT5555,Y  COPY PT5555,A COPY A,L ADD L,Y JT OV,$+2 ERROR: ADD,FAILED,--,DID,NOT,SET,OV  COPY Y,A CSK A,PTAAAA NOP ERROR: ADD,FAILED,--,Y,SHOULD,=,:AAAA *** * ADD K,L NEG. OVERFLOW *** COPY PTAAAA,A COPY A,K COPY A,L ADD K,L JT OV,$+2 ERROR: ADD,FAILED,--,DID,NOT,SET,OV COPY L,A CSK A,=:5554 NOP ERROR: ADD,FAILED,--,L,SHOULD,=,:5554 TITL INSTRUCTION DIAGNOSTIC -- SEC. C1-2 ***** * * ---C12000--- * * SUB S,K * ******** C12000 EQU $ COPY =:FF,A COPY A,K  COPY =:43,A COPY A,S SUB S,K COPY STATSV,A COPY A,S COPY K,A CSK A,=:BC NOP  ERROR: SUB,FAILED,--,K,SHOULD,=,:BC PATCHX C02000 TITL INSTRUCTION DIAGNOSTIC -- SEC. C1-3 ***** * * ---- C13000 ---- * * AND A,Q * ***** C13000 EQU $ COPY PTF0F0,A COPY PT00FF,Q AND A,Q CSK  Q,=:F0 NOP ERROR: AND,FAILED,--,Q,SHOULD,=,:F0 * ***** * * ---- C14000 ---- * * XOR Q,X * ***** C14000 EQU $ COPY PTAAAA,Q COPY PT6666,X XOR Q,X COPY X,A CSK A,=:CCCC NOP  ERROR: XOR,FAILED,--,X,SHOULD,=,:CCCC TITL INSTRUCTION DIAGNOSTIC -- SEC. C1-5 ***** * * ---- C15000 ---- * * OR X,Y * ***** C15000 EQU $ COPY PT6666,X COPY PT5555,Y OR X,Y COPY Y,A CSK  A,=:7777 NOP ERROR: OR,FAILED,--,Y,SHOULD,=,:7777 PATCHX C13000 JMP C21000 LPOOL TITL INSTRUCTION DIAGNOSTIC -- SEC. C2-1 ***** * * ---C21000--- * * CSM Y,L * ******* C21000 EQU $ COPY PTFFFF,Y COPY =0,A COPY A,L CSM Y,L GREATER ERROR: CSM,FAILED,--,Y>L JMP $+2 ERROR: CSM,FAILED,--,Y>L *** * CSM L,K ***  COPY PT6666,A COPY A,K CSM L,K LESS JMP $+3 NOP ERROR: CSM,FAILED,--,LY JMP $+2 ERROR: CSK,FAILED,--,X>Y *** * CSK X,K *** COPY PT6666,A COPY A,K CSK X,K LESS JMP $+3 NOP ERROR: CSK,FAILED,--,XMEM * ****** H23000 EQU $ COPY PT5555,A COPY A,TEMP01 COPY PTFFFF,A CSME A,TEMP01 ERROR: CSME,FAILED,--,A,>,TEMP01,(MAG) JMP $+2 ERROR: CSME,FAILED,--,A,>,TEMP01,(MAG) * * CSME X,MEM X MPSAV NOP HLT DIV FAILED -- A SHOULD = 1 JMP $+2 H290H5 EQU $ HLT DIV FAILED -- SHOULD NOT TRAP COPY =H290H6,A SET TRAP ROUTINE LOCATION COPY A,3(X) COPY =0,A SET DIVIDEND TO 0 COPY A,Q DIV PT5555,AQ DIVIDE ZERO BY A +VE NO. JEQ A,$+2 HLT DIV FAILED -- A SHOULD BE 0 JEQ Q,$+2 HLT DIV FAILED -- Q SHOULD BE 0 JMP $+2 H290H6 EQU $ HLT DIV FAILED -- SHOULD NOT TAKE TRAP  COPY =H290H7,A SET TRAP ROUTINE LOCATION COPY A,3(X) COPY =:FFFB,A COPY A,TEMPSAV STORE EXPECTED RESULT COPY =0,A COPY =5,Q SET DIVIDEND TO FIVE DIV PTFFFF,AQ DIVIDE 5 BY -1 JEQ A,$+2 HLT DIV FAILED A SHOULD BE 0 CSK Q,TEMPSAV NOP HLT DIV FAILED Q SHOULD =:FFFB JMP $+2 H290H7 EQU $ HLT DIV FAILED SHOULD NOT TAKE TRAP JMP H290H4 ORG $-1 NOP * H291H0 EQU $ COPY =:A8,X ARITHMETIC ERROR TRAP COPY =AET1,A ADDRESS OF UNEXPECTED ARITHMETIC ERROR TRAP COPY A,3(X) STORE IN 4TH WORD OF TRAP COPY PCOUNT,A CSK A,=:5D NOP ERROR: SOME,OF,TESTS,NOT,EXECUTED JMP H290J0 TEMPSAV WORD 0 LPOOL TITL INSTRUCTION DIAGNOSTIC -- SEC. I H290J0 EQU $ ************************************************** * * ---------- SECTION I ---------- * * TESTING OF THE FOLLOWING INSTRUCTIONS * * JSK MEM  I01000 * RSK MEM I11000 * PUSH VAL I21000 * POP  I22000 * ************************************************** * * TEST STRUCTURE: * * ALL ASPECTS OF OPERATION OF THE INSTRUCTIONS * ARE TESTED. TRAP OPERATION IS COMPLETELY * TESTED FOR JSK AND PUSH. EFFECT ON S IS * CHECKED ON PUSH AND POP. EFFECT ON ALL * REGISTERS IS CHECKED ON POP. * **************************************************  TITL INSTRUCTION DIAGNOSTIC -- SEC. I0-1 ****** * * ---- I01000 ---- * * JSK MEM * ****** I01000 EQU $ COPY =:9C,X STACK EXCEPTION TRAP ADDRESS COPY =I01003,A TRAP SERVICE ROUTINE ADDRESS COPY A,3(X) STORE IN 4TH WORD OF TRAP COPY =0,A COPY A,STAK1 CLEAR STACK CELLS USED COPY A,STAK2 COPY =STAKL,A INITIALIZE LREG COPY A,L COPY =STAKK,A INITIALIZE KREG COPY A,K JSK I01002 I01001 EQU $ ERROR: JSK,FAILED,--,DID,NOT,JUMP JMP $+2 I01003 EQU $ TRAP SERVICE ROUTINE ERROR: JSK,FAILED,--,SHOULD,NOT,TAKE,TRAP I01002 COPY =STAK1,A CSK A,K NOP ERROR: JSK,FAILED,--,K,WAS,NOT,DECREMENTED COPY STAK1,A CSK A,=I01001 NOP ERROR: JSK,FAILED,--,DID,NOT,STORE,P+1,IN,STAK1 TITL * * JSK MEM WITH FORCED STACK OVERFLOW TRAP * I01010 EQU $ COPY =I01014,A TRAP SERVICE ROUTINE ADDRESS COPY A,3(X) I01011 JSK I01013 I01012 EQU $ ERROR: JSK,FAILED,--,DID,NOT,TAKE,TRAP I01013 EQU $ ERROR: JSK,FAILED,--,DID,NOT,TAKE,TRAP I01014 EQU $ TRAP SERVICE ROUTINE COPY 0(X),A  1ST WORD OF TRAP CSK A,=I01013 NOP ERROR: :9C,SHOULD,BE,JSK,JUMP,ADD COPY 1(X),A CSK A,I01011 NOP ERROR: :9D,SHOULD,BE,JSK,INSTRUCTION COPY =STAK2,A CSK A,K  NOP ERROR: JSK,FAILED,--,K,WAS,NOT,DECREMENTED COPY STAK2,A CSK A,=I01012 NOP ERROR:?  JSK,FAILED,--,DID,NOT,STORE,P+1,IN,STAK2 * * JSK CROSS 32K BOUNDARY WITH STACK AT UPPER 32K MEM. * I01020 EQU $ COPY =:88,X MEMORY EXXCEPTION TRAP LOCATION COPY =I01024,A COPY A,3(X) STORE SERVICE ROUTINE ADDR. SBIT 6,S TURN ON XA BIT COPY A,*RESTAK+1 WRITE SOMETHING IN UPPER 32K COPY =:9C,X STACK EXCEPTION TRAP ADDRESS COPY =I01023,A TRAP SERVICE ROUTINE ADDR. COPY A,3(X) STORE IN 4TH WORD OF TRAP COPY STACKLR,A INITIALIZE L REGISTER COPY A,L COPY STACKKR,A INITIALIZE K REGISTER COPY A,K  COPY =:9F80,A STORE JMP *$+1 FOR JSK RETURN COPY A,*RESTAK COPY =I01022,A STORE JSK RETURN ADDRESS COPY A,*RESTAK+1 COPY S,A COPY A,SAVSTA SAVE STATUS WORD JSK *RESTAK JUMP ACROSS 32K BOUNDARY I01021 EQU $ HLT JSK FAILED -- DID NOT JUMP RBIT 6,S TURN OFF XA BIT JMP I01024 I01023 EQU $ HLT JSK FAILED -- SHOULD NOT TAKE TRAP RBIT 6,S JMP I01024 I01022 EQU $ RBIT 6,S COPY SAVSTA,A GET STATUS BACK COPY =0,Q CARRY BIT RESET JF CY,$+2 TEST CARRY BIT COPY =1,Q CARRY BIT SET AND =:0001,A MASK OFF UNWANTED BITS XOR Q,A COMPARE CARRY STATUS JEQ A,$+2 HLT JSK FAILED -- CARRY BIT INVERTED I01024 EQU $ RBIT 6,S RESET BIT 6, XA BIT JMP I11000 GOTO DO RSK TEST STACKLR WORD :8000 STACKKR WORD :800F RESTAK WORD :8100 WORD :8101 SAVSTA WORD 0 LPOOL  TITL INSTRUCTION DIAGNOSTIC -- SEC. I1-1 ****** * * ---- I11000 ---- * * RSK * ****** I11000 EQU $ COPY  =I11011,A COPY A,STAK2 LOAD STACK WITH RETURN ADDRESS COPY =STAK2,A STACK CELL 6 COPY A,K LOAD STACK POINTER RSK ERROR: RSK,FAILED,--,DID,NOT,RETURN I11011 COPY =STAK1,A STACK CELL 7 ADD CSK A,K NOP ERROR: RSK,FAILED,--,K,WAS,NOT,INCREMENTED PATCHX I01000 JMP I21000 TITL * * DATA * STAK RES 8,0 STAKL EQU STAK STAK2 EQU STAK+6 STAK1 EQU STAK+7 STAKK EQU STAK+8 JMP3 JMP 0(Y) LPOOL TITL INSTRUCTION DIAGNOSTIC -- SEC. I2-1 ****** * * ---- I21000 ---- * * PUSH VAL * ****** I21000 EQU $ * COPY =STK1,Y START OF NEXT 6 WORD BLOCK COPY =0,A COPY A,0(Y) CLEAR STACK COPY A,1(Y) COPY A,2(Y) COPY A,3(Y)  COPY A,4(Y) COPY A,5(Y) * COPY =STKK,A INITIALIZE STACK POINTER COPY A,K COPY =STKL,A INITIALIZE STACK POINTER COPY A,L COPY STATSV,A INITIALIZE S COPY A,S COPY PT55AA,A INITIALIZE A COPY PTAA55,Q INITIALIZE Q COPY =I21001,Y TRAP SERVICE ROUTINE ADDRESS COPY Y,3(X) PUSH  :FE23 COPY =:0113,A CSK A,S NOP ERROR: PUSH,FAILED,--,DID,NOT,LOAD,CORRECT,S COPY =0,A COPY A,S COPY =STK1,Y COPY 0(Y),A GET 'L' FROM STACK CSK A,=STKL COMPARE WITH CORRECT L NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,L COPY 1(Y),A GET 'S' FROM STACK CSK A,STATSV COMPARE WITH CORRECT S NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,S COPY 2(Y),A GET 'A' FROM STACK CSK A,PT55AA COMPARE WITH CORRECT A NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,A COPY 3(Y),A GET 'Q' FROM STACK CSK A,PTAA55 NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,Q @  COPY 4(Y),A GET 'X' FROM STACK CSK A,=:9C NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,X  COPY 5(Y),A GET 'Y' FROM STACK CSK A,=I21001 NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,Y COPY K,A CSK A,=STK1 NOP ERROR: PUSH,FAILED,--,KREG,SHOULD,=,STK1,ADDR JMP $+2 I21001 EQU $ TRAP SERVICE ROUTINE ERROR: PUSH,FAILED,--,SHOULD,NOT,TAKE,TRAP PATCHX I21000 TITL * * PUSH VAL WITH FORCED STACK OVERFLOW TRAP * I21010 EQU $ COPY =STK2,Y START OF NEXT 6 WORD BLOCK COPY =0,A COPY A,0(Y) CLEAR STACK COPY A,1(Y) COPY  A,2(Y) COPY A,3(Y) COPY A,4(Y) COPY A,5(Y) * COPY =STK1,A INITIALIZE STACK POINTER  COPY A,K COPY STATSV,A INITIALIZE S COPY A,S RBIT 4,S RBIT 8,S COPY PT55AA,A INITIALIZE A COPY PTAA55,Q INITIALIZE Q COPY =I21013,Y TRAP SERVICE ROUTINE ADDRESS COPY Y,3(X) * I21011 PUSH :FF71 SHOULD TAKE TRAP AND SET XA AND CY I21012 EQU $ ERROR: PUSH,FAILED,--,DID,NOT,TAKE,TRAP JMP I21013 TITL * * DATA * STK RES 13,0 STKL EQU STK STK2 EQU STK+1 STK1 EQU STK+7 STKK EQU STK+13 *  LPOOL TITL I21013 EQU $ TRAP SERVICE ROUTINE COPY =:0041,A CSK A,S NOP ERROR: PUSH,FAILED,--,DID,NOT,LOAD,CORRECT,S COPY =0,A COPY A,S COPY =STK2,Y COPY 0(Y),A GET 'L' FROM STACK CSK A,=STKL NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,L COPY STATSV,A  AND =:40,A FORM EXPECTED S CSK A,1(Y) COMPARE WITH 'S' FROM STACK NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,S COPY 2(Y),A GET 'A' FROM STACK CSK A,PT55AA NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,A COPY 3(Y),A GET 'Q' FROM STACK CSK A,PTAA55 NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,Q COPY 4(Y),A GET 'X' FROM STACK CSK A,=:9C NOP ERROR: PUSH,FAILED,--,DID,NOT,STORE,CORRECT,X COPY 5(Y),A GET 'Y' FROM STACK CSK A,=I21013 NOP ERROR: PUSH,FAILED,--,DID,NOT.STORE,CORRECT,Y COPY K,A CSK A,=STK2 NOP ERROR: PUSH,FAILED,--,DID,NOT,DECREMENT,K COPY 0(X),A 1ST WORD OF TRAP CSK A,=I21012 NOP ERROR: PUSH,FAILED,--,SHOULD,BE,ADDR.,FOLLOWING,PUSH COPY 1(X),A 2ND WORD OF TRAP CSK A,I21011 NOP ERROR: PUSH,FAILED,--,SHOULD,BE,PUSH,INSTR. PATCHX I21010 COPY =USET1,A STACK EXCEPTION TRAP ROUTINE ADDRESS  COPY A,3(X) STORE IN 4TH WORD OF TRAP TITL INSTRUCTION DIAGNOSTIC -- SEC. I2-2 ****** * * ---- I22000 ---- * * POP * ****** I22000 EQU $ COPY =STK2,A INITIALIZE REGISTERS COPY A,K COPY =0,Q COPY =0,X COPY =0,Y COPY Y,L COPY =:0003,A COPY A,S SBIT 4,S SBIT 8,S *  POP SIN 8 CSK A,PT55AA NOP ERROR: POP,FAILED,--,A,SHOULD,=,:55AA COPY STATSV,A  CSK A,S NOP ERROR: POP,FAILED,--,S,SHOULD,=,'STATSV' COPY A,S CSK Q,PTAA55 NOP A  ERROR: POP,FAILED,--,Q,SHOULD,=,:AA55 CSK X,=:9C NOP ERROR: POP,FAILED,--,X,SHOULD,=,:009C COPY Y,A CSK A,=I21013 NOP ERROR: POP,FAILED,--,Y,SHOULD,=,STAK1,ADDR. COPY L,A CSK A,=STKL NOP ERROR: POP,FAILED,--,L,SHOULD,=,STAK,ADDR COPY K,A CSK A,=STK1 NOP ERROR: POP,FAILED,--,K,WAS,NOT,INCREMENTED PATCHX I22000 JMP M01000 LPOOL TITL INSTRUCTION DIAGNOSTIC -- SEC. M0-1 **************************************************** * * -------SECTION M-------- * * TESTING OF THE FOLLOWING INSTRUCTIONS: * * STRAP 4REG,VAL  M01000 * UTRAP 4REG,VAL M01010 * ************************************************** * * TEST STRUCTURE: * * TRAP OPERATION IS COMPLETELY TESTED ON * EACH INSTRUCTION. * ************************************************** TITL ****** * * ---- M01000 ---- * * STRAP 4REG,VAL * ****** M01000 EQU $ COPY =:A4,X STRAP LOCATION COPY =M01003,A ADDRESS OF TEMPORARY TRAP ROUTINE COPY A,3(X) STORE INTO TRAP VECTOR COPY JMP1,A GET JUM *$+1 INSTR. COPY A,2(X) PUT INTO TRAP VECTOR COPY =0,A CLEAR TRAP LOCATION COPY A,0(X) COPY A,1(X) M01001 STRAP A,:A5 M01002 EQU $ ERROR: STRAP,FAILED,--,DID,NOT,TAKE,TRAP M01003 EQU $ TRAP SERVICE ROUTINE COPY 0(X),A  1ST WORD OF TRAP (:A4) CSK A,=M01002 NOP ERROR: STRAP,FAILED,--,SHOULD,BE,M01002,ADDR COPY 1(X),A 2ND WORD OF TRAP (:A5) CSK A,M01001 NOP ERROR: STRAP,FAILED,--,SHOULD,BE,STRAP,INSTR. COPY =:5C35,A GET SCNTX INSTR. CODE COPY A,2(X) RESTORE TRAP COPY =SUTRAP,A GET TRAP ROUTINE ADDR. COPY A,3(X) TITL ****** * * ---- M01010 ---- * * UTRAP 4REG,VAL * ****** M01010 EQU $ COPY =:A0,X UTRAP LOCATION COPY =M01013,A GET ADDRESS OF TEMPORARY TRAP ROUTINE COPY A,3(X) STORE INTO TRAP VECTOR COPY JMP1,A COPY A,2(X) COPY =0,A CLEAR TRAP LOCATION COPY A,0(X) COPY A,1(X) M01011 UTRAP Q,:66 M01012 EQU $ ERROR: UTRAP,FAILED,--,DID,NOT,TAKE,TRAP M01013 EQU $ TRAP SERVICE ROUTINE COPY 0(X),A 1ST WORD OF TRAP (:A0) CSK A,=M01012 NOP ERROR: UTRAP,FAILED,--,SHOULD,BE,M01012,ADDR COPY 1(X),A 2ND WORD OF TRAP (:A1) CSK A,M01011 NOP ERROR: UTRAP,FAILED,--,SHOULD,BE,UTRAP,INSTR. COPY =:5C35,A GET SCNTX INSTR. COPY A,2(X) RESTORE TRAP COPY =SUTRAP,A COPY A,3(X) PATCHX M01000 TITL COPY PCOUNT,A CSK A,=:62 NOP ERROR: SOME,OF,TESTS,NOT,EXECUTED IMS IDPCNT COPY =32,A CSK A,IDPCNT JMP  $+2 JMP *M01015 JUMP TO BEGINNING OF IDP JMP *$+1 WORD PART2ST * M01015 WORD A02002 LPOOL RES $;:1F-$&:1F+1,0 PART2ST SET $ SAVE END PAT495 AP (:A1) CSK A,M01011 NOP ERROR: UTRAP,FAILED,--,SHOULD,BE,UTRAP,INSTR. COPY =:5C35,A GET SCNTX INSTR. COPY A,2(X) RESTORE TRAP COPY =SUTRAP,A COPY A,3(X) PATCHX M01000 TITL COPY PCOUNT,A CSK A,=:62 NOP ERROR: SOME,OF,TESTS,NOT,EXECUTED IMS IDPCNT COPY =32,A CSK A,IDPCNT JMP  $+2 JMP *M01015 JUMP TO BEGINNING OF IDP JMP *$+1 WORD PART2ST * M01015 WORD A02002 LPB ERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S DISABE INTERRUPTS ERROR: INTERRUPT,DID,NOT,OCCUR JMP G08059 TITL G08056 ENT INTERRUPT SERVICE ROUTINE JNE A,$+2 ERROR: POP,WAS,INTERRUPTED * G08059 JMP G08050 PATCH FOR LOOPING ORG $-1  NOP OVERLAY WITH NOP JMP G08060 * LPOOL TITL ****** * * SBIT 8,S AS NON-INTERRUPTABLE INSTRUCTION * ****** G08060 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY A,S INITIALIZE STATUS COPY =G08066,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,:21 STORE AT INTERRUPT LOCATION COPY =0,A SELP A,DA15;FC3 SET IUR STIMULUS NOP SBIT 8,S SHOULD BE NON-INTERRUPTABLE COPY =1,A COPY SHOULD EXECUTE BEFORE INTERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S DISABLE INTERRUPTS ERROR: INTERRUPT,DID,NOT,OCCUR JMP G08069 ERROR EXIT G08066 ENT INTERRUPT SERVICE ROUTINE JNE A,$+2 ERROR: SBIT,IN,S,IS,INTERRUPTABLE G08069 JMP G08060 PATCH FOR LOOPING ORG $-1  NOP OVERLAY WITH NOP TITL ****** * * CBIT 8,S AS NON-INTERRUPTABLE INSTRUCTION * ****** G08070 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY A,S INITIALIZE STATUS COPY =G08076,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,:21 STORE AT INTERRUPT LOCATION COPY =0,A SELP A,DA15;FC3 SET IUR STIMULUS NOP CBIT 8,S SHOULD BE NON-INTERRUPTABLE COPY =1,A COPY SHOULD EXECUTE BEFORE INTERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S ERROR: INTERRUPT DID,NOT,OCCUR JMP G08079 G08076 ENT INTERRUPT SERVICE ROUTINE JNE A,$+2 ERROR: CBIT,IN,S,IS,INTERRUPTABLE G08079 JMP G08070 PATCH FOR LOOPING ORG $-1 NOP TITL ****** * * COPY A,S AS NON-INTERRUPTABLE INSTRUCTION * ****** G08080 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY A,S INITIALIZE STATUS COPY =G08086,A INTERRUPT SERVICE LOCATION COPY A,:21 STORE AT INTERRUPT LOCATION COPY =0,A SELP A,DA15;FC3 SET IUR STIMULUS NOP COPY STATSV,A COPY A,S SHOULD BE NON-INTERRUPTABLE COPY =0,A COPY SHOULD EXECUTE BEFORE INTERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S DISABLE INTERRUPTS  ERROR: INTERRUPT,DID,NOT,OCCUR JMP G08089 ERROR EXIT G08086 ENT INTERRUPT SERVICE ROUTINE JEQ A,$+2 ERROR: COPY,TO,S,IS,INTERRUPTABLE G08089 JMP G08080 PATCH FOR LOOPING ORG $-1 NOP  OVERLAY WITH NOP TITL ****** * * XNX 4REG AS NON-INTERRUPTABLE INSTRUCTION * ****** G08090 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY A,S INITIALIZE STATUS COPY =G08096,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,:21 COPY =0,A SELP A,DA15;FC3 SET IUR STIMULUS SBIT 8,S ENABLE INTERRUPTS XNX A JST G08094 SHOULD BE NON-INTERRUPTABLE RBIT 8,S ERROR: JSC T,FAILED,--,DID,NOT,JUMP JMP G08099 ERROR EXIT G08094 ENT COPY =1,A COPY SHOULD EXECUTE BEFORE INTERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S ERROR: INTERRUPT,DID,NOT,OCCUR JMP G08099  ERROR EXIT G08096 ENT INTERRUPT SERVICE ROUTINE JNE A,$+2 ERROR: JST,AFTER,XNX,IS,INTERRUPTABLE G08099 JMP G08090 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP TITL ****** * * UIS  AS NON-INTERRUPTABLE INSTRUCTION * ****** G080A0 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE  COPY A,S INITIALIZE STATUS COPY =G080A6,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,:21 COPY =0,A SELP A,DA15;FC3 SET IUR STIMULUS SBIT 8,S ENABLE INTERRUPTS UIS * SHOULD BE NON-INTERRUPTABLE COPY =1,A COPY SHOULD EXECUTE BEFORE INTERRUPT NOP NOP TO ALLOW INTERRUPT RBIT 8,S ERROR: INTERRUPT,DID,NOT,OCCUR JMP G080A9 ERROR EXIT G080A6 ENT INTERRUPT SERVICE ROUTINE JNE A,$+2 ERROR: UIS,IS,INTERRUPTABLE G080A9 JMP G080A0 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G09000 LPOOL TITL I/O TEST -- DMA TESTING ************************************************************ * * DMA TEST * * IN THIS TEST, THE I/O TEST MODULE SIMULATES * A DMA CONTROLLER. FOUR INDIVIDUAL TESTS ARE * PERFORMED: * (1) A READ TEST WITH A 1 WORD TRANSFER * (2) A WRITE TEST WITH A 1 WORD TRANSFER * (3) A WRITE TEST WITH A 10 WORD TRANSFER * (3) A WRITE TEST WITH A 10 WORD TRANSFER * AND SIMULTANEOUS INTERRUPT SERVICING * AFTER EACH INDIVIDUAL TEST, THREE ERROR INDICATORS *  ARE CHECKED. AN ERROR HALT WILL OCCUR IF : * (1) THE I/O MODULE DID NOT RECIEVE A * STOP ACKNOWLEDGE SIGNAL (SACK) * FROM THE PROCESSOR WITHIN 10 MICRO- * SECONDS OF ISSUING A STOP SIGNAL (STOP). * (2) THE I/O MODULE DID NOT RECIEVE A * MEMORY ACKNOWLEDGE SIGNAL (MACK) FROM * MEMORY WITHIN 10 MICROSECONDS OF ISSUING * A MEMORY START (MST). * (3) THE DMA PRIORITY IN LINE (PRIN) TO THE * TO THE I/O MODULE IS IN THE LOW STATE * * IN ADDITION, ALL WORD TRANSFERED IS CHECKED * ************************************************************ TITL ****** * * DMA WORD READ MODE * ****** G09000 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY STATSV,A COPY A,S INITIALIZE STATUS  COPY =:62,X COPY =G09005,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,1(X) STORE AT DMA INTERRUPT LOCATION COPY =0,A OUT A,DA15;FC0 CLEAR HOLDING REGISTER COPY =5,A OUT A,DA0C;FC2 SET WORD-READ MODE COPY =PT55AA,Y OUT Y,DA0C;FC1 SET DMA MEMORY ADDRESS COPY =0,A SELP A,DA0C;FC2 START DMA TRANSFER NOP NOP ERROR: DMA,FAILURE,--,DID,NOT,GET,END-OF-DMA,INT. JMP G09009 ERROR EXIT TITL * *  INTERRUPT SERVICE ROUTINE * G09005 ENT IN DA0C;FC2,A GET DMA STATUS WORD AND =7,A JEQ A,$+2 ERROR: DMA,FAILED,--,AREG=,DD MA,ERROR,STATUS,AS,FOLLOWS * BIT 0 = NO SACK 10 USEC AFTER STOP * BIT 1 = NO MACK 10 USEC AFTER MST * BIT 2 = NO DMA PRIORITY IN IN DA15;FC0,A INPUT DATA TRANSFERED CSK A,PT55AA COMPARE WITH :AA55 NOP ERROR: DMA,FAILED,--,WRONG,WORD,TRANSFERED * A=ACTUAL WORD; Y=MEMORY,ADDR. * G09009 JMP G09000 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP TITL ****** * * DMA WORD WRITE MODE * * THIS TEST WRITES ONE WORD FROM * THE I/O TEST MODULE TO MEMORY * ****** G09010 EQU $  COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS COPY =G09015,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,1(X) STORE AT DMA INTERRUPT LOCATION (:63) COPY PTAA55,A WORD FOR DMA TRANSFER OUT A,DA15;FC0 STORE IN I/O MODULE HOLDING REGISTER COPY =1,A OUT A,DA0C;FC2 SET DMA WORD-WRITE MODE COPY =DMABUF,Y ADDRESS OF DMA BUFFER OUT Y,DA0C;FC1 SET DMA MEMORY ADDRESS COPY =0,A  COPY A,DMABUF CLEAR DMA BUFFER SELP A,DA0C;FC2 START DMA TRANSFER NOP NOP ERROR: DMA,FAILURE,--,DID,NOT,GET,END-OF-DMA,INT. JMP G09019 ERROR EXIT TITL * * INTERRUPT SERVICE ROUTINE * G09015 ENT  IN DA0C;FC2,A GET DMA STATUS WORD AND =7,A MASK OFF UNWANTED BITS JEQ A,$+2 ERROR: DMA,FAILED,--,A,=,DMA,ERROR,STATUS,AS,FOLLOWS * BIT 0 = NO SACK 10 USEC AFTER STOP *  BIT 1 = NO MACK 10 USEC AFTER MST * BIT 2 = NO DMA PRIORITY IN * COPY  0(Y),A GET WORD TRANSFERED CSK A,PTAA55 COMPARE WITH :AA55 NOP ERROR: DMA,FAILED,--,WRONG,WORD,TRANSFERED * A=ACTUAL WORD; Y=MEMORY ADDRESS * G09019 JMP G09010 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP JMP G09020 * DMABUF RES 10,0 DMA BUFFER * LPOOL TITL ****** * * DMA RIPPLE MODE WRITE * * THIS TEST WRITES 10 WORDS IN A CIRCULATING PATTERN * INTO MEMORY, ONE WORD BETWEEN EACH MICROCYCLE. * ****** G09020 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY =G09025,A INTERRUPT SERVICE ROUTINE ADDRESS COPY A,1(X) STORE AT DMA INTERRUPT LOCATION (:63) SBIT 8,S ENABLE INTERRUPTS COPY =:AA66,A WORD FOR DMA TRANSFER OUT A,DA15;FC0 STORE IN I/O MODULE HOLDING REGISTER COPY =2,A OUT A,DA0C;FC2 SET DMA RIPPLE-WRITE MODE COPY =DMABUF,A ADDRESS OF DMA BUFFER OUT A,DA0C;FC1 SET DMA MEMORY ADDRESS COPY =0,A -- COPY =9,Q -- CLEAR G09023 XNX Q -- DMA COPY A,DMABUF -- BUFFER JNED Q,G09023 -- SELP A,DA0C;FC2 START DMA TRANSFER IJNE A,$ TIME-OUT LOOP  ERROR: DMA,FAILURE,--,DID,NOT,GET,END-OF-DMA,INT. JMP G09029 ERROR EXIT TITL * * INTERRUPT SERVICE ROUTINE * G09025 ENT IN DA0C;FC2,A GET DMA STATUS WORD AND =7,A MASK OFF UNWANTED BITS JEQ A,$+2 E  ERROR: DMA,FAILED,--,DMA,ERROR,STATUS,AS,FOLLOWS * BIT 0 = NO SACK 10 USEC AFTER STOP *  BIT 1 = NO MACK 10 USEC AFTER MST * BIT 2 = NO DMA PRIORITY IN * COPY =:AA66,A COMPARISON WORD COPY =DMABUF,Y INITIALIZE INDEX G09027 EQU $ CSK A,0(Y) CHECK A WORD OF THE BUFFER NOP ERROR: DMA,FAILED,--,WRONG,WORD,TRANSFERED * A = EXPECTED WORD * Y = MEMORY LOCATION ROTATE A,L,15 SIMULATE ROTATE A,R,1 ADD =1,Y INCREMENT INDEX COPY Y,Q CSK Q,=DMABUF+9 END OF BUFFER ? JMP G09027 NO, LOOP JMP $+2 YES, EXIT JMP G09027 NO, LOOP * G09029 JMP G09020 PATCH FOR LOOPING ORG $-1 NOP TITL ******* * * DMA RIPPLE MOD WRITE WITH INTERRUPT * * THIS TEST WRITES 10 WORDS IN A CIRCULATING PATTERN * INTO MEMORY, ONE WORD BETWEEN EACH MICROCYCLE, * WHILE AN INTERRUPT IS BEING SERVICED. * ****** G09030 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE SBIT 8,S ENABLE INTERRUPTS COPY =G09034,A INTERRUPT SERVICE ROUTINE LOCATION  COPY A,:21 STORE AT INTERRUPT LOCATION COPY =G09036,A DMA INTERRUPT SERVICE ROUTINE LOCATION COPY A,1(X) STORE AT DMA INTERRUPT LOCATION (:63) COPY =:00FF,A WORD FOR DMA WORD TRANSFER OUT A,DA15;FC0 STORE IN HOLDING REGISTER COPY =2,A OUT A,DA0C;FC2 SET DMA RIPPLE-WRITE MODE COPY =DMABUF,A ADDRESS OF DMA BUFFER OUT A,DA0C;FC1 SET DMA MEMORY ADDRESS COPY =0,A -- COPY =9,Q -- CLEAR G09033 XNX  Q -- DMA COPY A,DMABUF -- BUFFER JNED Q,G09033 -- SIN 2 SELP A,DA15;FC3 SET IUR STIMULUS SELP A,DA0C;FC2 START DMA TRANSFER COPY A,DMABUF CLEAR FIRST WORD OF DMA BUFFER (AFTER DMA START)  RBIT 8,S ERROR: INTERRUPT,AND/OR,DMA,TRANSFER,DID,NOT,OCCUR JMP G09039 ERROR EXIT TITL * * INTERRUPT SERVICE ROUTINE * G09034 ENT SELP A,DA15;FC0 RESET IUR STIMULUS SBIT 8,S ENABLE INTERRUPTS  IJNE A,$ INCREMENT A AND WAIT FOR END-OF-DMA INTERRUPT ERROR: DMA,TRANSFER,DID,NOT,OCCUR JMP G09039  ERROR EXIT * * DMA INTERRUPT SERVICE ROUTINE * G09036 ENT JNE A,$+2 ERROR: DMA,FAILURE,--,INTERRUPT,WAS,NOT,ALLOWED IN DA0C;FC2,A GET DMA STATUS WORD AND =7,A MASK OFF UNWANTED BITS JEQ A,$+2  ERROR: DMA,FAILURE,--,DMA,ERROR,STATUS,AS,FOLLOWS * BIT 0 = NO SACK 10 USEC AFTER STOP *  BIT 1 = NO MACK 10 USEC AFTER MST * BIT 2= NO DMA PRIORITY IN *  COPY =DMABUF,Y INITIALIZE INDEX COPY =0,A CSK A,0(Y) CHECK 1ST WORD OF BUFFER NOP ERROR: DMA,STARTED,AFTER,INTERRUPT COPY =:00FF,A COMPARISON WORD G09037 EQU $ ROTATE A,L,15 SIMULATE ROTATE A,R,1 ADD =1,Y INCREMENT BUFFER INDEX CSK A,0(Y) CHECK A WORD OF THE BUFFER NOP ERROR: DMA,FAILED,--,WRONG,DAF TA,TRANSFERED * AREG = EXPECTED DATA * YREG = MEMORY LOCATION * COPY Y,Q CSK Q,=DMABUF+9 END OF BUFFER? JMP G09037 NO, LOOP NOP YES, EXIT * G09039 JMP G09030 PATCH FOR LOOPING ORG $-1  NOP OVERLAY WITH NOP JMP G0A000 LPOOL TITL I/O TEST -- POWER-FAIL TESTING ******************************************************* * * POWER FAIL TESTING * * THE PURPOSE OF THIS TEST IS TO VERIFY THAT THE *  POWER FAIL RESTART CAPABILITY WORKS PROPERLY, * I.E. THAT THE POWER UP AND POWER DOWN TRAPS * ARE EXECUTED, AND THAT PROGRAM EXECUTION RESUMES * PROPERLY. ALSO, SIN IS TESTED FOR THE ABILITY TO * INHIBIT THE POWER DOWN TRAP * ******************************************************* TITL ****** * * POWER FAIL TESTING * ****** G0A000 EQU $ COPY =0,A SELP A,DA0B;FC6 INITIALIZE I/O MODULE COPY A,S INITIALIZE STATUS SIN 7 PROTECT AGAINST POWER-FAIL COPY =:80,X COPY SIN1,A SIN 1 INSTRUCTION COPY A,:E(X) STORE AT POWER-DOWN VECTOR (:8E) COPY IMS3,A IMS TEMP01 INSTRUCTION COPY A,:F(X) STORE AT :8F COPY HLT1,A HLT INSTRUCTION COPY A,:10(X) STORE AT :90 COPY =G0A003,A POWER-UP SERVICE LOCATION COPY A,1(X) STORE AT POWER-UP VECTOR (:81) COPY =0,A COPY A,TEMP01 SELP A,DA0A;FC0 EXECUTE A POWER FAIL JMP $ WAIT FOR POWER FAIL * G0A003 EQU $ COPY TEMP01,A JNE A,$+2 ERROR: POWER-DOWN,ROUTINE,DID,NOT,EXECUTE TITL COPY =:80,X COPY =G0A005,A POWER-UP SERVICE LOCATION COPY A,1(X) STORE AT :81  COPY =0,A COPY A,TEMP01 SIN 4 SELP A,DA0A;FC0 EXECUTE A POWER FAIL NOP IMS TEMP01 SHOULD EXECUTE BEFORE POWER FAIL JMP $ WAIT FOR POWER FAIL * G0A005 EQU $ COPY TEMP01,A CSK A,=2 NOP ERROR: SIN,DID,NOT,INHIBIT,POWER,FAIL COPY =:80,X SIN 5 COPY =PUPRTN,A ADDRESS OF POWER-UP ROUTINE COPY A,1(X) STORE AT POWER-UP VECTOR (:81) COPY =:5C35,A SCNTX INSTRUCTION COPY A,:E(X) STORE AT POWER-DOWN VECTOR (:8E) COPY =PDWN,A ADDRESS OF POWER-DOWN ROUTINE COPY A,:F(X) STORE AT :8F * JMP G0A000 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP * COPY =:FFF4,A COPY A,DELAY21 IMS DELAY2 INITIATE 2.5 TO 3.0 SECOND DELAY JMP $-1 IMS DELAY21 JMP $-3 JMP PART3ST * SIN1 SIN 1 IMS3 IMS TEMP01 DELAY2 RES 1,0 DELAY CELL DELAY21 RES 1,:8000 DELAY CELL EXTENSION LPOOL RES $;:1F-$&:1F+1,0 PART3ST SET $ SAVE END N VECTOR (:8E) COPY =PDWN,A ADDRESS OF POWER-DOWN ROUTINE COPY A,:F(X) STORE AT :8F * JMP G0A000 PATCH FOR LOOPING ORG $-1 NOP OVERLAY WITH NOP * COPY =:FFF4,A COPY A,DELAY21 IMS DELAY2 INITIATE 2.5 TO 3.0 SECOND DELAY JMP $-1 IM TITL PAT495P4 NEW INSTRUCTION DIAGNOSTIC 84-93814-14 TITL STACK INSTRUCTION TEST NAM NIDP MACHINE =:20 ORG PART4ST NIDP EQU $ COPY DEMAND,A FETCH TEST SELECTION AND =:40,A TEST BIT 6 JNE A,$+2 IF SET,EXECUTE TEST JMP PART5ST EXIT TEG ST COPY =:6,A NEW INSTRUCTION TEST RUN INDICATOR SELP A,4 OUTPUT TO CONSOLE COPY =0,A COPY A,IDPCNT SET UP LOOP COUNTER PART4A COPY =0,A COPY A,PCOUNT SET UP TEST COUNTER JMP STKP4END STKP4 RES 24,0 DIAGNOSTIC STACK STKP4END EQU  $ COPY =STKP4,A COPY A,L CSKS: STKP4+5,:4683,A,2 CSKS: STKP4,:0003,Q,1 CSKS: STKP4+1,:008F,A,:B CSKS: STKP4+9,:FFFD,Q,1 TITL COPY =STKP4+9,A COPY A,K COPY =-2,Y COPY =2,X ***** LOADS 1(X),Q TREGS: Q,:8F,X,2,Y,-2 TITL COPY A,X ***** STORS A,0(Y) COPY =STKP4,Y COPY 7(Y),Q CSK X,Q NOP ERROR: STORS,DID,NOT,STORE,CORRECTLY LDREG: A,0,X,23,Y,STKP4 COPY A,0(X,Y) JNED X,$-2 LDREG: L,STKP4,K,STKP4END-7 LDREG: A,:FFFF,Q,:FFFF,X,1,Y,2 TITL * * DSTOR: Q,1 TITL * * DLOAD: 1,Q COPY =1,X TITL ***** EXCHS 0(X,Y),A TREGS: A,0,Q,:FFFF,X,1,Y,2 TITL COPY =STKP4END-4,A COPY A,STKP4END-1 ***** IMSS *6 :FFFF+1 ERROR: IMSS,DID,NOT,WORK,CORRECTLY ***** DMSS *4(X,Y) 0-1 ERROR: DMSS,DID,NOT,WORK,CORRECTLY ***** IMSS *4(Y)  0+1 JMP $+2 ERROR: IMSS,SKIPPED,-,SHOULD,NOT,HAVE TMEM: STKP4END-1,STKP4END-4,STKP4END-3,:FFFF,STKP4END-4,1 RBIT 1,S RESET OVERFLOW BIT TITL ***** ADDS *6(X),Q :FFFF+:FFFF  JF OV,$+2 ERROR: OVERFLOW,SHOULD,NOT,BE,SET TREGS: A,STKP4END-4,Q,:FFFE TITL ***** SUBS 3,Q :FFFE-1 TREGS: Q,:FFFD TITL ***** ANDS 2,Q :FFFD&:FFFF TREGS: Q,:FFFD TITL ***** XORS 3,Q :FFFD--1 TREGS: Q,:FFFC TITL ***** ORS  4,A :FFFF++STKP4END-4 TREGS: A,:FFFF * * * * ***** CSMS Q,3 :FFFC,1 ERROR: COMPARE,DID,NOT,WORK,CORRECTLY JMP $+2 ERROR: COMPARE,DID,NOT,WORK,CORRECTLY TITL RBIT 0,S TURN OFF CARRY BIT COPY =:6000,A ***** ADDCS 2,A TREGS: A,:5FFF JT CY,$+2  ERROR: CARRY,BIT,DID,NOT,SET JF OV,$+2 ERROR: OVERFLOW,BIT,SHOULD,NOT,BE,SET TITL  STORS A,2 COPY =:D000,A ***** SUBCS 2,A TREGS: A,:7000 JT CY,$+2 ERROR: CARRY,BIT,SHOULD,NOT,BE,SET JT OV,$+2 ERROR: OVERFLOW,DID,NOT,SET * * PATCH FOR LOOPING * JMP STKP4END ORG $-1 NOP IMS PCOUNT COPY PCOUNT,A CSK A,=1 NOP ERROR: PCOUNT,SHOULD,=1 TITL CONTEXT SWITCH INSTRUCTIONS TEST CNTXT  EQU $ COPY =UTRP,A COPY A,UTRAP1+3 COPY =:0150,A COPY A,S LDSTD: ***** UTRAP A,0 ***** SPACE BREAK UTRAP5 EQU $ CKSTD: TREGS: S,:0150 COPY =SUTRAP,A COPY A,UTRAP1+3 JMP CNTXND TITL UTRP EQU $ WORD :0050 WORD STH KP4+13 JEQ X,STKP4TST TREGS: S,:0050,K,STKP4+13,L,0,X,CONTXT COPYE 0(X),AQ CSK A,=UTRAP5 NOP ERROR: PREG,DID,NOT,SAVE,CORRECTLY CSK Q,=:0 NOP ERROR: LREG,DID,NOT,SAVE,CORRECTLY COPYE 2(X),AQ CSK A,=:0150 NOP ERROR: SREG,DID,NOT,SAVE,CORRECTLY CSK Q,=:FFFF NOP ERROR: AREG,DID,NOT,SAVE,CORRECTLY COPYE 4(X),AQ CSK A,=:F0F0  NOP ERROR: QREG,DID,NOT,SAVE,CORRECTLY CSK Q,=:00FF NOP ERROR: XREG,DID,NOT,SAVE,CORRECTLY COPYE 6(X),AQ CSK A,=:5555 NOP ERROR: YREG,DID,NOT,SAVE,CORRECTLY CSK Q,=:6666 NOP ERROR: KREG,DID,NOT,SAVE,CORRECTLY COPY =STKP4,A COPY A,L UTRAP A,1 UTRAP6 EQU $ LCNTX TITL STKP4TST EQU $ TREGS: S,:0050,K,STKP4+7,L,STKP4,X,0 DLOADS 0,Q CSK A,=UTRAP6 NOP ERROR: PREG,DID,NOT,SAVE,CORRECTLY CSK Q,=:0050 NOP  ERROR: SREG,DID,NOT,SAVE,CORRECTLY DLOADS 2,Q CSK A,=STKP4 NOP ERROR: AREG,DID,NOT,SAVE,CORRECTLY CSK Q,=:6666 NOP ERROR: QREG,DID,NOT,SAVE,CORRECTLY DLOADS 4,Q CSK A,=CONTXT NOP ERROR: XREG,DID,NOT,SAVE,CORRECTLY CSK Q,=:5555 NOP ERROR: YREG,DID,NOT,SAVE,CORRECTLY LCNTX ERROR: LOAD,CONTEXT,DID,NOT,WORK,CORRECTLY JMP CNTXND LPOOL CNTXND EQU  $ * * PATCH FOR LOOPING * JMP CNTXT ORG $-1 NOP IMS PCOUNT COPY PCOUNT,A CSK A,=2 NOP ERROR: PCOUNT,SHOULD,=2  TITL PROCEDURE ENTER AND RETURN TEST PROCCHK EQU $ LDREG: K,STKP4END-1,L,STKP4 PROC: 10 PROC: 1 PROC: 0 GLPOL: DBL EQU 2 LDREG: K,STKP4END-7 * * PATCH FOR LOOPING * JMP PROCCHK  ORG $-1 NOP IMS PCOUNT COPY PCOUNT,A CSK A,=3 NOP ERROR: PCOUNT,SHOULD,=3 TITL DOUBLE PRECISION ARITHMETIC TEST DBLPREC EQU $ CVDP: :F0F0,:7FFF,:0000 TITL CVDP: :0F0F,:8000,:FFFF TITL CVDP: :0000,:FFFF,:FFFF TITL CVDP: :FFFF,:0000,:0000 DPREC ADDS,0,0,DBL,0,0,0,0, DPREC ADDS,0,0,DBL,:FFFF,:FFFF,:FFFF,:FFFF, DPREC ADDS,:FFFF,:FFFF,DBL,:FFFF,:FFFF,:FFFF,:FFFE, DPREC ADDS,1,:FFFF,DBL,:7FFF,0,:8000,:FFFF,OV  DPREC ADDS,0,1,DBL,:FFFF,:FFFF,0,0, DPREC SUBS,0,0,DBL,0,0,0,0, DPREC SUBS,0,0,DBL,0,1,:FFFF,:FFFF,  DPREC SUBS,:8000,0,DBL,0,1,:7FFF,:FFFF,OV DPREC SUBS,:FFFF,:FFFF,DBL,:FFFF,:FFFF,0,0, DPREC SUBS,0,0,DBL,:FFFF,:FFFF,0,1, TITL QUEUE INSTRUCTION TEST * * PATCH FOR LOOPING * JMP DBLPREC ORG $-1 NOP IMS PCOUNT COPY PCOUNT,A  CSK A,=4 NOP ERROR: PCOUNT,SHOULD,=4 JMP QUECHK QUEUE WORD QUEUE QUEUE HEADER WORD QUEUE  AND RES 10 QUEUE QUECHK EQU $ DEQUE: QUEUE CHECK FOR EMPTY QUEUE ENQUE: =QUEUE+2,QUEUE ENQUE: =QUEUE+6,QUEUE GLPOL: DEQUE: QUEUE ENQUE: =QUEUE+4,QUEUE I  DEQUE: QUEUE GLPOL: DEQUE: QUEUE QUEUE SHOULD BE EMPTY ENQUE: =QUEUE+6,QUEUE ENQUE: =QUEUE+10,QUEUE GLPOL: ENQUE: =QUEUE+4,QUEUE ENQUE: =QUEUE+2,QUEUE ENQUE: =QUEUE+8,QUEUE  GLPOL: DEQUE: QUEUE DEQUE: QUEUE DEQUE: QUEUE GLPOL: DEQUE: QUEUE DEQUE: QUEUE QUEUE SHOULD BE EMPTY DEQUE: QUEUE CHECK FOR EMPTY QUEUE ENQUE: =QUEUE+2,QUEUE  ENQA: =QUEUE+8,QUEUE GLPOL: ENQA: =QUEUE+4,QUEUE+2 DELQ: QUEUE+4 NEXTQ: QUEUE DELQ: QUEUE+8 GLPOL: ENQA: =QUEUE+6,QUEUE DELQ: QUEUE+2 NEXTQ: QUEUE  GLPOL: DELQ: QUEUE+6 NEXTQ: QUEUE DELQ: QUEUE * * PATCH FOR LOOPING * JMP QUECHK ORG $-1 NOP IMS PCOUNT COPY PCOUNT,A CSK A,=5 NOP ERROR: PCOUNT,SHOULD,=5 JMP BITCHK TITL BIT MANIPULATION INSTRUCTIONS TEST * BITAREA WORD :5555 WORD :AAAA WORD :6666 WORD :9999 LPOOL BITCHK EQU $ XTR: XTR,32,BITAREA,6,A,:19 XTR: XTRS,48,BITAREA,12,Q,:F999 XTR: XTR,13,BITAREA,14,X,:2D55 XTR: XTRS,38,BITAREA,16,Y,:99A6 INSR: :47CF,16,BITAREA,8,A,:5555,:CFAA,:6666,:9999 XTR: XTR,12,BITAREA,16,Q,:5AAA INSR: :1B38,4,BITAREA,16,Q,:51B3,:8AAA,:6666,:9999 XTR: XTR,0,BITAREA,12,X,:555  XTR: XTR,12,BITAREA,12,Y,:5AA XTR: XTR,22,BITAREA,1,A,1 XTR: XTRS,35,BITAREA,1,Q,0 XTR: XTRS,13,BITAREA,1,X,:FFFF XTR: XTR,63,BITAREA,1,Y,1 INSR: :FFFF,43,BITAREA,1,A,:5555,:AAAA,:6676,:9999  XTR: XTR,36,BITAREA,16,Q,:6669 INSR: :7654,51,BITAREA,2,Q,:5555,:AAAA,:6666,:8199 XTR: XTR,22,BITAREA,10,X,:2AA INSR: :FD55,22,BITAREA,10,Q,:5555,:A955,:6666,:9999 XTR: XTR,44,BITAREA,16,X,:6999 INSR: :FFFE,15,BITAREA,1,A,:5554,:AAAA,:6666,:9999 * * PATCH FOR LOOPING * JMP BITCHK ORG $-1 NOP IMS PCOUNT COPY PCOUNT,A CSK A,=6  NOP ERROR: PCOUNT,SHOULD,=6 TITL SINGLE REGISTER PUSH & POP INSTRUCTIONS TEST SRPPCHK EQU $ SPUSH: X SPUSH: Y SPUSH: Q TITL SPOP: Q SPUSH: X SPUSH: Q TITL SPOP: Q  SPOP: X SPOP: Y TITL SPOP: X * * PATCH FOR LOOPING * JMP SRPPCHK ORG $-1 NOP IMS PCOUNT COPY PCOUNT,A CSK A,=7 NOP ERROR: PCOUNT,SHOULD,=7 JMP SWCHK LPOOL TITL SEMAPHORE INSTRUCTIONS TEST SWCHK EQU $ COPY =-2,A COPY A,SWPASS SET UP TO TEST SEMA4 INSTRUCTION 2 TIMES COPY =SEMA4,Y SET SEMA4 ADDRESS POINTER COPY =0,X SET SEMA4 ADDRESS OFFSET TO ZERO * TEST SIGNAL INSTRUCTION SGWTST EQU $ SEMA4GT COPY SEMVAL1,A COPY A,0(Y) INITIALIZE SEMA4 WITH 2 COPY LIMVAL1,A COPY A,1(Y) SET LIMIT VALUE TO -1 SIGNAL SEMA4 DO SIGNAL WITH SEMA4 > LIMIT JMP $+3 SIGNAL WORKS O.K. NOP HLT SIGNAL FAILED - JUMP TO WRONG LOCATION COPY SEMVAL1,A COPY 0(Y),Q CSK A,Q COMPARE SEMA4 VALUE WITH EXPECTED NOP HLT SIGNAL FAILED - SEMA4 VALUE SHOULD NOT CHANGE SEMA4EQ COPY SEMVAL2,A COPY A,0(Y) INITIALIZE SEMA4 WITH VALUE :7FFF COPY LIMVALJ 2,A COPY A,1(Y) SET LIMIT VALUE TO :7FFF SIGNAL SEMA4 DO SIGNAL WITH SEMA4 = LIMIT JMP $+3 SIGNAL WORKS O.K. NOP HLT SIGNAL FAILED - JUMP TO WRONG LOCATION COPY 0(Y),Q CSK A,Q COMAPRE SEMA4 WITH EXPECTED VALUE NOP HLT SIGNAL FAILED - SEMA4 VALUE SHOULD NOT CHANGE SEMA4LT COPY SEMVAL3,A COPY A,0(Y) INITIALIZE SEMA4 VALUE WITH -2 COPY LIMVAL3,A COPY A,1(Y) SET LIMIT VALUE TO -1 SIGNAL SEMA4 DO SIGNAL WITH SEMA4 < LIMIT HLT SIGNAL FAILED - JUMP TO WRONG LOCATION JMP $+2 SIGNAL WORKS O.K. HLT SIGNAL FAILED - JUMP TO WRONG LOCATION COPY SEMVAL3,A ADD =1,A COPY 0(Y),Q CSK A,Q COMPARE SEMA4 WIHTR EXPECTED VALUE NOP HLT SIGNAL FAILED - SEMA4 VALUE SHOULD INCREMENT BY 1 COPY SEMVAL4,A COPY A,0(Y) SET SEMA4 VALUE TO -1 COPY LIMVAL4,A COPY A,1(Y) SET LIMIT VALUE TO 2 SIGNAL SEMA4 DO SIGNAL WITH SEMA4 < LIMIT HLT SIGNAL FAILED - JUMP TO WRONG LOCATION JMP $+2 SIGNAL WORKS O.K. HLT SIGNAL FAILED - JUMP TO WRONG LOCATION COPY SEMVAL4,A ADD =1,A COPY 0(Y),Q CSK A,Q COMPARE SEMA4 VALUE WITH EXPECTED NOP HLT SIGNAL FAILED - SEMA4 VALUE SHOULD INCREMENT BY 1 COPY SEMVAL5,A COPY A,0(Y) SET SEMA4 VALUE TO 3 COPY LIMVAL5,A COPY A,1(Y) SET LIMIT VALUE TO 5 SIGNAL SEMA4 DO SIGNAL WITH SEMA4 < LIMIT NOP HLT SIGNAL FAILED - JUMP TO WRONG LOCATION COPY SEMVAL5,A ADD =1,A COPY 0(Y),Q CSK A,Q COMPARE SEMA4 VALUE WITH EXPECTED NOP HLT SIGNAL FAILED - SEMA4 VALUE SHOULD INCREMENT BY 1 JMP WAITST LPOOL * * TEST WAIT INSTRUCTION * WAITST COPY SEMVAL6,A COPY A,0(Y) SET SEMA4 VALUE TO :8000 WAIT SEMA4 DO WAIT JMP $+3 WAIT WORKED O.K. NOP HLT WAIT FAILED - JUMP TO WRONG LOCATION COPY SEMVAL6,A COPY 0(Y),Q CSK A,Q COMPARE SEMA4 VALUE WITH EXPECTED NOP HLT WAIT FAILED - SEMA4 VALUE SHOULD NOT CHANGE COPY SEMVAL3,A COPY A,0(Y) SET SEMA4 VALUE TO -2 WAIT SEMA4 DO WAIT HLT WAIT FAILED - JUMP TO WRONG LOCATION JMP $+2 WAIT WORKED O.K. HLT WAIT FAILED - JUMP TO WRONG LOCATION COPY SEMVAL3,A SUB =1,A COPY 0(Y),Q CSK A,Q COMPARE SEMA4 VALUE WITH EXPECTED NOP HLT WAIT FAILED - SEMA4 VALUE SHOULD DECREMENT BY 1 COPY SEMVAL7,A COPY A,0(Y) SET SEMA4 VALUE TO 1 WAIT SEMA4 NOP HLT WAIT FAILED - JUMP TO WRONG LOCATION COPY SEMVAL7,A SUB =1,A COPY 0(Y),Q CSK A,Q COMPARE SEMA4 VALUE WITH EXPECTED NOP HLT WAIT FAILED - SEMA4 VALUE SHOULD DECREMENT BY 1 COPY SEMVAL5,A COPY A,0(Y) SET SEMA4 VALUE TO 3 WAIT SEMA4 DO WAIT NOP HLT WAIT FAILED - JUMP TO WRONG LOCATION COPY SEMVAL5,A SUB =1,A COPY 0(Y),Q CSK A,Q NOP HLT WAIT FAILED - SEMA4 VALUE SHOULD DECREMENT BY 1 * * DO SIGNAL & WAIT AGAIN WITH X REG SET TO 2 * IMS SWPASS INCREMENT PASS COUNT JMP $+2 JMP SWEND SEMAPHORE TEST COMPLETED COPY =SEMA4,Y  ADD =2,Y COPY =2,X JMP SGWTST DO TEST AGAIN * SWPASS WORD 0 SEMA4 RES 4,0 SEMVAL1 WORD 2 SEMA4 VALUES SEMVAL2 WORD :7FFF SEMVAL3 WORD -2 SEMVAL4 WORD -1 SEMVAL5 WORD 3 SEMVAL6 WORD :8000 SEMVAL7 WORD 1 LIMVAL1 WORD -1 LIMIT VALUES LIMVAL2 WORD :7FFF LIMVAL3 WORD -1 LIMVAL4 WORD 2 LIMVAL5 WORD 5 * SWEND EQU $ * * PATCH FOR LOOPING * JMP SWCHK ORG $-1 NOP IMS PCOUNT COPY PCOUNT,A CSK A,=8 NOP ERROR: PCOUNT,SHOULD,=8 TITL BLOCK MOVE WORD BLK1 EQU $ BLKMOV 1,0,:8000 BLKMOV :FF,BLK1,BLK1 BLKMOV :10,:1000,:8000 BLKMOV 0,:2000,:D000 * * PATCH FOR LOOPING * JMP BLK1 OK RG $-1 NOP IMS PCOUNT COPY PCOUNT,A CSK A,=9 NOP ERROR: PCOUNT,SHOULD,=9 TITL ERROR CORRECTION CODE INSTRUCTION DIAGNOSTIC JMP STARTECC ECCDATA RES 8,0 STARTECC EQU $ COPY DMAND2,A AND =:0004,A JGT A,$+2 JMP ECCEND L:ECC ECCDATA,:FFFF,:1F L:ECC ECCDATA+7,:F,:1E JMP LECC1 LPOOL LECC1 EQU $ TITL L:ECC ECCDATA+1,:2121,:08 L:ECC ECCDATA+6,:AAAA,:04 GLPOL: TITL L:ECC ECCDATA+2,:4444,:01 L:ECC ECCDATA+5,:CDCD,:10 GLPOL: TITL L:ECC ECCDATA+3,:CABD,:02 L:ECC ECCDATA+4,:0000,:00 GLPOL: TITL S:ECC ECCDATA+5,:F652,:1A,:E652 * HALTS HERE IF MMU CACHE SWITCH IS FORCED ON. * BE SURE CACHE SWITCH IS IN CENTER POSITION. S:ECC ECCDATA+0,:000C,:0E,:0008 GLPOL: TITL S:ECC ECCDATA+2,:0000,:14,:1000 * HALTS HERE IF MMU CACHE SWITCH IS FORCED ON. * BE SURE CACHE SWITCH IS IN CENTER POSITION. S:ECC ECCDATA+7,:1CB7,:00,:1CB6 GLPOL: TITL S:ECC ECCDATA+4,:0560,:0B,:0760  S:ECC ECCDATA+6,:1D42,:05,:3D42 JMP SECC1 LPOOL SECC1 EQU $ TITL S:ECC ECCDATA+1,:8474,:0C,:8674 S:ECC ECCDATA+3,:000F,:10,:0007 GLPOL: TITL G:ECC ECCDATA+0,:FFFF,:1F G:ECC ECCDATA+1,:CABD,:02 GLPOL: TITL G:ECC ECCDATA+2,:AAAA,:04 G:ECC ECCDATA+3,:0000,:00 GLPOL: TITL G:ECC ECCDATA+4,:CDCD,:10 G:ECC ECCDATA+5,:2121,:08 GLPOL: TITL G:ECC ECCDATA+6,:4444,:01 G:ECC ECCDATA+7,:5534,:1F GLPOL: TITL * * PATCH FOR LOOPING * JMP STARTECC ORG $-1 NOP ECCEND EQU $ IMS PCOUNT COPY PCOUNT,A CSK A,=10 NOP ERROR: PCOUNT,SHOULD,=10 TITL K-RELATIVE LOAD AND STORE INSTRUCTIONS TESTS JMP KRELTST KSTK RES 10,0 KRELTST EQU $ COPY =KSTK,A COPY A,K LOAD STACK POINTER STOR:K A,0,KSTK+5 STOR:K Q,3,KSTK+8 GLPOL: TITL STOR:K Y,6,KSTK STOR:K X,9,KSTK+3 GLPOL: TITL STOR:K Y,2,KSTK+2 STOR:K Q,5,KSTK+4 GLPOL: TITL LOAD:K X,3,KSTK+6 LOAD:K Q,4,KSTK+4 GLPOL: TITL LOAD:K A,2,KSTK+9 LOAD:K Y,6,KSTK GLPOL: * * PATCH FOR LOOPING * JMP KRELTST ORG $-1 NOP IMS PCOUNT COPY PCOUNT,A CSK A,=11 NOP ERROR: PCOUNT,SHOULD,-11 * * IMS IDPCNT COPY IDPCNT,A CSK A,=32 JMP PART4A NOP JMP PART5ST LPOOL RES $;:1F-$&:1F+1,0 PART5ST SET $ SAVE END ACK POINTER STOR:K A,0,KSTK+5 STOR:K Q,3,KSTK+8 GLPOL: TITL STOR:K Y,6,KSTK STOR:K X,9,KSTK+3 GLPOL: TITL STOR:K Y,2,KSTK+2 STOR:K Q,5,KSTK+4 GLPOL: TITL LOAD:K X,3,KSTK+6 LOAD:K Q,4,KSTK+4 GLPOL: TIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII