ASMB,A,B,L,C  
      ORG 2 
* 
* 
********************************************************************
*                                                                  *
*     VERIFICATION PROGRAM FOR 6140A                               *
*                                                                  *
*                                                                  *
*     14916-80001 TO 80003  REV A  EARL L. GABLE  JUNE 1974        *
*     14916-80001 TO 80003  REV B  BOB HARRISON  MARCH 1976        *
*                                                                  *
*                                                                  *
*     THE PROGRAM USES THE TELEPRINTER FOR INPUT/OUTPUT OF         *
* INFORMATION TO AND FROM THE TEST PROGRAM. THE TTY DRIVER IS      *
* CONTAINED IN THE PROGRAM. NO EXTERNAL DRIVERS ARE REQUIRED.      *
* PROGRAM CONFIGURATION IS INITIATED BY RUNNING THE PROGRAM        *
* STARTING AT ADDRESS 2B WITH THE TTY I/O CHANNEL SET IN BITS      *
* 5-0 OF THE SWITCH REGISTER. THE CONFIGURATION SECTION OF         *
* THE PROGRAM THEN REQUESTS ALL NECESSARY INFORMATION FROM THE     *
* TTY. A CONFIGURED TAPE MAY BE PUNCHED IF DESIRED.                *
*                                                                  *
*     THE TESTING OPERATIONS ARE BEGUN BY STARTING THE TEST        *
* PROGRAM AT ADDRESS 100B. THE PROGRAM WILL REQUEST ANY ADDITIONAL *
* INFORMATION AND DATA. TYPING "S" AS THE ANSWER WILL TERMINATE    *
* ANY TEST SEQUENCE AND WILL CAUSE A NEW REQUEST FOR "TEST NUMBER?"*
* ANY TTY KEY INTERRUPT WILL CAUSE THE PROGRAM TO GO BACK TO THE   *
* BEGINNING OF THE CURRENT TEST. AN ILLEGAL NUMERIC DATA INPUT     *
* WILL EITHER CAUSE THE REQUEST FOR THE DATA AGAIN OR TREAT AS "0".*
* THE INPUT DATA COULD BE ERASED BY TYPING RUBOUT, ALT MODE, OR    *
* ESC MODE. RE-ENTER THE DATA RIGHT AFTER THESE CHARACTERS BEFORE  *
* HITTING CARRIAGE RETURN.                                         *
*                                                                  *
*     A TEST TABLE WILL BE PRINTED AUTOMATICALY IF ALL SIX TESTS   *
* WERE REQUESTED, OR BY TYPING "0" AFTER "TEST NUMBER?". SINCE THE *
* TEST TABLE IS INITIALIZED ONLY IF IT IS CALLED, IT IS IMPOSSIBLE *    
* TO START TESTING A NEW UNIT WITHOUT ENTERING THE TEST TABLE      *
* PRINTING ROUTINE.HOWEVER,A TTY KEY INTERRUPT WILL CAUSE THE REST *  
* OF THE TABLE TO BE SKIPPED, INITIALIZE THE TABLE, AND RETURN TO  *
* "UNIT NUMBER?".                                                  *
*                                                                  *
*     HLT 55B WILL OCCUR ON ATTEMPTING TO RUN AN UN-CONFIGURED     *
* PROGRAM OR ENTERING AN INVALID TTY I/O SELECT CODE IN THE SWITCH *
* REGISTER WHEN CONFIGURING THE PROGRAM. ENTER PROPER TTY SELECT   *
* CODE IN SWITCH REGISTER BITS 5-0 AND PRESS RUN.                  *
*                                                                  *
*     AN UNEXPECTED INTERRUPT ON I/O CHANNEL XX WILL CAUSE A       *
* "HLT XX" TO OCCUR ON THE TRAP CELL OF CHANNEL XX.  IN CASE OF    *
* POWER FAIL,ZERO AMPERES WILL BE PROGRAMMED,AND HLT 4B WILL OCCUR.*
*                                                                  *
*                                                                  *
********************************************************************    
*                                                               
* 
* 
* 
 SKP
      SUP 
      JMP 3,I        ENTRY POINT TO 
      DEF START      CONFIGURE PROGRAM
      JMP PFAIL      POWER FAIL LINK. 
      HLT 5          MEM PROTECT TRAP.
      REP 5 
      OCT 0,0,0,0,0,0,0,0,0,0 
      OCT 0,0,0,0,0,0,0,0 
      HED VERIFICATION PROGRAM CONSTANT,STORAGE & LINK
      SKP 
      ORG 100B
      JMP ENTA,I     ENTRY POINT TO RUN 
      NOP            TEST 
      DEF TTY.P      LINK TO PRINT
      DEF PUN        LINK TO PUNCH
      DEF TTY.I      LINK TO KEYBOARD 
FWA3  DEF FWAM3 
CLADR DEF .8         CURRENT LATCH CODE ADD.
ENTA  DEF ENTER      LINK TO RUN TEST 
FWA1  DEF FWAM1 
FWA2  DEF FWAM2 
BUFA  DEF BUFF       I/O BUFFER ADDRESS 
TTBLA DEF TSTBL      TEST LINKAGE TABLE 
CRLFA DEF CRLF       ADDR FOR CR/LF 
TSTA  DEF TST.2 
A     EQU 0 
B     EQU 1 
PSI   EQU 0 
TTY   EQU 0 
PNC   EQU 0 
.2    DEC 2 
.4    DEC 32         VOLTAGE LIMIT CODE X10 20V 
.8    DEC 0                             X10  2V 
      DEC 8                             X10  5V 
      DEC 16                            X10  7V 
      DEC 24                            X10 10V 
.8X1  DEC 64                            X1   2V 
.12X1 DEC 96                            X1  20V 
.5MA  DEC 10000      5/50 MA
.10MA DEC 20000      10/100 MA
.50M  DEC 100 
.15   DEC 15
.16   DEC 16
B7    OCT 7 
B10   OCT 10
LNFD  OCT 12
CRTN  OCT 15
EMODE OCT 33
NEG   OCT 55
POSI  OCT 53
B2000 OCT 2000
B4000 OCT 4000
B77   OCT 77
B100  OCT 100 
S     OCT 123 
Y     OCT 131 
N     OCT 116 
B177  OCT 177 
B377  OCT 377 
MS0   OCT 170000
C2116 DEC 2116
C2100 DEC 2100
C2114 DEC 2114
C2115 DEC 2115
T4X1  DEC 0 
AMPS  BSS 1 
MAG   BSS 1 
A1    BSS 1 
B1    BSS 1 
A2    BSS 1 
B2    BSS 1 
M25   DEC -25 
P200  OCT 200 
M400  OCT -400
MASKH EQU M400
INF1A OCT 77777 
INF2  OCT 177776
M1    DEC -1
M3    DEC -3
XSEXP OCT 77600 
.100  DEC 100.0 
FPN1  BSS 2 
.10   DEC 10.0
.5    DEC 5.0 
FPN2  BSS 2 
SIGN1 BSS 1 
FP11  DEC 0.0011
FPN3  BSS 2 
.M1   DEC -1.0
RNDOF DEF RNDAF 
X2    BSS 1 
EXPON BSS 1 
M2    DEC -2
M4    DEC -4
M6    DEC -6
M8    DEC -8
M11   DEC -11 
M15   DEC -15 
M48   DEC -48 
M45   DEC -45 
M56   DEC -56 
M64   DEC -64 
M70   DEC -70 
M1600 DEC -16000
M1639 DEC -1639 
PMAX  DEC -16383  
MMAX  DEC 16384   
CLEAR OCT 200 
P9    DEC 9 
P44   DEC 44
P55   DEC 55
OMODE OCT 175 
AMODE OCT 176 
IMODE OCT 160000
LMODE OCT 120000
PMODE OCT 110000
BUFF  BSS 10         I/O BUFFER 
STORA BSS 1 
STORB BSS 1 
UNIT  BSS 1 
BADDR BSS 1 
BUFAD BSS 1 
CLADD BSS 1 
CCNT  BSS 1 
CNT   BSS 1 
CHAN  BSS 1 
COUNT BSS 1 
END   BSS 1 
CRLF  OCT 106612
IOINS BSS 1 
FAIL1 BSS 1 
FAIL2 BSS 1 
FAIL3 BSS 1 
FAIL4 BSS 1 
FAIL5 BSS 1 
FAIL6 BSS 1 
CTR   BSS 1 
LSTND BSS 1 
MA    BSS 1 
MSG   BSS 1 
NEGFL BSS 1 
NUMBR BSS 1 
RECL  BSS 1 
SIGN  BSS 1 
RETAD BSS 1 
STATS BSS 1 
TEMP  BSS 1 
DECML OCT 56
RANGE BSS 1 
P3277 DEC 3277
.1    DEC 1.0 
TTAD1 BSS 1          I/O SLOT OF CONFIGURING TTY
TTAD2 BSS 1          I/O SLOT OF TEST SYSTEM TTY
PUNAD BSS 1          I/O SLOT OF PUNCH
PSA   OCT 0          I/O SLOT OF DVS
I.1   BSS 1 
CLAI  CLA 
HLT10 HLT 10B 
IORI  IOR B200
I.2   JMP CNF1
I.3   JMP INTCR 
MODEL DEF MD40
MD40  DEC 10000 
      DEC -2
      DEC 3480
      DEC 7720
      DEC 8700  
      DEC 14500 
      DEC 12180 
      DEC 19020 
      DEC 17400 
      DEC 25800 
GO    BSS 1 
B200  OCT 200 
AA1   BSS 1 
AA2   BSS 1 
AA3   BSS 1 
TABA  BSS 1 
TIMA  BSS 1 
      DEF T1
      DEF T3
      DEF M10 
      DEF T4
T1    DEC -13        TIMING CONSTANT
P5    DEC 5            FOR 2116 
      DEC -500
      DEC 167 
M10   DEC -10        TIMING CONSTANT
P4    DEC 4            FOR 2114/2115
      DEC -400
      DEC 134 
T3    DEC -11        TIMING CONSTANT
      DEC 4            FOR 2100 
      DEC -401
      DEC 134 
T4    DEC -9         TIMING CONSTANT
      DEC 4            FOR 21MX 
      DEC -300
      DEC 125 
      HED  VERIFICATION PROGRAM TEST EXECUTION
      SKP 
* 
*     SET UP
* 
ENTER CLC 00,C       ALL I/O OFF
      JSB CHRIN      RETURN ON TTY INTERRUPT
      LDA I.3        "INCTR" AS ENTRY POINT 
      STA I.1        FROM KEYBOARD INTERRUPT
      LDA HLT10      SET EACH TRAP CELL 
      LDB B10          "XX" TO
ENT1  STA B,I             HLT XX
      INA 
      INB 
      CPB B100       ALL 64 SET?
      RSS            YES
      JMP ENT1       NO, SET NEXT ONE 
      LDA TTAD2      GET I/O SLOT OF TTY
      SZA,RSS        WAS IT THERE?
      JMP STRT1      NO, GO TO CONFIGURING SECTION
      JSB SETIO      YES, SET ALL TTY 
      DEF TTYT        I/O INSTRUCTIONS
      LDA PSA        GET I/O SLOT OF DCS
      SZA,RSS        WAS IT THERE?
      JMP STRT1      NO, GO TO CONFIGURING SECTION
      JSB SETIO      YES, SET ALL DCS I/O 
      DEF PSLST       INSTRUCTIONS
      JSB PRINT      CARRIAGE RETURN AND
      DEF MES0        LINE FEED ON TTY. 
* 
EXEC  JSB PRINT      COMPUTER MODEL?
      DEF MES1
      JSB READ       READ FROM TTY
      JMP EXEC       NO DATA,TRY AGAIN
      JSB CONST      CONVERT TO BINARY
      JMP EXEC       INVALID DATA,TRY AGAIN 
      LDB TIMA+4    GET PROPER ADDRESS OF 
      CPA C2114       TIMING CONSTANT 
      LDB TIMA+3
      CPA C2115 
      LDB TIMA+3
      CPA C2116 
      LDB TIMA+1
      CPA C2100 
      LDB TIMA+2
      STB TIMA
NEXT  JSB PRINT      CONNECT LOAD 
      DEF MES6
      JSB PRINT 
      DEF MES78 
      JSB PRINT      Y AND N FOR YES AND NO 
      DEF MES66 
* 
*  UNIT NUMBER  
* 
UNUM  JSB PRINT      UNIT NUMBER? 
      DEF MES2
      JSB READ       READ FORM TTY
      JMP UNUM       NO DATA, TRY AGAIN 
      JSB GETUN      CONVERT TO BINARY
      JMP UNUM       ILLEGAL #,TRY AGAIN
      JSB PRINT      ALL SIX TEST?
      DEF MES65 
      JSB READ       READ FROM TTY
      JMP *-3        NO DATA,TRY AGAIN
      JSB YCHEK      WAS IT A "Y"?
      JMP TEST       NO,GO TO TEST
      CLA,INA        YES, SET FLAG
      STA GO
      LDA TSTBL+1    GO TO TEST 1 
      JMP A,I 
TEST  CLA            CLEAR GO FLAG
      STA GO
      JSB PRINT      CR/LF
      DEF MES0
      JSB PRINT      TEST NUMBER? 
      DEF MES3
      JSB READ       READ FROM TTY
      JMP TEST       NO DATA, TRY AGAIN 
      JSB CONST      CONVERT TO CONSTANT
      JMP TEST       ILLEGAL #,TRY AGAIN
      ADA TTBLA      ADD TEST NUMBER TO TABLE START 
      LDB MXTBL      GET ADDRESS OF TABLE END 
      CMB,CCE,INB    MAKE NEGATIVE
      ADB A          IS COMPUTED TABLE ENTRY
      SSB,RSS          BEYOND END OF TABLE? 
      JMP TEST       YES, TRY AGAIN 
      RAL,ERA        SET BIT 15 OF A FOR INDIRECT 
      JMP A,I        GO TO INDICATED TEST 
* 
*  LINK TO TEST ROUTINE 
* 
TSTBL DEF TST        TEST 0 PRINT TEST TABLE
      DEF T.01       TEST 1 UNIT RESPONSE 
      DEF T.02       TEST 2 FRONT PANEL 
      DEF T.03       TEST 3 VOLTAGE AMPLIFIER 
      DEF T.04       TEST 4 VOLTAGE RANGE 
      DEF T.05       TEST 5 CURRENT LATCH 
      DEF T.06       TEST 6 INTERRUPT 
MXTBL DEF *          END OF TABLE 
      HED BASE PAGE SUBROUTINE
OK    NOP 
      JSB PRINT      PRINT "TEST OK"
      DEF MES57 
      JMP OK,I
OUTP  NOP            OUTPUT B AND A REGISTER
      CLC PSI,C        TO POWER SUPPLY
      OTB PSI 
      OTA PSI 
      JMP OUTP,I
ZERO  NOP            PROGRAM ZERO AMPS  
      CLB 
      LDA .12X1      X1 20V LIMIT CODE
      IOR UNIT
      JSB OUTP
      LDB M1600 
      SFS PSI        WAIT FOR FLAG
      INB,SZB,RSS    TIMED OUT? 
      JMP ZERO,I       RETURN 
      JMP *-3 
ZERO1 NOP            PROGRAM ZERO AMPS,X10 RANGE
      LDB TIMA       PREPARE FOR RANGE CHANGE FLAG
      ADB .2
      STB TEMP  
      CLB            ZERO AMPS  
      LDA .4         X10 RANGE,20V LIMIT
      IOR UNIT
      JSB OUTP       OUTPUT TO UNIT 
      LDB TEMP  
      LDA B,I 
      SFS PSI        WAIT FOR FLAG
      INA,SZA,RSS     TIMEOUT 
      JMP ZERO1,I 
      JMP *-3 
YCHEK NOP            CHECK WHETHER INPUT
      JSB GETCR        CHARACTER IS "Y" 
      JMP YCHEK,I    NO CHARACTER,REJECT
      CPA Y 
      ISZ YCHEK      IF YES EXIT VIA (P+2)
      JMP YCHEK,I 
NCHEK NOP            CHECK WHETHER INPUT
      CPA N           CHARACTER IS "N"
      ISZ NCHEK      IF YES EXIT VIA (P+2)
      JMP NCHEK,I 
GETUN NOP           ENTRY POINT.
      JSB CONST     GET CONSTANT FROM INPUT BUFF. 
      JMP GETUN,I   NONE FOUND, REJECT CALL.
      SSA           IF NEGATIVE,
      JMP GETUN,I    REJECT CALL. 
      STA UNIT      SAVE POSSIBLE UNIT NUMBER.
      ADA M8        IF GREATER THAN 
      SSA              7,REJECT VIA P+1 
      ISZ GETUN     INCREMENT FOR 
      JMP GETUN,I    NORMAL EXIT. 
* 
*  READ FROM TTY
* 
READ  NOP           ENTRY POINT.
      JSB IMOFF     TURN OFF KEYBOARD INTERRUPT MODE
      CLA           INITIALIZE CHARACTER COUNT. 
      LDB READ      SAVE RETURN ADDRESS 
      STB RETAD      IN CASE OF LATER INTERRUPT.
READ2 JSB 104B,I    GET RECORD FROM TTY.
      CPA M2        
      JMP READ+1    RUBOUT IN RECORD, INPUT AGAIN.
      CMA,SSA,RSS   SET A=-1-# CHARS AND CHECK FOR
      JMP READ1     RECORD TOO LONG.
      STA CCNT      -1-# CHARACTERS < 0, SET CCNT.
      LDA BUFA      LOAD BUFFER ADDRESS.
      ALS           SHIFT LEFT, LEAST BIT USED AS 
      STA BADDR      ODD/EVEN FLAG. 
      ISZ READ      INCR. FOR NORMAL (P+2) RETURN.
READ1 CLA           OUTPUT CARRIAGE RETURN
      JSB 102B,I     AND LINE FEED. 
      JSB IMON      ENABLE TTY INTERRUPTS.
      JMP READ,I    RETURN. 
* 
*  CONVERT ASCII NUMBER TO BINARY INTEGER 
* 
CONST NOP           ENTRY POINT.
      CLB 
      STB NUMBR     INITIALIZE
      STB STORB      STORAGE. 
      STB NEGFL 
CON1  JSB GETCR     GET CHAR. FROM ASCII INPUT BUFF.
      CLA,SZA 
      JSB DIGCK     IS NUMERIC? 
      JMP CON2      NON-NUMERIC CHAR. OR NO CHAR. 
      AND .15       MASK OFF EXTRA BITS.
      ISZ STORB     INDICATE NUMBER FOUND.
      STA STORA     SAVE DIGIT. 
      LDA NUMBR     ROOM FOR
      ADA M1639      ONE MORE DIGIT?
      SSA,RSS 
      JMP CONST,I   NO, RETURN. 
      LDA NUMBR     MULTIPLY
      ALS            PARTIAL
      STA NUMBR       CONSTANT
      ALS,ALS          BY 
      ADA NUMBR         TEN.
      ADA STORA     ADD ON  
      STA NUMBR      NEXT DIGIT.
      JMP CON1      GO LOOK FOR NEXT DIGIT. 
CON2  LDB STORB     LOAD "NUMBER FOUND" FLAG. 
      CPA NEG       WAS CHARACTER "-" ? 
      JMP CON3      YES.
      CPA POSI       + SIGN?
      JMP CON4       GO TEST IT 
      CPA DECML     WAS IT D.P? 
      JMP CON5
CON6  SZB,RSS       CHAR. NOT "-" AND NO # FOUND. 
      JMP CONST,I    SO EXIT VIA (P+1). 
      LDA NUMBR     COMPLETE NUMBER FOUND.
      LDB NEGFL     WAS IT
      SZB            NEGATIVE?
      CMA,INA       YES, COMPLEMENT BINARY INTEGER. 
      ISZ CONST     INCREMENT FOR NORMAL
      JMP CONST,I    (P+2) RETURN.
CON3  SZB           IF "-" IMBEDDED IN NUMBER 
      JMP CONST,I    EXIT VIA (P+1).
      ISZ NEGFL     "-" WAS FIRST, SET FLAG TO
      JMP CON1       INDICATE NUMBER IS NEGATIVE. 
CON4  SZB            IF "+" IMBEDDED IN NUMBER
      JMP CONST,I      EXIT VIA (P+1) 
      JMP CON1       "+" WAS FIRST,IGNORE IT
CON5  ISZ STORB     INDICATE NUMBER FOUND 
      LDB STORB 
      JMP CON6
* 
*  GET CHARACTER FROM ASCII BUFFER
* 
GETCR NOP           ENTRY POINT.
      ISZ CCNT      ANY CHARACTERS LEFT?
      RSS 
      JMP GETCR,I   NO, END OF FILE EXIT. 
      LDB BADDR     LOAD BUFFER ADDRESS 
      ISZ BADDR     UPDATE FOR NEXT TIME. 
      CLE,ERB       SET CHARACTER FLAG. 
      LDA B,I       LOAD CURRENT BUFFER WORD. 
      SEZ,RSS       FIRST CHARACTER?
      ALF,ALF       YES, POSITION IT. 
      AND B177      MASK EXTRANEOUS BITS. 
      CPA S         STOP? 
      JMP TEST
      ISZ GETCR     INCREMENT FOR NORMAL
      JMP GETCR,I    (P+2) RETURN.
* 
*  CHECK CONTENTS OF A FOR VALID ASCII DIGIT
* 
DIGCK NOP           ENTRY POINT.
      LDB A 
      ADB M48       ASCII 60B 
      SSB            OR GREATER?
      JMP DIGCK,I   NO, RETURN WITH CHARACTER IN A. 
      ADB M10       ASCII 72B 
      SSB            OR LESS? 
      ISZ DIGCK     YES, SET "SUCCESS" EXIT.
      JMP DIGCK,I   RETURN. 
* 
*  PRINT RECORD 
* 
PRINT NOP           ENTRY POINT.
      JSB IMOFF     TURN OFF KEYBOARD INTERRUPT MODE
      CLA           OUTPUT CARRIAGE RETURN
      JSB 102B,I     AND LINE FEED. 
      LDB PRINT,I   B CONTAINS ADDR.-1 OF RECORD. 
      LDA B,I       GET RECORD LENGTH IN  A.
      INB           INCREMENT TO RECORD START.
      JSB 102B,I    OUTPUT RECORD.
      JSB IMON      ENABLE TTY INTERRUPTS.
      ISZ PRINT     SET TO RETURN 
      JMP PRINT,I    VIA (P+2). 
* 
PRNTT NOP            ENTRY POINT
      JSB IMOFF      TURN OFF KEYBOARD INTERRUPT MODE 
      LDA PRNTT,I    A CONTAINS ADDR. OF ADDR-1 OF RECORD 
      LDB A,I        B CONTAINS ADDR.-1 OF RECORD 
      LDA B,I        A CONTAINS RECORD LENGTH 
      INB            INCREMENT TO RECORD START
      JSB 102B,I     OUT PUT RECORD 
      JSB IMON       ENABLE TTY INTERRUPT 
      ISZ PRNTT      SET TO RETURN
      JMP PRNTT,I     VIA (P+2) 
* 
*  TTY INTERRUPT MODE OFF 
* 
IMOFF NOP           ENTRY POINT.
      STA STORA     SAVE A REGISTER.
      CLA           PREVENT INTERRUPTS
      STA TTAD1,I    FROM TTY I/O CHANNEL.
      LDA STORA     RESTORE A REGISTER. 
      JMP IMOFF,I   RETURN. 
* 
*  INTERRUPT SYSTEM ON
* 
IMON  NOP           ENTRY POINT.
      JSB ION       TURN ON TTY INTERRUPT MODE. 
      STF 00        TURN ON INTERRUPT SYSTEM. 
      JMP IMON,I    RETURN. 
* 
*   TTY INTERRUPT MODE ON 
* 
ION   NOP           ENTRY POINT.
      STA STORA     SAVE A REGISTER.
      LDA I.1       RESTORE TTY 
      STA TTAD1,I    INTERRUPT LINK.
      LDA IMODE 
      OTA TTY       SET TTY TO INPUT MODE.
      STC TTY,C     REQUEST CHARACTER.
      LDA STORA     RESTORE A REGISTER. 
      JMP ION,I     RETURN. 
* 
*   SETS RETURN FROM ONE-CHAR. INTERRUPT  
* 
CHRIN NOP 
      JMP CHRIN,I 
* 
*   ONE-CHAR. INTERRUPT ENTRY POINT 
* 
INTCR JSB IMOFF     TURN OFF TTY INTERRUPT MODE.
      LIA TTY       LOAD WORD FROM TTY. 
      AND B177      MASK UNUSED BITS. 
      CPA S         WAS CHARACTER "S".
      JMP TEST
      JSB DIGCK     WAS IT A NUMBER?
      JMP CHRIN,I   NO, RETURN TO LAST POINT MARKED.
      ALF,ALF       POSITION FIRST CHARACTER
      STA BUFA,I     AND PLACE IN INPUT BUFFER. 
      CLA,INA       SET A FOR CHAR. COUNT OF ONE. 
      LDB RETAD     RESTORE RETURN ADDRESS
      STB READ       FOR READ SUBROUTINE. 
      JMP READ2     INPUT REST OF RECORD FROM TTY.
* 
* CONFIGURATION ROUTINES
* 
START CLC 00,C      INTERRUPT SYSTEM OFF. 
      LDA I.2       SELECT "CNF1" AS ENTRY POINT
      STA I.1        FROM KEYBOARD INTERRUPT. 
      LIA 1         READ TTY I/O SLOT FROM SW. REG. 
      AND B77       MASK OFF ALL BUT BITS O-5.
      STA TTAD1     SAVE TTY I/O SLOT.
      ARS,ARS       IS IT 
      ARS            GREATER THAN 
      SZA             7B? 
      JMP CONFG     YES, GO ON. 
STRT1 HLT 55B       TTY I/O SLOT <10B 
      JMP START      TRY AGAIN. 
* 
*  CONFIGURE I/O INSTRUCTIONS 
* 
CONFG LDA TTAD1     GET TTY I/O SLOT. 
      JSB SETIO     GO SET I/O INSTRUCTIONS 
      DEF TTYT       FOR CONFIGURING TTY. 
CNF1  JSB PRINT     DO CARRIAGE RETURN
      DEF MES0       AND LINE FEED. 
      JSB PRINT     PRINT MESSAGE 
      DEF MES7       "TTY I/O ADDRESS?".
      JSB GETSL     GET TTY SLOT FROM INPUT BUFF. 
      JMP CNF1      NO VALID SLOT FOUND. TRY AGAIN. 
      STA TTAD2     SAVE I/O SLOT # OF TEST TTY.
CNF2  JSB PRINT     PRINT MESSAGE 
      DEF MES8        DCS I/O SLOT ADDRESS? 
      JSB GETSL      GET DCS SLOT FROM INPUT BUFF.
      JMP CNF2      NO VALID SLOT FOUND. TRY AGAIN. 
      STA PSA         SAVE I/O SLOT # OF DCS
CNF3  JSB PRINT     PRINT MESSAGE 
      DEF MES9       "SYSTEM DUMP I/O ADDRESS?".
      JSB GETSL     GET PUNCH SLOT FROM INPUT BUFF. 
      JMP CNF4      NO VALID SLOT FOUND. TRY AGAIN. 
      STA PUNAD     SAVE I/O SLOT # OF PUNCH. 
      JSB SETIO     GO SET I/O INSTRUCTIONS 
      DEF PUNT       FOR PUNCH. 
      JMP CNF5
CNF4  SZA           IF INVALID ENTRY FOR PUNCH
      JMP CNF3       I/O SLOT, TRY AGAIN. 
      STA PUNAD     NO DUMP REQUESTED.
      JMP ENTA,I    GO TO EXECUTE TESTS.
CNF5  JSB PRINT     PRINT MESSAGE 
      DEF MES10      "TURN ON PUNCH......FOR TAPE." 
      JSB PRINT     PRINT MESSAGE 
      DEF MES11      "TO RUN TEST.......PRESS RUN." 
      HLT 11B       READY TO DUMP.
* 
*  DUMP BINARY TAPE 
* 
DUMP  LDA PMODE     SET TTY INTO
DUMP1 OTA PNC        PUNCH MODE.
      CLB           PREVENT INTERRUPTS
      STB PUNAD,I    FROM PUNCH.
      JSB LDR       PUNCH LEADER. 
      LDA FWA1      END OF BASE PAGE BLOCK. 
      LDB .2        START OF BLOCK. 
      JSB PNCHA     PUNCH ABSOLUTE BLOCK. 
      LDA FWA2      END OF BLOCK. 
      LDB B2000     START OF BLOCK. 
      JSB PNCHA     PUNCH ABSOLUTE BLOCK. 
      LDA FWA3
      LDB B4000 
      JSB PNCHA 
      JSB LDR       PUNCH LEADER. 
      HLT 77B       END OF DUMP.
      JMP DUMP      DUMP ANOTHER TAPE.
                                                                                                                                                                                                                                                      