ISZ T1513 JMP T1503 COUNTER NOT ZERO -LOOP JSB CLEAR CLEAR CONTROLLER JSB DATFG REPORT LOST DATA FLAG JMP TST15,I ERROR EXIT T1502 NOP MILLISEC COUNTER T1513 NOP TIME OUT COUNTER T1504 EQU * JSB FLGWT WAIT FOR READ TO FINISH * * SUBTEST # 3 * LDA .3 STA SUBTS SETUP SUBTEST # JSB BSFWF BACKSPACE OVER FM LDA .M10 STA CNTR SETUP 10 REWRITES T1505 EQU * JSB BSRWF BACKSPACE OVER RECORD LDA .100D RECORD LENGTH LDB ALL2 ALL 2'S PATTERN JSB WT00 WRITE RECORD ISZ CNTR IS COUNTER ZERO JMP T1505 NO-LOOP JSB WRTFM YES-WRITE A FILE MARK JSB EOTCK IS EOT SET? JMP TST15,I YES-EXIT TEST JSB BSFWF BACKSPACE FILE MARK JSB BSFWF BACKSPACE BOTH RECORDS LDA RECNO GET RECORD NUMBER ADA .M2 SUBTRACT 3 RECORDS STA RECNO UPDATE CURRENT RECORD COUNT JSB FSRWF FORWARD SPACE OVER FILE MARK LDA .1 SET UP FOR 1 WD DMA READ STA INBFL STA BUFLG CLA STA WRERR CLEAR WRITE ERROR FLAG JSB SIOR,I READ THE FIRST RECORD LDA INBUF,I GET THE FIRST WORD CPA .M1 JMP T1506 YES - CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I NO - REPORT ERROR DEF E114 LOST FIRST RECORD JMP TST15,I ERROR EXIT E114 EQU * ASC 09,E114 RECORD LOST/ T1506 EQU * JSB BSRWF BACKSPACE FIRST RECORD * * SUBTEST # 4 * LDA .4 STA SUBTS SETUP SUBTEST # JSB .RDGP,I ISSUE RFF COMMAND JMP TST15,I ERROR EXIT LDA .ME3 SETUP 1 SEC. TIME OUT COUNTER STA T1513 CLA STA T1507 SECOND MILLISEC COUNTER T1508 EQU * SFC DATA IS FLAG SET? JMP T1509 YES-GO COMPARE TIMES LDA .1 JSB TMRR,I GO WAIT 1 MILLISEC ISZ T1507 INCREMENT COUNTER ISZ T1513 TIME OUT? JMP T1508 NO-LOOP JSB CLEAR YES-CLEAR CONTROLLER * JSB DATFG REPORT DATA FLAG LOST JMP TST15,I ERROR EXIT T1507 NOP SECOND MILLISEC COUNTER T1509 EQU * LDA T1502 GET FIRST MILLISEC COUNT CMA,INA MAKE IT NEGATIVE ADA T1507 THE SECOND MILLISEC COUNT SSA,RSS IS THE FIRST GAP LONGER? JMP T1510 NO-OK TO CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I YES-REPORT ERROR DEF E115 JMP TST15,I E115 EQU * ASC 08,E115 NEG CREEP/ T1510 EQU * JSB FLGWT WAIT FOR READ TO FINISH * * SUBTEST # 5 * LDA .5 STA SUBTS SETUP SUBTEST # LDA DMAFG CHECK IF COMPUTER HAS DMA SZA,RSS IS FLAG ZERO? JMP TST15,I YES-NO DMA, SO EXIT LDA .2 NO-SETUP DMA CHANNEL 2 STA FGDMA LDA .100D RECORD LENGTH STA INBFL SETUP FOR SUBTEST 6 * LDB ALL1 ALL 1'S PATTERN JSB WT00 WRITE ALL 1'S USING DMA * * SUBTEST # 6 * T15RT LDA .6 STA SUBTS SETUP SUBTEST # LDA DTIME CMA,INA MAKE BYTE TRANSFER TIME NEG. ADA MINBY ADD MINIMUM BYTE TIME TO IT SSA IS ANSWER NEGATIVE? JMP T1511 NO-OK TO CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT BYTE TRANSFER TIME SHORT DEF E116 JMP T1512 ERROR EXIT E116 EQU * ASC 11,E116 BYTE TIME SHORT/ T1511 EQU * LDA DTIME GET BYTE TRANSFER TIME CMA,INA MAKE IT NEGATIVE ADA MAXBY ADD MAXIMUM BYTE TIME SSA,RSS BYTE TIME TOO LONG? JMP T1512 NO-OK TO EXIT TEST CLB SETUP EXPECTED STATUS JSB ERMS,I YES-REPORT BYTE TIME TOO LONG DEF E117 JMP T1512 ERROR EXIT * E117 EQU * ASC 10,E117 BYTE TIME LONG/ T1512 EQU * CLA STA FGDMA CLEAR DMA FLAG JMP TST15,I EXIT TEST * * * * END OF TEST 15 * * * * TEST 16(20) WRITE/READ SINGLE ROTATING BIT PATTERN * TST16 NOP JSB .EXEC,I GO SELECT A TAPE UNIT * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # LDA BFMAX GET MAX BUFFER LENGTH STA T1603 LDA .09D NINE PATTERNS IN SEQUENCE LDB TSRB ROTATING BIT PATTERN JSB FILL,I FILL THE OUTPUT BUFFER DEF T1601 RETURN ADDRESS T1603 NOP BUFFER LENGTH DEF T1602 ERROR RETURN T1601 EQU * NORMAL RETURN JSB SIOW,I WRITE OUT BUFFER JSB BSRWF BACK SPACE THE RECORD * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB SIOR,I READ RECORD BACK JSB COMPR COMPARE INPUT AND OUT BUFFERS T1602 EQU * EXIT TEST JMP TST16,I EXIT TEST * * END OF TEST 16 * * * TEST 17(21) WRITE/READ CHANNEL SAW TOOTH PATTERN * TST17 NOP JSB .EXEC,I GO SELECT A TAPE UNIT * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # LDA BFMAX GET MAX BUFFER LENGTH STA T1702 LDA .5 FIVE PATTERNS IN SEQUENCE LDB CSAW CHANNEL SAW TOOTH PATTERN JSB FILL,I FILL THE OUTPUT BUFFER DEF T1701 RETURN ADDRESS T1702 NOP BUFFER LENGTH DEF T1703 ERROR RETURN T1701 EQU * NORMAL RETURN JSB SIOW,I WRITE OUT BUFFER JSB BSRWF BACKSPACE RECORD * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB SIOR,I READ RECORD BACK JSB COMPR COMPARE INPUT AND OUTPUT BUFFERS T1703 EQU * JMP TST17,I EXIT TEST * * END OF TEST 17 * * * TEST 18(22) WRITE/READ TRACK SAWTOOTH PATTERN * TST18 NOP JSB .EXEC,I GO SELECT A TAPE UNIT * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # LDA BFMAX GET MAX BUFFER LENGTH STA T1802 LDA .5 FIVE PATTERNS IN SEQUENCE LDB TSAW TRACK SAW TOOTH PATTERN JSB FILL,I FILL THE OUTPUT BUFFER DEF T1801 RETURN ADDRESS T1802 NOP BUFFER LENGTH DEF T1803 ERROR RETURN T1801 EQU * NORMAL RETURN JSB SIOW,I WRITE OUT BUFFER JSB BSRWF BACK SPACE RECORD * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB SIOR,I READ RECORD BACK JSB COMPR COMPARE INPUT AND OUTPUT BUFFERS T1803 EQU * JMP TST18,I EXIT TEST * * END OF TEST 18 * * * TEST 19(23) WRITE/READ RANDOM DATA PATTERN * TST19 NOP JSB .EXEC,I GO SELECT A TAPE UNIT LDA FG183 SZA IS IT A 13183? JMP TST19,I YES-SKIP CRCC+LRCC CHECK * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # JSB INTON,I TURN ON INTERRUPTS JSB VARBF GET RANDOM RECORD JSB SIOW,I WRITE OUT BUFFER JSB BSRWF BACKSPACE RECORD JUST WRITTEN * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB SIOR,I READ IN DATA JSB COMPR COMPARE INPUT AND OUTPUT RECORD JSB INTOF,I TURN OFF INTERRUPTS * * SUBTEST # 3 * REVERSE READ OF LRCC AND CRCC * LDA .3 STA SUBTS SETUP SUBTEST # LDA FWAM LOAD BUFFER ADDRESS LDB BUFLG LOAD BUFFER LENGTH JSB .CRCC,I GO COMPUTE CRCC STA T1907 SAVE CRCC LDA FWAM LOAD BUFFER ADDRESS LDB BUFLG LOAD BUFFER LENGTH JSB .LRCC,I GO COMPUTE LRCC STA T1906 SAVE LRCC LDA .RRR STA .RD10,I SETUP REVERSE READ JSB READ,I GO READ THE RECORD IN REVERSE LDA .RRF STA .RD10,I RESTORE FORWARD READ COMMAND LDA INBUF,I LOAD CRCC AND LRCC ALF,ALF MOVE LRCC TO LOW BYTE AND MK377 ISOLATE LOWER BYTE JSB .PRIT,I GO ADD PARITY STA T1902 SAVE RESULT LDA T1906 GET OLD LRCC CPA T1902 ARE THEY EQUAL? JMP T1903 YES-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I NO-REPORT LRCC ERROR DEF E135 POINTER TO MESSAGE T1903 EQU * * * SUBTEST #4 * LDA .4 STA SUBTS SETUP SUBTEST # LDA INBUF,I LOAD LRCC AND CRCC AND MK377 ISOLATE LOWER BYTE(CRCC) ALF,ALF SHIFT TO UPPER BYTE STA T1904 SAVE RESULT LDA T1907 GET OLD CRCC CPA T1904 ARE THEY EQUAL? JMP T1905 YES-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I NO REPORT CRCC ERROR DEF E141 POINTER TO MESSAGE T1905 EQU * JMP TST19,I EXIT TEST * .RRR DEF RRR POINTER TO REVERSE READ COMMAND T1902 NOP LRCC READ IN T1904 NOP CRCC READ IN T1907 NOP OLD CRCC T1906 NOP OLD LRCC * * * END OF TEST 19 * * * TEST 20(24) DMA CHANNEL 1 WRITE/READ RANDOM DATA * TST20 NOP JSB .EXEC,I GO SELECT A TAPE UNIT LDA DMAFG CHECK IF COMPUTER HAS DMA SZA,RSS IS IT ZERO? JMP TST20,I NO DMA-RETURN LDA .2 SETUP DMA CHANNEL 2 STA FGDMA RESET FLAG FOR DMAI/O * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # JSB INTON,I TURN ON INTERRUPTS JSB VARBF GET RANDOM RECORD JSB SIOW,I JSB BSRWF BACK SPACE RECORD * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB SIOR,I READ JSB COMPR COMPARE INPUT AND OUTPUT BUFFER CLA STA FGDMA SET FLAG FOR DMAI/O JSB INTOF,I TURN OFF INTERRUPTS JMP TST20,I EXIT TEST * * END OF TEST 20 * * * TEST 21(25) DMA CHANNEL 2 WRITE/READ RANDOM DATA * TST21 NOP JSB .EXEC,I GO SELECT A TAPE UNIT * LDA DMAFG CHECK IF COMPUTER HAS DMA SZA,RSS IS IT ZERO? JMP TST21,I NO DMA-RETURN CPA .2 CHECK IF COMPUTER HAS CHANNEL 2 JMP T2104 YES-OK TO CONTINUE JMP TST21,I NO-EXIT T2104 EQU * LDA .3 SETUP DMA CHANNEL 3 STA FGDMA SET FLAG FOR DMAI/O T2101 EQU * * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # JSB INTON,I TURN ON INTERRUPTS JSB VARBF GET RANDOM RECORD JSB SIOW,I WRITE RECORD JSB BSRWF BACK SPACE RECORD * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB SIOR,I READ RECORD JSB COMPR COMPARE INPUT AND OUTPUT BUFFER CLA STA FGDMA RESET FLAG FOR DMAI/O JSB INTOF,I TURN OFF INTERRUPTS JMP TST21,I EXIT TEST * * END OF TEST 21 * * * TEST 22(26) RAPID WRITE TEST * TST22 NOP JSB .EXEC,I GO SELECT A TAPE UNIT * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # LDA .100 LOAD BUFFER LENGTH STA T2201 SETUP FILL ROUTINE LDA .1 ONE PATTERN SEQUENCE LDB ALL1 ALL 1'S PATTERN JSB FILL,I FILL THE OUTPUT BUFFER DEF T2202 RETURN ADDRESS T2201 NOP DEF T2203 ERROR RETURN T2202 EQU * * WRITE TEN RECORDS IN A RAPID SUCCESSION LDA .M10 LOOP 10 TIMES STA CNTR SETUP COUNTER T2204 EQU * LDB SW09 CHECK SWITCH 9 JSB SWRC,I IS IT SET? JMP TST22,I YES-EXIT JSB SIOW,I WRITE A RECORD CLA STA RDERR CLEAR READ ERROR FLAG JSB ERRCK CHECK FOR READ AND WRITE ERRORS ISZ CNTR JMP T2204 LOOP IF COUNTER NON-ZERO * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # CLA STA WRERR CLEAR WRITE ERROR FLAG LDA .M10 LOAD COUNTER STA CNTR JSB BSRWF BACKSPACE RECORD T2205 EQU * LDB SW09 CHECK SWITCH 9 JSB SWRC,I IS IT SET? JMP TST22,I YES-EXIT JSB SIOR,I READ RECORD JSB COMPR COMPARE INPUT TO OUTPUT BUFFER JSB BSRWF BACKSPACE RECORD JSB BSRWF BACKSPACE RECORD ISZ CNTR INCREMENT COUNTER JMP T2205 T2203 EQU * JMP TST22,I EXIT * * END OF TEST 22 * * * TEST 23(27) ECHO CHECK ON ALL UNITS ON-LINE * TST23 NOP JSB .EXEC,I GO SELECT A TAPE UNIT LDA UNITS GET # OF UNITS ON-LINE CPA .1 IS THERE ONLY ONE UNIT UP? JMP TST23,I YES-EXIT THE TEST * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # CLA START WITH UNIT 0 STA T2301 CLEAR UNIT # LDA .M4 GET -4 STA T2303 T2302 EQU * LDA T2301 GET CURRENT UNIT # JSB UNIWR WRITE A RECORD USING UNIT # ISZ T2301 INCREMENT UNIT # ISZ T2303 IS THIS THE LAST TIME? JMP T2302 NO-GO DO IT AGAIN * YES-CONTINUE WITH NEXT SUBTEST * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # * READ IN ONE UNIT AT A TIME AND CHECK UNIT NUMBER * -WITH NUMBER IN RECORD CLA STA T2301 CLEAR UNIT COUNTER LDA .M4 STA T2303 SETUP LOOP COUNTER T2304 EQU * LDA T2301 GET CURRENT UNIT # JSB UNIRD GO READ A RECORD ISZ T2301 INCREMENT UNIT # ISZ T2303 IS THIS THE LAST LOOP? JMP T2304 NO-GO DO IT AGAIN * * SUBTEST # 3 * LDA .3 STA SUBTS SETUP SUBTEST # STA T2301 SET UP UNIT # LDA .M4 STA T2303 SETUP LOOP COUNTER T2305 EQU * LDA T2301 GET CURRENT UNIT # JSB UNIWR GO WRITE A RECORD LDA T2301 GET CURRENT UNIT # ADA .M1 DECREMENT UNIT # STA T2301 ISZ T2303 IS THIS THE LAST LOOP? JMP T2305 NO-GO DO IT AGAIN * * SUBTEST # 4 * LDA .4 STA SUBTS SETUP SUBTEST # LDA .M4 STA T2303 SETUP LOOP COUNTER LDA .3 STA T2301 SETUP UNIT # T2306 EQU * LDA T2301 GET CURRENT UNIT # JSB UNIRD GO READ A RECORD LDA T2301 GET CURRENT UNIT # ADA .M1 DECREMENT THE UNIT # STA T2301 ISZ T2303 IS THIS THE LAST LOOP? JMP T2306 NO-GO DO IT AGAIN * JMP TST23,I EXIT TEST * * * UNIRD-READS 100 WORD RECORD OF UNIT # *CALL: * LDA * JSB UNIRD * UNIRD NOP JSB UNISL GO SELECT A UNIT JMP UNIRD,I OFF-LINE RETURN JSB BSRWF BACKSPACE A RECORD JSB SIOR,I READ A RECORD LDA INBUF,I GET CONTENTS OF FIRST WORD CPA T2301 COMPARE UNIT TO RECORD JMP UNIRD,I THEY COMPARE-OK TO EXIT CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT BAD ECHO DEF E125 JMP UNIRD,I EXIT * E125 EQU * ASC 08,E125 ECHO ERROR/ * * * UNIWR-WRITES 100 WORDS USING UNIT # * *CALL: * LDA * JSB UNIWR * UNIWR NOP STA UNIW1 SAVE UNIT # JSB UNISL GO SELECT UNIT JMP UNIWR,I UNIT OFF-LINE EXIT LDA UNIW2 GET UNIT # ADDRESS LDA .1 SINGLE PATTERN SEQUENCE LDB UNIW2 GET POINTER TO UNIT # JSB FILL,I FILL THE OUTPUT BUFFER DEF UNIW3 RETURN ADDRESS DEC 100 BUFFER LENGTH DEF UNIW3 ERROR RETURN UNIW3 EQU * JSB SIOW,I WRITE RECORD JMP UNIWR,I EXIT ROUTINE UNIW2 DEF *+1 UNIW1 NOP UNIT # T2303 NOP UNIT # COUNTER T2301 NOP CURRENT UNIT # * * END OF TEST 23 * * * TEST 24(30) CONTROLLER CHECK FOR MULTI-UNIT OPERATION * * DELETE THIS TEST IF ONLY ONE UNIT ON-LINE ************* * -TWO OR MORE ON-LINE UNITS ARE REQUIRED * TST24 NOP JSB .EXEC,I GO SELECT A TAPE UNIT LDA UNITS GET # OF UNITS ON-LINE CPA .1 IS THERE ONLY ONE UNIT UP? JMP TST24,I YES-EXIT TEST * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # JSB VARBF FILL OUTPUT BUFFER WITH RANDOM DATA JSB .ALWR,I WRITE OUTPUT BUFFER * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB .ALBS,I BACKSPACE ALL UNITS JSB .ALCP,I COMPARE ALL UNITS(FIRST RECORD) JMP TST24,I EXIT TEST * * SUBROUTINE ALLBS-BACKSPACES ALL ON-LINE * ONE RECORD *CALL: * JSB ALLBS * * ALLBS NOP CLA STA UNITX TEMPORARY UNIT NUMBER ALBS1 EQU * JSB UNISL GO SELECT A UNIT JMP ALBS2 OFF-LINE RETURN JSB BSRWF BACKSPACE THE UNIT ALBS2 EQU * ISZ UNITX INCREMENT UNIT # LDA UNITX LOAD UNIT # CPA .4 IS IT THE LAST UNIT? JMP ALLBS,I YES-EXIT JMP ALBS1 NO-LOOP * * * END OF TEST 24 * * * TEST 25(31) INTER-UNIT COMPATIBILITY (REEL EXCHANGE) * * -TWO OR MORE ON-LINE UNITS ARE REQUIRED * -THIS TEST REQUIRES OPERATOR INTERVENTION * * -REEL EXCHANGE TST25 NOP JSB .EXEC,I GO SELECT A TAPE UNIT LDA UNITS GET # OF UNITS ON-LINE CPA .1 IS THERE ONLY ONE UNIT UP? JMP TST25,I YES-EXIT TEST LDB SW68 CHECK SWITCH 6,8, AND 12 JSB SWRC,I GO CHECK SWITCH REGISTER JMP TST25,I ON-EXIT TEST * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # JSB VARBF FILL OUTPUT BUFFER WITH RANDOM DATA JSB .ALRW,I REWIND ALL UNITS JSB .ALWR,I WRITE OUTPUT BUFFER T2501 EQU * JSB .ALRW,I REWIND ALL UNITS * OUTPUT REEL EXCHANGE MESSAGE * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB MSGH,I OUTPUT MESSAGE DEF H126 POINTER TO MESSAGE JMP T2502 CONTINUE H126 EQU * ASC 10,H126 EXCHANGE REELS/ T2502 EQU * * * SUBTEST # 3 * LDA .3 STA SUBTS SETUP SUBTEST # JSB .ALRW,I REWIND ALL UNITS JSB .ALCP,I COMPARE ALL UNITS(FIRST RECORD) * * SUBTEST # 4 * LDA .4 STA SUBTS SETUP SUBTEST # JSB MSGH,I OUTPUT LOOP MESSAGE DEF H127 JMP T2504 EXIT H127 EQU * ASC 12,H127 SET SW 13 TO LOOP/ T2504 EQU * JMP TST25,I EXIT TEST * * END OF TEST 25 * * * TEST 26(32) WRITE RING ENABLE TEST * * -THIS TEST REQUIRES OPERATOR INTERVENTION * TST26 NOP JSB .EXEC,I GO SELECT A TAPE UNIT LDB SW68 CHECK SWITCH 6,8, AND 12 JSB SWRC,I GO CHECK SWITCH REGISTER JMP TST26,I ON-EXIT TEST * OFF-CONTINUE JSB LPREW REWIND UNIT * * SUBTEST # 1