*DECK PDP 
* 
*** PDP  -PDP INTERFACE TEST- 
**  PDP OVERVIEW
* 
* 
* 
*   AUTHOR   -M. POUQUET     FRNFEV 
* 
*   DATE     -83/01/24
* 
*   OVERVIEW -
* 
*         PDP IS A PDP INTERFACE ISOLATION DIAGNOSTIC THAT
*         RUNS UNDER THE M.A.L.E.T. SOFTWARE SUBSYSTEM. 
* 
* 
*         -ASSIGNMENT-
*                     ASSIGNMENT MUST BE MADE WITH ACCESS 
*            LEVEL 10 (OR HIGHER) AND DEVICE CODE 500.
*            EX: A,EST=NO,DC=500,AL=10,CH=2,EQ=3,UN=0 
*            IN THIS EXAMPLE,THE INTERFACE IS NOT DEFINED 
*            IN THE EQUIPMENT STATUS TABLE, IT IS CONNECTED 
*            ON CHANNEL 2 WITH EQUIPMENT NUMBER 3.
* 
* 
* 
*         -CALL-
*                   PDP IS COMPOSED OF 7 SECTIONS (MODULES) 
*            PDP01 THROUGH PDP07
*            RUN,PDP(02) WILL RUN ONLY MODULE PDP02 
*            RUN,PDP(03,02) WILL RUN PDP03 THEN PDP02 
*            RUN,PDP WILL RUN ALL MODULES IN SEQUENCE 
*            RUN,PDP02 WILL PDP02 THRU PDP07
* 
* 
* 
*         -SWITCH OPTIONS-
*                   SWITCHES REFERENCED IN THIS TEST: 
*            RT     REPEAT TEST 
*            RC     REPEAT CONDITION
*            RM     REPEAT MODULE 
*            SE     STOP ON ERROR 
*            SL     SCOPING LOOP  (RC AND NOT SE) 
* 
*            BY DEFAULT, RC SWITCH IS OFF 
*                        RT SWITCH IS OFF 
*                        SE SWITCH IS ON
*                        RM SWITCH IS OFF 
* 
*            TO SET A SWITCH, USE SETSW DIRECTIVE 
*            EX:SETSW,RT
*               RUN,PDP(02,04,05)  WILL REPEAT INDEFINITELY 
*            MODULES 02,04 AND 05 TILL AN ERROR IS DETECTED.
*            TO CLEAR A SWITCH, USE CLRSW DIRECTIVE.
*            EX:CLRSW,SE
* 
*            WHEN AN ERROR IS DETECTED,THE MODULE IS STOPPED
*            AND THE USER CAN SET THE REPEAT CONDITION
*            SWITCH (SETSW,RC), CLEAR THE STOP ERROR SWITCH 
*            (CLRSW,SE) AND THEN DO A GO COMMAND (G), 
*            ENTERING IN THIS WAY IN THE SCOPING LOOP 
*            SITUATION. DURING SCOPING LOOP SITUATION, NO 
*            MESSAGES ARE SENT TO THE OUTPUT FILE.
* 
* 
*         -CAUTIONS-
*                    MODULES 05,06 AND 07 ISSUE REQUESTS
*            TO THE PDP DIRECT MEMORY ACCESS WITH WRITE 
*            AND READ OPERATIONS,THUS DESTROYING THE
*            CONTENTS OF THE PDP MEMORY.
*         BE SURE THAT THE HALT SWITCH IS OFF AT THE PDP
*         COMPUTER WHEN RUNNING THOSE MODULES. IF NOT, THE
*         DMA CANNOT BE ACCESSED. 
* 
*            A PARITY ERROR DETECTED DURING AN OUTPUT 
*            OPERATION WILL DISCONNECT THE CHANNEL. IT MAY
*            BE INTERESTING SOMETIMES TO RUN THE TEST WITH
*            THE PARITY SWITCH IN THE OFF POSITION TO SEE 
*            DIFFERENT ERROR MESSAGES.
* 
* 
* 
*         -HARDWARE FUNCTIONS AND STATUS- 
*            FUNCTION CODES:  
*               001  INITIATE READ WITH ADDRESS INCREMENT 
*               011  INITIATE READ WITH ADDRESS DECREMENT 
*               021  INITIATE READ WITH ADDRESS CONSTANT
*               002  INITIATE WRITE WITH ADDRESS INCREMENT
*               012  INITIATE WRITE WITH ADDRESS DECREMENT
*               022  INITIATE WRITE WITH ADDRESS CONSTANT 
*               043  INITIATE INTERRUPT LEVEL 4 
*               053  INITIATE INTERRUPT LEVEL 5 
*               063  INITIATE INTERRUPT LEVEL 6 
*               073  INITIATE INTERRUPT LEVEL 7 
*               034  ACTIVATE BOOTSTRAP AND AC LOW
*               005  STATUS REQUEST 
*               015  DMA ADDRESS REQUEST
*               006  CLEAR LOOPBACK TEST MODE 
*               016  SET LOOPBACK TEST MODE 
*               007  INITIATE LOAD ADDRESS
* 
*            STATUS BITS (WORD INPUTTED AFTER FUNCTION 005) 
*               BIT 0:  UNIBUS TIMEOUT
*               BIT 1:  CHANNEL PARITY ERROR
*               BIT 2:  INTERRUPT PENDING 
* 
* 
* 
* 
* 
* 
* 
*** PDP MODULES 
**
* 
* 
* 
*            PDP IS COMPOSED OF 7 MODULES WHICH CAN RUN 
*            INDEPENDENTLY IN ANY SEQUENCE. 
* 
*         PDP01 - CHANNEL INTERFACE TEST
*         PDP02 - ASSEMBLY/DISASSEMBLY DATA CHECK 
*         PDP03 - ADDRESS REGISTER TEST 
*         PDP04 - ADDRESS INCREMENT/DECREMENT TEST
*         PDP05 - PDP MEMORY WRITE/READ/COMPARE DATA
*         PDP06 - PDP MEMORY FULL ADDRESS TEST
*         PDP07 - BOOTSTRAP/INTERRUPT TEST
* 
*         MODULES 01 THROUGH 04 DO NOT ISSUE ANY REQUEST
*         TO THE PDP COMPUTER. ALL INPUT/OUTPUT TRANSFERS 
*         ARE DONE IN LOOPBACK TEST MODE. 
*         IT IS RECOMMENDED TO RUN THE TEST STARTING WITH 
*         THE LOWER MODULE NUMBERS (01-02-03-04-05-06-07).
*         SPECIALLY MODULE 01 MUST BE RUN FIRST BECAUSE IT
*         USES FULL PROTECTION CHANNEL INSTRUCTIONS.
* 
*         ALL MODULES, EXCEPT PDP06, SUPPORT THE SCOPING
*         LOOP OPTION  (SE OFF AND RC ON).
* 
* 
* 
* 
* 
*** PDP PARAMETERS
**
* 
* 
*         PARAMETER REGISTERS (P0 THRU P9) ARE SET BY THE 
*         USER WITH THE (PARAM) DIRECTIVE. ANY REGISTER NOT 
*         SET WILL DEFAULT TO 0000. 
*         IN THE NORMAL RUN, NO PARAMETERS ARE REQUIRED.
*         HOWEVER, PARAMETERS MAY BE USED TO LOOP ON WANTED 
*         DATA PATTERN AND/OR WORD COUNT AND/OR FUNCTIONS.
*         THE FOLLOWING CROSS REFERENCE TABLE DEFINES 
*         WHICH MODULES OF PDP USE SPECIFIC PARAMETERS: 
* 
*               P0  P1  P2  P3  P4  P5  P6  P7  P8  P9
*              ---------------------------------------- 
*         PDP01 
*         PDP02  X   X
*         PDP03          X   X
*         PDP04 
*         PDP05                  X   X   X
*         PDP06                              X
*         PDP07 
* 
* 
* 
*         P0= PRESET DATA PATTERN FOR MODULE PDP02
* 
*             P0=0000   NO PRESET PATTERN-USE STANDARD AND
*                       RANDOM PATTERNS.
*             P0=XXXX   XXXX IS A 12 BIT VALUE WHICH WILL 
*                       FILL THE OUTPUT BUFFER. 
* 
* 
*         P1= PRESET OUTPUT WORD COUNT FOR MODULE PDP02 
* 
*             P1=0000   NO PRESET WORD COUNT, USE AN
*                       INCREMENTING WORD COUNT (02,03..60) 
*             P1=00XX   XX IS A 6 BIT VALUE WHICH WILL BE 
*                       USED AS THE OUTPUT WORD COUNT.
*                       XX IS ACCEPTED IF IT IS LESS THAN 
*                       61 (OCTAL) AND IF THE RIGHTMOST 2 
*                       BITS (BITS 1 AND 0) ARE DIFFERENT 
*                       OF 01.  (SEE PDP02 OVERVIEW)
*                       EX:P1=0033 IS ACCEPTED
*                          P1=0035 IS REJECTED
* 
* 
*         P2-P3= PRESET ADDRESS FOR MODULE PDP03
* 
*            P2=0000 AND P3=0000   NO PRESET ADDRESS, USE 
*                      STANDARD AND RANDOM ADDRESSES
*            P2=XXXX AND P3=XX00   IF XXXXXX IS DIFFERENT 
*                      OF ZERO, USE XXXXXX AS A PRESET
*                      ADDRESS. 
*                      P3 IS NOT ACCEPTED IF ANY OF THE 
*                      LOWER 6 BITS IS A ONE. 
* 
* 
*         P4=PRESET ADDRESS (UPPER 12 BITS) FOR MODULE PDP05
* 
*            P4 IS THE PRESET ADDRESS FOR MODULE PDP05 IF 
*            P5 BIT 11 IS SET. IF NOT, P4 IS MEANINGLESS. 
*         EX:P5=4XXX AND P4=1234    PRESET ADDRESS=123400 
*            P5=4XXX AND P4=0000    PRESET ADDRESS=000000 
* 
* 
*         P5=PRESET ADDRESSING MODE FOR MODULE PDP05
* 
*            P5 IS USED TO SPECIFY WHICH FUNCTIONS AND/OR 
*            ADDRESSES AND/OR DATA ARE TO BE USED IN
*            MODULE PDP05.
* 
*            P5=4XXX  USE P4 AS THE UPPER 12 BITS OF AN 
*               18 BIT PRESET ADDRESS WHOSE LOWER 6 BITS
*               ARE CLEARED.  (SEE P4 PARAMETER)
*            P5=2XXX  USE P6 AS A PRESET DATA PATTERN 
*            P5=XXX3  TEST ONLY ADDRESS CONSTANT MODE 
*               USING OUTPUT FUNCTION 022 AND INPUT FUNCTION
*               021 ONLY. 
*            P5=XXX2  TEST ONLY ADDRESS DECREMENTING MODE 
*               USING OUTPUT FUNCTION 012 AND INPUT FUNCTION
*               011 ONLY. 
*            P5=XXX1  TEST ONLY ADDRESS INCREMENTING MODE 
*               USING OUTPUT FUNCTION 002 AND INPUT FUNCTION
*               001 ONLY. 
*            P5=XXX0  TEST ALL 3 MODES OF ADDRESSING
*               (INCREMENT,DECREMENT,CONSTANT)
* 
*               P5 BITS 3 TO 9 ARE ILLEGAL. 
* 
* 
*         P6=PRESET DATA PATTERN FOR MODULE PDP05 
* 
*            P6 IS A PRESET DATA PATTERN FOR MODULE PDP05 
*            IF P5 BIT 10 IS SET. IF NOT, P6 IS MEANINGLESS 
* 
*            EX:P5=2XXX AND P6=1234 IMPLIES A PRESET OUTPUT 
*               BUFFER FILLED WITH ALL WORDS EQUAL T0 1234
*            EX:P5=2XXX AND P6=0000 IMPLIES A PRESET OUTPUT 
*               BUFFER FILLED WITH ALL WORDS EQUAL TO 0000
* 
* 
*         P7=LWA+2 FOR MODULE PDP06 
* 
*            P7=0000  LWA+2 IS NOT GIVEN - PDP06 MUST FIND
*                     IT BEFORE EXECUTING A FULL ADDRESS
*                     TEST. 
* 
*            P7=XX00  LWA+2 IS XX0000 - PDP06 WILL DO A FULL
*                     ADDRESS TEST SWEEPING PDP MEMORY
*                     LOCATIONS 000000 THROUGH XX0000-2 
* 
*                P7 IS REJECTED IF ANY OF ITS LOWER 6 BITS
*                   ARE SET.
*                P7 IS REJECTED IF IT IS LESS THAN 0200 
*                   BECAUSE THE MINIMUM PDP MEMORY SIZE IS
*                   SUPPOSED TO BE 8K.
* 
* 
* 
* 
* 
* 
*** PDP ERROR MESSAGES
**
*         SEE INDIVIDUAL MODULES FOR ERROR MESSAGES.
* 
* 
*         A SUMMARY OF THE LOW LEVEL I/O ERROR CODES AND
*         MESSAGES IS GIVEN BELOW:  
* 
*         ERROR CODE                   MESSAGE
* 
*         4004         BUFFER OR WC INDEX ERROR 
*         4013         NO FULL ON EQUIPMENT STATUS
*         4020         CHANNEL ACTIVE ON ENTRY
*         4021         CHANNEL INACTIVE AFTER ACTIVATE
*         4022         CHANNEL ACTIVE AFTER DISCONNECT
*         4023         CHANNEL NOT RESERVE
*         4024         NO INACTIVE ON EQUIPMENT FUNCTION
*         4026         NO EMPTY ON LAST BYTE OUTPUT 
*         4027         CHANNEL INACTIVE ON CHAINING 
*         4030         CHANNEL ACTIVE AND EMPTY ON INPUT
*         4031         CHANNEL INACTIVE ON STATUS 
*         4032         CHANNEL ACTIVE AND FULL ON OUTPUT
* 
*           SEE DOCUMENT 60456020 FOR MORE DETAILS
* 
* 
* 
* 
* 
* 
*** PDP ABBREVIATIONS 
**
*         ADDR     ADDRESS
*         AL       ACCESS LEVEL 
*         BA       BEGINNING ADDRESS
*         BOOT     BOOTSTRAP
*         CH       CHANNEL
*         COND     CONDITION
*         CONST    CONSTANT 
*         DC       DEVICE CODE
*         DECR     DECREMENT OR DECREMENTING OR DECREMENTED 
*         DMA      DIRECT MEMORY ACCESS 
*         EA       ERROR ADDRESS
*         EC       ERROR CODE 
*         EQ       EQUIPMENT
*         ERR      ERROR
*         EST      EQUIPMENT STATUS TABLE 
*         FUNC     FUNCTION 
*         HEX      HEXADECIMAL
*         IB       INPUT BUFFER 
*         INCR     INCREMENT OR INCREMENTING OR INCREMENTED 
*         INT      INTERRUPT
*         I/O      INPUT/OUTPUT 
*         LOC      LOCATION 
*         LWA      LAST WORD ADDRESS
*         MAX      MAXIMUM
*         MIN      MINIMUM
*         MRY      MEMORY 
*         MSG      MESSAGE
*         OB       OUTPUT BUFFER
*         OUT      OUTPUT 
*         PATT     PATTERN
*         PARAM    PARAMETER
*         PP       PERIPHERAL PROCESSOR 
*         RAND     RANDOM 
*         RC       REPEAT CONDITION 
*         REQ      REQUEST
*         RM       REPEAT MODULE
*         RT       REPEAT TEST
*         SB       STATUS BUFFER
*         SE       STOP ERROR 
*         SL       SCOPING LOOP 
*         TRANS    TRANSFER 
*         TRANSF   TRANSFER 
*         UN       UNIT 
*         USC      MICROSECOND
*         USEC     MICROSECOND
*         WC       WORD COUNT 
*         WT       WORD TRANSFERRED 
* 
* 
* 
* 
* 
* 
* 
   MODULE PDP01,6000(500)      CHECK CHANNEL INTERFACE
*** CHANNEL INTERFACE TEST
**
*   PDP01 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW
* 
*         THIS MODULE CHECKS CHANNEL CONTROL SIGNALS
*         (FUNCTION,INACTIVE,FULL,EMPTY,ACTIVE) FOR CONSTANT
*         OR INTERMITTENT FAILURES AND ALLOWS LOOPING FOR 
*         SCOPING OR SHOCK TESTING. 
*         PDP01 BASICALLY CHECKS ALMOST ALL THE FUNCTIONS 
*         USED IN THE LATER SECTIONS,USING FULL CHANNEL 
*         PROTECTION INSTRUCTIONS.THUS,IT IS RECOMMENDED
*         TO RUN PDP01 BEFORE ANY OTHER MODULE. 
*         THE LAST PART OF THE MODULE DOES A WRITE 8 WORDS/ 
*         READ 2 WORDS IN LOOPBACK TEST MODE WITHOUT ANY
*         CHECK OF DATA OR STATUS.THIS FEATURE HAS 3
*         PURPOSES: 
*                  -FIRST- TEST FULL AND EMPTY CONTROL
*         SIGNALS FOR SOLID STATE 
*                  -SECOND- ALLOW FAST LOOP SCOPING WITH
*         KNOWN DATA  (OUTPUT BUFFER IS COMPOSED OF 
*         7777,2525,5252,0000,1234,2347,3456,4563)
*                  -THIRD- VERIFY PARTIALLY THE PARITY
*         CHECKER,GENERATOR AND THE PARITY BIT (THE 
*         FIRST 4 BYTES GIVE EVEN PARITY,LAST 4 BYTES 
*         GIVE ODD PARITY)
*                IN CASE OF OUTPUT PARITY ERROR,AN ABORT
*         WILL BE DETECTED BY THE (OUT) FUNCTION DUE TO 
*         AN INACTIVE SIGNAL SENT BY THE INTERFACE.IT CAN 
*         BE INTERESTING SOMETIMES TO RUN THE MODULE WITH 
*         THE PARITY SWITCH IN THE DISABLE POSITION TO SEE
*         IF THE DIAGNOSTIC HAS CHANGED OR EVEN DISAPPEARED.
* 
*         WHEN AN ERROR IS DETECTED,THE MODULE IS STOPPED 
*         AND THE USER CAN SET THE REPEAT CONDITION SWITCH
*         (SETSW,RC),CLEAR THE STOP ERROR SWITCH (CLRSW,SE) 
*         AND THEN DO A GO COMMAND (G),ENTERING IN THIS WAY 
*         IN THE SCOPING LOOP SITUATION.
*         THE SCOPING LOOP SITUATION WILL REPEAT THE MODULE 
*         STARTING AT STEP 1 (SEE DESCRIPTION) AND ENDING 
*         WITH THE DETECTED ERROR.A PASS COUNT AND AN ERROR 
*         COUNT ARE GIVEN AT THE OPERATOR CONSOLE ON THE
*         B DISPLAY.
* 
*         ************************************************
*         *                                              *
*         * PDP01 DOES NOT REQUIRE ANY PARAMETER         *
*         *                                              *
*         ************************************************
* 
*         ************************************************
*         *                                              *
*         * PDP01 DOES NOT ISSUE ANY REQUEST TO THE PDP  *
*         *                                              *
*         ************************************************
* 
* 
* 
* 
*   DESCRIPTION 
* 
*         1.CLEAR LOOPBACK TEST MODE
*         2.ACTIVATE CHANNEL AND OUTPUT DATA TO CHECK THAT
*           THE INTERFACE DOES NOT ACCEPT DATA IF WRITE 
*           MODE HAS NOT BEEN SELECTED
*         3.SET LOOPBACK TEST MODE
*         4.REQUEST STATUS TO CHECK FULL SIGNAL COMING
*           FROM THE INTERFACE
*         5.REQUEST DMA STATUS TO CHECK EMPTY SIGNAL GOING
*           TO THE INTERFACE
*         6.LOAD DMA ADDRESS TO CHECK FULL SIGNAL TO
*           INTERFACE AND EMPTY SIGNAL FROM INTERFACE 
*         7.WRITE 8 WORDS/READ 2 WORDS IN LOOPBACK MODE 
*         8.REPEAT STEPS 1-7 INDEFINITELY IN A SCOPING
*           LOOP SITUATION
*           OTHERWISE,REPEAT STEPS 1-7 FOR 7400B TIMES
*           AND EXIT
* 
* 
* 
* 
*   ERRORS DETECTED 
* 
*         ALL FUNCTIONS AND I/O INSTRUCTIONS ARE ISSUED 
*         WITH FULL CHANNEL PROTECTION.ANY MISSING CONTROL
*         SIGNAL WILL BE REPORTED BY LOW LEVEL PRODUCT
*         OVERLAY MESSAGES AND ERROR CODES. 
* 
* 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         ALL APPLICABLE LOW LEVEL PRODUCT OVERLAY ERROR
*         CODES AND MESSAGES IF THEY OCCUR, PLUS THE
*         FOLLOWING ERROR MESSAGES: 
*         PDP01 - ABORT ON (FUNC) COMMAND 
*         PDP01 - ABORT ON STATUS FUNCTION
*         PDP01 - ABORT ON (ACN) COMMAND
*         PDP01 - ABORT ON (IN CHAIN) COMMAND 
*         PDP01 - ABORT ON (DCN) COMMAND
*         PDP01 - ABORT ON (OUT CHAIN) COMMAND
*         PDP01 - ABORT ON (OUTB CHAIN) COMMAND 
*         PDP01 - ABORT ON (OUT) COMMAND
*         PDP01 - DATA ACCEPTED WHILE WRITE NOT SELECTED
*         PDP01 - NO INACTIVE AFTER STATUS TRANSFER 
*         PDP01 - I/O TRANSFER WORD COUNT ERROR 
* 
* 
* 
* 
* 
* 
  
*   PDP01 - INTERNAL DOCUMENTATION
* 
*   MODULES CALLED
* 
*         NONE
* 
* 
* 
* 
*   REGISTER USAGE
* 
*         B1=PASS COUNT 
*         B2=ERROR COUNT
*         B3=MSG NUMBER TO REPORT 
*         B4=SCOPING LOOP PASS COUNT
* 
* 
* 
* 
 1 FORMAT  PDP01 - CHANNEL INTERFACE TEST 
 2 FORMAT  PDP01 - ERR=*OCT LOOP=*OCT 
 3 FORMAT  PDP01 - ERROR(S) IN MODULE=*DEC
 4 FORMAT  PDP01 - ABORT ON (FUNC) COMMAND
 5 FORMAT  PDP01 - ABORT ON STATUS FUNCTION 
 6 FORMAT  PDP01 - ABORT ON (ACN) COMMAND 
 7 FORMAT  PDP01 - ABORT ON (IN CHAIN) COMMAND
10 FORMAT  PDP01 - ABORT ON (DCN) COMMAND 
11 FORMAT  PDP01 - ABORT ON (OUT CHAIN) COMMAND 
12 FORMAT  PDP01 - ABORT ON (OUTB CHAIN) COMMAND
13 FORMAT  PDP01 - DATA ACCEPTED WHILE WRITE NOT SELECTED 
14 FORMAT  PDP01 - ABORT ON (OUT) COMMAND 
16 FORMAT  PDP01 - PASS=*OCT
17 FORMAT  PDP01 - NO INACTIVE AFTER STATUS TRANSFER
20 FORMAT  PDP01 - I/O TRANSFER WORD COUNT ERROR
21 FORMAT  WORD COUNT WAS:*OC   WORDS TRANSF=*OC
* 
   DATA (OB,CON) 7777B,2525B,5252B,0,1234B,2347B,3456B,4563B
* 
* 
24 TIMEOUT TYPEB=4 USEC    *ALLOW FAST SCOPING LOOP 
   MSG 1 TO DISPLAY,PRINT             *POST RUNNING MESSAGE 
26 B1=0 
27 MSG 16 (B1) TO DISPLAY 
* 
* 
30 RES
* CHECK THAT THE PDP INTERFACE DOES NOT ACCEPT DATA IF WRITE
* MODE HAS NOT BEEN SELECTED
   B3=4 
   FUNC 6, ABT 60           *DUMMY FUNCTION TO CLEAR CONTROL
   B3=6 
   ACN, ABT 60
   WC=1 
   OUTB CHAIN, ABT 32 
   OUTB CHAIN, ABT 32 
   B3=13          * NO ABORT IMPLIES EMPTY HAS BEEN RECEIVED
   GOTO 61
32 IF (EC.EQ.4026B) GOTO 33      * CHECK FOR LEGAL ABORT
   B3=12                         * ANY OTHER ERROR
   GOTO 60
* NOW DOING A STATUS REQUEST,CHECK FOR FULL SIGNAL
* COMING BACK FROM INTERFACE. 
33 B3=5 
   FUNC 5, ABT 60                * STATUS REQUEST 005 
   B3=6 
   ACN, ABT 60                   * SEND ACTIVE SIGNAL 
   WC=1 
   B3=7 
   IN CHAIN, ABT 60             * CHECK FOR FULL COMING BACK
   B3=10
   DCN, ABT 52       *CHECK FOR INACTIVE
50 B3=17             *ERROR IF NO INACTIVE BACK 
   GOTO 61
52 IF (EC.NE.4027) GOTO 60
* NOW DOING A STATUS Z=1,CHECK THAT EMPTY SIGNAL
* IS RECEIVED FROM CHANNEL TO INTERFACE.
   B3=4 
   FUNC 15, ABT 60             * STATUS REQUEST 015 
   B3=6 
   ACN, ABT 60               * ACTIVATE CHANNEL 
   WC=2 
   B3=7 
   IN CHAIN,ABT 60           * INPUT 2 WORDS OF STATUS
   B3=20
   IF (WC.NE.WT) GOTO 42
   B3=10
   DCN, ABT 54
   GOTO 50                   *ERROR IF NO INACTIVE BACK 
54 IF (EC.NE.4027) GOTO 60
* NOW CHECK FULL FROM CHANNEL AND EMPTY TO CHANNEL
* BY DOING A DUMMY LOAD ADDRESS FUNCTION
   B3=4 
   FUNC 7, ABT 60            * LOAD ADDRESS FUNCTION
   B3=6 
   ACN, ABT 60               * ACTIVATE CHANNEL 
   WC=4              * OUTPUT 4 WORDS 
   B3=11
   OUT CHAIN, ABT 60
   B3=20
   IF (WC.NE.WT) GOTO 42
   B3=10
   DCN, ABT 60               * DISCONNECT CHANNEL 
* NOW,IN LOOPBACK TEST MODE,TRY WRITE AND READ FUNCTIONS
* USING OUTPUT AND INPUT WITH FULL CHANNEL PROTECTION.
   B3=4 
   FUNC 16, ABT 60         *SET LOOPBACK TEST MODE
   FUNC 22, ABT 60         *SET WRITE MODE
   B3=6 
   ACN, ABT 60             *ACTIVATE CHANNEL
   B3=14
   WC=10                   *OUTPUT 8 WORDS WITH FULL
   OUT, ABT 60             *CHANNEL PROTECTION
   B3=20
   IF (WC.NE.WT) GOTO 42
   B3=4 
   FUNC 21, ABT 60         *SET READ MODE 
   B3=6 
   ACN, ABT 60             *ACTIVATE CHANNEL
   WC=2 
   B3=7 
   IN CHAIN, ABT 60        *INPUT 2 WORDS 
   B3=20
   IF (WC.NE.WT) GOTO 42
   B3=10
   DCN, ABT 60             *DISCONNECT CHANNEL
* CHECK FOR LOOPING,ERROR STOP AND SO FORTH...
35 B4=B4+1                   * BUMP PASS COUNT
   IF (ES.AND.SL.EQ.0) GOTO 40  * IF NOT SCOPING
   MSG 2 (B2,B4) TO DISPLAY 
   GOTO 30                      * EXECUTE SCOPING LOOP
40 GOTO 27 WHILE (B1+1.NE.7400B)   * REPEAT 7400B TIMES 
   IF (ES.AND.CM.NE.0) GOTO 26     * IF RC OR RM
   IF (B2.NE.0) GOTO 65            * IF MODULE ERRORS 
   EXIT 
42 MSG 21 (WC,WT) TO LINE 1 
   GOTO 61
60 MSG EM TO LINE 1          * PRODUCT OVERLAY ERROR MESSAGE
61 MSG B3 TO LINE 0                * REPORT ABORT CONDITION 
64 B2=B2+1                         * BUMP ERROR COUNTER 
   IF (ES.AND.SL.NE.0) GOTO 35     * IF SCOPING 
   PICTURE
   HALT 
   BLANK
   MSG 1 TO DISPLAY 
   IF (ES.AND.CM.NE.0) GOTO 26     * IF RC OR RM
65 MSG 3 (B2) TO DAYFILE
77 END 24 
COMPILE   - PDP01 - 
   MODULE PDP02,6000(500) 
*** ASSEMBLY/DISASSEMBLY DATA CHECK 
**
*   PDP02 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW
* 
*         THE MAIN GOAL OF THIS MODULE IS THE CHECKING OF 
*         THE DATA PATH (INPUT AND OUTPUT) IN LOOPBACK
*         TEST MODE, SIMULATING ASSEMBLY/DISASSEMBLY
*         BETWEEN PPU 12 BIT WORDS AND PDP 16 BIT WORDS.
*         EACH PASS THROUGH THE MAIN LOOP (EXCEPT IF RC 
*         IS SELECTED) WILL CHANGE THE OUTPUT WORD COUNT
*         AND THE PATTERN IN THE FOLLOWING METHOD:  
*         -FIRST PASS -WORD COUNT=2  AND PATTERN=7777 
*         -NEXT PASS  -WORD COUNT=3  AND PATTERN=7777 
*         -NEXT PASS  -WORD COUNT=4  AND PATTERN=7777 
*         . . . . . . . . . . . . 6  . . . . . . 7777 
*         . . . . . . . . . . . . 7  . . . . . . 7777 
*         . . . . . . . . . . . . 8  . . . . . . 7777 
*         . . . . . . . . . . . . 10 . . . . . . 7777 
*         . . . . . . . . . . . . 11 . . . . . . 7777 
*         . . . . . . . . . . . . 12 . . . . . . 7777 
*         . . . . . . . . . . . . 14 . . . . . . 7777 
*         . . . ETC . . . . . . .    . . . . . .
*         . . . ETC . . . . . . .    . . . . . .
*         . . . TILL   WORD COUNT=48 . . . . . . 7777 
*         THEN THE NEXT PASS WILL CHANGE THE WORD COUNT 
*         BACK TO 2 AND TAKE THE SECOND PATTERN (0000)
*         -NEXT PASS-  WORD COUNT=2  AND PATTERN=0000 
*         . . . . . . . . . . . . 3  . . . . . . 0000 
*         . . . . . . . . . . . . 4  . . . . . . 0000 
*         . . . ETC . . . . . . .    . . . . . .
*         . . . TILL   WORD COUNT=48 . . . . . . 0000 
*         THEN THE NEXT PASS WILL CHANGE THE WORD COUNT 
*         BACK TO 2 AND TAKE THE THIRD PATTERN (2525) 
*         . . . . . .  WORD COUNT=2      PATTERN=2525 
*         . . . ETC . . . . . . .    . . . . . .
*         . . . TILL   WORD COUNT=48 . . . . . . 2525 
* 
*         THIS METHOD WILL CONTINUE USING 50 PATTERNS.
*         THE PATTERNS ARE DEPENDING ON THE VALUE OF B13: 
*              B13=1    IMPLIES PATTERN 1=7777
*              B13=2    IMPLIES PATTERN 2=0000
*              . . 3    . . . . . . . . 3=2525
*              . . 4    . . . . . . . . 4=5252
*              . . 5    . . . . . . . . 5=ALT 7777/0000 
*              . . 6    . . . . . . . . 6=ALT 2525/5252 
*              . . 7    . . . . . . . . 7=RANDOM DATA 
*              . THRU   . . . . . . .THRU . . . . . . 
*              . .50    . . . . . . .  50=RANDOM DATA 
*         NOTE: THE B DISPLAY AT THE CONSOLE GIVES THE
*         OPERATOR THE PATTERN NUMBER ( PATT=XX), XX
*         BEING THE VALUE OF B13. 
* 
*         AFTER ANY OUTPUT, STATUS IS CHECKED FOR PARITY
*         ERROR AND AN INPUT OF 2 WORDS IS MADE TO VERIFY 
*         THE ASSEMBLY/DISASSEMBLY NETWORK. 
*         THE FORMAT IS DEPENDING ON THE OUTPUT WORD COUNT: 
* 
*         ************
*         * FORMAT 0 *   OUTPUT WORD COUNT=2 OR 6 OR 10 OR
*         ************                    14 OR 18 .ETC.. 
*                      EXAMPLE WITH AN OUTPUT WORD COUNT=2
* 
*         ---OUTPUT(2 PP WORDS)---
*         -  WORD 1  --  WORD 2  -
*         AAAAAAAAAAAABBBBBBBBBBBB
*         AAAAAAAAAAAABBBB00000000
*         -  WORD 1  --  WORD 2  -
*         ---INPUT (2 PP WORDS)---
* 
* 
*         ************
*         * FORMAT 1 *   OUTPUT WORD COUNT=3 OR 7 OR 11 OR
*         ************                    15 OR 19 .ETC.. 
*                      EXAMPLE WITH AN OUTPUT WORD COUNT=3
* 
*         ---------OUTPUT(3 PP WORDS)---------
*         -  WORD 1  --  WORD 2  --  WORD 3  -
*         AAAAAAAAAAAABBBBBBBBBBBBCCCCCCCCCCCC
*                     BBBBBBBBBBBBCCCC00000000
*                     -  WORD 1  --  WORD 2  -
*                     ---INPUT (2 PP WORDS)---
* 
* 
*         ************
*         * FORMAT 2 *   OUTPUT WORD COUNT=4 OR 8 OR 12 OR
*         ************                    16 OR 20 .ETC.. 
*                      EXAMPLE WITH AN OUTPUT WORD COUNT=4
* 
*         ---------OUTPUT(4 PP WORDS)---------------
*         D 1  --  WORD 2  --  WORD 3  --  WORD 4  -
*         AAAAAABBBBBBBBBBBBCCCCCCCCCCCCDDDDDDDDDDDD
*                                   CCCCDDDDDDDDDDDD00000000
*                                   -  WORD 1  --  WORD 2  -
*                                   ---INPUT (2 PP WORDS)---
* 
* 
*         WHEN AN ERROR IS DETECTED, THE MODULE IS STOPPED
*         AND THE USER CAN SET THE REPEAT CONDITION SWITCH
*         (SETSW,RC), CLEAR THE STOP ERROR SWITCH 
*         (CLRSW,SE) AND THEN DO A GO COMMAND (G),ENTERING
*         IN THIS WAY IN THE SCOPING LOOP SITUATION.
*         THE SCOPING LOOP SITUATION WILL REPEAT THE
*         OUTPUT/INPUT USING ALWAYS THE SAME PATTERN.AT 
*         THIS TIME, A PASS COUNT AND AN ERROR COUNT IS 
*         GIVEN AT THE OPERATOR CONSOLE B DISPLAY.
* 
* 
*         ************************************************
*         *                                              *
*         * PDP02 DOES NOT REQUIRE ANY PARAMETER.        *
*         * HOWEVER, P0 AND P1 CAN BE USED AS PRESET     *
*         * PATTERN AND PRESET OUTPUT WORD COUNT.        *
*         *                                              *
*         ************************************************
* 
*         IF P0 IS DIFFERENT OF ZERO,IT IS TAKEN AS A 
*         PRESET PATTERN. 
*         IF P1 IS DIFFERENT OF ZERO,IT IS TAKEN AS A 
*         PRESET OUTPUT WORD COUNT. 
*         P1 MUST BE IN THE RANGE OF 2,3,4,6,7,8,10...48
*         THIS FEATURE IS TO ALLOW THE USER TO SCOPE WITH 
*         HIS OWN VALUES.TO DO SO,HE MUST SET P0,P1 , 
*         SET THE REPEAT CONDITION SWITCH (SETSW,RC), 
*         CLEAR THE STOP ERROR SWITCH (CLRSW SE), AND RUN 
*         PDP02 (R,PDP(02)).
*         NOTICE THAT, IF STOP ERROR IS SELECTED AND AN 
*         ERROR IS DETECTED, A PARAMETER CHANGE IS NOT
*         TAKEN INTO CONSIDERATION IF THE REPEAT CONDITION
*         IS ALSO SELECTED. 
* 
* 
* 
*         ************************************************
*         *                                              *
*         * PDP02 DOES NOT ISSUE ANY REQUEST TO THE PDP  *
*         *                                              *
*         ************************************************
* 
* 
* 
*   DESCRIPTION 
* 
*         1.FILL OUTPUT BUFFER WITH CORRESPONDING PATTERN 
*         2.SET OUTPUT WORD COUNT (B10) 
*         3.CALCULATE EXPECTED 2 INPUT WORDS
*         4.RESERVE CHANNEL 
*         5.GET STATUS TO CLEAR ANY ERROR BIT 
*         6.SELECT LOOPBACK TEST MODE 
*         7.WRITE (B10) WORDS 
*         8.CHECK STATUS FOR ANY ERROR
*         9.READ 2 WORDS
*         10.CHECK STATUS FOR ANY ERROR 
*         11.COMPARE DATA WITH CALCULATED EXPECTED WORDS
*         12.GO TO STEP 4 IF REPEAT CONDITION 
*         13.GO TO STEP 2 TILL A WORD COUNT OF 48 
*         14.GO TO STEP 1 TILL 50 DIFFERENT PATTERNS
*         15.REPEAT ENTIRE MODULE 15 TIMES
*         16.REPEAT ENTIRE MODULE IF RM SWITCH IS SET 
*            THEN EXIT
* 
* 
* 
* 
* 
*   ERRORS DETECTED 
*         ANY STATUS ERROR, ANY ABORT ON ANY COMMAND AND
*         ANY DATA ERROR ARE REPORTED. ILLEGAL PARAMETER
*         P1 IS ALSO REPORTED.
*         INPUT/OUTPUT IS DONE WITH HIGH SPEED TRANSFER 
*         INSTRUCTIONS (BUFFER MODE). SO A MISSING FULL 
*         OR EMPTY SIGNAL CAN HUNG THE PP INSTRUCTION.
*         IN THAT CASE, BETTER RUN MODULE PDP01 WHICH USES
*         FULL CHANNEL PROTECTION INSTRUCTIONS. 
* 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         ALL APPLICABLE LOW LEVEL PRODUCT OVERLAY ERROR
*         CODES AND MESSAGES IF THEY OCCUR, PLUS THE
*         FOLLOWING ERROR MESSAGES: 
*         1.PDP02 - ILLEGAL WORD COUNT (P1) 
*         2.PDP02 - ABORT ON STATUS REQUEST 
*         3.PDP02 - ABORT ON SET LOOPBACK FUNCTION
*         4.PDP02 - ABORT ON OUTPUT-(FOUT) COMMAND) 
*         5.PDP02 - STATUS ERROR AFTER WRITE
*         6.PDP02 - ABORT ON INPUT-(FIN) COMMAND) 
*         7.PDP02 - STATUS ERROR AFTER READ 
*         8.PDP02 - DATA COMPARE ERROR
*         9.PDP02 - OUTPUT WORD COUNT ERROR 
*         10.PDP02 - INPUT WORD COUNT ERROR 
* 
*         MORE DETAILS ON ERRORS ARE GIVEN FOR MESSAGES 
*         4,5,6,7,8,9 AND 10, INCLUDING OUTPUT COUNT,LAST 
*         STATUS, EXPECTED DATA, RECEIVED DATA , ETC..... 
* 
* 
* 
* 
* 
  
*   PDP02 - INTERNAL DOCUMENTATION
* 
*   MODULES CALLED
* 
*         PDP980    PROCESSOR FOR ERROR MESSAGES
* 
* 
* 
* 
* 
*   REGISTER USAGE
*         B0=MAXIMUM OUTPUT WORD COUNT
*         B1=ENTIRE MODULE REPEAT COUNT 
*         B2=ERROR COUNT
*         B4=SCOPING LOOP PASS COUNT
*         B7=ERROR FLAGS
*         B8=EXPECTED WORD 1
*         B9=EXPECTED WORD 2
*         B10=OUTPUT WORD COUNT 
*         B13=PATTERN NUMBER
* 
* 
* 
* 
* 
* 
 1 FORMAT  PDP02 - LOOPBACK TEST MODE - DATA CHECK
 2 FORMAT  PDP02 - ILLEGAL WORD COUNT  (P1) 
 3 FORMAT  PDP02 - ERR=*OCT LOOP=*OCT 
 4 FORMAT  PDP02 - ERROR(S) IN MODULE =*DEC 
 5 FORMAT  PDP02 - PASS=*OCT PATT=*O
   DATA (OB(401),CON) 7777B,0000B,2525B,5252B 
* 
* 
20 MSG 1 TO DISPLAY,PRINT      *SET RUNNING MESSAGE 
   TIMEOUT TYPEB=4 USEC 
   B0=60                       *MAX BUFFER SIZE 
30 B1=0                        *CLEAR PASS COUNT
31 B13=0                       *START WITH FIRST PATTERN
* PREPARE OUTPUT BUFFER DEPENDING ON PATTERN SELECTION
32 IF (P0.EQ.0) GOTO 33        *NO PRESET PATTERN 
   DUP P0 TO OB FOR B0         *PRESET PATTERN=P0 
   GOTO 34
33 B13=B13+1                   *USE NEXT PATTERN
   IF (B13.GT.62) GOTO 47      *ALL PATTERNS USED,NEXT PASS 
   IF (B13.LT.5) DUP OB(B13+400) TO OB FOR B0      *SET OB
   IF (B13.GT.6) RANDOM TO OB FOR B0               *TO THE
   IF (B13.EQ.5) DUP OB(401)/OB(402) TO OB FOR B0  *CORRECT 
   IF (B13.EQ.6) DUP OB(403)/OB(404) TO OB FOR B0  *PATTERN 
34 MSG 5 (B1,B13) TO DISPLAY
* SET WORD COUNT B10 FOR OUTPUT WRITE 
   B10=1                       *PRESET WORD COUNT TO 2
   IF (P1.EQ.0) GOTO 40        *IF NO PRESET WORD COUNT 
   IF (P1.LE.B0) GOTO 37       *IF P1 IS NOT OUT OF RANGE 
36 MSG 2 TO DISPLAY,PRINT 
   GOTO 77
37 IF (P1.AND.3.EQ.1) GOTO 36  *IF ILLEGAL WORD COUNT 
   B10=P1                      *ACCEPTED WORD COUNT INTO B10
   GOTO 41
40 B10=B10+1                   *INCREMENT WORD COUNT
   IF (B10.AND.3.EQ.1) GOTO 40  *SKIP ILLEGAL WORD COUNT
41 IF (B10.LE.B0) GOTO 42 
   IF (P0.EQ.0) GOTO 33        *USE NEXT PATTERN
   GOTO 47
42 B15=B10-2      *FOR SUBSCRIPT REASONS,USE B15=WC-2 
* CALCULATE EXPECTED WORD 1 IN B8 AND EXPECTED
* WORD 2 IN B9
   B8=OB(B15)                *EXPECTED WORD 1 FORMAT 0 OR 1 
   B9=OB(B15+1).AND.7400B    *EXPECTED WORD 2 FORMAT 0 OR 1 
   IF (B10.AND.3.NE.0) GOTO 43  *IF FORMAT 0 OR 1,GO AHEAD
   B11=OB(B15).LS.8.AND.7400B  *FORMAT IS 2 
   B12=OB(B15+1).RS.4 
   B8=B11.XOR.B12              *EXPECTED WORD 1 FORMAT 2
   B9=OB(B15+1).LS.8.AND.7400B  *EXPECTED WORD 2 FORMAT 2 
* 
* MAIN LOOP 
* 
43 B7=0                        *CLEAR ERROR FLAGS 
   RES
   GOSUB 51                    *GET STATUS TO CLEAR ERRORS
   FUNC 16, ABT 61             *SET LOOPBACK TEST MODE
   WC=B10 
   FOUT 22, ABT 56             *OUTPUT B10 WORDS
   GOSUB 51                    *GET STATUS INTO SB
   IF (WC.NE.B14) GOTO 55 
   IF (SB.NE.0) GOTO 62        *ANY STATUS ERROR
   WC=2 
   FIN 21, ABT 57              *READ 2 WORDS
   GOSUB 51                  *GET STATUS INTO SB
   IF (WC.NE.B14) GOTO 60 
   IF (SB.NE.0) GOTO 63      *STATUS ERROR AFTER READ 
   IF (IB(0).NE.B8) GOTO 64  *DATA COMPARE ERROR
   IF (IB(1).NE.B9) GOTO 64  *DATA COMPARE ERROR
45 B4=B4+1                   *BUMP SCOPING LOOP PASS COUNT
   IF (ES.AND.RC.NE.0) GOTO 54   *IF REPEAT CONDITION 
* 
* 
   IF (P1.EQ.0) GOTO 40 
   IF (P0.EQ.0) GOTO 33 
47 GOTO 31 WHILE (B1+1.NE.17)    *REPEAT 15 TIMES 
   IF (ES.AND.RM.NE.0) GOTO 30    *IF REPEAT MODULE 
   IF (B2.EQ.0) EXIT       *NO ERROR IN MODULE
   MSG 4 (B2) TO DAYFILE
   EXIT 
* SUBROUTINE "REPEAT STATUS".SAVE EC AND EA IN CASE OF
* PREVIOUS ABORT. 
51 B6=EC                   *SAVE EVENTUAL EC
   B3=EA                   *SAVE EVENTUAL EA
   B14=WT                  *SAVE CURRENT TRANS COUNT
   FUNC 5, ABT 52          *STATUS REQUEST FUNCTION 
   STATUS 1 WORDS TO SB, ABT 52 
   RETURN 
52 B7=B7+1000              *FLAG STATUS ABORT 
   ENDSUB GOTO 66 
* 
* 
54 MSG 3 (B2,B4) TO DISPLAY 
   GOTO 43
* SET ERROR FLAGS TO BE ANALYZED BY MODULE 980
55 B7=B7+100               *FLAG WORD COUNT ERROR 
   GOTO 66
56 B7=B7+2                 *FLAG ABORT ON OUTPUT
57 B7=B7+10                *FLAG ABORT ON INPUT 
   GOSUB 51                *GET CURRENT STATUS
   GOTO 66
60 B7=B7+200               *FLAG WORD COUNT ERROR 
   GOTO 66
61 B7=B7+1                 *FLAG ABORT ON LOOPBACK FUNCTION 
62 B7=B7+4                 *FLAG STATUS ERROR AFTER WRITE 
63 B7=B7+20                *FLAG STATUS ERROR AFTER READ
64 B7=B7+40                *FLAG DATA COMPARE ERROR 
66 B2=B2+1                 *BUMP ERROR COUNT
   IF (ES.AND.SE.NE.0) GOTO 70
   IF (ES.AND.RC.NE.0) GOTO 45   *SCOPING LOOP IS SELECTED
70 CALL 980                *PROCESS ERROR MESSAGES
   GOTO 45
77 END 20 
COMPILE   - PDP02 - 
   MODULE PDP03,6000(500) 
*** ADDRESS REGISTER TEST 
**
*   PDP03 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW
* 
*         THIS MODULE CHECKS THE ADDRESS REGISTER IN THE
*         PDP INTERFACE. ADDRESS REGISTER IS LOADED USING 
*         (FOUT 7) COMMAND, A READ OF 2 WORDS IS MADE IN
*         CONSTANT ADDRESSING MODE (FUNCTION 021) AND THE 
*         DMA STATUS IS REQUESTED (FUNCTION 015) AND
*         COMPARED WITH THE ORIGINAL LOADED ADDRESS.
* 
*         IN THE 2 ADDRESS WORDS SENT OR RECEIVED, THE
*         WORD REPRESENTS THE UPPER 12 BITS OF AN 18 BITS 
*         ADDRESS REGISTER WHOSE BIT 0 IS ALWAYS CLEARED
*         ( BIT 0 IS BIT 6 OF THE SECOND WORD ).
* 
*         GIVEN AND RANDOM PATTERNS ARE USED FOR ADDRESSING 
*         EACH PATTERN IS REPEATED 32 TIMES.
*         THE VALUE OF REGISTER B13 REPRESENTS THE PATTERN
*         NUMBER: 
*              B13=1  IMPLIES THE CURRENT PATTERN IS 777777 
*                  2                                 000000 
*                  3                                 252525 
*                  4                                 525252 
*                  5                                 111111 
*                  6                                 222222 
*                  7                                 333333 
*                  10                                444444 
*                  11                                555555 
*                  12                                666666 
*                  13                                123456 
*                  14                                234567 
*                  15                                345670 
*                  16                                456701 
*                  17                                567012 
*                  20                                670123 
*                  21                                RANDOM 
*                 THRU                               ...... 
*                 200                                RANDOM 
* 
*         THE B DISPLAY AT THE CONSOLE OPERATOR GIVES 
*         THE CURRENT PATTERN NUMBER WITH THE MESSAGE 
*         PATT=XXX WHERE XXX IS THE VALUE OF B13. 
* 
*         WHEN COMPARING THE OUTPUTTED ADDRESS AND THE
*         INPUTTED DMA STATUS, BIT 0 (BIT 6 OF THE SECOND 
*         WORD) IS NOT TAKEN INTO ACCOUNT. IF AN ERROR
*         OCCURS,OTHER THAN BIT 0,THE USER MUST BE CAREFUL
*         WHEN COMPARING LOADED ADDRESS AND DMA STATUS FROM 
*         THE ERROR MESSAGES, BIT 0 IS NOT AN ERROR.
* 
*         WHEN AN ERROR IS DETECTED, THE MODULE IS STOPPED
*         AND THE USER CAN SET THE REPEAT CONDITION SWITCH
*         (SETSW,RC), CLEAR THE STOP ERROR SWITCH (CLRSW,SE)
*         AND THEN DO A GO COMMAND (G), ENTERING IN THIS WAY
*         IN THE SCOPING LOOP SITUATION. THE SCOPING LOOP 
*         WILL REPEAT INDEFINITELY THE LOAD ADDRESS/OUTPUT- 
*         READ DATA-READ DMA STATUS/INPUT SEQUENCE WITH 
*         THE SAME PATTERN. AT THIS TIME A PASS COUNT AND 
*         AN ERROR COUNT ARE GIVEN AT THE OPERATOR CONSOLE
*         B DISPLAY.
* 
* 
*         ************************************************* 
*         *                                               * 
*         * PDP03 DOES NOT REQUIRE ANY PARAMETER.         * 
*         * HOWEVER, P2 AND P3 CAN BE USED AS PRESET      * 
*         * ADDRESS.                                      * 
*         *                                               * 
*         ************************************************* 
* 
*         IF P2 AND P3 ARE DIFFERENT OF ZERO, THEY ARE
*         SUPPOSED TO BE AN ADDRESS OF 18 BITS, P0 BEING
*         THE UPPER 12 BITS AND THE UPPER 6 BITS OF P1
*         BEING THE LOWER 6 BITS. 
*         P3 IS ACCEPTED ONLY WHEN ITS LOWER 6 BITS ARE 
*         CLEARED.
*         THIS FEATURE IS TO ALLOW THE USER TO SCOPE THE
*         ADDRESS REGISTER WITH HIS OWN VALUES. TO DO SO, 
*         HE MUST ENTER P2 AND P3, SET THE REPEAT CONDITION 
*         SWITCH (SETSW,RC), CLEAR THE STOP ERROR SWITCH
*         (CLRSW,SE),AND RUN PDP03 (R,PDP03). 
*         NOTICE THAT, IF STOP ERROR IS SELECTED AND AN 
*         ERROR IS DETECTED, A PARAMETER CHANGE IS NOT TAKEN
*         INTO ACCOUNT IF THE REPEAT CONDITION IS ALSO
*         SELECTED. 
* 
*         ************************************************* 
*         *                                               * 
*         * PDP03 DOES NOT ISSUE ANY REQUEST TO THE PDP   * 
*         *                                               * 
*         ************************************************* 
* 
* 
* 
* 
* 
*   DESCRIPTION 
* 
*         1.PREPARE OUTPUT BUFFER FOR SELECTED PATTERN
*         2.RESERVE CHANNEL 
*         3.LOAD ADDRESS FUNCTION FOLLOWED BY AN OUTPUT OF
*           TWO WORDS 
*         4.READ 2 PP WORDS IN CONSTANT ADDRESSING MODE (21)
*         5.READ DMA STATUS 
*         6.COMPARE OUTPUT BUFFER AND DMA STATUS
*         7.IF REPEAT CONDITION GO TO STEP 2
*         8.REPEAT THE SAME PATTERN 32 TIMES (GO TO STEP 2) 
*         9.REPEAT 128 TIMES FROM STEP 1 WITH A NEW PATTERN 
*           EACH TIME 
*         10.REPEAT THE COMPLETE MODULE 16 TIMES
* 
* 
* 
* 
* 
*   ERRORS DETECTED 
* 
*         ANY ABORT ON ANY COMMAND. 
*         ILLEGAL PARAMETER P3. 
*         MISMATCHING BETWEEN OUTPUTTED ADDRESS AND INPUTTED
*         DMA STATUS. 
* 
* 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         ALL APPLICABLE LOW LEVEL PRODUCT OVERLAY ERROR
*         CODES AND MESSAGES IF THEY OCCUR, PLUS THE
*         FOLLOWING ERROR MESSAGES: 
*         1.PDP03 - ILLEGAL PARAMETER (P3)
*         2.PDP03 - ABORT ON LOAD ADDRESS-(FOUT 7) COMMAND
*         3.PDP03 - ABORT ON DMA STATUS- (FIN 15) COMMAND 
*         4.PDP03 - ADDRESS COMPARE ERROR 
*         5.PDP03 - ABORT ON (FUNC 16) COMMAND
*         6.PDP03 - ABORT ON (FIN 21) COMMAND 
* 
*         MESSAGE 4 IS FOLLOWED BY THE EXPECTED AND 
*         RECEIVED ADDRESSES. 
* 
* 
* 
* 
* 
  
*   PDP03 - INTERNAL DOCUMENTATION
* 
*   MODULES CALLED
* 
*         NONE
* 
* 
* 
* 
* 
*   REGISTER USAGE
* 
*         B1=PASS COUNT 
*         B2=ERROR COUNT
*         B4=SCOPING LOOP PASS COUNT
*         B10=BEGINNING BUFFER ADDRESS FOR OUTPUT 
*         B13=PATTERN NUMBER
*         B15=PATTERN REPEAT COUNT
* 
* 
* 
* 
* 
 1 FORMAT  PDP03 - ADDRESS REGISTER TEST
 2 FORMAT  PDP03 - ILLEGAL PARAMETER  (P3)
 3 FORMAT  PDP03 - ERR=*OCT LOOP=*OCT 
 4 FORMAT  PDP03 - ERROR(S) IN MODULE =*DEC 
 5 FORMAT  PDP03 - ABORT ON LOAD ADDRESS-(FOUT 7) COMMAND 
 6 FORMAT  PDP03 - ABORT ON DMA STATUS- (FIN 15) COMMAND
 7 FORMAT  PDP03 - ADDRESS COMPARE ERROR
10 FORMAT  LOADED ADDRESS=*OCT*O   DMA STATUS=*OCT*O
11 FORMAT  PDP03 - PASS=*OCT PATT=*OC 
12 FORMAT  PDP03 - ABORT ON (FUNC 16) COMMAND 
13 FORMAT  PDP03 - ABORT ON (FIN 21) COMMAND
* 
   DATA (OB(0),CON) 7777,7700,0000,0000,2525,2500,5252,5200 
   DATA (OB(10),CON) 1111,1100,2222,2200,3333,3300
   DATA (OB(16),CON) 4444,4400,5555,5500,6666,6600
   DATA (OB(24),CON) 1234,5600,2345,6700,3456,7000
   DATA (OB(32),CON) 4567,0100,5670,1200,6701,2300
* 
* 
30 MSG 1 TO DISPLAY,PRINT        *SET RUNNING MESSAGE 
   TIMEOUT TYPEB=4 USEC 
   B1=0                          *CLEAR PASS COUNT
* 
32 B13=0                         *START WITH FIRST PATTERN
   IF (P2.NE.0) GOTO 33          *CHECK FOR PRESET ADDRESS
   IF (P3.EQ.0) GOTO 47 
33 IF (P3.AND.77.EQ.0) GOTO 35   *CHECK FOR VALID P3 PARAM
   MSG 2 TO DISPLAY,PRINT 
   GOTO 77                       *TERMINATE 
35 OB(41)=P2
   OB(42)=P3
37 B10=41                        *BEGINNING ADDR FOR OUTPUT 
40 B15=0                         *REPEAT COUNT TO 0 
   MSG 11 (B1,B13) TO DISPLAY 
41 RES
   FUNC 16, ABT 70               *SET LOOPBACK TEST MODE
42 WC=2 
   BA=B10 
   FOUT 7, ABT 67                *LOAD ADDRESS FROM OB
   BA=10
   FIN 21, ABT 71                *READ IN ADDR CONSTANT MODE
   BA=0 
   FIN 15, ABT 63                *READ DMA STATUS INTO IB 
   IF (IB(0).NE.OB(B10)) GOTO 55  *COMPARE
   B8=OB(B10+1).AND.7600         *CLEAR UNUSED BITS 
   IF (IB(1).NE.B8) GOTO 55 
* 
* 
43 B4=B4+1                       *BUMP SCOPING LOOP COUNT 
   IF (ES.AND.RC.EQ.0) GOTO 45
   MSG 3 (B2,B4) TO DISPLAY 
   GOTO 41
45 GOTO 42 WHILE (B15+1.NE.40)   *REPEAT 32 TIMES SAME PATT 
   IF (P2.NE.0) GOTO 53 
   IF (P3.NE.0) GOTO 53 
47 B13=B13+1                     *NEXT PATTERN
   IF (B13.GT.200) GOTO 53
   IF (B13.LT.20) GOTO 51 
   RANDOM TO OB(40) FOR 3        *B13=20-200 GIVES RAND ADDR
   GOTO 37
51 B10=B13-1.LS.1                *B13<20 ,USE GIVEN PATTERNS
   GOTO 40
53 GOTO 32 WHILE (B1+1.NE.20)    *REPEAT 16 TIMES ALL PATT
   IF (B2.EQ.0) EXIT
   MSG 4 (B2) TO DAYFILE
   EXIT 
55 MSG 7 TO LINE 0
   B8=OB(B10+1).RS.6
   B7=IB(1).RS.6
   MSG 10 (OB(B10),B8,IB(0),B7) TO LINE 1 
57 B2=B2+1                       *BUMP ERROR COUNT
   IF (ES.AND.SE.NE.0) GOTO 61
   IF (ES.AND.RC.NE.0) GOTO 62   *IF SCOPING LOOP 
61 PICTURE
   HALT 
   BLANK
   MSG 1 TO DISPLAY,PRINT 
62 RES
   GOTO 43
63 MSG 6 TO LINE 0
65 MSG EM TO LINE 1 
   GOTO 57
67 MSG 5 TO LINE 0
   GOTO 65
70 MSG 12 TO DISPLAY,PRINT
   GOTO 65
71 MSG 13 TO DISPLAY,PRINT
   GOTO 65
77 END 30 
COMPILE   - PDP03 - 
   MODULE PDP04,6000(500) 
*** ADDRESS INCREMENT/DECREMENT TEST
**
*   PDP04 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW
* 
*         THIS MODULE CHECKS THE ABILITY OF THE PDP 
*         INTERFACE TO INCREMENT OR DECREMENT THE ADDRESS 
*         REGISTER. 
*         BASICALLY, AN OUTPUT OPERATION IS INITIATED WITH
*         OF WORD COUNT OF 400B PP WORDS (600B PDP BYTES),
*         IN THE 3 POSSIBLE MODES DETERMINED BY THE VALUE 
*         OF B7 REGISTER (I/O OPERATION IS MADE IN LOOPBACK 
*         TEST MODE). 
*         B7=0 IMPLIES WRITE/ADDR INCR MODE - FUNCTION 002
*         B7=1         WRITE/ADDR DECR                 012
*         B7=3         WRITE/ADDR CONST                022
* 
*         FOR THE 3 MODES, ADDRESSING IS DONE IN THE
*         FOLLOWING WAY:  
* 
*         1.ADDRESS INCREMENTING MODE (FUNCTION 002)
*           THE LOAD ADDRESS IS INITIATED BEFORE AN OUTPUT
*           OF 400B PP WORDS IN THE FOLLOWING SEQUENCE: 
*         000000-000600-001400-002200...776600-777400 
*           (INCREMENT VALUE IS 600B) 
* 
*         2.ADDRESS DECREMENTING MODE (FUNCTION 012)
*           THE LOAD ADDRESS IS INITIATED BEFORE AN OUTPUT
*           OF 400B PP WORDS IN THE FOLLOWING SEQUENCE: 
*         777700-777100-776300-775500...001700-001100 
*           (DECREMENT VALUE IS 600B) 
* 
*         3.ADDRESS CONSTANT MODE (FUNCTION 022)
*           THE LOAD ADDRESS IS INITIATED BEFORE AN OUTPUT
*           OF 400B PP WORDS IN THE FOLLOWING SEQUENCE: 
*         000000-0006RR-0014RR-0022RR...7766RR-7774RR 
*         WHERE RR IS EACH TIME A NEW RANDOM NUMBER.
* 
*         NOTE. WHEN ALL 3 MODES ARE TERMINATED, THE WHOLE
*         PROCESS IS RESTARTED BUT WITH A RANDOM VALUE FOR
*         THE LOWER 6 BITS OF THE ADDRESS (INSTEAD OF 00
*         IN MODE 0 AND 1). 
* 
*         THE B DISPLAY AT THE CONSOLE OPERATOR GIVES THE 
*         MESSAGE (PASS=XXXX COND=YY) WHERE YY IS THE 
*         CURRENT MODE REPRESENTED BY THE VALUE OF REGISTER 
*         B7. 
*         AFTER EACH OUTPUT, THE DMA STATUS IS CHECKED FOR
*         CORRECT INCREMENTED OR DECREMENTED OR CONSTANT
*         VALUE.
* 
*         WHEN AN ERROR IS DETECTED, THE MODULE IS STOPPED
*         AND THE USER CAN SET THE REPEAT CONDITION SWITCH
*         (SETSW,RC), CLEAR THE STOP ERROR SWITCH (CLRSW,SE)
*         AND THEN DO A GO COMMAND (G), ENTERING IN THIS
*         WAY IN THE SCOPING LOOP SITUATION. THE SCOPING
*         LOOP WILL REPEAT INDEFINITELY THE LOAD ADDRESS
*         FOLLOWED BY AN OUTPUT IN THE MODE SELECTED WHILE
*         ERROR HAS OCCURRED. AT THIS TIME, A PASS COUNT
*         AND AN ERROR COUNT IS GIVEN AT THE OPERATOR 
*         CONSOLE B DISPLAY.
* 
* 
*         ************************************************
*         *                                              *
*         * PDP04 DOES NOT REQUIRE ANY PARAMETER         *
*         *                                              *
*         ************************************************
* 
* 
*         ALTHOUGH TESTING THE ADDRESS INCR/DECR FEATURE, 
*         PDP04 ALSO TESTS THE OUTPUT DATA PATH BY USING
*         A NEW BUFFER OF RANDOM DATA EACH TIME THE 3 
*         ADDRESSING MODES ARE COMPLETED. 
*         SO, IN CASE OF ABORT ON (FOUT) COMMAND, BETTER
*         RUN PDP02 IN CONFIDENCE TEST. 
* 
* 
* 
*         ************************************************
*         *                                              *
*         * PDP04 DOES NOT ISSUE ANY REQUEST TO THE PDP  *
*         *                                              *
*         ************************************************
* 
* 
* 
* 
* 
* 
*   DESCRIPTION 
* 
*         1.RANDOM DATA TO OUTPUT BUFFER
*         2.SET UP ADDRESSING MODE (FIRST=0,THEN 1,2,0 ETC) 
*         3.CALCULATE DMA ADDRESS EXPECTED AFTER DATA OUTPUT
*         4.RESERVE CHANNEL 
*         5.LOAD ADDRESS
*         6.OUTPUT 400B PP WORDS (IN THE CURRENT ADDR MODE) 
*         7.CHECK STATUS FOR ANY ERROR
*         8.REQUEST DMA STATUS AND COMPARE WITH EXPECTED
*         9.IF REPEAT CONDITION GO TO STEP 4
*         10.REPEAT FROM STEP 3 TILL ALL ADDRESSES USED 
*         11.CHANGE MODE AND REPEAT FROM STEP 3 TILL ALL 3
*            MODES ARE USED 
*         12.REPEAT FROM STEP 1 SIXTEEN TIMES 
* 
* 
* 
* 
* 
* 
*   ERRORS DETECTED 
* 
*         ANY ABORT ON ANY COMMAND
*         ANY STATUS ERROR
*         ANY UNEXPECTED DMA STATUS 
* 
* 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         ALL APPLICABLE LOW LEVEL PRODUCT OVERLAY ERROR
*         CODES AND MESSAGES IF THEY OCCUR, PLUS THE
*         FOLLOWING ERROR MESSAGES: 
*         1.PDP04 - ADDRESS COMPARE ERROR AFTER WRITE(INCR) 
*         2.PDP04 - ADDRESS COMPARE ERROR AFTER WRITE(DECR) 
*         3.PDP04 - ADDRESS COMPARE ERROR AFTER WRITE(CONST)
*         4.PDP04 - ABORT ON STATUS COMMAND 
*         5.PDP04 - ABORT ON COMMAND (FOUT XX)
*         6.PDP04 - ABORT ON (FUNC) COMMAND 
*         7.PDP04 - STATUS ERROR (YYYY) AFTER I/O TRANSFER
*         8.PDP04 - OUTPUT WORD COUNT ERROR 
* 
*         MESSAGE 1:WRITE(INCR) MEANS THAT THE OUTPUT IS
*                   INITIATED BY FUNCTION CODE 002
*         MESSAGE 2:WRITE(DECR) MEANS THAT THE OUTPUT IS
*                   INITIATED BY FUNCTION CODE 012
*         MESSAGE 3:WRITE(CONST) MEANS THAT THE OUTPUT IS 
*                   INITIATED FY FUNCTION CODE 022
*         MESSAGE 5: XX IS THE FUNCTION CODE USED FOR 
*                   INITIATING THE OUTPUT TRANSFER
*         MESSAGE 7: YYYY IS THE STATUS RECEIVED AFTER
*                    FUNCTION 005 
*         MESSAGES 1,2 AND 3 ARE FOLLOWED BY SOME MORE
*         INFORMATIONS GIVING THE OUTPUT WORD COUNT, THE
*         ADDRESS LOADED BEFORE TRANSFER, THE EXPECTED DMA
*         STATUS AFTER TRANSFER AND THE DMA STATUS RECEIVED 
*         AFTER TRANSFER. 
* 
* 
* 
* 
* 
  
*   PDP04 - INTERNAL DOCUMENTATION
* 
*   MODULES CALLED
* 
*         NONE
* 
* 
* 
* 
*   REGISTER USAGE
* 
*         B1=PASS COUNT 
*         B2=ERROR COUNT
*         B4=SCOPING LOOP PASS COUNT
*         B5=MESSAGE NUMBER TO REPORT AND FUNCTION NUMBER 
*         B7=FUNCTION FLAG
*         B11=EXPECTED DMA STATUS   UPPER 12 BITS 
*         B12=EXPECTED DMA STATUS   LOWER 6 BITS
* 
* 
* 
* 
* 
 1 FORMAT  PDP04 - OUTPUT WORD COUNT ERROR
 2 FORMAT  PDP04 - ADDRESS COMPARE ERROR AFTER WRITE (INCR) 
 3 FORMAT  PDP04 - ERROR(S) IN MODULE =*DEC 
 4 FORMAT  PDP04 - ADDRESS INCR/DECR TEST 
 5 FORMAT  OUT WORD COUNT=400B PP WORDS,600B PDP 8-BIT WORDS
 6 FORMAT  PDP04 - ERR=*OCT LOOP=*OCT 
 7 FORMAT  PDP04 - ABORT ON STATUS COMMAND
10 FORMAT  PDP04 - PASS=*OCT COND=*O
11 FORMAT  WORD COUNT WAS:*OC   WORDS TRANSF=*OC
12 FORMAT  PDP04 - ADDRESS COMPARE ERROR AFTER WRITE (DECR) 
13 FORMAT  ADDRESS LOADED BEFORE TRANSFER     *OCT*O
14 FORMAT  EXPECTED ADDRESS AFTER TRANSFER    *OCT*O
15 FORMAT  DMA ADDRESS READ AFTER TRANSFER    *OCT*O
16 FORMAT  PDP04 - ABORT ON COMMAND (FOUT *O) 
20 FORMAT  PDP04 - ABORT ON (FUNC) COMMAND
22 FORMAT  PDP04 - ADDRESS COMPARE ERROR AFTER WRITE (CONST)
24 FORMAT  PDP04 - STATUS ERROR (*OCT) AFTER DATA OUTPUT
* 
* 
30 MSG 4 TO DISPLAY,PRINT         *SET RUNNING MESSAGE
   TIMEOUT TYPEB=4 USEC 
   B1=0                           *CLEAR PASS COUNT 
31 OB(501)=0                      *PREPARE ADDR LOWER 5 BITS
   B12=0                          *EXPECTED 5 LOWER BITS
32 RANDOM TO OB FOR 400           *RANDOM DATA FOR OUTPUT 
   B7=0                           *START WITH COND 1
34 MSG 10 (B1,B7) TO DISPLAY      *INFORM OPERATOR
   OB(500)=0                      *START WITH ADDRESS 000000
   IF (B7.EQ.1) OB(500)=7777      *UNLESS DECREMENT MODE
* CALCULATE EXPECTED DMA ADDRESS INTO B11 (UPPER 12 BITS) 
* ANTICIPATE FOR ADDRESS DECREMENTING MODE
36 B11=OB(500)-6
* CHANGE B11 IF ADDRESS INCREMENTING MODE 
   IF (B7.EQ.0) B11=OB(500)+6 
* CHANGE B11 IF ADDRESS CONSTANT MODE 
   IF (B7.EQ.2) B11=OB(500) 
* PREPARE B10 AS EXPECTED UPPER 12 BITS 
   B10=B11
   IF (B11.EQ.2) B10=4002 
* 
* MAIN LOOP 
* 
42 RES
   FUNC 16, ABT 62                *SET LOOPBACK TEST MODE 
   BA=500 
   WC=2 
   FOUT 7, ABT 70                 *LOAD ADDRESS FROM OB(500)
   BA=0 
   WC=400 
   B5=B7.LS.3.+.2                 *PREPARE OUTPUT FUNCTION
   FOUT B5, ABT 71                *DO A WRITE OF 400 WORDS
   B14=WT                         *SAVE WORD COUNT
   FUNC 5, ABT 62                 *CHECK STATUS FOR 
   STATUS 1 WORDS TO SB, ABT 73   *EVENTUAL ERRORS
   IF (WC.NE.B14) GOTO 72 
   IF (SB(0).NE.0) GOTO 75
   FUNC 15, ABT 62                *READ DMA STATUS
   STATUS 2 WORDS TO SB(1), ABT 73
   IF (SB(1).NE.B10) GOTO 74      *COMPARE WITH EXPECTED
   IF (SB(2).NE.B12) GOTO 74
* 
* 
54 B4=B4+1                        *BUMP SCOPING LOOP COUNT
   IF (ES.AND.RC.EQ.0) GOTO 56
   MSG 6 (B2,B4) TO DISPLAY       *INFORM OPERATOR AND
   GOTO 42                        *REPEAT LAST CONDITION
56 IF (B7.NE.2) GOTO 60           *IF ADDRESS INCR OR DECR
   B11=B11+6
   RANDOM TO OB(501) FOR 1        *GET RANDOM LOW ADDR BITS 
   B12=OB(501).AND.7600           *CLEAR UNUSED BITS
60 OB(500)=B11                 *SET NEXT ADDR(UPPER 12 BITS)
   IF (B11.GE.6) GOTO 36         *CHECK FOR A COMPLETE TURN 
   GOTO 34 WHILE (B7+1.NE.3)      *DO NEXT FUNCTION 
   GOTO 32 WHILE (B1+1.NE.20)     *REPEAT 16 TIMES
   IF (B2.EQ.0) EXIT
   MSG 3 (B2) TO DAYFILE
   EXIT 
* 
* 
62 MSG 20 TO LINE 0 
64 MSG EM TO LINE 1 
65 B2=B2+1                        *BUMP ERROR COUNT 
   IF (ES.AND.SE.NE.0) GOTO 66    *SEE IF SCOPING LOOP
   IF (ES.AND.RC.NE.0) GOTO 54
66 PICTURE
   HALT 
   BLANK
   MSG 4 TO DISPLAY,PRINT 
   GOTO 54
70 MSG 16 (7) TO LINE 0 
   GOTO 64
71 MSG 16 (B5) TO LINE 0
   GOTO 64
72 MSG 1 TO LINE 0
   MSG 11 (WC,B14) TO LINE 1
   GOTO 65
73 MSG 7 TO LINE 0
   GOTO 64
74 MSG B5 TO LINE 0 
   MSG 5 TO LINE 1
   B15=OB(501).RS.6 
   MSG 13 (OB(500),B15) TO LINE 2 
   B15=B12.RS.6 
   MSG 14 (B10,B15) TO LINE 3 
   B15=SB(2).RS.6 
   MSG 15 (SB(1),B15) TO LINE 4 
   GOTO 65
75 MSG 24 (SB(0)) TO LINE 0 
   GOTO 65
77 END 30 
COMPILE   - PDP04 - 
   MODULE PDP05,6000(500) 
*** WRITE/READ/COMPARE DATA CHECK 
**
*   PDP05 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW
* 
*         ************************************************
*         *                                              *
*         * PDP05 ISSUES REQUESTS TO THE PDP COMPUTER    *
*         *                                              *
*         ************************************************
* 
*         UNLIKE THE PRECEDENT MODULES, PDP05 DOES REQUESTS 
*         TO THE PDP COMPUTER. THE MAIN GOAL OF THIS MODULE 
*         IS THE CHECKING OF THE DATA PATH BETWEEN THE
*         INTERFACE AND THE PDP COMPUTER. 
*         BASICALLY THE MODULE DOES:  
*                 LOAD ADDRESS AT LOCATION 002000 
*                 WRITE 400B PP WORDS FROM OB 
*                 LOAD ADDRESS AT LOCATION 002000 
*                 READ 400B PP WORDS INTO IB (2 WORDS ONLY
*                      IF CONSTANT ADDRESSING MODE) 
*                 COMPARE OB AND IB 
*         EACH PASS USES A NEW PATTERN DEPENDING ON THE 
*         VALUE OF REGISTER B13:  
*                B13=1         PATTERN=7777 
*                    2                 0000 
*                    3                 2525 
*                    4                 5252 
*                    5                 ALT FF/00 (HEX)
*                    6                 ALT A5/5A (HEX)
*                    7                 RANDOM 
*                   THRU               ...
*                    100B              RANDOM 
*         THE PATTERN NUMBER (B13) IS SHOWN AT THE OPERATOR 
*         CONSOLE B DISPLAY 
*         3 FULL RUNS WITH ALL PATTERNS ARE EXECUTED IN 3 
*         DIFFERENT MODES.
*         MODE 1  (B6=1) USING ADDRESS INCREMENTING MODE
*         MODE 2  (B6=2) USING ADDRESS DECREMENTING MODE
*         MODE 3  (B6=3) USING ADDRESS CONSTANT MODE
* 
*         NOTE. IN MODE 3, AN INPUT OF 2 WORDS ONLY IS
*         POSSIBLE, SO THE DATA RECEIVED IS COMPARED WITH 
*         THE LAST 16 BIT BYTE SENT TO THE PDP COMPUTER.
* 
*         WHEN ALL MODES ARE EXHAUSTED, THE ENTIRE TEST IS
*         REPEATED 50 TIMES.
* 
*         AFTER ANY WRITE OR READ, THE STATUS IS CHECKED
*         FOR ANY ERROR AND THE DMA STATUS IS CHECKED FOR 
*         THE EXPECTED INCREMENTED OR DECREMENTED OR
*         CONSTANT VALUE. 
* 
*         WHEN AN ERROR IS DETECTED, THE MODULE IS STOPPED
*         AND THE USER CAN SET THE REPEAT CONDITION SWITCH
*         (SETSW,RC), CLEAR THE STOP ERROR SWITCH (CLRSW,SE)
*         AND THEN DO A GO COMMAND (G), ENTERING IN THIS
*         WAY IN THE SCOPING LOOP SITUATION. AT THIS TIME 
*         A PASS COUNT AND AN ERROR COUNT IS GIVEN AT THE 
*         OPERATOR CONSOLE B DISPLAY. 
* 
*         ************************************************
*         *                                              *
*         * PDP05 DOES NOT REQUIRE ANY PARAMETER         *
*         * HOWEVER,P4 CAN BE USED AS A PRESET PDP       *
*         * ADDRESS AND P6 AS A PRESET DATA PATTERN.     *
*         *                                              *
*         ************************************************
* 
*         IF P5=4XXX , P4 IS TAKEN AS THE UPPER 12 BITS OF
*                    AN 18 BITS PRESET ADDRESS WHOSE LOWER
*                    6 BITS ARE CLEARED.
*                    EXAMPLE:P5=4XXX AND P4=1234 IMPLIES
*                    A PRESET ADDRESS OF 123400 
*                    EXAMPLE:P5=4XXX AND P4=0000 IMPLIES
*                    A PRESET ADDRESS OF 000000 
*                    IT IS UP TO THE OPERATOR TO USE A
*                    LEGAL (EXISTING) PDP ADDRESS, IF NOT 
*                    AN ABORT WILL BE DETECTED ON THE FIRST 
*                    OUTPUT 
* 
*         THE ADDRESSING MODE MAY ALSO BE PRESELECTED BY
*         THE OPERATOR BY SETTING THE LOWER 2 BITS OF P5: 
*         IF P5=XXX1 ,MODE 1 ADDRESS INCREMENTING WILL BE 
*                    USED  (B6=1) 
*         IF P5=XXX2 ,MODE 2 ADDRESS DECREMENTING WILL BE 
*                    USED  (B6=2) 
*         IF P5=XXX3 ,MODE 3 ADDRESS CONSTANT WILL BE 
*                    USED  (B6=3) 
*         IF P5=XXX0 ,ALL 3 MODES ARE CHECKED AS EXPLAINED
*                    BEFORE 
*         IF P5=2XXX , P6 WILL BE TAKEN AS A PRESET DATA
*                    PATTERN TO FILL THE OUTPUT BUFFER OB 
* 
*         PARAMETERS P4,P5 AND P6 ARE A WAY OF SCOPING A
*         PDP I/O TRANSFER USING A GIVEN ADDRESS, A GIVEN 
*         MODE AND A GIVEN DATA. TO DO SO, THE USER MUST
*         SET THE PARAMETERS, SET THE REPEAT CONDITION
*         SWITCH (SETSW,RC), CLEAR THE STOP ERROR SWITCH
*         (CLRSW,SE) AND RUN PDP05 (R,PDP05)
* 
*         NOTE. A PARAMETER CHANGE IS NOT VALIDATED AFTER 
*               AN ERROR STOP IF THE REPEAT CONDITION 
*               IS ALSO SELECTED. 
* 
* 
* 
* 
* 
* 
*   DESCRIPTION 
* 
*         1.BOOTSTRAP PDP COMPUTER
*         2.CLEAR LOOPBACK TEST MODE
*         3.GET STATUS TO CLEAR ANY ERROR BIT 
*         4.SET UP ADDRESSING MODE  (START WITH MODE 1) 
*         5.SET UP THE PATTERN NUMBER (START WITH PATT 1) 
*         6.RESERVE CHANNEL 
*         7.LOAD ADDRESS REGISTER 
*         8.WRITE 400B PP WORDS IN THE SELECTED ADDR MODE 
*         9.CHECK BOTH STATUS 
*         10.LOAD ADDRESS REGISTER
*         11.READ 400B PP WORDS IN THE SELECTED ADDR MODE 
*                 ONLY 2 WORDS ARE READ IF CONST ADDR MODE
*         12.CHECK BOTH STATUS
*         13.COMPARE INPUT AND OUTPUT BUFFERS 
*         14.REPEAT FROM STEP 6 IF RC IS SELECTED 
*         15.REPEAT 64 TIMES WITH NEXT PATTERN FROM STEP 5
*         16.REPEAT 3 TIMES WITH NEXT ADDR MODE FROM STEP 4 
*         17.REPEAT 50 TIMES THE WHOLE TEST FROM STEP 4 
* 
*         NOTE. IF AN ERROR IS DETECTED IN STEPS 1,2 OR 3 
*               THE RC SCHEME IS NOT APPLICABLE. THE USER 
*               MUST IN THIS CASE RUN MODULE PDP01. 
* 
* 
* 
* 
* 
*   ERRORS DETECTED 
* 
*         ANY STATUS ERROR, ANY ABORT ON ANY COMMAND AND
*         ANY DATA ERROR IS DETECTED. 
*         ILLEGAL PARAMETER P5 IS ALSO REPORTED IF ANY
*         BIT 2 THRU 9 IS SET.
* 
* 
* 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         ALL APPLICABLE LOW LEVEL PRODUCT OVERLAY ERROR
*         CODES AND MESSAGES IF THEY OCCUR, PLUS THE
*         FOLLOWING ERROR MESSAGES: 
*         1.PDP05 - ILLEGAL PARAMETER P(5)
*         2.PDP05 - ABORT ON (FOUT XX) COMMAND
*         3.PDP05 - ABORT ON (FIN XX) COMMAND 
*         4.PDP05 - ABORT ON DCN,FUNC OR STATUS COMMAND 
*         5.PDP05 - STATUS ERROR AFTER I/O  (FUNCTION XX) 
*         6.PDP05 - DATA COMPARE ERROR
*         7.PDP05 - TRANSFER WORD COUNT ERROR AFTER FUNC XX 
* 
*         MESSAGES 2,3,5 AND 7 GIVE THE HARDWARE FUNCTION 
*         EXECUTED (XX) TO INITIATE THE I/O TRANSFER. 
*         SINCE PDP05 IS THE FIRST MODULE THAT ISSUES 
*         REQUESTS TO THE PDP COMPUTER, AN ABORT OR WORD
*         COUNT ERROR CAN BE DUE TO A *NO ANSWER* FROM
*         THE PDP ACCESS. 
*         MORE DETAILS ARE GIVEN FOR MESSAGES 2,3,4,5,6 
*         AND 7, INCLUDING THE LAST STATUS,LOADED ADDRESS,
*         EXPECTED ADDRESS, DMA STATUS, OUTPUT WORD COUNT,
*         EXPECTED DATA, RECEIVED DATA  .ETC..... 
* 
* 
* 
*         YOU MAY FIND THE FOLLOWING MESSAGES:  
*            DATA BUFFERS AROUND ERROR: 
*            EXPECTED (STARTING POSITION ZZ)
*            AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH
*            IIII JJJJ KKKK LLLL MMMM NNNN OOOO PPPP
*            RECEIVED (STARTING POSITION ZZ)
*            AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH
*            IIII JJJJ KKKK LLLL MMMM NNNN OOOO PPPP
* 
*         AAAA THROUGH PPPP ARE THE EXPECTED AND RECEIVED 
*         DATA. AAAA IS TAKEN FROM THE OUTPUT BUFFER WORD 
*         POSITION ZZ AND INPUT BUFFER WORD POSITION ZZ.
*         (AROUND ERROR) MEANS THAT THE ERROR DATA WORD(S)
*         IS (ARE) SITUATED ABOUT IN THE MIDDLE OF THE 16 
*         SHOWN BYTES, GIVING THE USER A LARGER VIEW OF THE 
*         LAST TRANSFERS. 
*         THE POSITION ZZ IS ALWAYS CALCULATED IN SUCH A
*         WAY THAT THE CORRESPONDING WORD REFERS TO THE 
*         UPPER 12 BITS OF A 16 BIT PDP BYTE (SEE PDP02 
*         OVERVIEW   FORMAT 0)
* 
* 
* 
* 
* 
* 
  
*   PDP05 - INTERNAL DOCUMENTATION
* 
*   MODULES CALLED
* 
*         PDP980     INITIALIZER OF PDP05 
*         PDP981     PROCESSOR FOR PDP05 ERROR MESSAGES 
* 
* 
* 
* 
* 
* 
*   REGISTER USAGE
* 
*         B1=PASS COUNT 
*         B2=ERROR COUNT
*         B4=SCOPING LOOP PASS COUNT
*         B6=CURRENT ADDRESSING MODE
*         B7=ERROR FLAG 
*         B8=EXPECTED DMA AFTER READ (UPPER 12 BITS)
*         B9=EXPECTED DMA AFTER READ (LOWER 6 BITS) 
*         B11=EXPECTED DMA AFTER WRITE (UPPER 12 BITS)
*         B12=EXPECTED DMA AFTER WRITE (LOWER 6 BITS) 
*         B13=PATTERN NUMBER
* 
* 
* 
* 
* 
* 
* 
 1 FORMAT  PDP05 - WRITE/READ/COMPARE  (PDP MEMORY) 
 3 FORMAT  PDP05 - ERR=*OCT LOOP=*OCT 
 4 FORMAT  PDP05 - ERROR(S) IN MODULE=*DEC
 5 FORMAT  PDP05 - PATT=*OCT PASS=*OCT
* 
   DATA (OB(500),CON) 7777B,0,2525B,5252B 
* 
* 
30 MSG 1 TO DISPLAY,PRINT      *SET RUNNING MESSAGE 
* CALL SUBMODULE PDP980 TO INITIALIZE PDP05 
   B7=0 
   CALL 980 
* 
34 B12=0                       *EXPECTED LOWER 6 BITS 
   B9=0 
* SET UP ADDRESSING MODE
   IF (B5.EQ.0) GOTO 37 
   B6=B5
36 B1=B1+1                     *INCREMENT PASS COUNT
   IF (B1.LE.62) GOTO 40       *REPEAT 50 TIMES 
   EXIT 
37 B6=B6+1                    *USE NEXT ADDRESS MODE
   IF (B6.LT.4) GOTO 40 
   B6=1                     *ADDRESS INCREMENTING MODE
   GOTO 36
* CALCULATE EXPECTED DMA STATUS ACCORDING 
* TO THE ADDRESSING MODE
40 IF (B6.NE.1) GOTO 42 
   B11=OB(470)+6            *INCREMENTING MODE
   B8=B11 
   B9=0600
   GOTO 45
* 
41 DUP P6 TO OB FOR 400     *P6 IS PRESET PATTERN 
   GOTO 50
* 
42 IF (B6.EQ.2) GOTO 43 
   B11=OB(470)              *CONSTANT MODE
   B8=B11 
   GOTO 45
43 B8=OB(470)-7             *DECREMENTING MODE
   IF (OB(470).LT.7) B8=B8+1   *CARE WITH SUBTRACTIVE ADDER 
   B9=7200
   B11=B8+1 
45 B13=0                    *START WITH FIRST PATTERN 
   IF (P5.AND.2000.NE.0) GOTO 41   *IF PRESET PATTERN 
47 B13=B13+1                *NEXT PATTERN 
   IF (B13.GT.100) GOTO 34    *IF LAST PATTERN
   IF (B13.LT.5) DUP OB(B13+477)TO OB FOR 400 
   IF (B13.EQ.5) DUP 8 BITS OF 777/000 TO OB FOR 400
   IF (B13.EQ.6) DUP 8 BITS OF 525/252 TO OB FOR 400
   IF (B13.GT.6) RANDOM TO OB FOR 400 
50 MSG 5 (B13,B1) TO DISPLAY  *INFORM OPERATOR
   B0=B6-1.LS.3             *PREPARE HARDWARE FUNCTION
* 
* MAIN LOOP 
* 
52 RES
   B7=0                     *CLEAR ERROR FLAG 
   GOSUB 60                 *LOAD ADDRESS REGISTER
   B3=B0+2                  *WRITE MODE 
   FOUT B3, ABT 64          *WRITE 400B WORDS 
   GOSUB 61                 *GET BOTH STATUS
   IF (WC.NE.B14) GOTO 62 
   IF (SB(0).NE.0) GOTO 66  *VERIFY BOTH STATUS 
   IF (SB(1).NE.B11) GOTO 66
   IF (SB(2).NE.B12) GOTO 66
53 GOSUB 60                 *LOAD ADDRESS REGISTER
   B3=B0+1                  *READ MODE
   IF (B3.EQ.21) WC=2       *ONLY 2 WORDS IN CONST MODE 
   FUNC B3, ABT 70          *READ 400B (OR 2) WORDS 
   INB CHAIN, ABT 65
   DELAY 62 USEC            *GIVE TIME TO READ 4 WORDS AHEAD
   DCN, ABT 70
   GOSUB 61                 *GET BOTH STATUS
   IF (WC.NE.B14) GOTO 62 
   IF (SB(0).NE.0) GOTO 63  *VERIFY BOTH STATUS 
   IF (SB(1).NE.B8) GOTO 63 
   IF (SB(2).NE.B9) GOTO 63 
51 IF (B6.NE.3) GOTO 54 
   B10=OB(376).AND.17.LS.8  *CALCULATE EXPECTED 2 WORDS 
   B15=OB(377).RS.4.XOR.B10 
   B10=OB(377).AND.17.LS.8
   IF (IB(0).NE.B15) GOTO 74   *COMPARE 
   IF (IB(1).AND.7400.NE.B10) GOTO 74 
   GOTO 55
54 COMPARE OB TO IB FOR WC, ABT 67
55 B4=B4+1                  *BUMP SCOPING LOOP COUNT
   IF (ES.AND.RC.EQ.0) GOTO 56   *IF NOT RC 
   MSG 3 (B2,B4) TO DISPLAY 
   GOTO 52
* 
56 IF (P5.AND.2000.EQ.0) GOTO 47
   GOTO 34
* SUBROUTINE TO LOAD DMA ADDRESS FROM OB(470/471) 
* (RESTORE WC AND BA BEFORE RETURNING)
60 WC=2 
   BA=470 
   FOUT 7, ABT 73 
   WC=400                   *RESTORE I/O WORD COUNT 
   BA=0                     *AND BEGINNING ADDRESS
   RETURN 
* SUBROUTINE TO GET BOTH STATUS 
* (SAVE WT INTO B14)
61 B14=WT 
   FUNC 5, ABT 73 
   STATUS 1 WORDS TO SB, ABT 73 
   FUNC 15, ABT 73          *DMA STATUS 
   STATUS 2 WORDS TO SB(1), ABT 73
   RETURN 
* SET ERROR FLAGS 
64 B7=B7+1                  *FOUT ABORT FLAG
65 B7=B7+2                  *INB CHAIN ABORT FLAG 
   GOSUB 61                 *GET STATUS 
66 B7=B7+4                  *OUTPUT STATUS ERROR FLAG 
63 B7=B7+200                *INPUT STATUS ERROR FLAG
62 B7=B7+100                *WORD COUNT ERROR FLAG
67 B7=B7+10                 *DATA COMPARE ERROR FLAG
74 B7=B7+40                 *DATA ERROR FLAG
   GOTO 71
70 B7=B7+20                 *DCN,FUNC OR STATUS ABORT FLAG
71 B2=B2+1                  *BUMP ERROR COUNT 
   IF (ES.AND.SE.NE.0) GOTO 72
   IF (ES.AND.RC.NE.0) GOTO 55  *SCOPING LOOP SELECTED
72 CALL 981                 *PROCESS ERROR MESSAGES 
   IF (ES.AND.RC.NE.0) GOTO 55
   IF (B4.EQ.4) GOTO 53 
   GOTO 55
73 ENDSUB GOTO 70 
77 END 30 
COMPILE   - PDP05 - 
   MODULE PDP06,6000(500) 
*** PDP FULL ADDRESS TEST 
**
*   PDP06 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW
* 
*         ************************************************* 
*         *                                               * 
*         * PDP06 ISSUES REQUESTS TO THE PDP COMPUTER     * 
*         *                                               * 
*         ************************************************* 
* 
* 
*         ************************************************* 
*         *                                               * 
*         * PDP06 DOES NOT REQUIRE ANY PARAMETER.         * 
*         * HOWEVER, P7 MAY BE USED AS A PRESET LWA+2     * 
*         *                                               * 
*         ************************************************* 
* 
*         PDP06 WILL FIRST VERIFY PARAMETER P7. 
*         IF P7 IS EQUAL TO ZERO, SUBMODULE PDP982 WILL BE
*         CALLED TO SEARCH FOR THE LAST WORD ADDRESS PLUS 2 
*         OF THE WHOLE AVAILABLE PDP MEMORY.
*         IF P7 IS DIFFERENT OF ZERO, IT IS CONSIDERED AS 
*         THE UPPER 12 BITS OF AN 18 BIT ADDRESS WHOSE
*         LOWER 6 BITS ARE ZERO. THIS ADDRESS WILL BE TAKEN 
*         AS THE LAST WORD ADDRESS PLUS 2 FOR THE FULL
*         ADDRESS TEST. 
*         P7 IS ACCEPTED ONLY IF THE LOWER 6 BITS ARE 00. 
*         THE MINIMUM PDP MEMORY SIZE IS SUPPOSED TO BE 
*         8 K (LOCATIONS 000000 THRU 017776), THUS THE
*         MINIMUM LAST WORD ADDRESS PLUS 2 ACCEPTED IS
*         020000. IF P7 IS LESS THAN 0200, IT WILL BE 
*         REJECTED. 
*         EX: P7=0200 IMPLIES LWA+2=020000
*             P7=4600 IMPLIES LWA+2=460000
*             P7=0000 IMPLIES: LEAVE PDP06 CALCULATE LWA+2
*             P7=0310 IS ILLEGAL (LOWER 6 BITS MUST BE 00)
*             P7=0100 IS ILLEGAL (MIN PDP MRY SIZE IS 8 K)
* 
*         IF THE SELECTED PDP LWA+2 IS GREATER THAN THE 
*         THE REAL PDP LWA+2, THE TEST WILL FAIL. IT IS UP
*         TO THE USER TO SELECT AN ADDRESS SMALLER OR EQUAL 
*         TO THAT REAL LWA+2, BUT NOT GREATER.
*         BEFORE DOING THE FULL ADDRESS TEST, THE PDP 
*         COMPUTER IS BOOTSTRAPPED (FUNCTION 34) AND A
*         *WAIT* INSTRUCTION IS STORED INTO LOCATION
*         002000 AND EXECUTED BY ENTERING THE VALUE 
*         002000 INTO LOCATION 000000.
*         WHEN THE BOOTSTRAP LOOP FINDS LOCATION 000000 
*         DIFFERENT OF ZERO, IT GOES AND JUMP TO THE
*         CONTENTS OF LOCATION 000000,THUS, JUMP TO 
*         LOCATION 002000, WHERE IT FINDS A *WAIT*
*         INSTRUCTION.
*         PDP COMPUTER BEING WAITING, THE FULL ADDRESS TEST 
*         CAN BE PERFORMED FROM LOCATION 000000 TO LOCATION 
*         GIVEN BY P7 OR CALCULATED BY PDP982.
*         THE FOLLOWING MESSAGE TELLS THE USER WHAT IS THE
*         LWA+2 USED BY THE TEST: 
*         PDP06 - LWA+2 USED FOR FULL ADDRESS TEST=XXXXXX 
* 
* 
* 
*         PDP06 IS COMPOSED OF 2 PARTS: 
*             THE FIRST PART WILL WRITE INTO PDP MEMORY 
*             AN INCREMENTING VALUE STARTING AT LOCATION
*             000000 TILL LOCATION 377776 IS REACHED.THEN 
*             A DECREMENTING VALUE IS STORED INTO PDP 
*             STARTING AT LOCATION 400000, LIKE SHOWN BELOW 
*               LOCATION     DATA 
*                000000     000000
*                000002     000001
*                000004     000002
*                000006     000003
*                000010     000004
*                000012     000005
*                   .          .
*                   .          .
*                377774     177776
*                377776     177777
*                400000     177777
*                400002     177776
*                400004     177775
*                   .          .
*                   .          .
*                477776     140000
*                500000     137777
*                   .          .
*                   .          .
*                600000     077777
*                   .          .
*                   .          .
*                700000     037777
*                   .          .
*                770000     003777
*                   .          .
*                774000     001777
*                   .          .
*                775000     001377
*                   .          .
*                777774     000001
*                777776     000000
* 
*             THE EXAMPLE SHOWN HERE SUPPOSE A FULL PDP 
*             MEMORY SIZE OF 262K RAM,FROM MEMORY LOCATION
*         000000 TO MEMORY LOCATION 777776. 
*         THUS, LWA IS:        777776 
*               LWA+2 IS:      000000 
* 
*             THE SECOND PART DOES THE READ AND COMPARE 
*             THE DATA. 
* 
*         IF DATA DOES NOT COMPARE, MESSAGES CONTAINING 
*         EXPECTED DATA, RECEIVED DATA AND PDP LOCATION 
*         TESTED ARE ISSUED TO THE OPERATOR WHO MUST
*         ANALYZE THEM TO SEE WHICH ADDRESS BIT IS FAILING
*               A SIMPLE EXAMPLE: 
*         PDP06 - DATA COMPARE ERROR
*         EXPECTED DATA:000000   RECEIVED DATA:004000 
*         PDP LOCATION TESTED:000000
* 
*         THE EXAMPLE SHOWS THAT ADDRESS BIT 12 IS FAILING. 
*         WHEN WRITING 004000 INTO LOCATION 010000, ADDRESS 
*         BIT 12 HAS BEEN DROPPED AND THE DATA 004000 HAS 
*         BEEN WRITTEN INTO LOCATION 000000.
*         OF COURSE, AN EVENTUALITY OF DROPPING DATA BIT 11 
*         IS ALSO POSSIBLE, BUT DATA ARE CHECKED IN MODULE
*         PDP05 WHICH MUST BE RUN BEFORE PDP06. 
* 
* 
*         PDP06 IS THE ONLY MODULE THAT DOES NOT ACCEPT 
*         THE REPEAT CONDITION (SELECTING THE REPEAT
*         CONDITION WOULD REPEAT THE ENTIRE MODULE).
*         IT WOULD BE USELESS IN THE ABOVE EXAMPLE TO 
*         REPEAT READING LOCATION 000000. BUT THE USER, 
*         UNDERSTANDING THAT ADDRESS BIT 12 IS FAILING, 
*         CAN DO THE FOLLOWING: 
*         -SET PARAMETER P4=0100 (PRESELECT PDP LOC 010000) 
*         -SET PARAMETER P5=4003
*         -SET REPEAT CONDITION SWITCH  (SETSW,RC)
*         -CLEAR STOP ERROR SWITCH   (CLRSW,SE) 
*         -RUN PDP05   (R,PDP05)  AND SCOPE 
*            SEE MORE EXPLANATION IN PDP05 OVERVIEW 
* 
* 
*         WHEN THE MODULE IS RUNNING, A MESSAGE INDICATING
*         THE PASS NUMBER AND THE MODE NUMBER (0 IS WRITE 
*         PATH, 1 IS READ PATH) IS SHOWN AT THE OPERATOR
*         CONSOLE B DISPLAY.
* 
* 
* 
* 
* 
* 
* 
* 
*   DESCRIPTION 
* 
*         1.USE P7 AS LWA+2 OR CALCULATE IT BY CALLING
*           MODULE PDP982 
*         2.BOOTSTRAP PDP AND THEN HUNG IT ON A *WAIT*
*           INSTRUCTION 
*         3.RESERVE CHANNEL AND CLEAR FAST LOOP COUNT 
*         4.LOAD ADDRESS  (STARTING WITH LOC 000000)
*         5.WRITE DATA  (STARTING WITH VALUE 000000)
*         6.GET AND CHECK STATUS
*         7.REPEAT 1000B TIMES FROM STEP 4 WITH NEXT
*           ADDRESS AND NEXT VALUE
*         8.REPEAT FROM STEP 3 TILL LWA+2 IS REACHED
*         9.RESERVE CHANNEL AND CLEAR FAST LOOP COUNT 
*         10.LOAD ADDRESS   (STARTING WITH LOC 000000)
*         11.READ DATA
*         12.GET AND CHECK STATUS 
*         13.COMPARE DATA 
*         14.REPEAT 1000B TIMES FROM STEP 4 WITH NEXT 
*            ADDRESS
*         15.REPEAT FROM STEP 9 TILL LWA+2 IS REACHED 
*         16.REPEAT 4 TIMES FROM STEP 3 
* 
* 
* 
* 
* 
* 
*   ERRORS DETECTED 
* 
*         ANY ABORT ON ANY COMMAND, ANY PARITY ERROR OR 
*         TIMEOUT, ANY DATA ERROR ARE DETECTED. 
*         ILLEGAL PARAMETER P7 IS ALSO REPORTED.
* 
* 
* 
* 
* 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         ALL APPLICABLE LOW LEVEL PRODUCT OVERLAY ERROR
*         CODES AND MESSAGES IF THEY OCCUR, PLUS THE
*         FOLLOWING ERROR MESSAGES: 
*         1.PDP06 - ILLEGAL PARAMETER (P7 MUST BE XX00) 
*         2.PDP06 - ILLEGAL PARAMETER (PDP MIN MRY SIZE=8K) 
*         3.PDP06 - ABORT ON (FUNC) COMMAND 
*         4.PDP06 - ABORT ON (FOUT 7) COMMAND 
*         5.PDP06 - ABORT ON (FIN 21) COMMAND 
*         6.PDP06 - ABORT ON (FOUT 22) COMMAND
*         7.PDP06 - ABORT ON STATUS REQUEST 
*         8.PDP06 - STATUS ERROR AFTER WRITE (FOUT 22)
*         9.PDP06 - STATUS ERROR AFTER READ (FIN 21)
*         10.PDP06 - DATA COMPARE ERROR 
*         11.PDP983 - ABORT ON STATUS REQUEST 
* 
*         MESSAGES 3 THROUGH 11 ARE ISSUED BY THE ERROR 
*         PROCESSOR MODULE PDP983.
*         MESSAGES 5,6,8 AND 9 ARE FOLLOWED BY MESSAGES 
*         INDICATING THE WORD COUNT, THE LOADED ADDRESS,
*         THE EXPECTED ADDRESS, THE ACTUAL DMA STATUS,
*         AND THE LAST STATUS.
*         MESSAGE 10 IS FOLLOWED BY THE EXPECTED DATA,
*         THE RECEIVED DATA AND THE PDP LOCATION TESTED.
* 
*         IF P7 IS NOT USED AS THE LWA+2, PDP982 IS RUN 
*         TO CALCULATE THE LWA+2. SEE PDP982 FOR EVENTUAL 
*         ERROR MESSAGES ISSUED.
* 
* 
* 
* 
* 
* 
* 
  
*   PDP06 - INTERNAL DOCUMENTATION
* 
*   MODULES CALLED
* 
*         PDP982  CALCULATE PDP LWA+2 OF AVAILABLE MEMORY 
*         PDP983  PROCESSOR FOR ERROR MESSAGES
* 
* 
* 
* 
* 
* 
*   REGISTER USAGE
* 
*         B1=PASS COUNT 
*         B2=ERROR COUNT
*         B5=FAST LOOP COUNT
*         B8=READ PATH FLAG 
*         B9=DATA INCREMENT FLAG
*         B11=UPPER 12 BITS OF LWA+2
*         B12=LOWER 12 BITS OF LWA+2
* 
* 
* 
* 
* 
* 
 1 FORMAT  PDP06 - PDP FULL ADDRESS TEST
 2 FORMAT  PDP06 - ILLEGAL PARAMETER  (P7 MUST BE XX00) 
 3 FORMAT  PDP06 - ILLEGAL PARAMETER (PDP MIN MRY SIZE=8K)
 4 FORMAT  PDP06 - ERROR(S) IN MODULE=*DEC
 5 FORMAT  PDP06 - LWA+2 USED FOR FULL ADDRESS TEST=*OCT*O
 6 FORMAT  PDP06 - PASS=*O MODE=*O
* 
   DATA (OB(500),CON) 0,400,100,0 
* 
* 
30 MSG 1 TO DISPLAY,PRINT    *SET RUNNING MESSAGE 
32 IF (P7.NE.0) GOTO 33      *IF GIVEN LWA+2
   B0=0                      *REQUEST PDP982 MESSAGE
   CALL 982                  *CALCULATE LWA+2 
   B11=B11.AND.7700 
   GOTO 36
33 IF (P7.AND.77.EQ.0) GOTO 34
   MSG 2 TO DISPLAY,PRINT    *INFORM OPERATOR 
   GOTO 77                   *END MODULE
34 IF (P7.GE.200) GOTO 35    *IF MIN MRY SIZE IS OK 
   MSG 3 TO DISPLAY,PRINT 
   GOTO 77
35 B11=P7                    *ACCEPT PARAMETER AS LWA+2 
* 
36 B12=0                   *LOWER 6 BITS OF LWA+2 
   MSG 5 (B11,0) TO PRINT  *TELL OPERATOR THE LWA+2 USED
   TIMEOUT TYPEB=36 USEC     *GIVE TIME FOR PDP ANSWER
* BOOTSTRAP PDP COMPUTER
   RES
   FUNC 34, ABT 64           *BOOTSTRAP FUNCTION
   DELAY 900 MSEC            *GIVE TIME TO EXECUTE
   FUNC 6, ABT 64            *CLEAR LOOPBACK TEST MODE
* WRITE INSTRUCTION *WAIT* INTO LOCATION 002000 
   WC=2 
   OB(470)=20                *LOAD DMA ADDRESS=002000 
   OB(471)=0
   BA=470 
   FOUT 7, ABT 65 
   BA=500                    *WRITE DATA=000001 
   FOUT 22, ABT 67
* GET PDP OUT OF BOOTSTRAP LOOP BY ENTERING INTO LOCATION 
* 000000 THE ADDRESS OF THE *WAIT* INSTRUCTION (002000).
   BA=470                    *LOAD ADDRESS AT LOC 000000
   OB(470)=0
   FOUT 7, ABT 65 
   BA=502                    *WRITE DATA=002000 
   FOUT 22, ABT 67
* 
* MAIN PROGRAM
* 
37 B1=0                      *CLEAR PASS COUNT
40 B7=0                      *CLEAR ERROR FLAG
* 
   B8=0                      *CLEAR READ PATH FLAG
42 WC=2                      *PREPARE WRITE/READ/LOAD ADDR
   MSG 6 (B1,B8) TO DISPLAY 
   OB(470)=0                 *START AT PDP LOCATION 000000
   OB(471)=0
   OB(474)=0                 *START WITH DATA 000000
   OB(475)=0
   B9=0                      *CLEAR DATA DECREMENT FLAG 
* 
44 B5=0                      *CLEAR FAST LOOP COUNT 
   RES                       *RESERVE CHANNEL 
* 
* MAIN LOOP 
* 
46 BA=470 
   FOUT 7, ABT 65            *LOAD DMA FROM OB(470/471) 
   BA=474 
   IF (B8.EQ.0) GOTO 47      *IF WRITE PATH 
   FIN 21, ABT 66            *READ 2 WORDS INTO IB(474/475) 
   GOTO 50
47 FOUT 22, ABT 67           *WRITE 2 WORDS FROM OB(474/475)
50 FUNC 5, ABT 70            *REQUEST STATUS
   STATUS 1 WORDS TO SB, ABT 70 
   IF (SB.NE.0) GOTO 71      *IF BAD STATUS 
   IF (B8.EQ.0) GOTO 51      *IF WRITE PATH 
   IF (IB(474)NE.OB(474)) GOTO 72   *COMPARE DATA 
   IF (IB(475).AND.7400.NE.OB(475)) GOTO 72 
* PREPARE NEXT 16 DATA BIT WORD 
51 IF (B9.EQ.0) GOTO 53      *IF INCREMENT DATA 
   IF (OB(475).EQ.0) GOTO 52
   OB(475)=OB(475)-400
   GOTO 54
52 OB(474)=OB(474)-1
   OB(475)=7400 
   GOTO 54
53 OB(475)=OB(475)+400
   IF (OB(475).EQ.0) OB(474)=OB(474)+1
* PREPARE NEXT LOAD ADDRESS 
54 OB(471)=OB(471)+200
   IF (OB(471).EQ.0) OB(470)=OB(470)+1
* 
   GOTO 46 WHILE (B5+1.NE.1000)   *FAST LOOP 1000B PASSES 
   IF (OB(470).EQ.B11) GOTO 56
   IF (OB(470).NE.4000) GOTO 44 
   B9=1                      *SET DATA DECREMENT FLAG 
   OB(474)=7777              *START WITH DATA=177777
   OB(475)=7400 
   GOTO 44
56 IF (B8.NE.0) GOTO 57      *IF READ PATH JUST DONE
   B8=1                      *START READ PATH 
   GOTO 42
57 GOTO 40 WHILE (B1+1.NE.4)  *REPEAT 4 TIMES 
   IF (ES.AND RM.NE.0) GOTO 37
   IF (B2.EQ.0) EXIT
   MSG 4 (B2) TO DAYFILE
   EXIT 
* 
* SET CORRESPONDING ERROR FLAGS 
64 B7=B7+1
65 B7=B7+2
66 B7=B7+4
67 B7=B7+10 
70 B7=B7+20 
   MSG EM TO LINE 1 
71 B7=B7+40 
72 B7=B7+100
74 B2=B2+1          *BUMP ERROR COUNT 
   CALL 983         *PROCESS ERROR MESSAGES 
   GOTO 36
77 END 30 
COMPILE   - PDP06 - 
   MODULE PDP07,6000(500) 
*** BOOTSTRAP/INTERRUPT TEST
**
*   PDP07 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW
* 
*         ************************************************
*         *                                              *
*         * PDP07 ISSUES REQUESTS TO THE PDP COMPUTER    *
*         *                                              *
*         ************************************************
* 
* 
*         PDP07 TESTS THE BOOTSTRAP AND INTERRUPT FUNCTIONS 
*         IN THE FOLLOWING WAY: 
*         A BOOTSTRAP FUNCTION IS ISSUED TO THE INTERFACE.
*         THE PDP MUST GO AND EXECUTE THE BOOTSTRAP PROGRAM 
*         WHICH CLEARS PDP MEMORY LOCATION 000000 AND WAIT
*         FOR THAT LOCATION TO BE DIFFERENT OF ZERO.
*         AT THAT TIME, PDP07 WILL VERIFY THAT LOCATION 0 
*         IS REALLY CLEARED AND THEN WRITE A PDP PROGRAM
*         INTO PDP MEMORY STARTING AT LOCATION 000074.
*         THIS PROGRAM IS:  
*         000074 000100  PROGRAM START ADDRESS
*         000076 000300  PSW PROCESSOR PRIORITY=6 
*         000100 012700  SET R0=000000
*         000102 000000 
*         000104 012710  MOVE FLAG (1234) TO LOCATION 000000
*         000106 001234 
*         000110 000001  WAIT 
* 
*         LOCATION 000074 CONTAINS THE STARTING ADDRESS OF
*         THE PROGRAM. STARTING AT LOCATION 000100 WILL 
*         WRITE A FLAG WORD (=1234) INTO LOCATION 000000. 
* 
*         AFTER THE PROGRAM IS WRITTEN INTO THE PDP MEMORY, 
*         IT IS READ BACK AND COMPARED, THEN AN INTERRUPT 
*         REQUEST IS SENT WITH A DATA WORD EQUAL TO 0074. 
*         THIS INTERRUPT IS SUPPOSED TO START THE PDP 
*         PROGRAM AT LOCATION 000100. AFTER SOME STATUS 
*         CHECKS, PDP07 WILL READ THE FLAG IN LOCATION
*         000000 AND COMPARE IT WITH THE FLAG SENT WITHIN 
*         THE PROGRAM.
*         WHEN THE PDP COMPUTER IS WAITING AT LOCATION
*         000110 WITH PSW PROCESSOR PRIORITY EQUAL TO 6,
*         AN INTERRUPT LEVEL 4 IS REQUESTED TO CHECK THAT 
*         THE PENDING STATUS BIT STAYS SET. 
* 
*         THE WHOLE PROCESS IS RESTARTED WITH, EACH TIME, 
*         A NEW RANDOM FLAG WORD. 
*         THE PASS COUNT IS SHOWN AT THE OPERATOR CONSOLE 
*         B DISPLAY.
*         EVERY 8 PASSES THE INTERRUPT LEVEL IS CHANGED.
*             PASS        INTERRUPT LEVEL 
*         0 THROUGH 7           4 
*         10        17          5 
*         20        27          6 
*         30        37          7 
*         40        47          4 
*         ......ETC.... 
* 
*         WHEN AN ERROR IS DETECTED, THE MODULE IS STOPPED
*         AND THE USER CAN SET THE REPEAT CONDITION SWITCH
*         (SETSW,RC), CLEAR THE STOP ERROR SWITCH (CLRSW,SE)
*         AND THEN DO A GO COMMAND (G), ENTERING IN THIS
*         WAY IN THE SCOPING LOOP SITUATION. AT THIS TIME,
*         A PASS COUNT AND AN ERROR COUNT ARE GIVEN AT THE
*         OPERATOR CONSOLE B DISPLAY. 
* 
* 
*         ************************************************
*         *                                              *
*         * PDP07 DOES NOT REQUIRE ANY PARAMETER         *
*         *                                              *
*         ************************************************
* 
* 
* 
* 
* 
* 
* 
*   DESCRIPTION 
* 
*         1.CLEAR LOOPBACK TEST MODE
*         2.RESERVE CHANNEL 
*         3.BOOTSTRAP THE PDP COMPUTER
*         4.CHECK THAT PDP LOCATION 000000 IS CLEARED 
*         5.SET UP A NEW FLAG WORD (EXCEPT IF RC SELECTED)
*         6.OUTPUT PDP PROGRAM
*         7.READ AND COMPARE PDP PROGRAM
*         8.INTERRUPT PDP WITH TRAP=0074
*         9.READ PDP LOCATION 000000 AND COMPARE WITH THE 
*           EXPECTED FLAG WORD
*         10.INTERRUPT NOW AT LEVEL 4 AND CHECK THAT STATUS 
*            PENDING BIT STAYS SET
*         11.REPEAT FROM STEP 2 IF REPEAT CONDITION 
*         12.REPEAT 100 TIMES FROM STEP 2 
* 
* 
* 
* 
* 
* 
* 
* 
*   ERRORS DETECTED 
* 
*         ANY ABORT ON ANY COMMAND, ANY STATUS ERROR AND
*         ANY DATA ERROR ARE DETECTED 
* 
* 
* 
* 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         ALL APPLICABLE LOW LEVEL PRODUCT OVERLAY ERROR
*         CODES AND MESSAGES IF THEY OCCUR, PLUS THE
*         FOLLOWING ERROR MESSAGES: 
*         1.PDP07 - ABORT ON BOOTSTRAP FUNCTION (FUNC 34) 
*         2.PDP07 - LOC 0 NOT ZERO AFTER BOOTSTRAP FUNCTION 
*         3.PDP07 - DATA COMPARE ERROR
*         4.PDP07 - FLAG NOT CORRECT IN PDP LOCATION 000000 
*         5.PDP07 - INT PENDING BIT SET FOR MORE THAN 14 USC
*         6.PDP07 - INT PENDING BIT NOT SET AFTER INT REQ 
*         7.PDP07 - ABORT ON (FOUT XX) COMMAND
*         8.PDP07 - ABORT ON COMMAND
* 
*         MESSAGE 4 IS FOLLOWED BY THE EXPECTED AND RECEIVED
*                   FLAG WORDS
*         MESSAGE 7   XX IS THE LAST INTERRUPT REQUEST
*                   FUNCTION CODE 
* 
* 
* 
* 
* 
* 
* 
  
*   PDP07 - INTERNAL DOCUMENTATION
* 
*   MODULES CALLED
* 
*         NONE
* 
* 
* 
* 
* 
* 
*   REGISTER USAGE
* 
*         B1=PASS COUNT 
*         B2=ERROR COUNT
*         B4=SCOPING LOOP PASS COUNT
*         B8=INTERRUPT FUNCTION CODE
* 
* 
* 
* 
* 
* 
 1 FORMAT  PDP07 - BOOTSTRAP/INTERRUPT TEST 
 2 FORMAT  PDP07 - PASS=*OCT
 3 FORMAT  PDP07 - ERROR(S) IN MODULE=*DEC
 4 FORMAT  PDP07 - ERR=*OCT LOOP=*OCT 
 5 FORMAT  PDP07 - ABORT ON BOOTSTRAP FUNCTION (FUNC 34)
 6 FORMAT  PDP07 - LOC 0 NOT ZERO AFTER BOOTSTRAP FUNCTION
 7 FORMAT  PDP07 - DATA COMPARE ERROR 
10 FORMAT  CHECK PDP PROGRAM STARTING LOC 0074 OR RUN PDP05 
11 FORMAT  PDP07 - FLAG NOT CORRECT IN PDP LOCATION 000000
12 FORMAT  EXPECTED FLAG=*OCT   RECEIVED FLAG=*OCT
13 FORMAT  INTERRUPT FUNC WAS:*OC    INTERRUPT VECTOR=0074
14 FORMAT  PDP07 - INT PENDING BIT SET FOR MORE THAN 14 USEC
15 FORMAT  LAST STATUS IS:*OCT
16 FORMAT  PDP07 - INT PENDING BIT NOT SET AFTER INT REQUEST
17 FORMAT  PDP07 - ABORT ON (FOUT *OC) COMMAND
20 FORMAT  PDP07 - ABORT ON COMMAND 
* 
* 
* PRESET OUTPUT BUFFER WITH PDP PROGRAM 
   DATA (OB(50),CON) 4,0,6001,2700,0,25,6200,1234,0,400,0,0 
   DATA (OB(64),CON) 0,0,0,0,0,0,0,0
* 
   DATA (OB(474),CON) 0,0,100,0,0,7400,74 
* 
* 
30 MSG 1 TO DISPLAY,PRINT     *SET RUNNING MESSAGE
   TIMEOUT TYPEB=30 USEC
   RES                        *RESERVE CHANNEL
   FUNC 6                     *CLEAR LOOPBACK TEST MODE 
* 
* 
* MAIN LOOP 
* 
* 
32 B1=0                       *CLEAR PASS COUNT 
33 MSG 2 (B1) TO DISPLAY
34 RES                        *RESERVE CHANNEL
   FUNC 34, ABT 75            *BOOTSTRAP FUNCTION 
   DELAY 900 MSEC             *GIVE TIME FOR BOOT TO EXECUTE
* READ PDP LOCATION 000000 AND CHECK FOR ZERO 
   WC=2                       *LOAD ADDRESS DMA=000000
   BA=474 
   FOUT 7, ABT 67 
   BA=470                     *READ CONSTANT ADDR MODE
   FIN 21, ABT 67 
   IF (IB(470).NE.0) GOTO 74  *BOOTSTRAP MUST CLEAR LOC O 
   IF (IB(471).AND.7400.NE.0) GOTO 74 
   IF (ES.AND.RC.NE.0) GOTO 36      *IF REPEAT CONDITION
   RANDOM TO OB(57) FOR 1     *GET NEW FLAG 
* WRITE PDP PROGRAM INTO LOCATION 000074
36 BA=474                     *LOAD ADDRESS DMA=000000
   FOUT 7, ABT 67 
   WC=400                     *WRITE INCREMENT INTO PDP 
   DUP 0 TO OB FOR 50 
   BA=0 
   FOUT 2, ABT 67 
* READ AND VERIFY PDP PROGRAM 
   WC=2                       *LOAD ADDRESS DMA=000000
   BA=474 
   FOUT 7, ABT 67 
   WC=64                      *READ INCREMENT FROM PDP
   BA=0 
   FIN 1, ABT 67
   COMPARE OB TO IB FOR WC, ABT 73
* 
* INTERRUPT PDP IN BOOTSTRAP LOOP 
   B8=B1.AND.30.+.3           *SET UP INTERRUPT FUNCTION
   WC=1                       *SEND DATA=0074 
   BA=502                     *WITH INTERRUPT REQUEST 
   FOUT B8, ABT 77
* CHECK INTERRUPT PENDING BIT NOT PERMANENT 
   DELAY 10 USEC              *GIVE TIME FOR PDP ANSWER 
   FUNC 5, ABT 67             *REQUEST STATUS AGAIN 
   STATUS 1 WORDS TO SB, ABT 67 
   IF (SB.AND.4.NE.0) GOTO 70  *IF PENDING BIT STILL PRESENT
* READ FLAG AT PDP LOCATION 000000 AND CHECK
   WC=2                       *LOAD ADDRESS DMA=000000
   BA=474 
   FOUT 7, ABT 67 
   BA=470                     *READ CONSTANT ADDR MODE
   FIN 21, ABT 67 
   B10=IB(471).RS.10
   B15=IB(470).LS.4.XOR.B10 
   IF (B15.NE.OB(57)) GOTO 60   *IF FLAG NOT CORRECT
* PDP IS NOW NOT-INTERRUPTIBLE BY LEVEL 4 
* REQUEST INTERRUPT LEVEL 4 TO CHECK THAT INTERRUPT PENDING 
* BIT IS PRESENT. 
   WC=1                       *SEND DATA 0074 WITH
   BA=502                     *INTERRUPT REQUEST LEVEL 4
   B8=3 
   FOUT B8, ABT 77
   FUNC 5, ABT 67             *REQUEST STATUS 
   STATUS 1 WORDS TO SB, ABT 67 
   IF (SB.AND.4.EQ.0) GOTO 72 
* 
* 
* 
40 B4=B4+1                    *BUMP SCOPING LOOP COUNT
   IF (ES.AND.RC.NE.0) GOTO 56    *IF REPEAT CONDITION
   GOTO 33 WHILE (B1+1.NE.144)    *REPEAT 100 TIMES 
   IF (ES.AND.RM.NE.0) GOTO 32    *IF REPEAT MODULE 
   IF (B2.EQ.0) GOTO 44           *IF NO ERROR IN MODULE
   MSG 3 (B2) TO DAYFILE
44 GOTO 47                        *END THE MODULE 
56 MSG 4 (B2,B4) TO DISPLAY 
   GOTO 34
60 MSG 11 TO LINE 0 
   MSG 12 (OB(57),B15) TO LINE 1
62 MSG 13 (B8) TO LINE 2
64 B2=B2+1                        *BUMP ERROR COUNT 
   IF (ES.AND.SE.NE.0) GOTO 66    *IF SE IS SELECTED
   IF (ES.AND.RC.NE.0) GOTO 40    *IF SCOPING LOOP
66 PICTURE
   HALT 
   BLANK
   MSG 1 TO DISPLAY 
   GOTO 40
67 MSG 20 TO LINE 0 
   GOTO 76
70 MSG 14 TO LINE 0 
71 MSG 15 (SB) TO LINE 1
   GOTO 62
72 MSG 16 TO LINE 0 
   GOTO 71
73 MSG 7 TO LINE 0
   MSG 10 TO LINE 1 
   GOTO 64
74 MSG 6 TO LINE 0
   GOTO 64
75 MSG 5 TO LINE 0
76 MSG EM TO LINE 1 
   GOTO 64
77 MSG 17 (B8) TO LINE 0
   GOTO 76
47 END 30 
COMPILE   - PDP07 - 
   MODULE PDP980,6000(500)
*** INITIALIZER - ERROR PROCESSOR 
**
*  PDP980 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW
* 
*         PDP980 IS THE ERROR PROCESSOR FOR PDP02 
*         AND THE INITIALIZER PROCESSOR FOR PDP05 
* 
*         IF REGISTER B7 IS EQUAL TO ZERO, PDP980 DOES
*         A PDP05 INITIALIZATION BY BOOTSTRAPPING,CLEARING
*         THE LOOPBACK TEST MODE, CLEARING THE PASS COUNT,
*         CHECKING FOR LEGAL P5 PARAMETER AND INITIALIZING
*         THE LOAD ADDRESS AT PDP LOCATION 002000 IF A
*         PRESET ADDRESS HAS NOT BEEN SELECTED. 
* 
* 
*         IF REGISTER B7 IS DIFFERENT OF ZERO, AN ERROR HAS 
*         BEEN DETECTED IN MODULE PDP02. EACH BIT HAS A 
*         SPECIAL MEANING INDICATING WHICH ERROR HAS BEEN 
*         DETECTED. THE BITS ARE ANALYZED IN THE FOLLOWING
*         ORDER:  
*         -BIT 0  WHICH MEANS ABORT ON FUNCTION 016 
*         -BIT 1              ABORT ON OUTPUT 022 
*         -BIT 6              WORD COUNT ERROR AFTER OUTPUT 
*         -BIT 2              STATUS ERROR AFTER OUTPUT 
*         -BIT 3              ABORT ON INPUT 021
*         -BIT 7              WORD COUNT ERROR AFTER INPUT
*         -BIT 4              STATUS ERROR AFTER INPUT
*         -BIT 5              DATA COMPARE ERROR
*         -BIT 9              ABORT DURING STATUS REQUEST 
* 
* 
* 
* 
* 
* 
* 
  
*   PDP980 - INTERNAL DOCUMENTATION 
* 
* 
* 
 1 FORMAT  PDP02 - ABORT ON STATUS REQUEST
 2 FORMAT  PDP02 - ABORT ON SET LOOPBACK FUNCTION 
 3 FORMAT  PDP02 - ABORT ON OUTPUT-(FOUT) COMMAND 
 4 FORMAT  WORD COUNT WAS:WC=*OCT   WORDS TRANS=*OCT
 5 FORMAT  LAST STATUS IS:*OCT
 6 FORMAT  PDP02 - STATUS ERROR AFTER WRITE 
 7 FORMAT  PDP02 - ABORT ON INPUT-(FIN) COMMAND 
10 FORMAT  LAST 2 WORDS OF OUTPUT=*OCT *OCT  WC=*OCT
11 FORMAT  EC=*OCT   EA=*OCT
12 FORMAT  LAST *OCT WORDS TRANSMITTED: 
13 FORMAT  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
14 FORMAT  PDP02 - STATUS ERROR AFTER READ
15 FORMAT  EXPECTED 2 INPUT WORDS=*OCT *OCT 
16 FORMAT  RECEIVED   INPUT WORDS=*OCT *OCT 
17 FORMAT  PDP02 - LOOPBACK TEST MODE  - DATA CHECK 
20 FORMAT  PDP02 - DATA COMPARE ERROR 
21 FORMAT  PDP05 - ILLEGAL PARAMETER (P5) 
22 FORMAT  PDP02 - OUTPUT WORD COUNT ERROR
23 FORMAT  PDP02 - INPUT WORD COUNT ERROR 
* 
* CHECK FOR PDP05 INITIALIZATION
30 IF (B7.EQ.0) GOTO 72 
* CHECK FOR ABORT ON LOOPBACK FUNCTION
   IF (B7.AND.1.EQ.0) GOTO 34 
   MSG 2 TO LINE 0              *PROCESS ABORT ON FUNC
31 MSG EM TO LINE 1 
32 PICTURE
   HALT                         *STOP IF SE IS SELECTED 
   BLANK
   MSG 17 TO DISPLAY,PRINT
   EXIT 
* CHECK FOR ABORT ON "FOUT" COMMAND 
34 IF (B7.AND.2.EQ.0) GOTO 60 
   MSG 3 TO LINE 0              *PROCESS ABORT ON OUTPUT
   GOSUB 52                     *CHECK ABORT ON STATUS
36 IF (B14.EQ.0) GOTO 44        *NO WORD TRANSFERRED
   IF (B14.GE.10) GOTO 40 
   B11=B14
   B12=0
   GOTO 42
40 B11=10 
   B12=B14-10 
42 MSG 12 (B11) TO LINE 3 
   MSG 13, B11 WORDS FROM OB(B12) TO LINE 4 
44 IF (B7.AND.1000B.NE.0) GOTO 50 
* AN ABORT ON STATUS REQUEST HAS BEEN DETECTED
46 MSG 5 (SB) TO LINE 6 
   GOTO 32
50 MSG 1 TO LINE 6
   MSG EM TO LINE 7 
   GOTO 32
* SUBROUTINE TO CHECK IF ABORT HAS BEEN DETECTED
* ON THE NEXT STATUS REQUEST
52 IF (B7.AND.1000B.NE.0) GOTO 56 
   MSG EM TO LINE 1 
54 MSG 4 (WC,B14) TO LINE 2 
   RETURN 
56 MSG 11 (B6,B3) TO LINE 1 
   GOTO 54
* END OF SUBROUTINE 
* 
* CHECK FOR OUTPUT WORD COUNT ERROR 
60 IF (B7.AND.100.EQ.0) GOTO 61 
   MSG 22 TO LINE 0 
   MSG 4 (WC,B14) TO LINE 1 
   GOTO 36
* CHECK FOR ANY STATUS ERROR AFTER THE OUTPUT WRITE 
61 IF (B7.AND.4.EQ.0) GOTO 62 
   MSG 6 TO LINE 0
   GOTO 36
* CHECK FOR ABORT ON INPUT
62 IF (B7.AND.10.EQ.0) GOTO 66
   MSG 7 TO LINE 0
   GOSUB 52 
64 MSG 10 (OB(B15),OB(B15+1),B10) TO LINE 3 
   MSG 15 (B8,B9) TO LINE 4 
   MSG 16, B14 WORDS FROM IB TO LINE 5
   GOTO 44
* CHECK FOR INPUT WORD COUNT ERROR
66 IF (B7.AND.200.EQ.0) GOTO 67 
   MSG 23 TO LINE 0 
   MSG 4 (WC,B14) TO LINE 1 
   GOTO 64
* CHECK FOR STATUS ERROR AFTER THE INPUT READ 
67 IF (B7.AND.20.EQ.0) GOTO 70
   MSG 14 TO LINE 0 
   GOTO 64
* CHECK FOR DATA ERROR
70 IF (B7.AND.40.EQ.0) GOTO 50
   MSG 20 TO LINE 0 
   GOTO 64
* 
* PDP05 INITIALIZATION
* 
72 TIMEOUT TYPEB=36 USEC       *GIVE TIME FOR PDP REPLY 
   RES
   FUNC 34                     *BOOTSTRAP 
   DELAY 900 MSEC              *GIVE TIME TO EXECUTE
   FUNC 6                      *CLEAR LOOPBACK TEST MODE
   FUNC 5                      *GET STATUS TO CLEAR 
   STATUS 1 WORDS TO SB        *ANY ERROR BIT 
* 
   B1=0                        *CLEAR PASS COUNT
   IF (P5.AND.1774.EQ.0) GOTO 73  *CHECK LEGAL P5 PARAMETER 
   MSG 21 TO DISPLAY,PRINT     *INFORM OPERATOR 
   GOTO 77                     *AND STOP
* 
73 B5=P5.AND.3                 *REMEMBER ADDRESSING MODE
   B6=0 
   OB(470)=20                  *USE PDP LOCATION 2000 
   OB(471)=0
   IF (P5.AND.4000.NE.0) OB(470)=P4  *EXCEPT IF PRESET
   EXIT                        *RETURN TO PDP05 
* 
* 
* 
77 END 30 
COMPILE   - PDP980 -
   MODULE PDP981,6000(500)
*** ERROR PROCESSOR 
**
*  PDP981 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW
* 
*         PDP981 IS THE ERROR PROCESSOR FOR PDP05 
* 
*         EACH BIT OF REGISTER B7 HAS A SPECIAL MEANING 
*         INDICATING WHICH ERROR HAS BEEN DETECTED IN 
*         MODULE PDP05. THE BITS ARE ANALYZED IN THE
*         FOLLOWING ORDER:  
*         -BIT 0  WHICH MEANS ABORT ON (FOUT) COMMAND 
*         -BIT 1              ABORT ON (FIN) COMMAND
*         -BIT 7              STATUS ERROR AFTER I/O
*         -BIT 6              WORD COUNT ERROR AFTER I/O
*         -BIT 3              DATA COMPARE ERROR
*         -BIT 4              ABORT ON DCN,FUNC OR STATUS 
*         -BIT 5              DATA COMPARE ERROR
* 
* 
* 
* 
* 
* 
  
*   PDP981 - INTERNAL DOCUMENTATION 
* 
* 
* 
* 
 1 FORMAT  PDP05 - ABORT ON (FOUT *OC) COMMAND
 2 FORMAT  PDP05 - ABORT ON (INB CHAIN) AFTER READ FUNC *OC 
 3 FORMAT  WORD COUNT WAS:*OC   WORDS TRANS=*OC 
 4 FORMAT  PDP05 - ABORT ON (DCN),(FUNC) OR (STATUS) COMMAND
 5 FORMAT  LAST STATUS IS: *OCT 
 6 FORMAT  ADDRESS LOADED BEFORE I/O        =*OCT*O 
 7 FORMAT  EXPECTED ADDRESS AFTER TRANSFER  =*OCT*O 
10 FORMAT  DMA ADDRESS READ AFTER TRANSFER  =*OCT*O 
11 FORMAT  LAST *OCT WORDS INPUTTED:  
12 FORMAT  *OCT  *OCT  *OCT  *OCT  *OCT  *OCT  *OCT  *OCT 
13 FORMAT  LAST *OCT WORDS OUTPUTTED: 
14 FORMAT  PDP05 - STATUS ERROR AFTER I/O  (FUNCTION *OC) 
15 FORMAT  PDP05 - DATA COMPARE ERROR 
16 FORMAT  WORD POSITION ERROR IS: *OC
17 FORMAT  EXPECTED DATA=*OCT    RECEIVED DATA=*OCT 
20 FORMAT  LAST I/O OPERATIONS:  WRITE *OC   READ *OC 
21 FORMAT  DATA BUFFERS AROUND ERROR: 
22 FORMAT  EXPECTED (STARTING POSITION :*OC)
23 FORMAT  RECEIVED (STARTING POSITION :*OC)
24 FORMAT  PDP05 - WRITE/READ/COMPARE   (PDP MEMORY)
25 FORMAT  LAST 2 WORDS SENT TO PDP:    *OCT-*OCT 
26 FORMAT  EXPECTED FIRST 2 INPUT WORDS:*OCT-*OCT 
27 FORMAT  RECEIVED FIRST 2 INPUT WORDS:*OCT-*OCT 
30 FORMAT  PDP05 - TRANSFER WORD COUNT ERROR AFTER FUNC *OC 
* 
* 
* 
32 IF (B7.AND.1.EQ.0) GOTO 60 
   MSG 1 (B3) TO LINE 0       *PROCESS ABORT ON FOUT
33 IF (B7.AND.20.NE.0) GOTO 52
   MSG EM TO LINE 1 
52 MSG 3 (WC,B14) TO LINE 2 
   IF (B7.AND.20.EQ.0) GOTO 40
35 MSG 4 TO LINE 3            *PROCESS ABORT ON FUNC
   MSG EM TO LINE 4 
36 PICTURE
   HALT 
   BLANK
   MSG 24 TO DISPLAY,PRINT
   EXIT 
40 MSG 5 (SB) TO LINE 3 
   B15=OB(471).RS.6 
   MSG 6 (OB(470),B15) TO LINE 4
   IF (B3.AND.1.NE.0) GOTO 42 
   B10=B11
   B15=B12.RS.6 
   GOTO 43
42 B10=B8 
   B15=B9.RS.6
43 MSG 7 (B10,B15) TO LINE 5
   B15=SB(2).RS.6 
   MSG 10 (SB(1),B15) TO LINE 6 
   IF (B14.EQ.0) GOTO 36
   IF (B14.GE.10) GOTO 44 
   B15=B14
   B10=0
   GOTO 46
44 B15=10 
   B10=B14-10 
46 IF (B3.AND.1.EQ.0) GOTO 50 
   MSG 11 (B15) TO LINE 7 
   MSG 12,B15 WORDS FROM IB(B10) TO LINE 8
   GOTO 36
50 MSG 13 (B15) TO LINE 7 
   MSG 12,B15 WORDS FROM OB(B10) TO LINE 8
   GOTO 36
60 IF (B7.AND.2.EQ.0) GOTO 64 
   MSG 2 (B3) TO LINE 0      *PROCESS ABORT ON FIN
   GOTO 33
61 IF (B7.AND.40.EQ.0) GOTO 35   *STATUS ERROR
   MSG 15 TO LINE 0              *DATA ERROR
   MSG 20 (22,21) TO LINE 1 
   MSG 25 (OB(376),OB(377)) TO LINE 2 
   MSG 26 (B15,B10) TO LINE 3 
   MSG 27 (IB(0),IB(1)) TO LINE 4 
   B15=OB(471).RS.6 
   MSG 6 (OB(470),B15) TO LINE 5
   GOTO 36
64 IF (B7.AND.200.EQ.0) GOTO 70 
   MSG 14 (B3) TO LINE 0
   GOTO 40
70 IF (B7.AND.100.EQ.0) GOTO 71 
   MSG 30 (B3) TO LINE 0
   GOTO 52
71 IF (B7.AND.10.EQ.0) GOTO 61
   MSG 15 TO LINE 0          *PROCESS DATA ERROR
   MSG 16 (WC) TO LINE 1
   MSG 17 (OB(WC),IB(WC)) TO LINE 2 
   B10=B0+2 
   B15=B0+1 
   MSG 20 (B10,B15) TO LINE 3 
   B10=OB(471).RS.6 
   MSG 6 (OB(470),B10) TO LINE 4
   MSG 21 TO LINE 5 
   IF (WC.LE.10) GOTO 72
   B15=WC+3.AND.7770
   B15=B15-10 
   GOTO 74
72 B15=0
74 MSG 22 (B15) TO LINE 6 
   MSG 12,10 WORDS FROM OB(B15) TO LINE 7 
   IF (WC.GT.374) GOTO 75 
   MSG 12,10 WORDS FROM OB(B15+10) TO LINE 8
75 MSG 23 (B15) TO LINE 9 
   MSG 12,10 WORDS FROM IB(B15) TO LINE 10D 
   IF (WC.GT.374) GOTO 36 
   MSG 12,10 WORDS FROM IB(B15+10) TO LINE 11D
   GOTO 36
77 END 32 
COMPILE   - PDP981 -
   MODULE PDP982,6000(500)
*** PDP MEMORY SIZE CALCULATION 
**
*   PDP982 - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW
* 
*         PDP982 IS A SUBMODULE CALLED BY PDP06 IF LWA+2
*         OF THE PDP MEMORY HAS NOT BEEN DEFINED BY 
*         PARAMETER P7. 
*         IN THIS CASE, PDP982 WILL SWEEP WRITING ALL THE 
*         PDP MEMORY (STARTING AT LOCATION 000000) UNTIL
*         A TIMEOUT IS DETECTED DUE TO A *NO ANSWER* FROM 
*         THE PDP ACCESS. AT THIS TIME, THE DMA STATUS IS 
*         READ TO GET THE VALUE OF LWA+2 WHICH IS NECESSARY 
*         FOR PDP06 TO EXECUTE A FULL ADDRESS TEST. 
* 
*         THE OPERATOR IS GIVEN THE CHOICE OF SELECTING 
*         HIMSELF THE LWA+2 OR LEAVING PDP982 CALCULATE IT. 
*         IN THE LAST CASE, ERRORS ARE POSSIBLE IF THE
*         ADDRESS BUS IS NOT QUITE GOOD. FOR THAT REASON, 
*         WHEN THE LWA+2 IS FOUND, THE FOLLOWING MESSAGE
*         IS SENT TO THE USER:  
*         PDP982- FIRST NON-EXISTENT ADDRESS FOUND=XXXXXX 
* 
*         SO,THE USER CAN COMPARE THAT CALCULATED ADDRESS 
*         XXXXXX WITH THE REAL PDP MEMORY SIZE. 
* 
* 
*         WHEN AN ERROR IS DETECTED, THE MODULE IS STOPPED. 
*         NO REPEAT CONDITION IS ALLOWED ON THAT MODULE.
*         ALL FUNCTIONS USED IN IT ARE ALREADY TESTED BY
*         THE PRECEDENT MODULES. IN CASE OF ERROR, THE
*         USER MUST NOTICE WHAT HAS FAILED AND EXECUTE
*         THE CORRESPONDING MODULE TO REPEAT ON SPECIAL 
*         CONDITIONS. 
* 
* 
* 
* 
* 
* 
* 
* 
*   DESCRIPTION 
* 
*         1.CLEAR OUTPUT BUFFER 
*         2.CLEAR LOOPBACK TEST MODE-BOOTSTRAP PDP COMPUTER 
*         3.LOAD ADDRESS  (STARTING LOC 000000) 
*         4.WRITE 400B PP WORDS  (INCREMENT MODE) 
*         5.CHECK FOR ABORT AND TIMEOUT STATUS
*           IF TIMEOUT, SAVE LWA+2 AND EXIT 
*         6.CHECK DMA STATUS
*         7.REPEAT FROM STEP 3 WHILE INCREMENTING ADDRESS.
*           STOP IF FULL TURN IS COMPLETED. 
* 
* 
* 
* 
* 
* 
* 
*   ERRORS DETECTED 
* 
*         THE MODULE IS STOPPED ON ANY ERROR DETECTED WHILE 
*         DOING  I/O OPERATIONS EXCEPT IF AN INACTIVE SIGNAL
*         IS RECEIVED DUE TO A TIMEOUT WHEN REQUESTING A
*         NON-EXISTENT PDP MEMORY ADDRESS.
* 
* 
* 
* 
* 
* 
* 
*   ERROR MESSAGES ISSUED 
* 
*         ALL APPLICABLE LOW LEVEL PRODUCT OVERLAY ERROR
*         CODES AND MESSAGES IF THEY OCCUR, PLUS THE
*         FOLLOWING ERROR MESSAGES: 
* 
*         1.PDP982 - NO INACTIVE ON TIMEOUT 
*         2.PDP982-NO TIMEOUT WHILE WAITING 250 MSEC ON FULL
*         3.PDP982 - ABORT ON (OUT CHAIN) COMMAND 
*         4.PDP982 -NO TIMEOUT WHILE ADDRESSING FULL PDP MRY
*         5.PDP982 - CHANNEL INACTIVE ON OUTPUT 
*         6.PDP982 - TIMEOUT WHILE WRITING LEGAL PDP ADDRESS
*         7.PDP982 - DMA STATUS ERROR AFTER WRITE 
* 
*         MESSAGE 2 IS ISSUED IF THE CHANNEL STAYS FULL FOR 
*                 MORE THAN 250 MSEC, INDICATING THAT THE 
*                 PDP DOES NOT RESPOND AND TIMEOUT STATUS 
*                 DOES NOT SET. 
*         MESSAGE 3 IS ISSUED FOR ANY REASON OTHER THAN 
*                   ERROR CODES 4027 OR 4032
*         MESSAGE 5 IS ISSUED IF THE CHANNEL BECOMES
*                   INACTIVE FOR ANY REASON OTHER THAN
*                   TIMEOUT 
*         MESSAGE 6 IS ISSUED IF A TIMEOUT HAS OCCURRED 
*                   WHILE ADDRESSING THE LOWER 8K OF THE
*                   PDP MEMORY
*         MESSAGES 1,2,3,5,6 AND 7 ARE FOLLOWED BY MORE 
*                   DETAILS LIKE: WORD COUNT, LOADED ADDRESS
*                   EXPECTED ADDRESS, DMA STATUS AND LAST 
*                   STATUS. 
* 
* 
* 
* 
* 
* 
* 
* 
* 
  
*   PDP982 - INTERNAL DOCUMENTATION 
* 
* 
* 
* 
* 
* 
 1 FORMAT  PDP982 - NO INACTIVE ON TIMEOUT
 2 FORMAT  PDP982-NO TIMEOUT WHILE WAITING 250 MSEC ON FULL 
 3 FORMAT  PDP982 - ABORT ON (OUT CHAIN) COMMAND
 4 FORMAT  PDP982 - NO TIMEOUT WHILE ADDRESSING FULL PDP MRY
 5 FORMAT  PDP982 - CHANNEL INACTIVE ON OUTPUT
 6 FORMAT  PDP982 - TIMEOUT WHILE WRITING LEGAL PDP ADDRESS 
 7 FORMAT  WORD COUNT WAS:*OCT    WORDS TRANSFERRED:*OCT
10 FORMAT  ADDRESS LOADED BEFORE TRANSFER   =*OCT*O 
11 FORMAT  DMA STATUS AFTER TRANSFER        =*OCT*O 
12 FORMAT  LAST STATUS IS: *OCT 
13 FORMAT  EXPECTED ADDRESS AFTER TRANSFER  =*OCT*O 
14 FORMAT  PDP982 - DMA STATUS ERROR AFTER WRITE
15 FORMAT  PDP982- FIRST NON-EXISTENT ADDRESS FOUND=*OCT*O
* 
* 
* 
* GO AND FIND LWA+2 OF PDP AVAILABLE MEMORY 
30 TIMEOUT TYPEB=36 USEC
   DUP 0 TO OB FOR 400  *CLEAR OUTPUT BUFFER
   RES
   FUNC 6               *CLEAR LOOPBACK TEST MODE 
   FUNC 34              *BOOTSTRAP PDP COMPUTER 
   DELAY 900 MSEC       *GIVE TIME TO EXECUTE 
   OB(470)=0            *SET LOAD ADDRESS TO 0
   OB(471)=0
   OB(473)=0            *EXPECTED LOWER DMA 
* 
* MAIN LOOP 
* 
34 WC=2                 *LOAD ADDRESS FROM OB(470/471)
   BA=470 
   FOUT 7 
   FUNC 2               *SELECT WRITE (INCR ADDR MODE)
   OB(472)=OB(470)+6    *EXPECTED DMA ADDRESS 
   BA=0 
   WC=400 
   OUT CHAIN, ABT 46    *WRITE 600B PDP ADDRESSES 
   DCN, ABT 56
   GOSUB 65             *GET BOTH STATUS
   IF (SB(1).NE.OB(472)) GOTO 36   *COMPARE DMA 
   IF (SB(2).EQ.OB(473)) GOTO 44
36 MSG 14 TO LINE 0 
40 MSG 7 (WC,B14) TO LINE 2 
   B15=OB(471).RS.6 
   MSG 10 (OB(470),B15) TO LINE 3 
   B15=OB(473).RS.6 
   MSG 13 (OB(472),B15) TO LINE 4 
   B15=SB(2).RS.6 
   MSG 11 (SB(1),B15) TO LINE 5 
   MSG 12 (SB) TO LINE 6
42 PICTURE
   HALT 
   BLANK
   GOTO 77              *END MODULE 
44 OB(470)=OB(472)      *NEXT PDP LOCATION
   IF (OB(470).GE.6) GOTO 34  *CHECK FOR A COMPLETE TURN
   MSG 4 TO DISPLAY,PRINT 
   GOTO 77              *END MODULE 
46 IF (EC.EQ.4032) GOTO 50  *IF WAITING FOR EMPTY 
   IF (EC.EQ.4027) GOTO 56  *IF INACTIVE CHANNEL
   GOSUB 65             *GET BOTH STATUS
   MSG EM TO LINE 1 
   MSG 3 TO LINE 0
   GOTO 40
50 GOSUB 65             *GET BOTH STATUS
   MSG EM TO LINE 1 
   IF (SB(0).AND.1.EQ.1) GOTO 52   *IF TIMEOUT
   MSG 2 TO LINE 0
   GOTO 40
52 MSG 1 TO LINE 0
   GOTO 40
56 GOSUB 65 
   IF (SB(0).AND.1.EQ.1) GOTO 60   *IF TIMEOUT
   MSG 5 TO LINE 0
   MSG EM TO LINE 1 
   GOTO 40
60 IF (SB(1).GE.200) GOTO 62  *MIN PDP MRY SIZE=8K
   MSG 6 TO LINE 0
   GOTO 40
62 BLANK
   B11=SB(1)               *SAVE LWA+2
   B12=SB(2)
   IF (B0.NE.0) GOTO 64 
   B15=SB(2).RS.6 
   MSG 15 (SB(1),B15) TO PRINT
64 RES
   GOSUB 65     *GET STATUS TO CLEAR ANY ERROR BIT
   EXIT         *RETURN TO PDP06
* 
* 
* SUBROUTINE   "GET BOTH STATUS"
65 B14=WT               *SAVE CURRENT WORD COUNT
   FUNC 5 
   STATUS 1 WORDS TO SB 
   FUNC 15                    *REQUEST DMA STATUS 
   STATUS 2 WORDS TO SB(1)
   RETURN 
* 
77 END 30 
COMPILE   - PDP982 -
   MODULE,PDP983,6000(500)
*** ERROR PROCESSOR 
**
*   PDP983 - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW
* 
*         PDP983 IS THE ERROR PROCESSOR FOR PDP06.
* 
*         EACH BIT OF REGISTER B7 HAS A SPECIAL MEANING 
*         INDICATING WHICH ERROR HAS BEEN DETECTED IN 
*         MODULE PDP06. THE BITS ARE ANALYZED IN THE
*         FOLLOWING ORDER:  
*         -BIT 0 WHICH MEANS ABORT ON (FUNC) COMMAND
*         -BIT 1             ABORT ON (FOUT 7) COMMAND
*         -BIT 2             ABORT ON (FIN 21) COMMAND
*         -BIT 3             ABORT ON (FOUT 22) COMMAND 
*         -BIT 4             ABORT ON STATUS REQUEST
*         -BIT 5             STATUS ERROR AFTER I/O TRANSFER
*         -BIT 6             DATA COMPARE ERROR 
* 
* 
* 
* 
* 
* 
  
*   PDP983 - INTERNAL DOCUMENTATION 
* 
* 
* 
* 
* 
* 
 1 FORMAT  PDP06 - ABORT ON (FUNC) COMMAND
 2 FORMAT  PDP06 - ABORT ON (FOUT 7) COMMAND
 3 FORMAT  PDP06 - ABORT ON (FIN 21) COMMAND
 4 FORMAT  PDP06 - ABORT ON (FOUT 22) COMMAND 
 5 FORMAT  PDP06 - ABORT ON STATUS REQUEST
 6 FORMAT  PDP06 - STATUS ERROR AFTER WRITE (FOUT 22) 
 7 FORMAT  PDP06 - STATUS ERROR AFTER READ (FIN 21) 
10 FORMAT  PDP06 - DATA COMPARE ERROR 
11 FORMAT  WORD COUNT WAS:002     WORDS TRANSFERRED=*OC 
12 FORMAT  ADDRESS LOADED BEFORE TRANSFER=     *OCT*O 
13 FORMAT  EXPECTED DMA STATUS AFTER TRANSFER= *OCT*O 
14 FORMAT  ACTUAL DMA STATUS AFTER TRANSFER=   *OCT*O 
15 FORMAT  LAST STATUS IS: *OCT 
16 FORMAT  EXPECTED DATA:*OCT*O    RECEIVED DATA:*OCT*O 
17 FORMAT  PDP LOCATION TESTED: *OCT*O
20 FORMAT  PDP983 - ABORT ON STATUS REQUEST 
* 
* 
* 
30 IF (B7.AND.1.EQ.0) GOTO 36 
* PROCESS ABORT ON (FUNC) COMMAND 
   MSG 1 TO LINE 0
* 
32 PICTURE
   HALT 
   BLANK
   EXIT              *RETURN TO PDP06 
* 
36 IF (B7.AND.2.EQ.0) GOTO 40 
* PROCESS ABORT ON LOAD ADDRESS (FOUT 7) COMMAND
   MSG 2 TO LINE 0
   GOTO 32
* 
40 IF (B7.AND.4.EQ.0) GOTO 50 
* PROCESS ABORT ON READ (FIN 21) COMMAND
   MSG 3 TO LINE 0
42 RES                  *RESERVE CHANNEL
   B14=WT               *SAVE CURRENT WORD COUNT
   FUNC 5, ABT 46       *REQUEST STATUS 
   STATUS 1 WORDS TO SB, ABT 46 
   FUNC 15, ABT 46      *REQUEST DMA STATUS 
   STATUS 2 WORDS TO SB(1), ABT 46
44 MSG 11 (B14) TO LINE 2 
   B15=OB(471).RS.6 
   MSG 12 (OB(470),B15) TO LINE 3 
   MSG 13 (OB(470),B15) TO LINE 4 
   B15=SB(2).RS.6 
   MSG 14 (SB(1),B15) TO LINE 5 
   MSG 15 (SB) TO LINE 6
   GOTO 32
* 
46 MSG 20 TO LINE 2 
   MSG EM TO LINE 3 
   GOTO 32
* 
50 IF (B7.AND.10.EQ.0) GOTO 52
* PROCESS ABORT ON (FOUT 22) COMMAND
   MSG 4 TO LINE 0
   GOTO 42
* 
52 IF (B7.AND.20.EQ.0) GOTO 54
* PROCESS ABORT ON STATUS REQUEST 
   MSG 5 TO LINE 0
   GOTO 32
* 
54 IF (B7.AND.40.EQ.0) GOTO 60
* PROCESS STATUS ERROR
   IF (B8.EQ.0) GOTO 55    *IF WRITE PATH 
   MSG 7 TO LINE 0
   GOTO 56
55 MSG 6 TO LINE 0
56 B14=WT 
   GOTO 44
* 
* PROCESS DATA COMPARE ERROR
60 MSG 10 TO LINE 0 
   B13=OB(474).RS.2 
   B15=OB(474).AND.3.LS.12
   B15=OB(475).RS.2.XOR.B15 
   B6=IB(474).RS.2
   B7=IB(474).AND.3.LS.12 
   B7=IB(475).RS.2.XOR.B7 
   B7=B7.AND.7700 
   MSG 16 (B13,B15,B6,B7) TO LINE 1 
   B15=OB(471).RS.6 
   MSG 17 (OB(470),B15) TO LINE 2 
   GOTO 32
* 
77 END 30 
COMPILE   - PDP983 -
   MODULE PDP99,6000(500) 
1  FORMAT COPYRIGHT CONTROL DATA CORP. 1983 
2  PAUSE
   EXIT TO 99A
/         PDP - PDP INTERFACE TEST
/         FOR ADDITIONAL DOCUMENTATION, SEE 
/         THE FOLLOWING MODULES-- 
/ 
/         PDP99              OVERVIEW 
/         PDP99A             PARAMETER DESCRIPTION
/         PDP99B             LIST OF MODULES
/ 
   END 2
COMPILE,SOURCE               *PDP99 OVERVIEW
   MODULE PDP99A,6000(500)
***   PDP99A - PARAMETER DESCRIPTION
**
* 
/ 
/  IN THE NORMAL RUN,  NO PARAMETERS ARE REQUIRED.
/  THE FOLLOWING TABLE REPRESENTS WHICH MODULES 
/  OF PDP USE SPECIFIC PARAMETERS.
/ 
/         P0   P1   P2   P3   P4   P5   P6   P7 
/       --------------------------------------- 
/  PDP01
/  PDP02  X    X
/  PDP03            X    X
/  PDP04
/  PDP05                      X    X    X 
/  PDP06                                     X
/  PDP07
/ 
/ 
/  PARAMETER DESCRIPTION. 
/ 
/         P0 - XXXXB - PRESET DATA PATTERN FOR MODULE PDP02.
/ 
/              0000B - NO PRESET PATTERN-USE STANDARD AND 
/                      RANDOM PATTERNS. 
/              XXXXB - XXXX IS A 12 BIT VALUE WHICH WILL
/                      FILL THE OUTPUT BUFFER.
/ 
/         P1 - 00XXB - PRESET OUTPUT WORD COUNT FOR 
/                      MODULE PDP02 
/ 
/              0000B - NO PRESET WORD COUNT, USE AN 
/                      INCREMENTING WORD COUNT (02,03..60). 
/              00XXB - XX IS A 6 BIT VALUE WHICH WILL BE
/                      USED AS THE OUTPUT WORD COUNT.  XX IS
/                      ACCEPTED IF IT IS LESS THAN 61(OCTAL)
/                      AND THE RIGHTMOST 2 BITS (BITS 1 
/                      AND 0) ARE NOT EQUAL TO 1(BIT 0- SET,
/                      BIT 1- CLEAR). 
/ 
/         P2 - XXXXB - PRESET ADDRESS FOR MODULE PDP03
/                      (LOWER 12 BITS). 
/ 
/              0000B - IF P3 = 0000 (NO PRESET ADDRESS) USE 
/                      STANDARD AND RANDOM ADDRESSES. 
/              XXXXB - USE XXXX AS THE LOWER 12 BITS OF THE 
/                      PRESET ADDRESS.
/ 
/         P3 - 00XXB - PRESET ADDRESS FOR MODULE PDP03
/                      (UPPER 6 BITS) 
/ 
/              0000B - IF P2 = 0000 (NO PRESET ADDRESS) USE 
/                      STANDARD AND RANDOM ADDRESSES. 
/              XX00B - USE XX AS THE UPPER 6 BITS OF THE
/                      PRESET ADDRESS.  P3 IS NOT ACCEPTED
/                      IF ANY OF THE LOWER 6 BITS ARE SET.
/ 
/         P4 - XXXXB - PRESET ADDRESS (UPPER 12 BITS) FOR 
/                      MODULE PDP05.
/ 
/              XXXXB - THE PRESET ADDRESS FOR MODULE PDP05
/                      IF P5 BIT 11 IS SET.  IF NOT, P4 IS
/                      MEANINGLESS. 
/ 
/         P5 - X00XB - PRESET ADDRESSING MODE FOR MODULE
/                      PDP05
/ 
/              4XXX  - USE P4 AS THE UPPER 12 BITS OF AN
/                      18 BIT PRESET ADDRESS WHOSE LOWER 6
/                      BITS ARE CLEARED.
/              2XXX  - USE P6 AS A PRESET DATA PATTERN. 
/              XXX3  - TEST ONLY ADDRESS CONSTANT MODE
/                      USING OUTPUT FUNCTION 022 AND INPUT
/                      FUNCTION 021 ONLY. 
/              XXX2  - TEST ONLY ADDRESS DECREMENTING MODE
/                      USING OUTPUT FUNCTION 012 AND INPUT
/                      FUNCTION 011 ONLY. 
/ 
/              XXX1  - TEST ONLY ADDRESS INCREMENTING MODE
/                      USING OUTPUT FUNCTION 002 AND INPUT
/                      FUNCTION 001 ONLY. 
/              XXX0  - TEST ALL 3 MODES OF ADDRESSING 
/                      (INCREMENT,DECREMENT,CONSTANT).
/ 
/         P6 - XXXXB - PRESET DATA PATTERN FOR
/                      MODULE PDP05 IF P5 BIT 10 IS SET.
/                      IF NOT, P6 IS MEANINGLESS. 
/ 
/              XXXXB - ALL WORDS OF OUTPUT BUFFER ARE 
/                      FILLED WITH THIS DATA PATTERN IF 
/                      P5 BIT 10 IS SET.
/ 
/         P7 - XX00B - LWA+2 FOR MODULE PDP06.
/ 
/              0000B - LWA+2 IS NOT GIVEN - PDP06 MUST FIND 
/                      IT BEFORE EXECUTING A FULL ADDRESS 
/                      TEST.
/              XX00B - LWA+2 IS XX0000 - PDP06 WILL DO  A 
/                      FULL ADDRESS TEST SWEEPING PDP 
/                      MEMORY.  LOCATIONS 000000 THROUGH
/                      XX0000-002002.  P7 IS REJECTED IF
/                      ANY OF THE LOWER 6 BITS ARE SET. 
/                      P7 IS ALSO REJECTED IF  IT IS LESS 
/                      THAN 0200 BECAUSE THE MINIMUM PDP
/                      MEMORY SIZE IS SUPPOSE TO BE 8K. 
/ 
1  END 1                     *END OF THE MODULE 
COMPILE,SOURCE               *PDP99A - PARAMETER DESCRIPTION
   MODULE PDP99B,6000(500)
***   PDP99B - LIST OF MODULES
**
* 
/ 
/  ACCESS LEVEL MUST BE EQUAL TO 10 FOR ALL MODULES.
/ 
/  MODULE    MODULE                         MODULE
/  NUMBER    DESCRIPTION                    RUN TIMES 
/  ------    -----------                    ----------- 
/ 
/  01 CHANNEL INTERFACE TEST                6  SECONDS
/ 
/  02 ASSEMBLY/DISASSEMBLY DATA CHECK       22 SECONDS
/ 
/  03 ADDRESS REGISTER TEST                 15 SECONDS
/ 
/  04 ADDRESS INCREMENT/DECREMENT TEST      35 SECONDS
/ 
/  05 PDP MEMORY WRITE/READ/COMPARE DATA    1 MIN 13 SEC
/ 
/  06 PDP MEMORY FULL ADDRESS TEST          21 SECONDS
/ 
/  07 BOOTSTRAP/INTERRUPT TEST              1 MIN 31 SEC
/ 
1  END 1                     *END THE MODULE
COMPILE,SOURCE               *PDP99B - LIST OF MODULES
