      STB *+3       -THE SWITCH REGISTER AND HALT 
      JSB STATS     LOAD THE TEST'S STATUS AND ITS
      LDA TNUMB     LOAD TEST NUMBER
      NOP 
      JMP MDIAG     START AGAIN 
*                IRG (3)
ENT80 ISZ TNUMB     INCREMENT THE TEST NUMBER 
      JSB S15CK     CHECK SWITCH 15 
      LDA SWREG     RESTORE THE SWITCH REGISTER 
      OTA SWRG      -SETTINGS 
      ALF,ALF 
      RAL,RAL 
      AND B7        UP DATE THE FORMAT ID. POINTER
      LDB .IDFO 
      ADB A 
      STB IDPT      SET THE POINTER FOR CURRENT ID
      JSB FORFL     SET THE PROGRAM'S FORMAT FLAG 
 SPC 1
*      **  READ, MOTION AND STATUS TEST SECTION  ** 
 SPC 1
      JSB SAVAD     SET THE PROGRAM'S LOOP S.A. 
      LDA D25 
      STA TNUMB     UPDATE TEST NUMBER
CIO23 LIA CMMD      LOAD THE STATUS AND CHECK 
      AND NOT15     MASK OUT BIT 15 
      STA STATU     STORE THE STATUS AND CHECK
      AND D4        -THE FILE PROTECT BIT 
      SZA 
      CLA,RSS       THE TEST PASSED 
      CCA           THE TEST FAILED 
      LDB D4        THE EXPECTED STATUS IS (FP )
      JSB TEST      (26) (32B)
*                        *
      JSB LOPTN     CHECK THE PROGRAM LOOP
      JSB SAVAD     SET THE PROGRAM'S LOOP S.A. 
      LDA D26 
      STA TNUMB     UPDATE TEST NUMBER
      JSB FWDSP     SPACE OVER THE TAPE MARK
      JSB FLGWT     WAIT FOR THE OPERATION TO FINISH
      JSB STATS     GET THE STATUS AND CHECK FOR
      AND B200      -THE TAPE MARK
      SZA 
      CLA,RSS       THE TEST PASSED 
      CCA           THE TEST FAILED 
      LDB B200      THE EXPECTED STATUS IS TM 
      JSB TEST      (27) (33B)
*                        *
      JSB NTSTI,I   GO TO TESTS 28 - 30 (34B - 36B) 
*                IRG (4)
      LIA SWRG      LOAD THE SWITCH REGISTER AND
      STA SWREG     -SAVE ITS CONTENTS
      AND DMAMS     CLEAR SWITCH 5, IF SET
      OTA SWRG
      LDA INBUF     SET THE INPUT BUFFER'S S.A. 
      LDB N1        SET THE NUMBER OF WORDS 
      JSB CLRBF     CLEAR THE READ BUFFER 
      JSB READ      READ THE RECORD 
      LDA RECNT     LOAD THE DMA'S WORD COUNTER 
      SZA,RSS       DID IT FINISH THE TRANSFER ?
      JMP ENT82     YES, CONTINUE 
      CLB           THE EXPECTED STATUS IS CLEAR
      JSB TEST      (31) (37B)
*                        *
      JMP *+3 
ENT82 ISZ TNUMB     INCREMENT THE TEST'S NUMBER 
      JSB S15CK     CHECK SWITCH 15 
      JSB RSTAT     CHECK THE READ STATUS 
      JSB RREAD     HAD DATA ERRORS, RE-READ
      LDA INBUF,I   SET THE BASE FOR THE RANDOM 
      STA BASE1     -NUMBER ROUTINE 
      ISZ TNUMB     INCREMENT THE TEST NUMBER 
*                      *      (32) (40B)
      JSB S15CK     CHECK SWITCH 15 
      LDA SWREG     RESTORE THE SWITCH REGISTER'S 
      OTA SWRG      -SETTINGS 
*                IRG (5)
      LDA FSF       FORWARD SPACE OVER THE TAPE 
CIO24 OTA CMMD      -MARK 
CIO25 STC CMMD,C
      JSB FLGWT     WAIT FOR THE OPERATION TO FINISH
*                IRG (6)
      JSB STATS     GET THE STATUS AND CHECK FOR
      AND B200      -THE TAPE MARK
      SZA 
      CLA,RSS       THE TEST PASSED 
      CCA           THE TEST FAILED 
      LDB B200      THE EXPECTED STATUS IS TM 
      JSB TEST      (33) (41B)
*                        *
      JSB FORID     CHECK FOR 7 OR 9 TRACK FORMAT 
      JMP *+3       IT'S 9 TRACK
      JMP ENT44     IT'S 7 TRACK
      JMP ENT44     IT'S 7 TRACK
      CPB IDFOR     IS IT 9 TRACK PE ?
      CLA,RSS       YES, CLEAR THE ODD BYTE RECORD FLAG 
      CCA           NO, SET THE ODD BYTE FLAG 
      STA ODD 
      LDA INBUF     SET THE INPUT BUFFER'S S.A. 
      LDB N5        SET THE NUMBER OF WORDS 
      JSB CLRBF     CLEAR THE READ BUFFER 
      JSB READ      READ THE RECORD 
      LDA ODD       CHECK THE ODD BYTE RECORD FLAG
      SZA,RSS 
      JMP ENT43     THIS IS NOT AN ODD BYTE RECORD
*                IRG (7)
      CLA           RESET THE DMA REMAINDER COUNT 
      STA RECNT 
      JSB STATS     GET THE STATUS AND CHECK FOR
      ALF           -THE ODD BYTE STATUS BIT
      SSA 
      CLA,RSS       THE TEST PASSED 
      CCA           THE TEST FAILED 
      LDB B4000     THE EXPECTED STATUS IS OB 
      JSB TEST      (34) (42B)
*                        *
      JMP *+4 
ENT43 ISZ TNUMB     INCREMENT THE TEST'S NUMBER 
      JSB RSTAT     CHECK THE READ'S STATUS 
      JSB RREAD     HAD DATA ERRORS, RE-READ
      LDA .CSRB     GET THE SINGLE TRACK PATTERN
      LDB N4        SET THE NUMBER OF WORDS IN THE
      STB WDCNT     -PATTERN SEQUENCE 
      JSB PATCM     (35) (43B)
*                       * 
      CLA           -PATTERN DATA, THEN CLEAR THE 
      STA ODD       -ODD BYTE RECORD INDICATOR
      LDA D39 
      STA TNUMB    UPDATE TEST NUMBER 
      JMP ENT62 
ENT44 ISZ TNUMB     INCREMENT THE TEST NUMBER TWICE 
      ISZ TNUMB 
      CCA           SET THE PROGRAM'S "DE" TEST 
      STA DEFLG     -FLAG 
      LDA INBUF     SET THE READ BUFFER'S S.A. AND
      LDB N4        -THE WORD COUNT 
      JSB CLRBF     CLEAR THE READ BUFFER 
      JSB READ      READ THE RECORD WITHOUT PARITY
      JSB RSTAT     -ENABLE AND CHECK THE STATUS
*                IRG (7)
      CLA,RSS       HAD ERRORS, THE TEST PASSED 
      CCA           NO, ERRORS, THE TEST FAILED 
      LDB D2        THE EXPECTED STATUS IS (DE )
      JSB TEST      (36) (44B)
*                        *
      LDA .CSRB     THE SINGLE TRACK PATTERN'S S.A. 
      LDB N4        SET THE NUMBER OF WORDS IN THE
      JSB PATCM     (37) (45B)
*                        *
      CLA           CLEAR THE PROGRAM'S "DE" TEST 
      STA DEFLG     -FLAG 
      LDB BSR       BACK SPACE THE RECORD 
      JSB OCMMD 
      JSB FLGWT     WAIT FOR THE OPERATION TO FINISH
*                IRG (6)
      LDA INBUF     SET THE BUFFER'S S.A. 
      LDB N4        SET THE WORD COUNT
      JSB CLRBF     CLEAR THE READ BUFFER 
      STA BUFAD     SAVE THE BUFFER'S S.A. AND THE
      STB WDCNT     -WORD COUNT 
      IOR MSIGN     ADD THE TRANSFER DIRECTION BIT
DAM5  CLC DMA-4     -S  TO THE READ BUFFER'S S.A. AND 
DAM6  OTA DMA-4     -SET IT IN THE DMA'S ADR. BUFFER
DAM7  STC DMA-4     SET THE DMA'S WORD COUNT
DAM8  OTB DMA-4 
      LDB RRFPE     START THE PARITY ENABLE READ
      JSB OCMMD 
DIO16 STC DATA,C    SET THE DATA TRANSFER CONTROL 
DMA8  STC DMA,C     START THE DMA 
      LDB N1024     1024 MS COUNTER 
      STB TG
CIO26 SFC CMMD      WAIT FOR THE FLAG 
      JMP ENT61     THE FLAG HAS BEEN SET, CONTINUE 
      ISZ TG        COUNT DOWN MS WAIT - DONE?
      RSS           NO - DO ANOTHER 1 MS WAIT 
      JMP ENT45     YES - LOST COMMAND FLAG 
      LDA D1
      JSB TIMR,I    WAIT 1 MS 
      JMP CIO26     CHECK AGAIN FOR FLAG
ENT45 JSB STATS     LOAD THE STATUS AND HOLD IT 
      JSB CLEAR     CLEAR ANY RUN AWAY CONDITION
      RSS 
ENT61 JSB STATS     LOAD THE STATUS 
DMA9  CLC DMA       CLEAR THE DMA CHANNEL 
DMA10 STF DMA 
*                IRG (7)
      JSB RSTAT     CHECK THE READ'S STATUS 
      CLA,RSS       HAD ERRORS, THE TEST PASSED 
      CCA           NO ERRORS, THE TEST FAILED
      LDB D2        THE EXPECTED STATUS IS (DE )
      JSB TEST      (38) (46B)
*                        *
      CLA           SET THE PROGRAM FLAG FOR A 9
      STA FLAG7     -TRACK PATTERN COMPARE
      LDA ERWRD     SET THE PARITY ERROR WORD 
      LDB N1        COMPARE THE DATA TO THE PATTERN 
      JSB PATCM     (39) (47B)
*                        *
      JSB FORFL     SET THE PROGRAM'S FORMAT FLAG 
ENT62 EQU * 
      LDB BSF       BACK SPACE THE FILE 
      JSB OCMMD 
      JSB FLGWT     WAIT FOR THE OPERATION TO FINSIH
*                IRG (5)
      JSB STATS     GET THE STATUS AND HOLD 
      STA STAT1     -IT TEMPORARILY 
      LDB BSF       BACK SPACE THE NEXT FILE
      JSB OCMMD 
      JSB FLGWT     WAIT FOR THE OPERATION TO FINISH
*                IRG (3)
      JSB STATS     GET THE STATUS AND CHECK FOR
      JSB TMARK     -A TAPE MARK
      CCE,RSS       NO TAPE MARK
      CLE           THE STATUS IS OK
      LDA STAT1     CHECK THE FIRST STATUS FOR TM 
      AND N3        MASK OUT "DE" FROM THE ODD BYTE 
      JSB TMARK     -RECORD FIRST 
      JMP ENT46     NO TAPE MARK FROM THE FIRST 
      SEZ,RSS       -PORTION, CHECK THE SECOND
      JMP ENT47+1   BOTH PORTIONS PASSED
      JMP ENT47     FAILED THE SECOND PORTION 
ENT46 LDB STAT1     LOAD THE STATUS OF THE FIRST
      STB STATU     PORTION IN THE STATUS BUFFER
ENT47 CCA,RSS       THE TEST FAILED 
      CLA           THE TEST PASSED 
      LDB B200      EXPECTED STATUS IS TM 
      JSB TEST      (40) (50B)
*                        *
      JSB LOPTN     CHECK THE PROGRAM LOOP
      LDB FSR       FORWARD SPACE OVER THE TAPE MARK
      JSB OCMMD 
      JSB FLGWT     WAIT FOR THE OPERATION TO FINISH
*                IRG (4)
      JSB STATS     GET THE STATUS AND HOLD IT
      STA STAT1     -TEMPORARILY
      LDA INBUF     SET THE INPUT BUFFER'S S.A. 
      LDB N1        THE NUMBER OF WORDS TO BE READ
      JSB CLRBF     CLEAR THE READ BUFFER 
      JSB READ      READ THE RECORD 
*                IRG (5)
      JSB RSTAT     CHECK THE READ STATUS 
      JSB RREAD     HAD DATA ERRORS, RE-READ
      LDA INBUF,I   CHECK FOR THE CORRECT RECORD
      CPA BASE1 
      JMP ENT49     EVERYTHING IS OK
      LDA INBUF     SET UP TO PRINT THE EXPECTED
      STA TBF05     -AND READ CHARACTERS
      LDA BASE. 
      STA TBF04 
      CCA           SET THE PROGRAM'S READ FLAG 
      STA RDOP
      LDA STAT1     COMBINE BOTH STATUS 
      IOR STATU 
      STA STATU 
      CCA,RSS 
ENT49 CLA 
      LDB B200      EXPECTED STATUS IS TM 
      JSB TEST      (41) (51B)
*                        *
      LDB BSR       BACK SPACE THE TWO CHARACTERS 
      JSB OCMMD     -RECORD 
      JSB FLGWT     WAIT FOR THE OPERATION TO FINISH
*                IRG (4)
      JSB STATS     GET THE STATUS OF THE OPERATION 
      SZA           IS THE STATUS CLEAR ? 
      CCA,RSS       NO, THE TEST FAILED 
      CLA           YES, THE TEST PASSED
      CLB           THE EXPECTED STATUS IS CLEAR
      JSB TEST      (42) (52B)
*                        *
      JSB FWDSP     FORWARD SPACE ONE RECORD
      LDA SELCM     ISSUE A UNIT SELECT COMMAND 
      JSB ACMMD 
      JSB STATS     GET THE STATUS AND HOLD IT
      AND D8        -CHECK THE COMMAND REJECT BIT 
      CPA D8
      CLA,RSS       THE TEST PASSED 
      CCA           THE TEST FAILED 
      LDB D8        THE EXPECTED STATUS IS CR 
      JSB TEST      (43) (53B)
*                        *
      JSB FLGWT     WAIT FOR THE COMMAND FLAG 
*               IRG (5) 
      JSB FWDSP     START SPACING OVER THE TAPE MARK
      LDA BSR       ISSUE ANOTHER MOTION COMMAND AND
CIO27 OTA CMMD      -CHECK THE REJECT STATUS BIT
      JSB STATS     GET THE STATUS AND HOLD IT
      AND D8        -CHECK THE REJECT STATUS BIT
      CPA D8
      CLA,RSS       THE TEST PASSED 
      CCA           THE TEST FAILED 
      LDB D8        THE EXPECTED STATUS IS "CR" 
      JSB TEST      (44) (54B)
*                        *
      JSB FLGWT     WAIT FOR THE COMMAND FLAG 
*               IRG (6) 
      LDB RRF       START A READ OPERATION
      JSB OCMMD 
DIO17 STC DATA,C    SET THE DATA TRANSFER CONTROL 
      JSB FLGWT     WAIT FOR THE OPERATION TO FINISH
*               IRG (7) 
      JSB STATS     GET THE STATUS AND CHECK FOR THE
      AND D18       -DATA ERROR AND TIMING STATUS 
      CPA D18 
      CLA,RSS       THE TEST PASSED 
      CCA           THE TEST FAILED 
      LDB D18       THE EXPECTED STATUS IS "DE","TE"
      JSB TEST      (45) (55B)
*                        *
      JSB FORID     CHECK THE RECORDING FORMAT
      JMP *+3       IT'S 9 TRACK
      JMP ENT36     IT'S 7 TRACK
      JMP ENT36     IT'S A 7 TRACK MODE 
      CPB IDFOR+1   WHICH 9 TRACK FORMAT ?
      JMP ENT37     IT'S 800 CPI
      LDB DEL0      IT'S 1600 CPI, LOAD THE TIMING
      JMP ENT58     -CONSTANTS
ENT36 CPB IDFOR+2   IS IT 800 CPI ? 
      JMP ENT37     YES, SET THE CONSTANT 
      CPB IDFOR+5   IS IT 800 CPI ? 
      JMP ENT37     YES, SET THE CONSTANT 
      CPB IDFOR+3   NO, TRY 556 CPI 
      JMP ENT65     IT'S 556 CPI, SET THE CONSTANT
      CPB IDFOR+6   TRY THE OTHER 556 CPI 
      JMP ENT65     IT'S THIS 556 CPI 
      LDB DEL0+3    IT'S 200 CPI, LOAD THE TIMING 
      JMP ENT58     -CONSTANTS
ENT65 LDB DEL0+2    IT'S 556 CPI, LOAD THE TIMING 
      JMP ENT58     -CONSTANTS
ENT37 LDB DEL0+1    IT'S 800 CPI, LOAD THE TIMING 
ENT58 LDA B,I       -CONSTANTS
      STA TMCN1     STORE FIRST CONSTANT (-10%) 
      INB           GET 'WINDOW' CONSTANT 
      LDA B,I 
      STA TMCN2     STORE SECOND CONSTANT (+10%)
      LDA RRF 
CIO28 OTA CMMD      START A READ OPERATION
      JSB STATS     LOAD THE STATUS AND CHECK 
      JSB REJBT     -THE REJECT BIT 
      SZA,RSS       WAS IT SET ?
      JMP REJCT     YES 
CIO29 STC CMMD,C    NO,START THE TAPE 
DIO18 STC DATA,C    TURN ON DATA CHANNEL ALSO 
      LDA INBUF     INITIALIZE DMA FOR A 400 WORD 
      IOR MSIGN     -READ 
DAM9  CLC DMA-4 
DAM10 OTA DMA-4 
      LDA N400
DAM11 STC DMA-4 
DAM12 OTA DMA-4 
      CLA 
      STA COUNT     INITIALIZE TIMING COUNTER 
DIO19 SFC DATA      WAIT APPROX. 1/4 SECOND 
      JMP STDMA     -FOR FIRST DATA FLAG
      INA,SZA 
      JMP *-3 
      JSB S11CK     SUPPRESS ERROR MESSAGE? 
      JMP STDMA-2   YES 
      ISZ TNUMB     UPDATE TEST NUMBER
      JSB TSTNI,I   PRINT CYCLE COUNT AND TEST NO.
      CLA,CLE 
      LDB .MS20 
      JSB FMTR,I    'DATA FLAG WAIT TIMED OUT'
      JSB S15CK     IS SWITCH 15 SET? 
      JMP ENT90 
STDMA STC DMA,C     FLAG FOUND, START DMA 
      LDA TMCN1     WAIT WHILE DMA IS WORKING 
      JSB TIMR,I
DMA11 SFC DMA       DMA SHOULDN'T BE FINISHED 
      JMP ENT75     IT IS FINISHED,ERROR
      LDA TMCN2     ADDITIONAL WAIT, DMA SHOULD 
      JSB TIMR,I       COMPLETE DURING THIS WAIT
DMA12 SFS DMA       IS DMA FINISHED?
      JMP ENT75     NO,ERROR
      JMP *+3       YES 
ENT75 JSB STATS     ERROR, LOAD THE TEST'S STATUS 
*                IRG (8)
      CCA,RSS       THE TEST FAILED 
      CLA 
      CLB           THE EXPECTED STATUS IS CLEAR
      JSB TEST      (46) (56B)
*                         * 
ENT90 EQU * 
      JSB FLGWT     WAIT FOR THE OPERATION TO FINISH
      JSB BSRWF     BACK SPACE THE RECORD 
*                IRG (7)
 SPC 1
*      **  DATA TRANSFER TEST SECTION  ** 
 SPC 1
      LDA N5        SET THE INITIAL ITERATION COUNT 
      STA ITCNT 
      CCA           INITIALLY SET THE FIRST PATTERN 
      STA ANBUF     -WORD 
      LDA .ANSA     SET THE FORMAT "A" PATTERN
      STA ANPAT 
      LDA N408      SET THE WORD COUNT
      STA WDCNT 
      LDA JSUBA     SET THE COMPARE ROUTINE WITH
      STA WENT0     -THE ANSI DATA SUB CALL 
      STA ENT74 
      LDA INBUF     GET THE INPUT BUFFER'S S.A. 
      JSB RDATA     START THE DATA TRANSFER 
      JSB WDCOM     (47) (57B)
*                       * 
      LDA N5        SET THE INITIAL ITERATION COUNT 
      STA ITCNT 
      CCA           INITIALLY SET THE FIRST PATTERN 
      STA ANBUF     -WORD 
      LDA .ANSB     SET THE FORMAT "B" PATTERN
      STA ANPAT 
      LDA N408      SET THE WORD COUNT
      STA WDCNT 
      LDA INBUF     GET THE INPUT BUFFER'S S.A. 
      JSB RDATA     START THE DATA TRANSFER 
      JSB WDCOM     (48) (60B)
*                       * 
      LDA JSUBR     SET THE COMPARE ROUTINE WITH
      STA WENT0     -THE RANDOM DATA SUB CALL 
      STA ENT74 
      LDB N4        GET THE STARTING WORD COUNT 
ENT60 STB WDCNT     SET THE WORD COUNT FOR RDATA
      LDA BASE1     SET THE BASE NUMBER FOR THE 
      STA BASE      -RANDOM NUMBER GENERATOR
      LDA INBUF     GET THE INPUT BUFFER'S S.A. 
      JSB RDATA     START THE DATA TRANSFER 
      JSB WDCOM     (49-57) (61B-71B) 
*                       * 
      JSB LENCH     GO TO THE RECORD LENGTH CONTROL 
      JMP ENT60     ALL RECORDS HAVEN'T BEEN READ 
ENT63 LDA N2        SET THE ROUTINE'S PASS COUNT
      STA TIME
ENT59 LDA BASE1     SET THE BASE NUMBER FOR THE 
      STA BASE      -RANDOM NUMBER GENERATOR
      LDA INBUF     SET THE READ BUFFER'S S.A.
      JSB RDATA     DO THE DATA TRANSFER
      JSB WDCOM     (58-59) (72B-73B) 
*                        *
      LDB WDCNT     DOUBLE THE WORD COUNT 
      BLS 
      ISZ TIME      INCREMENT THE ROUTINE'S PASS
      JMP ENT59     -COUNT AND DO IT ONE MORE TIME
ENT76 EQU * 
      LDA .TSRB     THE TRACK SINGLE ROTATING BIT 
      LDB N9        -PATTERN, 9 WORDS LONG
      JSB PATCO     DO THE TRANSFER AND COMPARE 
      LDA .TSAW     THE TRACK SAWTOOTH PATTERN
      LDB N5        THE PATTERN IS 5 WORDS LONG 
      JSB PATCO     DO THE TRANSFER AND COMPARE 
      LDA .CSAW     THE CHANNEL SAWTOOTH PATTERN
      LDB N5        THE PATTERN IS 5 WORDS LONG 
      JSB PATCO     DO THE TRANSFER AND COMPARE 
 SPC 1
      JMP RECYC     END OF THE MAIN PROGRAM 
 SPC 1
*    PATTERN DATA COMPARE    *
 SPC 1
*  CALL:  "A" - PATTERN S.A.
*         "B" - NUMBER OF WORDS IN THE PATTERN SEQUENCE 
 SPC 1
PATCO NOP 
      STA AREG2     HOLD THE S.A. OF THE PATTERN
      STB BREG1     HOLD THE NUMBER OF WORDS
      LDB N4        SET THE NUMBER OF WORDS IN THE
ENT64 STB WDCNT     -FIRST RECORD 
      LDA INBUF     SET THE INPUT BUFFER'S S.A. 
      JSB RDATA     START THE DATA TRANSFER 
      LDA AREG2 
      LDB BREG1 
      JSB PATCM     (60-86) (74B-126B)
*                        *
      JSB LENCH     CHECK THE NEXT RECORD LENGTH
      JMP ENT64     ALL RECORDS HAVEN'T BEEN READ 
      JMP PATCO,I 
 SPC 1
*    RECORD LENGTH CONTROL ROUTINE    * 
 SPC 1
*  CALL:  WDCNT IS ASSUMED TO BE LOADED PRIOR TO USING RDATA
* 
*  RETURN:  P+1 - CONTINUE WITH THE WORD COUNT DOUBLED
*           P+2 - ALL THE RECORDS IN THE SERIES HAVE BEEN READ
*           "B" - THE NEXT WORD COUNT 
 SPC 1
LENCH NOP 
      LDA WDCNT     LOAD THE WORD COUNT 
      ALS           DOUBLE IT 
      STA WDCNT     RESTORE IT TO THE COUNTER 
      STA B         SET "B" 
      AND B3777     IS THE WORD COUNT GREATER THAN
      SZA           -1024 WORDS ? 
      JMP LENCH,I   NO, GET THE NEXT RECORD 
      ISZ LENCH     YES, EXIT AND CHANGE PATTERNS 
      JMP LENCH,I 
 SKP
*    DATA TRANSFER ROUTINE    * 
 SPC 1
*  CALL:  WDCNT HAS TO BE SET PRIOR TO ENTERING THIS ROUTINE
*         "A" = THE S.A. OF THE INPUT BUFFER
 SPC 1
RDATA NOP 
      STA BUFAD     SET THE BUFFER'S S.A. 
      LDB WDCNT     LOAD THE PRESET WORD COUNT
      JSB CLRBF     CLEAR THE READ BUFFER 
      JSB READ      READ THE RECORD 
      JSB RSTAT     CHECK THE READ STATUS 
      JSB RREAD     HAD ERRORS RE-READ THE RECORD 
      JMP RDATA,I 
 SPC 1
*    READ STATUS ROUTINE    * 
 SPC 1
*  RETURN:  P+1 - DATA ERRORS 
*           P+2 - NO ERRORS 
 SPC 1
RSTAT NOP 
      LDA STATU     RETRIEVE THE STATUS OF THE READ 
      RAR,SLA       CHECK THE DATA ERROR STATUS BIT 
      JMP RSTAT,I   HAD ERRORS, EXIT P+1
      SZA,RSS 
      JMP ENT50     NO OTHER STATUS, EXIT P+2 
      ALF           REPOSITION THE BITS IN THE REG. 
      SSA,RSS       IS BIT 12 (SE) SET ?
      JMP ENT09     NO
      CCA           YES 
      CLB           THE EXPECTED STATUS IS CLEAR
      JSB TEST
*                        *
      JSB DECNO     DECREMENT THE TEST'S NUMBER 
ENT09 LDA STATU     RETRIEVE THE CURRENT STATUS 
      AND NOTET     MASK OUT THE (E0T) STATUS BIT 
      SZA,RSS 
ENT50 ISZ RSTAT     NO STATUS RETURN POINT
      JMP RSTAT,I 
 SKP
READ  NOP 
      STA BUFAD     SAVE THE INPUT BUFFER'S S.A.
      STB WDCNT     SAVE THE WORD COUNT 
      JMP ENT51 
READ1 NOP           RE-READ ENTRY POINT 
      LDA READ1     SET THE ROUTINE RETURN POINT
      STA READ
ENT51 LDB SW5       SWITCH 5 SET? 
      JSB SWRCK,I     * 
      RSS           YES, DO SKIP FLAG READ
      JMP ENT55     DO A DMA TRANSFER 
      LDB RRF       START THE READ
      JSB OCMMD 
DIO20 STC DATA,C    SET THE DATA TRANSFER CONTROL 
      LDA BUFAD     RETRIEVE THE BUFFER'S S.A.
      STA TBF01 
      LDB WDCNT     RETRIEVE THE WORD COUNT 
ENT52 CLA 
DIO21 SFC DATA      WAIT FOR THE DATA FLAG
      JMP ENT54 
      INA,SZA       INCREMENT THE TIMING COUNT
      JMP *-3 
      JMP ENT53     LOAD THE FLAG 
ENT54 LIA DATA,C    LOAD THE STAT WORD AND
      STA TBF01,I   -STORE IT IN THE BUFFER 
      ISZ TBF01     ADVANCE THE BUFFER POINTER
      INB,SZB       INCREMENT THE WORD COUNTER
      JMP ENT52     READ THE NEXT TWO BYTES 
DIO22 CLC DATA,C    CLEAR THE DATA CONTROL
      JSB FLGWT     WAIT FOR THE OPERATION TO FINISH
      JSB STATS     LOAD THE STATUS AND HOLD IT 
      JMP READ,I
ENT53 JSB STATS     GET THE STATUS AND HOLD IT
      JSB CLEAR     CLEAR AND RUN AWAY CONDITIONS 
DIO23 CLC DATA,C
      JSB S11CK     SUPPRESS ERROR MESSAGE? 
      JMP ENT55-1   YES 
      ISZ TNUMB     NO, UPDATE TEST NUMBER
      JSB TSTNI,I   PRINT TEST NUMBER 
      JSB DECNO     UPDATE TEST NO. 
      CLA,CLE 
      LDB .MS20 
      JSB FMTR,I    'DATA FLAG WAIT TIMED OUT !'
      JMP READ,I    EXIT
ENT55 LDA BUFAD     RETRIEVE THE BUFFER'S S.A.
        