ASMB,L,C
*&TCPR
* 
      HED RELOCATABLE DIAGNOSTIC CONTROL MODULE (TCP) 
      NAM TCPR      790520 1905  REV 1926  CC 
* 
* EDITED  7901XX  TO CHANGE STDA TO 77777 
*                 TO USE NEW SWRT... CHECK FOR IC BIT15.... 
* EDITED  790108  TO MOVE TSTBC CALL.... AFTER 102074, B4 TST00 
*                 TO PRINT REV IN PRIV. MODE
* EDITED  790110  TO ADD IFBRK,DNPUX,PAUSE
*                 TO SET TSTN,CFTT B4 TSTBC 
* EDITED  790118  TO DISABLE TST15 IN EXC IF NOT PRIV., PASS IN DEC. FMT
* EDITED  790306  TO USE BIT 6 FOR OCTOPUS VERSION- NO HLT74... 
* EDITED  790502  TO CHG REV TO 1926
* EDITED  790520  TO ADD STDIC... 
* 
* LAST CODE CHANGE  790520
* 
* 
* 
* THIS DIAGNOSTIC TESTS THE F SERIES FLOATING POINT PROCESSOR,
* SCIENTIFIC INSTRUCTION SET, AND FAST FORTRAN INSTRUCTIONS,
* AS WELL AS APPROPRIATE SECTIONS OF THE F-SERIES BASE SET. 
* 
* IT IS BACKWARDS COMPATIBLE WITH INITIAL RELEASE FIRMWARE
* AND THEREFORE REPLACES FPP-SIS DIAG. DSN 101021.
* 
* NOTE:  THIS DIAGNOSTIC USES SPECIAL DIAGNOSTIC INSTRUCTIONS 
*        IN SOME OF ITS TESTS.  THESE INSTRUCTIONS ARE
*        NOT INTENDED TO BE USED IN NORMAL PROGRAMMING, 
*        AND ARE NOT SUPPORTED FOR SUCH APPLICATIONS. 
* 
*        THE INSTRUCTIONS WHICH FALL INTO THIS CLASS ARE
*        AS FOLLOWS (IN OCTAL): 
* 
*        105003  5 WORD ADD 
*        105023  5 WORD SUB 
*        105043  5 WORD MPY 
*        105063  5 WORD DIV 
*        105103  5 WORD FIXS
*        105107  5 WORD FIXD
*        105123  5 WORD FLTS
*        105127  5 WORD FLTD
* 
*        105005  USED FOR EXPANDED EXPONENT TESTING 
*        105006  RESET FFP
*        105007  PROCESS STACK OF OPERATIONS
* 
*        105004  BASE SET PRE-TEST
*        105200  FFP PRE-TEST 
*        105337  SIS PRE-TEST 
* 
*        THE FUNCTION AND SPECIFICATIONS OF THESE INSTRUCTIONS
*        ARE SUBJECT TO CHANGE.   CC
* 
* 
* 
      SKP 
      EXT TSTBC 
      EXT TST00,TST01,TST02,TST03,TST04,TST05,TST06,TST07 
      EXT TST08,TST09,TST10,TST11,TST12,TST13,TST14,TST15 
      EXT PASST,PASSL,ICEN,PASSF
      EXT STDAM 
      EXT STCSC,STFSC,CLCSC,INTSC 
      EXT PASND,PASST,MSGD
      EXT FWAA
      EXT IS,IST,IC 
* 
* 
      ENT FAIN  BSS 1         FAST INPUT (PHOTO READER) 
      ENT SLOP  BSS 1         SLOW OUTPUT (LIST)
      ENT FAOP  BSS 1         FAST OUTPUT (DUMP OR PUNCH) 
      ENT SLIN  BSS 1         SLOW INPUT (KEYBOARD) 
      ENT FWAM  DEF FWAA      FIRST WORD OF AVBL. MEMORY
      ENT LWAM  BSS 1         LAST WORD OF AVBL. MEMORY 
      ENT OTMC  BSS 1         1 MILL SEC TIME OUT COUNT 
      ENT CPTO  BSS 1         COMPUTER TYPE/OPTIONS 
      ENT USSC  BSS 1         USER CARD TYPE AND SELECT CODE
      ENT MEMO  BSS 1         MEMORY SIZE AND TYPE
      ENT ISWR  BSS 1         INTERNAL SWITCH REGISTER
      ENT TMRR  BSS 1         1 MILL SEC TIMER
      ENT SWRC  BSS 1         CONFIGURATOR SWITCH CK PTR
      ENT I2AS  BSS 1         INTEGER TO ASCII CONVERSION 
      ENT O2AS  BSS 1         OCTAL TO ASCII CONVERSION 
      ENT AS2N  BSS 1         ASCII CONVERSION
      ENT DSN                 DIAGNOSTIC SERIAL NUMBER
      ENT FMTR  BSS 1         FORMATTER 
* 
      ENT CFIG  DEF .CONF     CONFIGURATION SECTION 
      ENT MSGC  DEF .MSGC     MESSAGE WITH NO HALT
      ENT MSGH  DEF .MSGH     MESSAGE WITH HALT 
      ENT ERMS  DEF .ERMS     ERROR MESSAGE 
      ENT SWRT  DEF .SWRT     SWITCH REGISTER CHECK ROUTINE 
      ENT TSTN  OCT 0         CURRENT TEST NUMBER 
      ENT EXRT  DEF .EXRT     RETURN TO CONTROL PROGRAM 
* 
      ENT EOLC
* 
      ENT IFBRK,DNPUX,PAUSE 
* 
* 
* 
* 
      SKP 
* 
      SUP 
*     GENERAL OPERATING PROCEDURE 
* 
*         A. LOAD DIAGNOSTIC CONFIGURATOR AND CONFIG. 
*         B. LOAD DIAGNOSTIC PROGRAM. 
*         C. LOAD ADDRESS 100B
*         D. LOAD SW REG WITH SELECT CODE 
*         E. PRESS RUN WAIT FOR HALT 102074 
*         F. ENTER PROGRAM OPTION: (8-15) 
*                   IF SET =: 
*                   15 = HALT AT END OF EACH TEST 
*                   14 = SUPPRESS ERROR HALTS 
*                   13 = LOOP ON LAST TEST
*                   12 = LOOP ON DIAGNOSTIC 
*                        (SUPPRESS ALL OPERATOR INTERVENTION) 
*                   11 = SUPPRESS ERROR MESSAGES. 
*                   10 = SUPPRESS NON-ERROR MESSAGES. 
*                    9 = GO TO USER CONTROL SECTION 
*                        AT END OF PRESENT TEST 
*                    8 = SHORT PASS 
* 
*                    7
*                      = RESERVED 
*                    0
* 
* 
* 
* 
*         G. PRESS RUN. 
*         H. RESTART - LOAD ADDRESS 2000B 
*         I. RECONFIGURE - RETURN TO STEP C 
* 
*         GENERAL COMPUTER HALTS
* 
*         1020XX    E OR H  000 TO 067
*         1060XX    E OR H  100 TO 167
*         1030XX    E OR H  200 TO 267
*         1070XX    E OR H  300 TO 367
* 
*         CONTROL PROGRAM HALT MESSAGES 
* 
*         102077    END OF DIAG (A = PASS COUNT)
*         102076    END OF TEST (A = TEST #)
*         102075    USER SELECTION REQUEST
*         102073    USER SELECT CODE ERROR
*         102072    RESERVED
*         102071    RESERVED
*         102070    RESERVED
* 
*         106077    TRAP CELL HALT
* 
*         106070 -
*            106076   CONFIG. HALTS SEE DIAG. CONFIG. MANUAL
      HED DEFINITION OF MNEMONICS OR ABBERVIATION 
*    ** DEFINITION OF MNEMONICS OR ABBREVIATIONS ** 
* 
* 
* 
* 
*      A, A-REG - A-REGISTER. 
*      ACT - ACTUAL.
*      ADDR - ADDRESS.
*      B, B-REG - B-REGISTER. 
*      CNT - COUNT. 
*      CONFIG - CONFIGURE, CONFIGURATOR.
*      CONST - CONSTANT.
*      DEC - DECIMAL. 
*      DGT - DIGIT. 
*      E, E-REG - EXTEND REGISTER.
*      EXP - EXPECT, EXPECTED.
*      INCR - INCRMENT. 
*      INSTR - INSTRUCTION. 
*      INTP - INTERRUPT.
*      MEM - MEMORY.
*      NEG - NEGATIVE 
*      NOS, NUM, NUMB - NUMBER. 
*      O-REG, OVR, - OVERFLOW REGISTER. 
*      P, P-REG - P-REGISTER. 
*      PARAM - PARAMETER. 
*      POS - POSITIVE.
*      REG - REGISTER.
*      RTN - RETURN.
*      SC, SELECT CODE
*      SUBT - SUBTRACT
*      SYS, SYST - SYSTEM.
*      TP,  TABLE POINTER.
*      WD, WDS- WORD, WORDS.
*      WDT, WATCH DOG TIMER.
*      := - REPLACED BY, I.E. A:=B, WHERE AS A IS REPLACED BY VALUE B.
      HED TEST DESCRIPTION
*     TEST SELECTION BY OPERATOR: 
* 
**********************************************************************
*  A-REG SETTING  *  TEST TO BE  *   TEST NAME:                      *
*    IF SET:      *   SELECTED   *                                   *
**********************************************************************
*                 *                                                  *
*        0        *    0         *   FIXS                            *
*        1        *    1         *   FIXD                            *
*        2        *    2         *   FLTS                            *
*        3        *    3         *   FLTD                            *
*        4        *    4         *   ADD                             *
*        5        *    5         *   SUB                             *
*        6        *    6         *   MPY                             *
*        7        *    7         *   DIV                             *
*        8        *    8         *   ACC                             *
*        9        *    9         *   SIS1                            *
*       10        *   10         *   SIS2                            *
*       11        *   11         *   SIS3                            *
*       12        *   12         *   FFP1                            *
*       13        *   13         *   FFP2                            *
*       14        *   14         *   FFP3                            *
*       15        *   15         *   MAN ENTRY                       *
**********************************************************************
* 
*  IF A-REG IS CLEAR THEN TST00-TST14 ARE RUN.
      HED LINKAGE TABLE 
A     EQU 0         A REGISTER REFERENCE
B     EQU 1         B REGISTER REFERENCE
SW    EQU 1         SWITCH REGISTER REFERENCE 
INTP  EQU 0         INTERRUPT CHANNEL REFERENCE 
CH    EQU 0         I-O CHANNEL SELECT CODE 
* 
*     ORG 100B
      ORB 
* 
TCPR  JMP CFIG,I    GO TO CONFIGURATION SECTION 
FAIN  BSS 1         FAST INPUT (PHOTO READER) 
SLOP  BSS 1         SLOW OUTPUT (LIST)
FAOP  BSS 1         FAST OUTPUT (DUMP OR PUNCH) 
SLIN  BSS 1         SLOW INPUT (KEYBOARD) 
FWAM  DEF FWAA+0    FIRST WORD OF AVBL. MEMORY
LWAM  BSS 1         LAST WORD OF AVBL. MEMORY 
      BSS 1         NOT USED (MAG TAPE) 
OTMC  BSS 1         1 MILL SEC TIME OUT COUNT 
      BSS 4         SELECT CODES FOR I/O
CPTO  BSS 1         COMPUTER TYPE/OPTIONS 
USSC  BSS 1         USER CARD TYPE AND SELECT CODE
MEMO  BSS 1         MEMORY SIZE AND TYPE
ISWR  BSS 1         INTERNAL SWITCH REGISTER
TMRR  BSS 1         1 MILL SEC TIMER
SWRC  BSS 1         CONFIGURATOR SWITCH CK PTR
I2AS  BSS 1         INTEGER TO ASCII CONVERSION 
O2AS  BSS 1         OCTAL TO ASCII CONVERSION 
AS2N  BSS 1         ASCII CONVERSION
DSN   OCT 101121    DIAGNOSTIC SERIAL NUMBER
FMTR  BSS 1         FORMATTER 
* 
*         CONTROL LINKAGE AND DATA REFERENCES 
* 
CFIG  DEF .CONF+0   CONFIGURATION SECTION 
MSGC  DEF .MSGC+0   MESSAGE WITH NO HALT
MSGH  DEF .MSGH+0   MESSAGE WITH HALT 
ERMS  DEF .ERMS+0   ERROR MESSAGE 
SWRT  DEF .SWRT+0   SWITCH REGISTER CHECK ROUTINE 
TSTN  OCT 0         CURRENT TEST NUMBER 
EXRT  DEF .EXRT+0   RETURN TO CONTROL PROGRAM 
      NOP           RESERVED
* 
      ORR 
* 
* 
      HED DIAGNOSTIC CONTROL SECTION
* 
* 
* 
STEX  CLC INTP,C    TURN I/O SYSTEM OFF 
      CCA,CLE       SET PASSF 
      STA PASSF 
      STA TSTN      SET TSTN
      STA CFTT      SET CFTT-- NO TSTXX MSG DURING BASIC TEST 
      LDA DSN 
      LDB HDMX
      JSB O2AS,I
      JSB MSGC,I    OUT PUT IT
      DEF HDMS+0
      JSB MSGD      IF PRIV., PRINT REV 
      DEF REVM+0
      CLA           CLEAR PASS
      STA EOLC        COUNT 
      STA PASSL 
      LDB SW9       CHECK FOR USER SELECTION REQ
      JSB SWRT,I
      JMP USR       IT'S USERS CHOICE 
* 
      JSB TSTBC     EXECUTE BASIC CONTROL TESTS 
      LDB SW15      IF BIT 15 SET, HALT 
      JSB SWRT,I    CHECK SWREG 
      JMP *+2       HALT FOR BASIC TESTS
      JMP NUSR      NO HALT 
      CCA           A=177777
      LDB STDAM     B=DECONFIGURED TESTS
      HLT 76B       WAIT FOR USER 
* 
* 
* 
* 
NUSR  LDA STDAM     GET STANDARD TEST RUN, MASKED BY STDAM
      CMA 
      AND STDA
      LDB STDB      * 
      JMP EXC 
* 
USR   LDA SINA      RETRIEVE PREVIOUS RUN 
      LDB SINB
      HLT 75B       WAIT FOR USER INPUT 
* 
EXC   STB UINB      SAVE USER INPUTS
      STB SINB
      LDB IC        IF NOT PRIV. MODE, DISABLE TST15
      SLB,RSS 
      AND STDA      ONLY TST00-TST14
      STA UINA
      STA SINA
      LDB SW9       CHECK IF SW9 IS DOWN
      JSB SWRT,I
      JMP USR       NO GO AND WAIT
      CCA           SET TEST NUMBER 
      STA TSTN      =-1 
      STA CFTT
      CLA 
      STA TSTA      CLEAR TEST RUN FLAG 
      SPC 2 
* 
      JSB PASST     CHECK FOR SHORT LONG PASS 
* 
EXCL  LDA UINA      RESTORE A REG.
      LDB UINB      RESTORE B REG.
      ERA,RAL       ROTATE
      ERB             FIRST 
      ERA               TEST BIT
      STA UINA      SAVE POSITIONS
      STB UINB
      ISZ TSTN      MOVE TEST UP ONE
      NOP 
XCL1  LDA TSTN
      ADA TSTP      GET IT'S
      LDA A,I         ADDRESS 
      CPA .M1       IS IT END OF LIST 
      JMP EOL       YES 
      LDB UINB
      SSB,RSS       SHOULD IT BE RUN? 
      JMP EXCL      NO
      STA TSTA      YES - SAVE TEST ADDRESS 
      JSB ITCH      INITIALIZE TRAP CELL HALTS
      JSB TSTA,I    GO DO TEST
.EXRT LDA TSTN      DISPLAY TEST NUMBER IF HALTED 
      LDB SW15      CHECK FOR HALT AT END OF TEST 
      JSB SWRT,I
      HLT 76B       YES WAIT FOR OPERATOR 
      LDB SW9       CHECK FOR ABORT 
      JSB SWRT,I
      JMP USR       YES 
      LDB SW13      CHECK FOR LOOP ON ROUTINE 
      JSB SWRT,I
      JMP XCL1      YES - LOOP
      JMP EXCL      CONTINUE
* 
EOL   LDA TSTA      CHECK IF ANY TESTS WERE RUN 
      SZA,RSS       ? 
      JMP NUSR      NO  SO PICK UP STANDARD RUN 
      LDA EOLC      UP DATE PASS COUNT
      INA 
      SSA           IF NEG, CLEAR IT (ONLY 32767 PASSES)
      CLA 
      STA EOLC
      CCE 
      LDB PSCA      GET PASS COUNT
      ADB .2          ADDRESS 
      JSB I2AS,I    CONVERT IT, DECIMAL FMT 
* 
      LDA PASSL     INC LOGICAL PASS COUNT
      INA 
      STA PASSL 
* 
      JSB MSGC,I    CALL PRINT ROUTINE
PSCA  DEF PSC+0 
      LDB SW12      CHECK FOR LOOP ON DIAG. 
      JSB SWRT,I
      JMP *+4       YES 
      LDA EOLC
      LDB PASSL     LOGICAL PASS COUNT
      HLT 77B       NO WAIT AND DISPLAY PASS COUNT
* 
      JSB PASND     CHECK FOR PASSL ADJ.
* 
      LDA SINA      RESTORE ORIGINAL
      LDB SINB        PROGRAM 
      JMP EXC       DO IT ALL AGAIN 
      SKP 
*         MESSAGE OUTPUT WITH OUT HALT
* 
.MSGC NOP           ENTRY 
      JSB MSG       OUTPUT MESSAGE
      OCT 2000      SWITCH 10 CHECK 
      JMP .MSGC,I   RETURN TO CALLER
* 
*         MESSAGE OUTPUT WITH HALT
* 
.MSGH NOP           ENTRY 
      JSB MSG       OUTPUT MESSAGE
      OCT 2000      SWITCH 10 CHECK 
      LDA HLT       GET HALT CODE 
      STA *+2       PUT IT IN PLACE 
      LDA SAVA      RESTORE A REGISTER
      NOP           HALT FOR DISPLAY
      JMP .MSGH,I   RETURN TO CALLER
* 
*         ERROR MESSAGE WITH HALT 
* 
.ERMS NOP           ENTRY 
      JSB MSG       OUTPUT MESSAGE
      OCT 4000      SWITCH 11 CHECK 
      CLA 
      LDB SW14      CHECK SWR BIT 14 TO SUPPRESS
      JSB SWRT,I    HALT
      STA *+3       PUT  HALT IN PLACE
      LDA SAVA      RESTORE A & B 
      LDB SAVB
HLT   NOP           WAIT FOR OPERATOR 
      JMP .ERMS,I   RETURN TO CALLER
      SKP 
*         OUTPUT MESSAGE
* 
MSG   NOP 
      STA SAVA      SAVE A AND B REGISTERS
      STB SAVB
      LDB MSG,I     GET SWITCH REGISTER BIT 
      LDA MSG 
      ADA .-2       DECREMENT RETURN ADDRESS
      STA MSG 
      JSB SWRT,I    CHECK TO SUPPRESS MESSAGE 
      JMP MSG0      YES 
      LDA MSG,I     CHECK IF ERROR
      LDA A,I 
      ELA,CLE,ERA 
      LDA A,I       IF SO 
      ALF,ALF 
      AND .177
      CPA A.E 
      JSB CFTN      CHECK TO OUTPUT TEST NUMBER 
      LDA MSG,I     NO RETRIEVE FORMAT
      LDB A,I         ADDRESS 
      ELB,CLE,ERB 
      CLA,CLE 
      JSB FMTR,I
MSG0  LDA MSG,I     CONVERT HALT CODE 
      LDB A,I         FROM ASCII STRING 
      ELB,CLE,ERB 
      CCA,CCE 
      JSB AS2N,I
      STA N2AO      SAVE RESULT 
      AND .300      DECODE
      LDB H2          HALT CODE 
      CPA .100
      LDB H6
      CPA .200
      LDB H3
      CPA .300
      LDB H7
      LDA N2AO      GET HALT NUMBER 
      AND .77 
      IOR B 
      STA HLT       SAVE IT 
MSG1  LDA MSG,I 
      LDA A,I 
      SSA,RSS 
      JMP MSG2
      ISZ MSG,I 
      LDB MSG 
      ADB .2
      LDB B,I 
      JSB SWRT,I
      JMP MSG1
      LDA MSG,I 
      LDB A,I 
      ELB,CLE,ERB 
      CLA,CLE 
      JSB FMTR,I
      JMP MSG1
MSG2  ISZ MSG,I     ADJUST RETURN POINTERS
      ISZ MSG 
      ISZ MSG 
      ISZ MSG 
      LDA SAVA      RESTORE A AND B REGISTERS 
      LDB SAVB
      JMP MSG,I 
      SKP 
CFTN  NOP 
      LDA TSTN      GET TEST NUMBER 
      CPA CFTT      IS IT THE SAME ONE? 
      JMP CFTN,I    YES SKIP OUTPUT 
      STA CFTT      NO - THEN UPDATE IT 
      CLE 
      LDB PCB 
      JSB I2AS,I
      LDB PCBX
      STB .TSTN 
      CLA 
      JSB SLOP,I
      CLA,CLE 
      LDB TSTF
      JSB FMTR,I
      JMP CFTN,I
      SPC 2 
* 
IOAD  NOP 
N2AO  NOP 
      STA IOAD      SAVE NUMBER 
      AND .7        CONVERT FIRST 
      IOR .60         NUMBER
      STA B         SAVE IT 
      LDA IOAD      GET 
      RAR,RAR         SECOND
      RAR                 NUMBER
      AND .7        CONVERT 
      IOR .60         IT
      ALF,ALF       MOVE TO UPPER HALF
      IOR B         ADD LOWER 
      JMP N2AO,I      AND RETURN
* 
*         SWITCH REGISTER CHECK 
* 
.SWRT NOP 
      STA N2AO      SAVE A REGISTER 
* 
      LDA IC        CHECK FOR CW PRIV. MODE & BIT15 SET 
      SSA,SLA 
      JMP SWRT1     IF SO, SWR=IC 
      LIA SW        ELSE SWR=IS 
      STA IS
      JMP SWRT2 
* 
SWRT1 LIA SW        SWR=IC
      STA IC
      SSA           DID USER JUST RESET BIT15?
      JMP SWRT2     NO
      LDA IS        YES... SET IS BIT7
      IOR .200
      STA IS
      OTA SW        PUT SREG BACK 
* 
SWRT2 LDA IS        GET SWITCH REG. 
      AND B         MASK OUT BIT
      SZA,RSS       IS IT UP? 
      ISZ .SWRT     NO
      LDA N2AO      RESTORE A REGISTER
      LDB IS        LET B = SWITCH REGISTER 
      JMP .SWRT,I   RETURN TO CALLER
* 
* 
* 
*         INITIALIZE TRAP CELL HALTS
* 
ITCH  NOP 
      LDA TSH       GET STARTING TRAP CELL HALT 
      LDB .2        GET FIRST TRAP CELL LOCATION
TSHL  STA B,I       PUT IT IN PLACE 
      CPB .77       AM I FINISHED 
      JMP ITCH,I    YES 
      INB             NEXT ADDRESS
      JMP TSHL
* 
TSH   OCT 106077
* 
*         PUT JSB INSTRUCTION IN TRAP CELL
* 
TCJI  NOP 
      LDB JSBI      GET INSTRUCTION 
      STB IOSC,I    PUT IT IN TRAP CELL 
      LDA TCJI,I    GET LOCATION
      STA 3B        SAVE IT FOR JSB INSTRUCTION 
      ISZ TCJI      ADJUST RETURN 
      JMP TCJI,I    RETURN TO CALLER
* 
JSBI  JSB 3B,I      JSB INSTRUCTION 
* 
* 
*         INITIALIZE SELECT CODE I/O INSTRUCTIONS 
* 
ISC   NOP 
      STA IOSC      SAVE SELECT CODE
IOL   LDA B,I       GET ADDRESS OF LOCATION 
      CPA .M1       IS IT THE TERMINATOR
      JMP ISC,I     YES RETURN TO CALLER
      STA SAVA      SAVE ADDR 
      LDA A,I       GET INSTR 
      AND IOM       MASK OFF OLD SELECT CODE
      IOR IOSC      ADD IN NEW SELECT CODE
      STA SAVA,I       RESTORE  IT
      INB           MOVE TO NEXT ADDRESS
      JMP IOL       DO IT 
* 
*         CONFIGURATION SECTION 
* 
* NOTE: THIS SECTION HAS BEEN MODIFIED FOR USE OF A CONTROL WORD
*       AND TO ALSO EXECUTE A BASIC TEST BEFORE THE STANDARD ONES.
* 
.CONF JSB CONF      CONFIG I-O CHANNEL
      JMP STEX      RETURN TO DIAG CONTROL
CONF  NOP 
      CLC INTP,C    TURN I/O SYSTEM OFF 
CON1  LIA SW        GET CONFIGURATION OPTIONS 
      STA USSC      SAVE THEM 
      AND .77       CHECK FOR VALID SELECT CODE 
      SZA,RSS       IF=0, OK (NONE) 
      JMP CONFA 
      LDB A         IF NOT, CHECK FOR > 7 
      CMB,INB 
      ADB .7
      SSB           IF SC>7, GO ON
      JMP CONFA 
      HLT 73B       ELSE HALT FOR USER TO TRY AGAIN 
      JMP CON1
CONFA LDB IOID      GET BUFFER OF POINTERS TO IO INSTRS 
      JSB ISC       CONFIGURE INSTRS
      LDA USSC      GET CONF. OPTS AGAIN
      ALF,ALF       GET BIT 7 
      ELA,ELA       BIT0=SW7, E=SW6 
      IOR STDIC     SET BIT0 IF STDIC BIT0 SET
      AND .+1 
      STA ICEN      SET PRIV. MODE FLAG IF SET
      CLA           CLEAR STD TEST MASK WORD
      STA STDAM 
      LDA STDIC     SET CONF WORD WITH STDIC
      STA IC        
      CLA,SEZ       IF E SET (SWR6) THEN A=CONF. OPT. WORD, ELSE=0
      LDA USSC
      OTA SW        CLEAR OR SET SW 
      SEZ,RSS       IF E SET (SWR6) THEN NO HALT 74 
      HLT 74B       ALLOW USER TO CHANGE SR OPTIONS 
      JMP CONF,I    GO TO EXEC CONTROL SECTION
* 
* 
      HED AUXILARY ROUTINES 
* 
* 
* 
*S
* STAND ALONE VERSION OF IFBRK-- CHECK FOR CNF. REQUEST 
* 
* ENTRY:  JSB IFBRK 
*         DEF *+1 
* 
* ON EXIT, A=0 FOR NO, A=1 FOR CNF. REQUEST (SW BIT 7 SET)
* 
IFBRK NOP 
      CLA 
      LDB .200      FLAG WORD 
      JSB SWRT,I    CHECK SWR 
      INA           IF SET, A=1 
      LDB ICEN      GET PRIV. FLAG
      SZB,RSS       IF NOT PRIV. A=0
      CLA 
      LDB IFBRK,I   GET  RTN POINTER
      JMP B,I 
* 
* 
* 
* 
*S
* STAND ALONE INPUT ROUTINE DNPUX 
* 
*GET PARMS FROM REGS FOR CONF.
* 
* ENTRY: JSB DNPUX
*        DEF *+1
* 
DNPUX NOP 
      LIA SW        SAVE SWREG
      STA DNPSR 
      LDA IS        PUT IS IN SWREG 
      OTA SW
      LDA IC        GET CONF WORD 
      LDB PASSL     LOCAL PASS# 
      INB           INC FOR USER
      LDX IST       X=IST 
      HLT 67B       WAIT FOR HIM
      STA IC        PUT BACK NEW CONF. WORD 
      ADB .-1       DEC. PASS#
      STB PASSL 
      STX IST       SAVE NEW IST
      LIA           SW NEW SREG 
      STA IS
      LDA DNPSR     SAVED VALUE 
      LDA DNPUX,I   GET  RTN POINTER
      JMP A,I 
* 
DNPSR BSS 1 
* 
* 
* 
* 
*S
* STAND ALONE PAUSE ROUTINE-- HALTS FOR OPERATOR
* CALLING SEQ:  JSB PAUSE 
*               DEF *+2 
*               DEF HALT INSTR TO EXECUTE 
* 
PAUSE NOP 
      STA PAUSA     SAVE AREG 
      ISZ PAUSE     POINT TO INSTR
      LDA PAUSE,I 
      LDA A,I 
      STA PAUS1     PUT INSTR IN PLACE
      LDA PAUSA     GET AREG
      ISZ PAUSE     POINT TO RTN
PAUS1 NOP           HALT INSTR
      JMP PAUSE,I   DONE
* 
PAUSA BSS 1 
* 
* 
* 
* 
* 
      HED MESSAGES
HDMS  OCT 6412
      ASC 11,FPP-SIS-FFP DIAGNOSTIC 
HDM1  ASC 07,  DSN XXXXXX// 
REVM  ASC 06,  REV 1926// 
* 
* 
* 
      HED DIAGNOSTIC TABLES, ETC. 
* 
STDA  OCT 77777 
STDB  OCT 0 
STDIC OCT 0         DEFAULT CONF. WORD
HDMX  DEF HDM1+3
* 
TSTP  DEF *+1       TABLE OF TEST NUMBERS 
      DEF TST00+0   FIXS TEST 
      DEF TST01+0   FIXD TEST 
      DEF TST02+0   FLTS TEST 
      DEF TST03+0   FLTD TEST 
      DEF TST04+0   ADD TEST
      DEF TST05+0   SUB TEST
      DEF TST06+0   MPY TEST
      DEF TST07+0   DIV TEST
      DEF TST08+0   ACC. TEST 
      DEF TST09+0   SIS1 TEST 
      DEF TST10+0   SIS2 TEST 
      DEF TST11+0   SIS3 TEST 
      DEF TST12+0   FFP1 TEST 
      DEF TST13+0   FFP2 TEST 
      DEF TST14+0   FFP3 TEST 
      DEF TST15+0   MAN ENTRY TEST
.M1   DEC -1
* 
IOID  DEF *+1       TABLE OF I-O CHANNEL CONFIGURATION
      DEF STCSC+0 
      DEF STFSC+0 
      DEF CLCSC+0 
      DEF INTSC+0 
      DEC -1
* 
IOSC  NOP 
      HED DIAGNOSTIC CONSTANTS & STORAGE LOCATIONS
* 
SAVA  NOP 
SAVB  NOP 
EOLC  NOP 
TSTA  NOP 
SINA  NOP 
SINB  NOP 
UINA  NOP 
UINB  NOP 
BTMP  NOP 
      DEC -10,-9,-8,-7,-6,-5,-4,-3,-2,-1
.     OCT 0 
      DEC 1,2,3,4,5,6,7,8,9,10
.2    OCT 2 
.7    OCT 7 
.10   OCT 10
.60   OCT 60
.77   OCT 77
.177  OCT 177 
D100  DEC -100
IOM   OCT 177700
SW15  OCT 100000
SW14  OCT 40000 
SW13  OCT 20000 
SW12  OCT 10000 
S812  OCT 010400
SW9   OCT 1000
.100  OCT 100 
.200  OCT 200 
.300  OCT 300 
H2    OCT 102000
H6    OCT 106000
H3    OCT 103000
H7    OCT 107000
CFTT  DEC -1
TSTF  DEF *+1 
      ASC 3,TEST
.TSTN ASC 2,XX//
PSC   ASC 6,PASS XXXXXX/
A.E   OCT 105 
PCB   DEF *+1       STORE DECIMAL TEST
      OCT 0           NUMBER IN 
      OCT 0             STRING
PCBX  ASC 1,XX
* 
      END TCPR
* 
* 
                                                                                                                