/TD8E CHECK MARK TRACK WRITING /THIS ROUTINE WRITES ALL LEGAL TAPE MARKS ENCLOSED BY END ZONES /IT THEN REWINDS AND READS THE TAPE MARK SECTION /NO CHECKING - THIS IS FOR USE WITH A LOGIC ANALYSER ON THE TD8E /COMMAND REGISTER BITS / 00 01 02 03 04 05 06 07 08 09 10 11 /(ON WRITE) UNIT FORWARD STOP READ -- -- -- -- -- -- -- -- / NO. REVERSE GO WRITE / 00 01 02 03 04 05 06 07 08 09 10 11 /(ON READ) UNIT FORWARD STOP READ WRITE SELECT M0 M1 M2 M3 M4 M5 / NO. REVERSE GO WRITE LOCK OR TIME / OUT ERROR /BIT 0 - UNIT 0 OR 1 /BIT 1 = 0 FOR FORWARDS TAPE MOTION, =1 FOR REVERSE /BIT 2 = 0 FOR STOP TAPE, = 1 FOR TAPE RUN /BIT 3 = 0 FOR READ, = 1 FOR WRITE /BITS 4-11 ARE IGNORED (NOT WRITTEN) /ON READ THE FOLLOWING BITS ARE VALID IN ADDITION /BIT 4 = 1 FOR WRITE LOCK-OUT /BIT 5 = 1 FOR SELECT OR TIME ERROR /BITS 6-11 FORM MARK TRACK REGISTER BITS 0-5 /TD8E INSTRUCTION SET SDSS=6771 /SKIP ON SINGLE LINE FLAG SDST=6772 /SKIP ON TIME ERROR FLAG SDSQ=6773 /SKIP ON QUAD LINE FLAG SDLC=6774 /LOAD COMMAND REG,CLEAR AC, T-ERR AND UP-TO-SPEED FLIPFLOP SDLD=6775 /LOAD DATA REG,CLEAR SINGLE & QUAD FLAGS SDRC=6776 /READ COMMAND REG,CLEAR SINGLE & QUAD FLAGS SDRD=6777 /READ DATA REG,CLEAR SINGLE & QUAD FLAGS /MARK TRACK SEQUENCE: /NB - WHEN TAPE IS READ IN REVERSE THE MARK TRACK DATA IS REVERSED AND INVERTED /NOTE - TAPE MARKS ARE 6 BITS LONG /E.G. 26 = FORWARD BLOCK MARK BECOMES 45 = REVERSE BLOCK MARK / = 010 110 = 100 101 /TAPE-MARK DESCRIPTION /55 REVERSE END ZONE /25 EXPAND CODE (BIDIRECTIONAL) /26 FORWARD BLOCK MARK /32 REVERSE GUARD /10 FORWARD LOCK AND REVERSE CHECKSUM/FINAL/PRE-FINAL /70 DATA (BIDIRECTIONAL) /73 REVERSE LOCK AND FORWARD CHECKSUM/FINAL/PRE-FINAL /51 FORWARD GUARD /45 REVERSE BLOCK MARK /22 FORWARD END ZONE /NOTE THAT FORWARD AND REVERSE MARKS ARE THE SAME PATTERN /BUT REVERSED AND INVERTED AS ABOVE *200 PASS1, CLA CLL JMS SWON /ASK FOR WTM SWITCH JMS GETOK TAD (1400 /UNIT 0, FORWARD, WRITE, GO SDLC /ISSUE COMMAND DCA COUNT /WILL COUNT END ZONE CODES TAD REZ /REVERSE END ZONE CODE JMS WRITE3 ISZ COUNT JMP .-3 /GO AND WRITE A LENGTH OF IT /NOW WRITE THE VARIOUS MARK CODES TAD EXP /EXPAND CODE JMS WRITE3 TAD FBM /FORWARD BLOCK MARK JMS WRITE3 TAD FLRC /LOCK MARK ETC JMS WRITE3 TAD DTM /DATA MARK JMS WRITE3 TAD RFLRC /REVERSE LOCK ETC JMS WRITE3 TAD RBM /REVERSE BLOCK MARK JMS WRITE3 TAD EXP /A FINAL EXPAND CODE JMS WRITE3 DCA COUNT TAD FEZ /WRITE A LENGTH OF FORWARD END ZONE JMS WRITE3 ISZ COUNT JMP .-3 /FINISHED WRITING. SDLC /0 TO COMMAND REG - STOP TAPE PASS2, JMS SWOFF /ASK FOR THE WTM SWITCH OFF JMS GETOK TAD (3000 /SET TO READ IN SDLC /REVERSE DIRECTION CLA CLL /JUST TO BE SAFE GETNX1, SDSS /WAIT FOR SINGLE LINE FLAG JMP .-1 CLA CLL SDRC /READ THE MARK TRACK AND CLEAR THE FLAGS AND (77 /KEEP ONLY THE MARK TRACK BITS TAD (-22 /SEE IF WE HAVE THE REVERSE END ZONE SZA CLA JMP GETNX1 /NO, KEEP LOOKING SDLC /STOP THE TAPE REWIND /READY TO READ TAPE BACK PASS3, JMS READIT /TELL HIM WE'RE READY TO READ JMS GETOK TAD (1000 SDLC /START READING FORWARDS CLA CLL /JUST TO BE SAFE GETNX2, SDSS /WAIT FOR SINGLE LINE FLAG JMP .-1 CLA CLL SDRC /READ THE MARK TRACK AND CLEAR THE FLAGS AND (77 /KEEP ONLY THE MARK TRACK BITS TAD (-22 /SEE IF WE HAVE THE REVERSE END ZONE SZA CLA JMP GETNX2 /NO, KEEP LOOKING SDLC /STOP THE TAPE REWIND JMP 7605 COUNT, 0 CNTW, 0 PAGE WRITE3, 0 /WRITES A SERIES OF 3 WORDS DCA 12 /USE AUTOINDEX TAD (-3 DCA CNTW JMS WRITE /WRITE 1 WORD ISZ CNTW JMP .-2 /3 TIMES JMP I WRITE3 WRITE, 0 /WRITE 1 WORD ON TAPE CLA TAD I 12 SDSQ JMP .-1 /WAIT FOR THE FLAG SDLD /LOAD THE DATA AND CLEAR THE FLAG CLA JMP I WRITE SWON, 0 JMS TYPE TEXT "TURN WTM SWITCH ON AND PRESS RETURN" JMP I SWON SWOFF, 0 JMS TYPE TEXT "TURN WTM SWITCH OFF AND PRESS RETURN" JMP I SWOFF READIT, 0 JMS TYPE TEXT "READY FOR READ PASS - PRESS RETURN WHEN READY" JMP I READIT PAGE TYPE, 0 CLA CMA TAD TYPE DCA 13 /MAKE POINTER TO MESSAGE TYPE1, TAD I 13 DCA TYPE2 /NEXT WORD OF TEXT TAD TYPE2 RTR RTR RTR /GET FIRST CHAR JMS TYPIT /OUTPUT IT TAD TYPE2 JMS TYPIT /AND 2ND CHAR JMP TYPE1 /UNTIL OUTPUT ROUTINE EXITS TYPE2, 0 /STORAGE TYPIT, 0 /TYPE CHAR IN LOW BYTE AND (77 SNA /EXIT ON A NULL JMP I 13 TAD (-40 /ROUTINE TO MAKE REAL ASCII SMA /FROM 6 BIT JMP .+3 /CHAR >= 40 TAD (340 /CHAR < 40, ADD 300 TO IT JMP TYPE3 /AND OUTPUT IT TAD (-3 /OTHERWISE SUBTRACT 3 SZA /WAS IT A 212 (LF)? JMP .+3 /NO TAD (212 /YES, OUTPUT A LF JMP TYPE3 TAD (-2 /WAS IT A 215 (CR)? SZA JMP .+3 TAD (215 /YES, OUTPUT A CR JMP TYPE3 TAD (245 /NEITHER, ADD 200 TO 6 BIT TYPE3, TLS /PRINT THE CHAR TSF JMP .-1 CLA /ALWAYS CLEAR AC JMP I TYPIT GETOK, 0 /WAIT FOR AN ACKNOWLEDGE KRB /MAKE SURE BUFFER IS EMPTY CLA KSF JMP .-1 KRB /READ TLS /AND ECHO THE ACKNOWLEDGE CLA /RETURN WITH AC = 0 JMP I GETOK PAGE /DATA BLOCKS FOR THE VARIOUS MARK TYPES REZ, . /REVERSE END ZONE 55 4044 /ONLY USING BITS 0,3,6,9 0440 /ON TAPE AS 5555 4404 /IE 101 101 101 101 FEZ, . /DITTO REVERSED FOR 0400 /FORWARD END ZONE 22 4004 /ON TAPE AS 2222 0040 /IE 010 010 010 010 EXP, . /EXPAND CODE BIDIRECTIONAL 25 0404 0404 /ON TAPE AS 2525 0404 /010 101 010 101 FBM, . /FORWARD BLOCK MARK 26 0404 4004 /ON TAPE AS 2632 4040 /010 110 011 010 RBM, . /REVERSE BLOCK MARK 45 4040 0440 /ON TAPE AS 5145 0404 /101 001 100 101 DTM, . /BIDIRECTIONAL DATA MARK 70 4440 0044 /ON TAPE AS 7070 4000 /111 000 111 000 FLRC, . /FORWARD LOCK/REVERSE CHECKSUM/FINAL/PRE-FINAL 0040 /CODE 10 0000 /ON TAPE AS 1010 4000 /001 000 001 000 RFLRC, . /REVERSE LOCK/FORWARD CHECKSUM/FINAL/PRE-FINAL 4440 /CODE 73 4444 /ON TAPE AS 7373 4044 /111 011 111 011 $$$$$$