      IOR MSIGN     SET THE TRANSFER DIRECTION BIT
DAM13 CLC DMA-4     SET THE BUFER'S S.A.
DAM14 OTA DMA-4 
      LDB WDCNT    GET WORD COUNT 
DAM15 STC DMA-4     SET THE WORD COUNT
DAM16 OTB DMA-4 
      LDB RRF       START THE READ
      JSB OCMMD 
DIO24 STC DATA,C    SET THE DATA TRANSFER CONTROL 
DMA13 STC DMA,C     START THE DMA 
      LDB N4000     WORST CASE IS 200 CPI AT 12.5 IPS 
      STB TG
CIO30 SFC CMMD
      JMP ENT57     THE FLAG HAS BEEN SET, CONTINUE 
      ISZ TG        IS COUNT FOR 1MS WAITS DONE?
      RSS           NO - GO WAIT FOR 1 MORE MS
      JMP ENT56     YES - LOST THE DMA FLAG 
      LDA D1
      JSB TIMR,I    GO TO MS TIMER FOR 1 SEC
      JMP CIO30     GO BACK TO LOOK AT FLAG 
ENT56 JSB STATS     GET THE STATUS AND HOLD IT
      JSB CLEAR     CLEAR ANY RUN AWAY CONDITION
      RSS 
ENT57 JSB STATS     GET THE STATUS AND HOLD IT
DMA14 CLC DMA       TURN OFF THE DMA CHANNEL
DAM17 LIA DMA-4     SAVE THE DMA WORD COUNTER 
      STA RECNT 
DMA15 STF DMA       SET THE DMA CHANNEL FLAG
      JMP READ,I
 SPC 1
RREAD NOP 
      LDA STATU     RETRIEVE THE ORGINAL STATUS & 
      STA STAT1     -HOLD TEMPORARILY 
      LDA N3        SET THE RE-READ COUNT 
      STA TBF06 
ENT02 JSB BSRWF     BACKSPACE THE RECORD
      JSB READ1     RE-READ THE RECORD
      JSB RSTAT     CHECK THE READ STATUS 
      JMP ENT01     IT STILL HAS ERRORS 
      JSB S11CK     SUPPRESS ERROR MESSAGE? 
      JMP RENT0     YES 
      ISZ TNUMB     UPDATE TEST NO. 
      JSB TSTNI,I   PRINT TEST NUMBER 
      JSB DECNO     UPDATE TEST NUMBER
      CLA,CLE 
      LDB .MS03 
      JSB FMTR,I    'RE-READ REQUIRED'
RENT0 JMP RREAD,I 
ENT01 ISZ TBF06     INCREMENT THE RE-READ COUNTER 
      JMP ENT02     GO BACK AND TRY AGAIN 
      JSB S11CK     SUPPRESS ERROR MESSAGE? 
      JMP RENT1     YES 
      CLA,CLE 
      LDB .MS05 
      JSB FMTR,I    'UNABLE TO READ RECORD' 
RENT1 JSB S14CK     SUPPRESS ERROR HALT?
      JMP *+4       YES 
      LDA TNUMB     LOAD TEST NUMBER
      LDB STATU        AND STATUS 
      HLT 57B       NO
      LDB REW       REWIND TO THE LOAD POINT
      JSB OCMMD     -AND START OVER 
      LDA ID        GET THE FORMAT ID 
      STA *+3 
      LDA TNUMB    LOAD TEST NUMBER 
      LDB STATU      AND STATUS 
      NOP           HALT AND WAIT FOR THE OPERATOR
COEND JMP RECYL,I   GO BACK TO THE START
      SPC 3 
      ORG 4000B 
*     SWITCH REGISTER CHECK SUBSTITUTED FOR 
*     DIAGNOSTIC CONFIGURATOR'S.  GOOD RETURN 
*     (P+1) IF ANY BIT IS SET WITHIN MASK.
* 
* 
SW    NOP           SWITCH REGISTER CHECK 
      LIA SWRG      GET SW REG. SETTINGS
      AND B         MASK WITH B 
      SZA,RSS       BIT(S) SET? 
      ISZ SW        NO,ADJUST RETURN
      JMP SW,I
 SPC 1
*       **  ERROR BUFFER OR MESSAGE OUTPUT SECTION  **
 SPC 1
ERBFR EQU * 
* 
*     PRINT CYCLE COUNT AND TEST NUMBER 
 SPC 1
TSTNO NOP 
      CLA,CLE 
      LDB .MS19 
      JSB FMTR,I    #  'TEST ' #
      CLA,INA 
      LDB CYCNT 
      JSB FMTR,I    CYCLE COUNT 
      CLA,INA 
      LDB TNUMB 
      JSB FMTR,I    TEST NUMBER 
      JMP TSTNO,I 
      SPC 1 
*    PRINT THE GOOD AND BAD CHARACTERS    * 
 SPC 1
PCHAR NOP 
      LDA CNT11     GET ERROR WORD NUMBER 
      CMA              *
      ADA WDCNT        *
      CMA,INA          *
      STA AREG3        *
      CLA,CLE 
      LDB .MS02 
      JSB FMTR,I    'ERROR IN WORD NO.' 
      CLA,INA 
      LDB AREG3 
      JSB FMTR,I    NUMBER
      LDA ..LBF 
      STA .LBF      RESET POINTER FOR USE BY BINO 
      LDA TBF05,I   ERROR WORD
      JSB BINO      CONVERT TO ASCII
      CLA,CLE 
      LDB .MS13 
      JSB FMTR,I    'WORD IN ERROR IS'
      CLA,CLE 
      LDB ..LBF 
      JSB FMTR,I    ERROR WORD
      LDA ..LBF 
      STA .LBF
      LDA TBF04,I   GOOD WORD 
      JSB BINO      CONVERT TO ASCII
      CLA,CLE 
      LDB .MS14 
      JSB FMTR,I    'AND IT SHOULD BE'
      CLA,CLE 
      LDB ..LBF 
      JSB FMTR,I    GOOD WORD 
      JMP PCHAR,I 
 SPC 1
*    LINE BUFFER LOADING ROUTINE
      SPC 1 
STAMB NOP 
      STA .LBF,I    ENTER WITH ASCII CHARC'S IN "A" 
      ISZ .LBF      GO TO NEXT TWO CHARC. LOCATIONS 
      JMP STAMB,I 
 SPC 1
*    BINARY NO. ROUTINE 
 SPC 1
BINO  NOP           ENTER WITH NO. IN "A" REG.
      LDB N8
      STB DGCNT     SET DIGIT COUNTER 
      LDB N4
      STB TBF02     THE DIGIT FORMAT COUNTERS 
      LDB N2
      STB TBF00 
ENT28 LDB A         PUT THE NO. IN THE "B" REG. ALSO
      RAL 
      RBL,RBL 
      STB TBF01     SAVE SHIFTED NUMBER 
      AND D1
      STA AREG      SAVE FOR EXIT 
      LDA B 
      AND D1
      LDB A         SET UP FOR PACKING
      LDA AREG      SET UP FOR PACKING
      ALF,ALF       POITION THE EVEN DIGIT TO THE 
      IOR B         -UPPER HALF OF THE WORD AND ADD 
      IOR ASCZ      -THE ODD DIGIT, THEN PUT IT IN
      JSB STAMB     -ASCII FORMAT BEFORE STORING
      ISZ DGCNT     INCREMENT DIGIT COUNT 
      JMP *+4      COUNT NOT 0, CONTINUE
      LDA SLASH,I 
      JSB STAMB 
      JMP BINO,I
      LDA TBF01 
      ISZ TBF00     INCREMENT THE DIGIT FORMAT COUNT
      JMP ENT28     GET THE NEXT TWO DIGITS 
      LDA SPACE     BLANK FORMAT CHAR.
      JSB STAMB 
      LDA TBF01     RESTORE "A" 
      ISZ TBF02     INCREMENT THE DIGIT FORMAT COUNT
      JMP ENT28-2   GET THE NEXT TWO DIGITS 
      LDA SPACE     BLANK FORMAT CHAR.
      JSB STAMB 
      LDA TBF01     RESTORE "A" 
      JMP ENT28-4   GET THE NEXT TWO DIGITS 
      SPC 1 
*    PRINT THE STATUS ROUTINE    *
 SPC 1
*  CALL:
*  "B" = THE EXPECTED STATUS
 SPC 1
PRSTA NOP 
      STB EXSTA     SAVE EXPECTED STATUS
      CLA,CLE 
      LDB .MS16 
      JSB FMTR,I    'STATUS WAS'
      LDA STATU     GIVE STATUS TO PRST 
      JSB PRST      PRINT MNEMONICS 
      CLA,CLE 
      LDB .MS14 
      JSB FMTR,I    'AND IT SHOULD BE'
      LDA EXSTA     GIVE STATUS TO PRST 
      JSB PRST      PRINT MNEMONICS FOR STATUS
      JMP PRSTA,I 
      SPC 2 
*    STATUS SYMBOL ROUTINE
 SPC 1
PRST  NOP 
      SZA,RSS 
      JMP PRST4     STATUS WORD CLEAR 
      LDB .SEP      RESET POINTER TO
      STB ..SEP        LIST OF MNEMONICS
      LDB SW12      INITIAL MASK
PRST1 JSB STMSK     BIT SET?
      JMP PRST2     YES 
PRST3 RBR           NO,SHIFT MASK 
      ISZ ..SEP     STEP POINTER TO LIST
      ISZ ..SEP        *
      CPB SW15      FINISHED? 
      RSS 
      JMP PRST1     NO
      JSB SKPL      CR/LF 
      JMP PRST,I
PRST2 STA AREG3     SAVE A AND B
      STB BREG2        REGISTERS
      CLA,CLE 
      LDB ..SEP     POINTER TO MNEMONIC 
      JSB FMTR,I    PRINT MNEMONIC
      LDA AREG3 
      LDB BREG2 
      JMP PRST3 
PRST4 CLA,CLE 
      LDB .MS17 
      JSB FMTR,I    'CLEAR' 
      JMP PRST,I
      SKP 
*     CALL :
*        LDA <STATUS WORD>
*        LDB <STATUS WORD MASK> 
*        JSB STMSK
*        <BIT SET>
*        <BIT NOT SET>
* 
STMSK NOP 
      STA STAT2 
      AND B 
      SZA,RSS 
      ISZ STMSK 
      LDA STAT2 
      JMP STMSK,I 
* 
.SEP  DEF *+1 
      ASC 2,SE,_
      ASC 2,OB,_
      ASC 2,RW,_
      ASC 2,TB,_
      ASC 2,CB,_
      ASC 2,TM,_
      ASC 2,LP,_
      ASC 2,ET,_
      ASC 2,TE,_
      ASC 2,CR,_
      ASC 2,FP,_
      ASC 2,DE,_
      ASC 2,OF,_
 SPC 1
 SPC 1
MS00  ASC 6,# CYCLE(S)/ 
MS01  ASC 11,COMMAND WAS REJECTED/
MS02  ASC 10,ERROR IN WORD NO. #/ 
MS03  ASC 9,RE-READ REQUIRED/ 
MS04  ASC 13,COULDN'T FIND CYCLE START/ 
MS05  ASC 11,UNABLE TO READ RECORD/ 
MS06  ASC 2,EOT/
MS07  ASC 13,NO UNIT SELECT SWITCH SET/ 
MS12  ASC 14,CMMD FLAG WAIT TIMED OUT !/
MS13  ASC 9,WORD IN ERROR IS _
MS14  ASC 9,AND IT SHOULD BE _
MS16  ASC 6,STATUS WAS _
MS17  ASC 3,CLEAR/
MS19  ASC 5,# TEST #/ 
MS20  ASC 14,DATA FLAG WAIT TIMED OUT!/ 
HEAD  ASC 15,13184A-7970E MAG. TAPE DIAG./
 SPC 1
END   EQU * 
 SKP
*       **  PROGRAM INITIALIZATION AND CONFIGURATION  **
 SPC 1
      ORG 16000B
IENT1 LIA SWRG      LOAD THE SWITCH REGISTER AND GET
      STA B         -THE 13184'S S.C. AND THE DRIVE'S 
      AND B37       -SPEED
      SZA           WAS THERE A S.C. ENTERED? 
      JMP IENT2     YES, CONTINUE 
      HLT 73B       NO,STOP AND LET THE OPERATOR
      JMP IENT1     -SET ONE IN THE SWITCH REGISTER 
IENT2 STA SC184     SAVE THE 13184'S SELECT CODE
      STA DATAC     ALSO SAVE THE DATA AND COMMAND
      INA           -CHANNEL I-O ADDRESSES
      STA CMMDC 
      LDA B         RESTORE "A" WITH THE SWITCH REG-
      ALF,ALF       -ISTER CONTENTS AND POSTITION THE 
      RAL,RAL       -DRIVE'S SPEED INDICATOR
      AND B37 
      SZA           WAS THE SPEED INDICATOR ENTERED ? 
      JMP IENT3     YES, CONTINUE 
      HLT 72B       NO,STOP AND LET THE OPERATOR
      JMP IENT1     -ENTER ONE
IENT3 SLA,RSS       IS THE SPEED 12.5 IPS 
      JMP IENT4     NO, TRY THE NEXT
      LDB T12.5     YES, SET THE TIMING CONSTANTS 
      JMP IENT7 
IENT4 RAR 
      SLA,RSS       IS IT 25.0 IPS
      JMP IENT5     NO, TRY THE NEXT ONE
      LDB T25.0     YES, SET THE TIMING CONSTANTS 
      JMP IENT7 
IENT5 RAR 
      SLA,RSS       IS IST 37.5 IPS 
      JMP IENT8 
      LDB T37.5     YES, SET THE TIMING CONSTANTS 
      JMP IENT7 
IENT8 LDB TT45      IT'S 45.0 IPS,SET TIMING CONSTANTS
IENT7 LDA T45.0     SET THE S.A. OF THE TIMING TABLE
      STA TBF00 
      LDA N11       SET THE NUMBER OF CONSTANTS THAT
      STA COUNT     -ARE IN THE TABLE 
      LDA B,I       GET THE CONSTANT AND STORE IT IN
      STA TBF00,I   -THE TABLE
      INB           ADVANCE THE CONSTANT POINTER
      ISZ TBF00     ADVANCE THE TIMING TABLE POINTER
      ISZ COUNT     INCREMENT THE CONSTANT COUNTER
      JMP *-5       NOT DONE YET
IENT9 EQU * 
*                        *
      LDA B20K      SET THE CONTROL WORD FOR THE DMA
      IOR SC184     -CHANNEL
      STA DMACW     SAVE THE CONTROL WORD 
      LDA SLCDD+1   CONFIGURE DATA CHANNEL
      LDB SLCDD       SELECT CODES
      JSB CNFG          * 
      DEF DATAC        *
      LDA SLCDC+1   CONFIGURE COMMAND CHANNEL 
      LDB SLCDC       SELECT CODES
      JSB CNFG         *
      DEF CMMDC        *
      LDB SW11      DMA CHANNEL 1 OR
      JSB SWRCK,I      CHANNEL 2? 
      JMP CONT7        CHANNEL 2
      LDA SLCDM+1   CONFIGURE DMA CHANNEL 1 
      LDB SLCDM        *
      JSB CNFG         *
      DEF D6           *
      LDA SLCDA+1   CONFIGURE DMA CONTROL CHANNEL 1 
      LDB SLCDA        *
      JSB CNFG         *
      DEF D2
      JMP CONT2 
CONT7 LDA SLCDM+1   CONFIGURE DMA CHANNEL 2 
      LDB SLCDM        *
      JSB CNFG         *
      DEF D7           *
      LDA SLCDA+1   CONFIGURE DMA CONTROL CHANNEL 2 
      JSB CNFG         *
      DEF D3        * 
CONT2 HLT 74B       CONFIGURATION COMPLETE HALT 
      JMP MDIAI,I   GO TO MAIN PROGRAM
* 
CNT00 BSS 1 
SC184 BSS 1 
D7    DEC 7 
TEMP  NOP 
* 
*     CONFIGURE I/O INSTRUCTIONS
* 
CNFG  NOP 
      CMA,INA 
      ADA B 
      STA CNT00     - (NUMBER OF POINTERS)
      LDA CNFG,I
      LDA A,I 
      STA TEMP      GET SELECT CODE 
CNFG1 LDA B,I       GET I/O INSTRUCTION 
      STA TBF00 
      LDA A,I 
      AND B.17M 
      ADA TEMP      INSERT SELECT CODE
      STA TBF00,I 
      INB           ADVANCE POINTER 
      ISZ CNT00     FINISHED? 
      JMP CNFG1     NO
      ISZ CNFG      YES 
      JMP CNFG,I
*                        *
B.17M OCT 177700
B20K  OCT  20000
* 
*     POINTERS TO DATA CHANNEL SC 
* 
SLCD0 EQU * 
      DEF DIO1      TEST 5
      DEF DIO2      TEST 5
      DEF DIO3      TEST 5
      DEF DIO4      TEST 6
      DEF DIO5      TEST 7
      DEF DIO6      TEST 7
      DEF DIO7      TEST 8
      DEF DIO8      TEST 13 
      DEF DIO9      TEST 13 
      DEF DIO10     TEST 15 
      DEF DIO11     TEST 15 
      DEF DIO12     TEST 15 
      DEF DIO13     TEST 16 
      DEF DIO14     TEST 17 
      DEF DIO15     TEST 17 
      DEF DIO16    TEST 38
      DEF DIO17    TEST 45
      DEF DIO18    TEST 46
      DEF DIO19    TEST 46
      DEF DIO20     READ
      DEF DIO21     READ
      DEF DIO22     READ
      DEF DIO23     READ
      DEF DIO24     READ
      DEF DIO25    TEST 28
      DEF DIO26    TEST 28
      DEF DIO27    TEST 29
      DEF ENT54     READ
SLCD1 EQU * 
* 
*     POINTERS TO COMMAND CHANNEL 
* 
SLCD2 EQU * 
      DEF BEGIN     COMMAND EXERCISE
      DEF CIO2      FLGWT 
      DEF CIO3      OCMMD 
      DEF CIO4      OCMMD 
      DEF CIO5      ACMMD 
      DEF CIO6      ACMMD 
      DEF CIO7      STATS 
      DEF CIO8      TEST 2
      DEF CIO9      TEST 3
      DEF CIO10     TEST 4
      DEF CIO11     TEST 9
      DEF CIO12     TEST 9
      DEF CIO13     TEST 9
      DEF CIO14     TEST 10 
      DEF CIO15     TEST 11 
      DEF CIO16     TEST 11 
      DEF CIO17     TEST 12 
      DEF CIO18     TEST 17 
      DEF CIO19     TEST 17 
      DEF CIO20     TEST 21 
      DEF CIO21     TEST 22 
      DEF CIO22     TEST 22 
      DEF CIO23     TEST 26 
      DEF CIO24    TEST 33
      DEF CIO25    TEST 33
      DEF CIO26    TEST 38
      DEF CIO27    TEST 44
      DEF CIO28    TEST 46
      DEF CIO29    TEST 46
      DEF CIO30     READ
      DEF CIO31    TEST 29
      DEF CIO32    TEST 30
SLCD3 EQU * 
* 
*     POINTERS TO DMA CHANNEL 
* 
      DEF DMA1
      DEF DMA2      TEST 15 
      DEF DMA3      TEST 15 
      DEF DMA4      TEST 15 
      DEF DMA5      TEST 15 
      DEF DMA6      TEST 15 
      DEF DMA7      TEST 16 
      DEF DMA8      TEST 38 
      DEF DMA9      TEST 38 
      DEF DMA10     TEST 38 
      DEF DMA11     TEST 46 
      DEF DMA12     TEST 46 
      DEF DMA13     READ
      DEF DMA14     READ
      DEF DMA15     READ
      DEF ENT00     TEST 16 
      DEF ENT04     TEST 15 
      DEF STDMA     TEST 46 
* 
*     POINTERS TO DMA CONTROL CHANNEL 
* 
SLCD5 EQU * 
      DEF DAM1      TEST 15 
      DEF DAM2      TEST 15 
      DEF DAM3      TEST 15 
      DEF DAM4      TEST 15 
      DEF DAM5      TEST 38 
      DEF DAM6      TEST 38 
      DEF DAM7      TEST 38 
      DEF DAM8      TEST 38 
      DEF DAM9      TEST 46 
      DEF DAM10     TEST 46 
      DEF DAM11     TEST 46 
      DEF DAM12     TEST 46 
      DEF DAM13     READ
      DEF DAM14     READ
      DEF DAM15     READ
      DEF DAM16     READ
      DEF DAM17     READ
SLCD6 EQU * 
* 
SLCDM DEF SLCD3     POINTERS TO DMA CHANNEL 
      DEF SLCD5        I/O POINTER LIST 
SLCDA DEF SLCD5     POINTERS TO DMA CONTROL CHANNEL 
      DEF SLCD6        I/O POINTER LIST 
* 
*     DMA TIMING WINDOWS FOR 400 WORD TRANSFER
*       (TEST 46). THE ODD POSITION (1ST, 3RD, ETC.)
*       IS THE TIME BEFORE THE DMA FLAG IS DUE TO 
*       SET, AND THE EVEN POSITION IS THE ADDITIONAL
*       TIME (WINDOW) DURING WHICH THE DMA FLAG 
*       SHOULD SET. 
*                        *
S45.0 DEC 10        1600 CPI  45.0 IPS
      DEC 2          "    "    "    " 
      DEC 20        800   "    "    " 
      DEC 3          "    "    "    " 
      DEC 30        556   "    "    " 
      DEC 4          "    "    "    " 
      DEC 84        200   "    "    " 
      DEC 10         "    "    "    " 
* 
*     THE FINAL THREE CONSTANTS OF EACH TIMING
*       SECTION (S45.0, S37.5, S25.0,S12.5) ARE 
*       USED FOR TESTS 28 - 30 (34B - 36B). 
* 
      DEC 7                         " 
      DEC 1                         " 
      DEC 3                         " 
* 
S37.5 DEC 12        1600 CPI  37.5 IPS
      DEC 2          "    "     "   " 
      DEC 25        800   "     "   " 
      DEC 3          "    "     "   " 
      DEC 36        556   "     "   " 
      DEC 4          "    "     "   " 
      DEC 101       200   "     "   " 
      DEC 10         "    "     "   " 
* 
      DEC 8                         " 
      DEC 1                         " 
      DEC 4                         " 
* 
S25.0 DEC 18        1600  "   25.0  " 
      DEC 3          "    "     "   " 
      DEC 37        800   "     "   " 
      DEC 4          "    "     "   " 
      DEC 54        556   "     "   " 
      DEC 7          "    "     "   " 
      DEC 151       200   "     "   " 
      DEC 17         "    "     "   " 
* 
      DEC 12                        " 
      DEC 2                         " 
      DEC 5                         " 
* 
S12.5 DEC 37        1600  "   12.5  " 
      DEC 4          "    "     "   " 
      DEC 75        800   "     "   " 
      DEC 8          "    "     "   " 
      DEC 109       556   "     "   " 
      DEC 12         "    "     "   " 
      DEC 304       200   "     "   " 
      DEC 33         "    "     "   " 
* 
      DEC 25                        " 
      DEC 4                         " 
      DEC 11                        " 
* 
      SPC 1 
LBF   EQU * 
 SPC 1
 END
                                                                                  