      JSB CHECK  CHECK TIMING ERROR--HLT 451
*   CAN LOOP ON 433-451 
* 
*  WRITE RING (WRITE ENABLED) TESTS 
*     HALT 74, REMOVE WRITE RING
*     HALT 75, REPLACE WRITE RING 
*     PRESS PRESET AND RUN AFTER EACH HALT
* 
J3    LIA SW
      AND P100   CHECK SWITCH 6 
      SZA,RSS 
      JMP RWUT  DON'T PERFROM UNLESS SW 6 SET 
      LDA P451
      STA HLTN  SET TEST HALT NO. 
      LDA CLR 
      JSB DOCMD   GIVE CLEAR CONTROLLER COMMAND 
      LDA P22   OPERATOR MESS. TO REMOVE RING 
      LDB ADMS2 
      JSB TYPE,I
      HLT 74B       WRITE RING TESTS,REMOVE RING
     LDA WRO
      JSB OUTC      OUTPUT WRITE COMMAND
      LDB TM3 
      LDA WNE 
       XOR REJ
      JSB CHECK  SHOULD BE NO WR RG & REJ 
*           THIS IS HALT 452
     LDA CLR
      JSB DOCMD   OUTPUT CLEAR COMD 
      LDA P22 
      LDB ADMS3  OPERATOR MESS. TO REPLACE RING 
      JSB TYPE,I
      HLT 75B       REPLACE WRITE RING
* 
*  REWIND AND UNLOAD (STANDBY) TESTS
* 
RWUT   LIA SW 
      AND P1000 
      SZA,RSS 
      JMP MR1 
      LDA P452
      STA HLTN
      LDA RWU       DO A REWIND AND UNLOAD
      JSB OUTC      OUT REWIND & UNLOAD COMMAND 
      LDA MS1  DELAY .667 MS
      JSB DELAY 
      LDA TBOL
      INA 
      LDB TM3 
      JSB CHECK S.B BUSY FOR CONTROOLER AND 
*         TRANSOPRT AS WEELL AS REWIND BIT
*           THIS IS HALT 453
      LDA MS2 
      JSB DELAY 
     LDA SLN
      JSB OUTC   RESELECT UNIT
      LDA TBOL
      LDB TM3 
      JSB CHECK  CONTROLLER SHOULD NOT BE BUSY NOW
*           THIS IS HLAT 454
      JSB GETUN 
      STA ADMS6+6 
      LDA P24 
      LDB ADMS6 
      JSB TYPE,I  TELL OPERATOR TO PUT UNIT ON LINE 
      HLT 10B 
MR1   EQU * 
      JSB JJ3,I  CRC TEST FOR 9 TRACK ONLY
      JSB DMCKJ,I     DMA TEST ROUTINE
      JSB PARCH,I  CHECK PROGRAMABLE PARITY 
      JMP LOOP   END OF DIAGNOSTIC LOOP 
*          RETURN TO BEGIN NEXT CYCLE 
* 
      SKP 
* 
*  SUBROUTINES
* 
CWAIT NOP           WAIT FOR COMMAND FLAG 
      CLA 
C23   SFC CMND
      JMP CWAIT,I   RETURN IF FLAG SET
      NOP           MAKE WAIT LOOP LONG ENOUGH
      NOP           MAKE WAIT LOOP LONG ENOUGH
      ISZ A 
      JMP C23 
      LDA CMFA  STUFF 'CMND' INTO WAIT MESSAGE
      LDB CMFA+1
PRHLT  EQU *
      STA NCFA+11 
      STB NCFA+12 
C13   CLC CMND   STOP CONTROLLER AND TRANSPORT
      JSB ENDWT 
      LDA CLR   GIVE CLEAR CONTROLLER COMMAND 
C33    OTA CMND 
      SZB     B=0 SAYS WE ARE WAITING 
*             FOR TRANSPORT TO MOVER
*             OFF OF LOAD POINT 
      JMP *+4 
      LDA P50    LOAD POINT MESSAGE 
      LDB STFA
      JMP PRH1
      LDA P36 
      LDB NCFA
PRH1  JSB TYPE,I  OUTPUT ONE OF THREE MESSAGES
      LDB CURC  PICK UP LAST COMMAND THAT WAS 
*                   GGIVEN TO CONTROLLER
      JSB CVOCT 
      STA ADTA+6
      STB ADTA+7
      LDA P20 
      LDB ADTB   OUTPUT MESS. SAYING WHICH
PRH2  JSB TYPE,I   COMMAND WAS LAST GIVEN 
      LDB TM14
      CLA,INA 
      JSB CHECK  FORCE ERROR PRINT OUT
      JMP LOOP    RETURN TO START OF DIAGNOSTIC 
* 
* 
* 
NCFA  DEF *+1 
      ASC 15,WAITED TOO LONG FOR      FLAG
DTFA  ASC 2,DATA
CMFA  ASC 2,CMND
* 
* 
* 
DWAIT  NOP     WAIT FOR DATA FLAG TO hE SET 
      CLA 
D31    SFC DATA 
      JMP DWAIT,I   RETURN IF DATA FLAG SET 
      INA,SZA 
      JMP *-3 
DWT1   LDA DTFA  NO DATAP FLAG--SO SET UP MESS. 
      LDB DTFA+1   TO SAY WE WAITED TOO LONG
      JMP PRHLT  GO STUFF 'DATA' INTO WAIT MESS.
* 
* 
* 
*   GIVE COMMAND I A -REG TO CONTROLLER 
DOCMD NOP           DO COMMAND,WAIT FOR FLAG
C26  LIB CMND   FIRST CHECK THAT THE CONTROLLER 
      SLB,RSS     IS NOT BUSY 
      JMP DOC1
      STA CURC  CONTROLLER IS BUSY SO CLEAR 
C30  CLC CMND  DATA AND COMMAND CHANNELS
      JSB ENDWT 
      STA B 
      LDA CLR   GIVE CLEAR CONTROLLER COMMAND 
      JSB OUTC
      JSB CVOCT 
      STA ADTA+6  SAY WHICH COMMAND WAS TO BE TRIED 
      STB ADTA+7
      LDA P24 
      LDB ADTA
      JMP PRH2
* 
* 
DOC1   EQU *   CINTROLLER WAS READY--SO JUST
*                GO OUTPUT COMMAND
      JSB OUTC      OUTPUT COMMAND
      JSB CWAIT  WAIT FOR COMMAND FLAG
     JMP DOCMD,I
* 
* 
ADTB  DEF *+4 
ADTA  DEF *+1 
      ASC 10,BUSY WHEN     GIVEN
* 
* 
*  WRITE A RECORD WITH CONSTANT DATA PATTERN
*    A-REG = NO OF WORDS TO WRITE 
*    B-REG =  DATA PATTERN
WRIT  NOP           WRITE WORD IN B 
      STA WCC 
      LDA WRO 
      JSB OUTC      GIVE WRITE COMMAND
      JSB DWAIT   WAIT FOR NEXT WRITE FLAG
D32   OTB DATA,C   OUTPUT NEXT WORD 
      ISZ WCC      ALL DONE?
      JMP D32-1  NOPE--WAIT FRO NEXT DATA FLAG
      JSB ENDWT  YES--START END-OF RECORD SEQUENCE
      JSB CWAIT   WAIT FOR READY
      JMP WRIT,I
* 
* 
* 
*   READ RECORD ROUTINE--CONSTANT DATA ONLY 
*   A-REG = NO. OF WORDS EXPECTED 
*   B-REG = DATA PATTERN EXPECTED 
READ   NOP     READ AND COMPARE DATA
      STA LEXP
      STA RCC 
      LDA SAVBA 
      STA SAVB  SET UP READ BUFFER ADD. 
      LDA RRO 
      JSB OUTC  GIVE READ RECORD COMMAND
      CLA,CLE  E=0 FOR COMPATE ROUTINE--CONSTANT DATA 
      STA RCCC
      STA D34+1 
RD1   CLA 
      INA,SZA,RSS 
      JMP DWT1  WAITED TOO LONG FOR DATA FLAG 
*                  SO TELL OPERATOR 
C27   SFC CMND   END-OF-RECORD? 
      JMP DFE    YES
D33   SFS DATA    DATA FLAG YET?
      JMP RD1+1  NOPE---CHECK FOR TIME OUT
D34   LIA DATA,C  YES--PICK UP NEXT DATA WORD 
      NOP    JMP D34+5 IS HERE IF ALL EXPECTED
*                WORDS HAVE BEEN READ IN
      ISZ RCCC   COUNT WORD 
      STA SAVB,I   SAVE WORD
      ISZ SAVB   BUMP BUFFER ADDRESS
      ISZ RCC     ALL EXPECTED WORDS READ?
      JMP RD1     NOPE
      LDA *+2   YES--LSO PLACE JMP IN NOP ABOVE 
      JMP RD1-1 
      JMP D34+5 
DFE    JSB CMPR   GO COMPARE DATA 
      JMP READ,I
* 
* 
* 
* 
*   COMPATE ROUTINE 
*  E=0 FOR BOMPARE OF CONSTANT DATA 
*     B-REG= DATA PATTERN 
*  E=1 FOR COMPARE OF DIFFERENT DATA WORDS
*       USE EXTENSIVE WRITE/WREAD PATTERN 
* 
CMPR   NOP
      LDA RCCC  NO. OF WORDS TO COMPARE 
      CMA,INA,SZA,RSS 
      JMP CMPR,I  NONE--SO JUST GET OUT 
      STA DOCMD 
      LDA SAVBA  ADDRESS OF READ BUFFER 
      STA SAVB
      CLA 
      STA RCCC
CMP1   LDA ADDR,I  NEXT WORD OF DATA PATTERN
      SEZ,RSS   IS THESE COMPARE OF CONSTANT DATA?
      LDA B   YES SO USE DATA WORD IN B-REG 
      LDB RRO   SEE IF EVEN PARITY MODE 
      SSB 
      AND SPMSK  YES--SO MASK OUT BITS 15-14&7-6
      STA B 
      LDA SAVB,I   LOAD WITH OBSERVED WORD
     ISZ RCCC   INCREMENT WORD COUNTER
      CPA B      COMPARE DATA 
      JMP *+9    GOOD COMPARE 
      ISZ ERRCT  EROR--SO BUMP COUNTER
      STA BADA,I   SAVE OVSERVED WORD 
      STB BADA+1,I   SAVE EXPECTED WORD 
      ISZ BADA    BUMP ADDRESSES
      ISZ BADA+1
      LDA RCCC   SAVE WORD #
      STA WORDA,I 
      ISZ WORDA 
      ISZ SAVB
      LDA ADDR  BUFFER ADD. OF DATA PATTERN BUFFER
      SEZ,INA,RSS  INCREMENT ADD.--CHECK FOR CONSTARNT TDATA
      JMP *+4   IT IS CONSTANT DATA-SO FORGET 
      CPA ADDE  CHECK FOR END OF DATA PATTERN BUFFER
      LDA ADD1  YES--SO RESET TO BEGINNING
      STA ADDR   SAVE NEW ADD.
      ISZ DOCMD   ALL WORDS CHECKED?
      JMP CMP1   NOPE 
      JMP CMPR,I   YUP
* 
* 
* 
* 
* 
*   ROUTINE TO PERFORM
*    SPAVE RECORD FORWARD OR BKWD 
*     PERFORMS ERROR CHECK
* 
SKIPR  NOP   A-REG HAS COMMAND ON ENTRY 
      JSB DOCMD  GIVE COMMD, & WIAT FOR READY 
      LDB CURC
      LDA TM3 
      RBR,SLB  IF CMD IS BACKSPACE, 
      RSS     NOPE
      XOR P2   THAN DON'T CHECK FOR P.E.
      STA B 
      CLA 
      JSB CHECK     GO CHECK
      JMP SKIPR,I 
* 
* 
* 
* 
*  ROUTINE TO PEFOM FILE ORIENTED COMMANDS
* 
SKIPF   NOP    COMMAND IN A-REG 
      JSB DOCMD  DO CMD AND WAIT FOR READY
      LDB TM3 
      LDA EOF 
      XOR PCKA  EXPECT P.E. IF ODD PAR, 7 TRK 
      JSB CHECK    CHECK FOR ERRORS 
      JMP SKIPF,I 
* 
* 
* 
* 
*  ROUTINE TO PERFORM COMMAND IN A-REG
*     AND CHECK THAT THE CONTROLLER IS
*     SILL BUSY AFTER THE DELAY GIVEN 
*      IN THE B-REG 
*    ALSO CHECK THAT THE COMMAND FLAG 
*     IS NOT SET
* 
BSYCK  NOP
      JSB OUTC    FIVE COMMAND
      STB TMP1   SAVE DLAY TIME 
      JSB DYSTJ,I   WAIT TO MOVE OFF LOAD POINT 
      LDA TMP1
      JSB DELAY  DELAY FOR TIME SPECIFIED IN B
      CLA,INA 
      LDB TM13  CHECK THAT COMTROLLER IS STILL BISY 
      JSB CHECK     HALT XXX, SHOULD BEBUSY ONLY
C28   SFC CMND
      CCA 
      LDB TM7  CHECK THAT CMD FLAG IS  NOT SET
      JSB CHECK     HL+1, FLAG N CLA
      JMP BSYCK,I   NOT BUSY RETURN 
* 
* 
* 
* 
*  DELAY ROUTINE
*    DELAY SUBROUTINE 
*     DELAY IN MS = X TIMES (A-REG) 
*   X= .0147 FOR 2100 
*    = .0265   FOR 2114/15
*    = .0212   FOR 2116 
* 
DELAY NOP 
* 
* 
      STA TMP1
      JMP *+1 
      JMP *+1 
      JMP *+1 
      JMP *+1 
      JMP *+1 
      ISZ A 
      JMP *-6 
      LDA TMP1
      JMP DELAY,I 
* 
* 
* 
*  THIS IS THE GENERAL ERROR-CHECKING ROUTINE 
*  ENTRY IS MADE WITH THE FOLLWOING CONDITIONS: 
* 
*  BITS 0-10 OF THE A-REG ARE THE EXPECTED STATUS 
*      BIT 0=CONTROLLER BUSY
*          1=PARITY ERROR 
*          2=TIMING ERROR 
*          3=COMMAND REJECT 
*          4=END-OF-TAPE
*          5=LOAD POINT 
*          6=END-OF FILE
*          7= NOT WRITE ENABLED 
*          8= NOT ON LINE(LOCAL)
*          9=TRANSPORT BUSY 
*         10=REWIND 
* 
* 
*  BITS 0-10 OF THE B-REG ARE THE STATUS BITS 
*        TO BE CHECKED
*   IF A BIT IS NOT SET,THEN THE CORESPONDING 
*        STATUS BIT IS NOT CHECKED
* 
*  BITS 11-15 OF THE BREG CONTROL OPTIONS 
*       OF THE CHECK ROUTINE
* 
*   BIT 15=1  SET UP LOOP FOR NEXT SET OF TESTS 
*   BIT 14=1  ERROR WILL CAUSE SEQUENCE ERROR 
*   BIT 13=1  NOT A STUTUS CHECK--(IN THIS CASE,
*           THE A-REG NOT= TO ZERO SAYS THERE 
*             IS AN ERROR 
*   BIT 12=1  A LOOP IS POSSIBLE(IF SW 13 SET)
*   BIT 11=1  CANNOT HALT PROGRAM--AN ERROR IN
*             HTE NEXT TEST WILL RESULT 
* 
* 
*  FURTHER, IF CELLS LABELLED RCC & ERRCT ARE 
*  NON-ZERO, A LENGTH AND/OR COMPARE ERROR
*   HAS BEEN DETECTED 
* 
* 
CHECK  NOP
      ISZ HLTN  INCREMENT HALT NO.
      NOP 
      STA TMPA  SAVE A-REG
      JSB STATS  PICK UP CURRENT STATUS 
      AND NOET   MASK OUT EOT AND DENSITY 
      STA STUS   SAVE STATUS
      STB TMPB   SAVE B-REG 
      RBL,RBL   CHECK B(13) 
      SSB,RSS  IF SET THEN NO STATUS CHECK
      JMP *+3 
      CLA 
      JMP *+4 
      LDA TMPB   MAKS OUT BITS WHICH ARE
      AND MSK2    NOT TO BE CHECKED 
      AND STUS
      STA STUS+1  THESE ARE THE BITS TO BE CHECKED
      LIA SW    CHECK SWITCHES 13 AND 10
      AND MS31  TO SEE IF ERROR PRINTEING SHOULD
      CPA MS31    BE PERFORMED
      JMP *+3   IF EITHER(BUT NOT BOTH) IS SET
      SZA      THEN 
      JMP NOCKJ,I   DO NOT PRINT ERRORS 
* 
*  NOW CHECK FOR ERRORS 
      LDA TMPA    EXPECTED STATUS 
      XOR STUS+1   OBSERVED STATUS
      IOR RCC   IF NON-ZERO,THEN LENGTH ERROR 
      IOR ERRCT  IF NON-ZERO THEN COMPARE ERROR 
      SZA,RSS 
      JMP NOCKJ,I  NO ERRORS
* 
* 
*   ERRORS SO CHECK FIRST TO SEE
*    IF SEQUENCE ERROR WILL RESULT
* 
      SLB,RSS 
      JMP PRER
      LDA CLR   YES SO CLEAR CONTROLLER 
      JSB OUTC
      LDA MS13
      JSB DELAY 
D35   CLC DATA,C
C29   CLC CMND,C
*  NOW PRINT ERROR MESSAGES 
PRER  EQU * 
      LDA ITER
      JSB CONV  CONVERT CYCLE # TO ASCII
      STA DGL1+2
      STB DGL1+3    CYCENO. 
      JSB GETUN  PICK UP UNIT NO. 
      STA DGL1+6
      LDA BLKZR 
      LDB WRO   DETERMINE PARITY MODE 
       SSB,RSS
      INA 
      STA DGL1+9
      LDB HLTN
      JSB CVOCT  CONVERT TEST STOP NO. TO ASCII 
      STA DGL1+12 
      STB DGL1+13 
      LDA DGL1N  PRINT ERROR LINE ONE 
      LDB DGL1
      JSB TYPE,I
      LDB TMPB   SEE IF THIS IS STATUS CHECK
      RBL,RBL 
      SSB 
      JMP NOST1  NOPE--SO DON'T PRINT EXP. STATUS 
      LDA TMPA
      XOR STUS+1
       SZA,RSS
      JMP NOST1  NO STATUS ERROR-SO JUST
*                   PRINT OBSERVED STATUS 
      LDB TMPA
      JSB CVST   FORMAT EXPECTED STATUS 
      LDA DG21
      JSB PRST  PRINT EXPECED STATUS
      LDB STUS+1
      RSS 
NOST1  EQU *
      LDB STUS
      JSB CVST   FORMAT OBSERVED STATUS 
      LDA DG22
      JSB PRST  PRINT OBSERVED STATUS 
      LDA RCC  WAS THERE A LENGTH OR DATA ERROR 
     IOR ERRCT
      SZA,RSS 
      JMP NODTP  NOPE 
      LDA LEXP
      JSB CONV  CONVERT LENGTH EXPECTED 
      STA DGL3+5
      STB DGL3+6
      LDA RCC  COMPUTE & FORMAT LENGTH OVSERVED 
       CMA,INA
      ADA LEXP
      JSB CONV
      STA DGL3+11 
      STB DGL3+12 
      LDA ERRCT 
      CMA 
      STA COUNT  COMPUTE & FORMAT NO. OF ERORS
      INA 
      JSB CONV
      STA DGL3+16 
      STB DGL3+17 
      LDA DGL3N 
      LDB DGL3
      JSB TYPE,I  OUTPUT EROR LINE
* 
* 
PRAG   EQU *     PRINT OUT GOOD&BAD WORDS 
      ISZ COUNT 
      RSS 
      JMP NODTP  NO MORE ERROR WORDS
      LDB BADB+1,I
      LDA GDTA
      JSB CVBIN   FORMAT EXPECTED WORD
      JSB CKMD   ODD OR VEN PARITU MODE?
      LDA DG4N2 
      ADA DG4N1  EVEN PARITY OR 9 TRACK 
      LDB DGL41   OUTPUT EXPECTED WORD
     JSB TYPE,I 
      LDB BADB,I
      LDA BDTA
      JSB CVBIN  FORMAT OBSERVED WORD 
      LDA WORDB,I 
      JSB CONV
      STA WDCTA 
      STB WDCTA+1 
      LDA DG4N3 
       LDB DGL42
      JSB TYPE,I  OUTPUT BAD WORD 
      CLA 
      JSB TYPE,I  GIVE NEW LINE 
      ISZ BADB
      ISZ BADB+1
      ISZ WORDB 
      LIA SW   OUTPUT ONLY ONE BAD SET
      ALF      UNLESS SWITCH 11 IS ET 
      SSA 
      JMP PRAG
NODTP  EQU *
     LIA SW   HALT ON ERROR IF SW 14 SET
      RAL 
      SSA 
      SLA  DON'T HALT IF BOTH 14 & 15 ARE SET 
      JMP NOJHM,I 
      LDA STUS
      LDB HLTN
      HLT 55B 
NOTD1   LDB TMPB
      RBL     WILL SEQUENCE ERROR RESULT IF 
      SSB,RSS   IF EROR OCCURED?
      JMP NOCKJ,I    NOPE 
      LIA SW   YES THEN RESTUART UNLESS 
      RAL,SLA     SW 14 & 15 ARE SET
      SSA,RSS     THEN DO NOT RESTART 
      RSS      DIAGNOSTIC IN ANY CASE 
      JMP NOCK
      LDA P40   TELL OPERATOR WE ARE RESTARTED
      LDB EMSIA 
      JSB TYPE,I
      JSB MINIT 
      LDB ERFLG  IF ERFLG = NON-ZERO, THEN WE 
      SZB     ARE NOT IN MAIN DIAGNOSTIC SO 
      JMP HLT30   JUST HALT COMPUTER
      JMP LPJP,I   RETURN TO START OF DIAGNOSTIC
NOCK  EQU * 
      JSB MINIT 
      LIA SW
      RAL 
      SSA 
      JMP *+9  DON'T HLAT HERE IF 14 IS ESET
      LDB TMPB
      BLF    HALT IF 15 IS SET AND A
      SLA    SEQUENCE ERROR WILL NOT RESULT 
      SSB 
      JMP *+4 
      LDA STUS
      LDB HLTN
      HLT 76B 
      LIA SW   CHECK FOR LOOP--SW 13
      LDB TMPB
      BLF 
      RAL,RAL 
      SSA    IS LOOP DESIRED? 
      SLB,RSS   IS LOOP POSSIBLE
      JMP NLOOP   NOPE
      LDA PHLTN   YES--RESET HLAT NO. 
      STA HLTN
      JSB EOTRW  CHECK FOR EOT
      LDB TMPB
      JMP LOOPA,I  GO TO START OF LOOP
NLOOP  LDB TMPB  SHOULD A LOOP BE SET UP? 
      SSB,RSS 
      JMP BLIP   NOPE 
      LDA HLTN
      STA PHLTN  YES--SAVE CURRETN HALT NO. 
      LDB CKJP,I
      STB LOOPA   SAVE START OF LOOP
BLIP  JSB EOTRW   CHECK FOR EOT 
      LDB TMPB
      JMP CKJPJ,I   RETURN
* 
* 
*   WAIT FRO TRANSPORT TO MOVE OFF LOAD POINT 
* 
DLYST  NOP
      CLB 
      INB,SZB,RSS 
      JMP PRHLJ,I TIMIED OUT--SO PRINT ERROR
      JSB STATS 
      AND SOT 
      SZA 
      JMP *-5   NOT OF LOAD POINT YET 
      JMP DLYST,I  ALL IS COOL NOW
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
*   CREEP TEST
*  IN DOING A SERIES OF BACKSPES AND WRITES,
*    THE TAPE SHOULD CREEP FORWARD--THEREBY INCREASING
*     THE ORGINAL RECORD GAP
* 
*  TAPE HAS FOLLOWING RECORD SEQUECE
*   FROM PREVIOUS WRITE/READ TEST 
*    EOF--REC--REC--EOF 
* 
*   ON ENTRY TAPE IS POSITIONED BEYOND 2ND EOF
* 
CRGST  NOP
      LDA BSF 
      JSB SKPFJ,I  HALT 100 
      JSB CKGAP    CHEACK OIGNAL GAP SIZE 
*           HALTS 101,102 
      STA REDAD,I   SAVE GAP LENGTH 
      LDA BSF 
      JSB SKPFJ,I  HALT 103 
      LDA MI9 
      STA COUNT  BKSP & REWRITE 2ND REC 9 TIMES 
GAPAG  LDA BSR
      JSB SKPRJ,I  HALTS 104,106,08,.......124
      LDA MI6 
      LDB CHAR2 
      JSB WRTAD,I  WRITE 6 WORD RECORD
     LDB TM3
      CLA 
      JSB CKJP,I  HALTS 105,107,111,,,,,,,,,125 
      ISZ COUNT 
      JMP GAPAG 
      JSB CKGAP   NOW CHCK THE GAP
*            HALTS 126,127
      CMA,INA 
      ADA REDAD,I 
      SSA     IS IT LONGER? 
      CLA        YES
      LDB TM11
      JSB CKJP,I   CHEACK FOR ERROR 
      JMP CRGST,I 
* 
* 
*  CHECK GAP TIME--A HAS COUNT ON REURN 
* 
CKGAP  NOP
     LDA BSF
      JSB SKPFJ,I 
      LDA FSF   POSITION TO START OF 1ST REC
      JSB SKPFJ,I 
      LDA RFF   GIVE READ FILE FORWARD
      JSB OUTC
      LDB MI6 
      JSB DWTJ,I  COUNT 6 DATA FLAG 
D36   CLF DATA   TO SKIP FIRST RECORD 
      INB,SZB 
      JMP *-3 
      INB,SZB,RSS  PAST FIRST REC--START TIMING 
      JMP DWTJ1,I  TIME OUT--NO DATA FLAGS
D37   SFS DATA     START OF 2ND RECORC? 
      JMP *-3 
      JSB CWTAD,I  YES--SO WAIT FOR READY 
      LDA B         B HAS TIMING OF GAP 
      JMP CKGAP,I   RETURN
* 
*   CYCLIC REDUNDANCT CHAR. CHECK TEST
CRTST  NOP
      LIA SW  PERFORM IF SW 7 CLEAR 
      ALF,ALF 
      SSA 
      JMP CRTST,I 
      LDA CH17   DON'T DO FOR 7 TRACK 
      CPA CHAR1 
      JMP CRTST,I 
      LDA P454
      STA HLTN
      LDA CBUFA 
      STA SPCHR+2 
      LDA WRO    WRITE SPECIAL RECORD 
      JSB OUTC
      LDB MI7  SEVEN WORD RECORD
      JSB DWTJ,I
      LDA SPCHR+2,I 
D39   OTA DATA,C
      ISZ SPCHR+2 
      INB,SZB 
      JMP *-5 
      JSB ENDWT 
      JSB CWTAD,I 
      CLA 
      LDB TM3 
      JSB CKJP,I  CHECK FOR GOOD WRITE
      LDA RRO 
      STA SPCHR+2 
      LDA SPCHR+1 
      STA RRO 
      CCA 
      LDB SPCHR  LRC-CRC EXPECTED 
     JSB REDAD,I
      CLB   FIX UP RECIEVED RECORD LENGTH 
      STB  RCC   TO OVERRIDE LENGTH EROR
      LDA SPCHR+2  RESTORE ORIGNIAL READ CMND 
      STA RRO 
      LDA TM8 
      AND MI3   MASK OUT P.E. 
      STA B 
      CLA 
      JSB CKJP,I  CHECK FOR DATA COMPARE ERRR 
      JMP CRTST,I 
* 
CBUFA  DEF *+1
*   SPECIAL RECORD TO GENERATE
*    A CRC CHAR. WITH EOF PATTERN 
      OCT 177772
      OCT 3000
      OCT 100001
      OCT 20634 
      OCT 27115,42515,27001 
SPCHR  OCT 64023  EXPECTEDLRC-CRC WORD
      OCT 205  READ REC. BKWD COMMAND 
      NOP      TEMPORARY STORAGE
* 
* 
* 
*    DMA CHECK ROUTINE
* 
* 
DMACK  NOP
      LIA SW   PERFORM IF SW 8 CLEAR
      ALF,ALF 
      SLA 
      JMP DMACK,I 
      LDB P456
      STB HLTN
      LDB TM12
      CLA 
     JSB CKJP,I   SET UP FOR LOOP 
      LDA MI9 
      STA REC  SET TO WRITE 9 RECORDS 
      LDA MI29  RECORD SIZE TO BEGIN AT 29 WORDS
      STA WCC 
DMAC1  LDA WRO
      CLE 
      LDB ADD1
      JSB IODMA   WRITE A RECORD
      LDB TM3 
      CLA 
      JSB CKJP,I   STATUS SHOULD BE CLEAR 
      ISZ WCC   DECREMNT REC. SIZE BY ONE 
      ISZ REC  ALL 9 RECORDS WRITTEN? 
      JMP DMAC1   ONNNOPE 
      LDB MI9 
      STB REC   BACKSPACE OVER RECORDS
      LDA BSR 
      JSB SKPRJ,I 
      ISZ REC 
      JMP *-3 
      LDA MI9 
      STA REC  NOW GO READ THE E RECORDS
      LDA MI29
      STA WCC 
DMAC2  LDA RRO
      CCE 
      LDB ADD1
      STB ADDR
      LDB SAVBA 
      JSB IODMA   READ WITH DMA 
      LDA WCC 
      CMA,INA 
      STA RCCC
      STA LEXP
      CCE 
      JSB CMPRJ,I   COMPARE THE DATA
      LDB TM3 
      CLA 
      JSB CKJP,I   CHECK FOR ERRORS 
      ISZ WCC    DECREMENT RECORD SIZE
                                                                                                                  