S11CK NOP LDB SW11 SWITCH 11 SET? JSB SWRCK,I * RSS YES ISZ S11CK NO, ADJUST RETURN JMP S11CK,I * * SWITCH 14 CHECK * * JSB S14CK * < SWITCH 14 SET > * < SWITCH 14 NOT SET > * S14CK NOP LDB SW14 SWITCH 14 SET? JSB SWRCK,I * RSS N--YES ISZ S14CK NO, ADJUST RETURN JMP S14CK,I SPC 1 SPC 1 * PRINT CYCLE COUNT SPC 1 PCYCT NOP CLA,CLE LDB .MS00 JSB FMTR,I 'CYCLE(S)' CLA,INA LDB CYCNT JSB FMTR,I CYCLE COUNT JMP PCYCT,I SKP * ** COMMAND EXERCISE ROUTINE ** SPC 1 * SW 0 READ ONE RECORD FORWARD (RRF) * SW 1 FORWARD SPACE ONE RECORD (FSR) * SW 2 FORWARD SPACE ONE FILE (FSF) * SW 3 CLEAR THE CONTROLLER (CLR) * - - - - - - - - - - - - - - - - - * SW 4 BACKSPACE ONE RECORD (BSR) * SW 5 BACKSPACE ONE FILE (BSF) * SW 6 REWIND TO LOAD POINT (REW) * SW 7 CLEAR THE CONTROLLER (CLR) * - - - - - - - - - - - - - - - - - * SW 8 REWIND AND GO OFF LINE (RWO) * * ANY OF THE FIRST FOUR COMMANDS CAN BE COMBINED WITH ANY * OF THE NEXT FOUR, OR ANY OF THE NINE CAN BE USED ALONE. * * SW 12 10 MILL. SEC. DELAY * SW 13 15 MILL. SEC. DELAY * SW 14 30 MILL. SEC. DELAY * * THESE TIMING DELAYS BETWEEN COMMANDS CAN BE USED * AT ANY TIME. ONLY THE LEFTMOST SET SWITCH WILL BE * EXECUTED (I.E. SW 14 HAS PRIORITY OVER SW 13, ETC.). * * SW 15 HALT AFTER COMMAND(S) HAS(HAVE) BEEN EXECUTED. * SPC 1 ORG 1000B BEGIN LIA CMMD,C LOAD THE STATUS AND CHECK AND B40 -FOR END-OF-TAPE BIT SZA,RSS IS IT SET ? JMP BENT1 NO, CONTINUE LDA REW YES, REWIND THE TAPE JMP ENT17+1 BENT1 LDB B377 ANY COMMAND OPTIONS JSB SWRCK,I ENTERED? RSS YES JMP BENT0 NO, TAKE NORMAL HALT IMMEDIATELY AND B17 YES, ISOLATE FIRST COMMAND FIELD SZA,RSS ANY OF THESE OPTIONS WANTED? JMP ENT77 NO, GO CHECK FOR 2ND OPTION LDB CMDS0 YES, GET POINTER TO COMMAND LIST ENT72 SLA,RAR TEST FOR THE COMMAND, SHIFT JMP ENT17 OUTPUT THE COMMAND ISZ B ADVANCE POINTER JMP ENT72 ENT17 LDA B,I GET THE COMMAND JSB ACMMD OUTPUT THE CMMD JSB RWDWT TEST FOR REWINDING OPERATION JSB TIMER TEST FOR TIMING OPTION ENT77 LDB B760 ANY COMMANDS IN JSB SWRCK,I SECOND FIELD? RSS YES JMP ENT16 NO ALF,ALF ALF LDB CMDS1 YES, SET 2ND CMMD STACK S.A. ENT14 SLA,RAR TEST FOR THE COMMAND, SHIFT JMP ENT15 COMMAND FOUND, OUTPUT IT ISZ B NOT THIS ONE, ADVANCE POINTER JMP ENT14 ENT15 LDA B,I GET THE COMMAND JSB ACMMD OUTPUT CMMD JSB RWDWT TEST FOR THE REWINDING OPERATION JSB TIMER TEST FOR TIMING OPTION ENT16 LDB SW15 JSB SWRCK,I IS SWITCH 15 SET? BENT0 HLT 77B YES, NORMAL HALT JMP BEGIN GO TO START SPC 1 TIMER NOP TIMING PERIOD ROUTINE LDB B70K ANY TIMING BITS SET? JSB SWRCK,I * RSS YES JMP TIMER,I NO, USE FLAG LDB TMPRD SET TIMING CONSTANT RAL RAL,SLA THIS TIME ? JMP ENT18 YES, START THE DELAY ISZ B NO, TRY NEXT JMP *-3 ENT18 LDA B,I GET THE CONSTANT JSB TIMR,I JMP TIMER,I RETURN +1 SPC 1 FLGWT NOP THIS ROUTINE WILL WAIT APPROX. STA AREG -ONE SECOND FOR THE COMMAND STB BREG LDB N4000 4000 MS COUNT STB TG CIO2 SFC CMMD JMP ENT20 GOT THE FLAG ISZ TG DO 1MS WAIT FOR 4000 TIMES RSS NOT DONE YET! JMP ENT19 ERROR ON COMMAND FLAG LDA D1 JSB TIMR,I WAIT FOR 1 MS JMP CIO2 GO BACK AND CHECK AGAIN ENT19 JSB STATS GET THE STATUS & HOLD JSB S11CK SUPPRESS ERROR MESSAGE? JMP ENT20-2 ISZ TNUMB UPDATE TEST NUMBER JSB TSTNI,I PRINT TEST NUMBER JSB DECNO UPDATE TEST NUMBER CLA,CLE LDB .MS12 JSB FMTR,I 'CMMD FLAG WAIT TIMED OUT !' JSB SKPL CR/LF LDA CLR CLEAR THE INTERFACE JSB ACMMD ENT20 JSB STATS GET THE STATUS AND HOLD LDA AREG RESTORE THE "A" REG LDB BREG RESTORE THE "B" REG JMP FLGWT,I SPC 2 * COMMAND OUT PUT TO MAG TAPE SUBROUTINE SPC 1 OCMMD NOP CMMD SHOULD BE IN THE "B" REG. CIO3 OTB CMMD JSB STATS GET THE STATUS JSB REJBT TEST REJECT BIT SZA,RSS JMP REJCT CIO4 STC CMMD,C JMP OCMMD,I SPC 1 ACMMD NOP COMMAND IN THE "A" REG CIO5 OTA CMMD CIO6 STC CMMD,C JMP ACMMD,I SPC 1 STATS NOP CIO7 LIA CMMD AND STRIP GET RID OF THE EXTRA BITS STA STATU HOLD THE STATUS TEMPORARILY STA B * JMP STATS,I SPC 1 CLEAR NOP CLEAR THE CONTROLLER LDA CLR OUT PUT CLEAR CMMD JSB ACMMD JSB FLGWT WAIT FOR THE OPERATION TO FINISH JMP CLEAR,I SPC 1 BSRWF NOP BACKSPACE RECORD WITH FLAG LOOP LDA BSR BACK SPACE COMMAND JSB ACMMD DO THE COMMAND JSB FLGWT WAIT FOR THE CMMD FLAG JMP BSRWF,I SPC 1 FWDSP NOP FORWARD SPACE ONE RECORD LDB FSR JSB OCMMD JMP FWDSP,I SKP * ** REJECT ROUTINES ** SPC 1 * CALL: "A" - CONTAINS THE STATUS WORD * * RETURN: "A" = 1 IF THE REJECT BIT IS NOT SET * = 0 IF THE REJECT BIT IS SET SPC 1 REJBT NOP REJECT STATUS BIT TEST AND D8 CPA D8 CLA,RSS CCA JMP REJBT,I SPC 1 REJCT JSB S11CK SUPPRESS ERROR MESSAGE? JMP REJC0 YES CLA,CLE LDB .MS01 JSB FMTR,I 'COMMAND WAS REJECTED' REJC0 CLB THE EXPECTED STATUS IS CLEAR CCA JSB TEST * * JSB DECNO DECREMENT THE TEST NUMBER JSB S14CK SUPPRESS ERROR HALT? JMP RECYL,I YES,START DIAGNOSTIC OVER JSB STATS NO, GET STATUS LDA TNUMB GET TEST NUMBER HLT 55B ERROR HALT INDICATOR JSB LOPTN TEST FOR LOOP OPTION JMP RECYL,I RESTART DIAGNOSTIC SPC 1 * ** PROGRAM TEST ROUTINE ** SPC 1 TEST NOP STB BREG HOLD THE EXPECTED STATUS ISZ TNUMB INCREMENT THE TEST'S NUMBER SZA,RSS WAS THE TEST IN ERROR JMP TEST2 NO, CHECK SWITCH 15 JSB S11CK SUPPRESS ERROR MESSAGE? JMP TEST1 IT'S SET, DON'T PRINT OR STORE JSB TTYCK CHECK FOR TELEPRINTER JMP TEST4 NO, STORE THE MESSAGE JSB TSTNI,I THERE IS A TTY, PRINT THE LDB BREG -ERROR MESSAGE JSB PRSTI,I -THEM LDA RDOP CHECK THE READ OPERATION PRO- SZA,RSS -GRAM FLAG JMP TEST0 IT WASN'T SET, SPACE ONE LINE JSB PCHRI,I -AND PRINT BOTH WORDS CLA RESET THE READ OPERATION PRO- STA RDOP GRAM FLAG TEST0 JSB SKPL SPACE ONE LINE TEST1 JSB S14CK SUPPRESS ERROR HALT? JMP TEST2 YES CHECK SWITCH 15 LDA CLR NO, CLEAR THE INTERFACE JSB ACMMD LDA TNUMB LOAD TEST NUMBER LDB STATU AND STATUS HLT 55B TEST2 JSB S15CK CHECK SWITCH 15 TEST3 JSB EOTTS CHECK FOR THE END OF TAPE NOP JMP TEST,I EXIT TEST4 LDA ERBUF CPA INBUF ERROR BUFFER FULL? JMP TEST6 YES, CONTINUE LDA CYCNT GET CYCLE COUNT AND POS- ALF,ALF -ITION IT TO THE UPPER HALF OF LDB TNUMB -WORD, WITH THE TEST'S NUMBER IOR B -IN THE LOWER HALF STA ERBUF,I PUT IT IN THE 1ST WORD OF THE ISZ ERBUF ERROR MESSAGE & MOVE THE POINTER LDA STATU GET THE TEST'S STATUS AND PUT IT STA ERBUF,I -IN THE 2ND WORD OF THE ERROR ISZ ERBUF -MESSAGE AND MOVE THE POINTER LDA RDOP CHECK THE PROGRAM'S READ OPER- SZA -ATION FLAG JMP TEST5 IT WAS SET, STORE THE WORDS CLA NO READ, STORE ZEROS STA ERBUF,I THE 3RD WORD ISZ ERBUF MOVE THE POINTER STA ERBUF,I THE 4TH WORD ISZ ERBUF MOVE THE POINTER JMP TEST1 CHECK CONTROL SWITCHES TEST5 LDA TBF05,I GET THE WORD IN ERROR AND STORE STA ERBUF,I -IT IN THE 3RD WORD ISZ ERBUF MOVE THE POINTER LDA TBF04,I GET THE GOOD WORD AND STORE IT STA ERBUF,I -IN THE 4TH WORD ISZ ERBUF MOVE THE POINTER JMP TEST1 CHECK CONTROL SWITCHES TEST6 HLT 56B JMP MDIAI,I GO BACK TO THE START SKP * TEST LOOPING ADDRESS ROUTINES SPC 1 SAVAD NOP SAVE TEST STARTING ADDRESS ISZ LPCYC LOOPING INDICATOR JMP SAVAD,I ISZ LPCYC JMP SAVAD,I SPC 1 LOPTN NOP TEST SW 13 FOR LOOP OPTION LDB SW13 JSB SWRCK,I SWITCH 13 SET? JMP ENT29 YES, GET THE S.A. LDB LPCYC NO, LOOK AT LOOPING INDICATOR SZB LOOPING BEFORE ? JMP LOPTN,I NO, CONTINUE WITH NEXT TEST JMP RECYL,I YES, START DIAGNOSTIC OVER ENT29 JSB EOTTS TEST FOR THE END OF TAPE NOP CLB STB LPCYC RESET LOOPING INDICATOR JMP SAVAD,I SPC 1 * ** FORMAT ID. CHECK ** SPC 1 * CALL: "A" - CONTENTS NOT SIGNIFICANT * "B" - " " " * * RETURN: P+1 - THE RECORDING MODE IS A 9 TRACK FORMAT * P+2 - THE RECORDING MODE IS A 7 TRACK FORMAT EVEN * PARITY * P+3 - THE RECORDING MODE IS A 7 TRACK FORMAT ODD * PARITY * "A" - CONTENTS FROM ENTRY ARE UNCHANGED * "B" - CONTAINS THE CURRENT FORMAT'S ID. SPC 1 FORID NOP STA AREG0 SAVE THE CONTENTS OF "A" FOR EXIT LDA ID LOAD THE CURRENT FORMAT'S ID. LDB ID " " " " " AND D6 MASK OFF ALL BUT BITS 1&2 SZA,RSS IS IT A 7 OR 9 TRACK FORMAT ? JMP ENT48 IT'S 9 TRACK ISZ FORID IT'S 7 TRACK, BUT WHICH ONE ? LDA ID LOAD THE CURRENT ID. AGAIN AND B7 MASK OFF ALL BUT BITS 0,1,& 2 RAR,RAR POSITION BIT 2 SLA,RSS IS IT SET ? JMP ENT48 NO, IT'S EVEN PARITY, EXIT P+2 AND MSK2M MASK OFF ORGINAL BIT 2 (0 NOW) SZA IS IT EVEN OR ODD PARITY ISZ FORID IT'S ODD PARITY, EXIT P+3 ENT48 LDA AREG0 RESTORE THE CONTENTS OF "A" JMP FORID,I SKP * BUFFER FILL ROUTINE * SPC 1 * CALL: "A" - CONTAINS THE NUMBER OF PATTERNS IN THE SEQUENCE * "B" - CONTAINS THE S.A. OF THE PATTERN SEQUENCE SPC 1 .FILL NOP STA AREG HOLD THE S.A. OF THE PATTERN STA TBF01 STB BREG HOLD THE NUMBER OF PATTERNS IN STB CNT1 -THE SEQUENCE & SET ITS COUNT LDA N1024 FILL THE CORE BUFFER STA COUNT SET THE WORD COUNTER LDA INBUF SET THE INPUT BUFFER'S S.A. MORE LDB TBF01,I STB A,I START FILLING THE BUFFER ISZ TBF01 INA ISZ CNT1 INCREMENT THE PATTERN COUNT JMP .ENT0 LDB BREG RESET THE PATTERN SEQUENCE STB CNT1 -COUNTER LDB AREG RESET THE PATTERN SEQUENCE STB TBF01 -POINTER .ENT0 ISZ COUNT INCREMENT THE BUFFER WORD JMP MORE - COUNT JMP .FILL,I SPC 1 * BUFFER CLEAR ROUTINE * SPC 1 CLRBF NOP STB TBF06 SAVE THE CONTENTS OF "B" STA TBF02 SAVE THE CONTENTS OF "A" LDA DHT55 HALT55'S LDB N1 JSB .FILL LOAD THE HALTS INTO THE BUFFER LDA TBF02 RESTORE THE "A" REGISTER LDB TBF06 RESTORE THE "B" REGISTER ALSO JMP CLRBF,I SKP * ANSI WORST CASE PATTERN GENERATION * SPC 1 ANSI NOP STB BREG SAVE THE CONTENTS OF "B" ISZ ITCNT INCREMENT THE ITERATION COUNT JMP ENT67 USE THE SAME PATTERN AGAIN ISZ THIRD INCREMENT THE THIRD COUNT JMP ENT68 GO TO THE SAME KEY WORD LDA N3 RESET THE THIRD COUNTER STA THIRD ISZ KEYPT ADVANCE THE KEY WORD POINTER ENT68 LDA THIRD GET THE THIRD COUNT CMA 1'S COMPLEMENT SLA IS IT THE 2ND THIRD ? JMP ENT69 YES, GET THE ITERATION COUNT RAR,SLA NO, IS IT THE 1ST THIRD? JMP ENT70 YES, GET THE ITERATION COUNT LDA KEYPT,I LOAD THE KEY WORD & GET THE RAR,RAR -COUNT RAR ENT71 LDB A HOLD THE WORD AND D3 GET THE ITERATION COUNT CMA STA ITCNT SET THE ITERATION COUNTER LDA B SET UP TO GET THE PATTERN ALF,RAR -CODE AND B7 LDB ANPAT GET THE ANSI PATTERN BUFFER'S ADB A -S.A. & SELECT THE PATTERN WORD LDA B,I GET THE PATTERN WORD STA ANBUF HOLD IT FOR THE NEXT TIME, MAYBE JMP ENT81 CONTINUE ENT69 LDA KEYPT,I LOAD THE KEY WORD AND GET THE ALF,ALF -COUNT JMP ENT71 GO GET THE ITERATION COUNT ENT70 LDA KEYPT,I LOAD THE KEY WORD AND GET ALF,RAR -COUNT JMP ENT71 GO GET THE ITERATION COUNT ENT67 LDA ANBUF USE THE SAME PATTERN WORD AGAIN LDB KEYPT,I LOAD THE KEY WORD AND CHECK FOR SSB,RSS -THE LAST WORD INDICATOR JMP ENT81 CONTINUE LDB THIRD LOAD THE COUNT FOR THE KEY WORD CMB -PACK SLB,RSS IS THE COUNT = 1 ? JMP ENT81 NO, CONTINUE LDB ITCNT GET THE ITERATION COUNT AND CPB N1 -CHECK IT FOR THE LAST ONE RSS JMP ENT81 IT WASN'T, CONTINUE LDB .KEYP RESET THE KEY WORD POINTER STB KEYPT LDB N3 RESET THE THIRD COUNTER STB THIRD LDB N5 PRESET THE ITERATION COUNTER STB ITCNT CCB PRESET THE FIRST PATTERN WORD STB ANBUF ENT81 LDB BREG RESTORE "B" JMP ANSI,I SPC 1 * ** RANDOM DATA AND ANSI PATTERN DATA COMPARE ** SPC 1 WDCOM NOP LDA TBF10 SET POINTER FOR PCHAR STA TBF04 LDA BUFAD SET THE BUFFER'S S.A. STA TBF05 LDA WDCNT SET THE WORD COUNT STA CNT11 STA RDOP SET THE READ OPERATION FLAG WENT0 NOP GET THE WORD AND COMPARE LDB FLAG7 CHECK THE PROGRAM'S FORMAT FLAG SZB,RSS IS IT SET ? JMP WENT2 NO, IT'S 9 TRACK DATA AND MASK7 YES, IT'S 7 TRACK DATA SLB,RSS WHICH 7 TRACK PARITY ? JMP WENT2 IT'S ODD PARITY STA B HOLD THE CONTENTS OF "A" AND MSKT8 MASK OFF THE 8 LOWER BITS SZA,RSS ARE ALL BITS IN THE BYTE ZERO ? JMP WENT3 YES, ADD THE DATA PAD LDA B RESTORE THE CONTENTS OF "A" AND B377 MASK OFF THE 8 HIGHER BITS SZA,RSS IS THIS BYTE ZERO ? JMP WENT3 YES LDA B RESTORE THE CONTENTS OF "A" JMP WENT2 NO WENT3 LDA B RESTORE THE CONTENTS OF "A" IOR PADAT ADD THE BIT PAD WENT2 CPA TBF05,I JMP WENT1 IT COMPARES, CONTINUE STA TBF10,I SAVE WORD IN ERROR CCA CLB THE EXPECTED STATUS IS CLEAR JSB TEST * * ISZ CNT11 INCREMENT THE WORD COUNTER RSS JMP WDCOM,I ENT74 NOP CYCLE THE ROUTINE ISZ CNT11 JMP *-2 JMP WDCOM,I WENT1 ISZ TBF05 ADVANCE THE BUFFER'S POINTER ISZ CNT11 INCREMENT THE WORD COUNTER JMP WENT0 COMPARE THE NEXT WORDS CLA RESET THE READ OPERATION FLAG STA RDOP JSB TEST JMP WDCOM,I SKP * ** PATTERN - DATA COMPARE ROUTINE ** SPC 1 * CALL: "A" - CONTAINS THE S.A. OF THE DATA PATTERN SEQUENCE * "B" - CONTAINS THE NUMBER OF WORDS IN THE SEQUENCE * * RETURN: "A" - CONTENTS ARE LOST * "B" - " " " PATCM NOP STA AREG THE S.A. OF THE PATTERN STA TBF04 STB BREG THE # OF WORDS IN THE PAT. SEQ. STB CNT1 SET THE PATTERN SEQUENCE COUNT LDB BUFAD SET THE BUFFER'S S.A. STB TBF05 LDA WDCNT SET THE WORD COUNT STA CNT11 STA RDOP SET THE READ OPERATION'S FLAG ENT11 LDA TBF05,I GET THE INPUT BUFFER WORD AND LDB FLAG7 CHECK THE PROGRAM'S FORMAT FLAG SZB,RSS IS IT SET ? JMP PENT0 NO, IT'S 9 TRACK DATA STA TBF08 IT'S 7 TRACK, HOLD "A" LDA DEFLG LOAD THE PROGRAM'S FLAG SZA,RSS IS THIS THE "DE" TEST ? JMP ENP01 NO LDA TBF04,I LOAD THE PATTERN WORD AND MASK7 STRIP THE TOP 2 BITS OFF JMP ENP02 ENP01 LDA TBF04,I LOAD THE PATTERN WORD AND MASK7 MASK OFF THE EXTRA BITS SLB,RSS WHICH 7 TRACK PARITY JMP PENT2 IT'S ODD PARITY ENP02 STA B HOLD THE CONTENTS OF "A" AND MSKT8 MASK OFF THE 8 LOWER BITS SZA,RSS ARE ALL BITS IN THE BYTE ZERO ? JMP PENT3 YES, ADD THE BIT PAD LDA B RESTORE THE CONTENTS OF "A" AND B377 MASK OFF THE 8 HIGHER BITS SZA,RSS IS THIS BYTE ZERO ? JMP PENT3 YES LDA B RESTORE THE CONTENTS OF "A" JMP PENT2 NO PENT3 LDA B RESTORE THE CONTENTS OF "A" IOR PADAT ADD THE DATA BIT PAD PENT2 CPA TBF08 COMPARE THE TWO WORDS JMP ENT08 THEY COMPARE JMP PENT1 NON-COMPARE PENT0 CPA TBF04,I COMPARE THE DATA TO THE PATTERN JMP ENT08 IT COMPARES, CONTINUE PENT1 CCA IT DIDN'T COMPARE LDB ODD CHECK THE ODD BYTE INDICATOR SZB,RSS JMP ENT79 IT'S NOT SET LDB B4000 SET THE EXPECTED STATUS AS "OB" RSS ENT79 CLB THE EXPECTED STATUS IS CLEAR JSB TEST * * JMP PATCM,I -THE LAST ONE IN THE BUFFER ENT08 ISZ CNT1 INCREMENT THE PATTERN SEQ. COUNT JMP ENT10 LDA AREG RESET THE PATTERN BUFFER'S STA TBF04 -POINTER LDB BREG RESET THE PATTERN SEQUENCE COUNTER STB CNT1 RSS ENT10 ISZ TBF04 ADVANCE THE PATTERN POINTER ISZ TBF05 ADVANCE THE BUFFER'S POINTER ISZ CNT11 JMP ENT11 GO COMPARE THE NEXT WORDS CLA RESET THE READ OPERATION'S FLAG STA RDOP JSB TEST JMP PATCM,I * * ** ERROR BUFFER CLEAR ROUTINE ** * CLRER NOP CLA CLEAR A REG. LDB ERRBF LOAD B WITH ERROR BUFFER LOC. CLRE1 EQU * STA B,I STORE A ZERO IN ERROR BUFFER ISZ B INCREMENT ERROR BUFFER POINTER CPB INITI FINISHED? JMP CLRE2 YES- EXIT JMP CLRE1 NO-GO ZERO OUT NEXT LOCATION CLRE2 EQU * JMP CLRER,I