/DECTAPE COPY PROGRAM. /COPIES AND/OR COMPARES /TWO DECTAPES. /BY JOHN WILSON 09-MAR-84. *0 JMP 200  /LEAVE PAGE 0 CLEAR *200 CLA TAD HEADER SAS JMP .-2  /PRINT HDR & 1ST PROMPT JMS GETNUM  /GET SOURCE UNIT # TAD UNIT1  /SET UP FOR READ DCA UNIT1 TAD PRMPT2 SAS JMP .-2  /PRINT 2ND PROMPT JMS GETNUM  /GET DEST. UNIT # TAD UNIT2R  /(READ) DCA UNIT2R  /SAVE IT TAD UNIT2R  /GET WORD BACK TAD UNIT2W  /CONVERT TO WRITE DCA UNIT2W  /SAVE IT TAD PRMPT3 SAS   /COPY OR COMPARE? JMP .-2 JMS GETNUM  /GET RESPONSE DCA COPFLG  /REMEMBER IT /NOW WE'RE READY TO START LOOP, CLA TAD KUNIT1 DTXA   /READ A RECORD DTSF   /WAIT UNTIL DONE NOP DTRB   /GET FLAGS AND K7776  /CLEAR DT FLAG SZA JMP I ERR  /PRINT ERROR, DIE TAD COPFLG  /WRITE TO DEST UNIT? SZA   /YES JMP NOCOPY TAD UNIT2W  /WRITE, UNIT 2 DCA UNIT2 TAD KBUF1 DCA UNIT2+2  /WRITE BUFFER #1 TAD KUNIT2 DTXA   /WRITE THE RECORD DTSF NOP DTRB   /GET FLAGS AND K7776 SZA   /CONT IF NO ERROR JMP I ERR TAD KBUF2 DCA UNIT2+2  /NEXT READ GOES TO BUFFER #2 NOCOPY, CLA TAD UNIT2R DCA UNIT2 TAD KUNIT2 DTXA   /READ THE RECORD DTSF   /WAIT UNTIL DONE NOP DTRB   /GET FLAGS AND K7776 SZA JMP I ERR JMS I COMP  /COMPARE THE TWO RECORDS ISZ UNIT1+1 ISZ UNIT2+1 TAD UNIT2+1 TAD M2703  /DONE THE WHOLE TAPE? SZA   /YES JMP LOOP HLT   /EXIT / HEADER, STR1 PRMPT2, STR2 PRMPT3, STR3 UNIT1, 20 1 BUFF1-1 UNIT2, 0 1 BUFF2-1 KUNIT1, UNIT1 KUNIT2, UNIT2 UNIT2R, 20 UNIT2W, 20 KBUF1, BUFF1-1 KBUF2, BUFF2-1 K7776, 7776 M2703, -2703 COPFLG, 0 ERR, ERROR COMP, CMPARE / GETNUM, 0 CLA TAD M2 DCA KB+1 TAD KKB DCA KB+2 TAD KB KSR   /READ 2 CHARS TAD LF TLS   /PRINT LF CLA TAD KB+3  /GET CHAR RTR   /ROTATE 9-11 INTO 0-2 RTR AND K7000  /CLEAR OTHER BITS JMP I GETNUM / M2, -2 K7000, 7000 KB, .+1 0 0 0 0 KKB, KB+2 LF, 212 / PAGE CMPARE, 0 TAD CKBUF1 DCA PTR1  /POINT AT BUFFER #1 TAD CKBUF2 DCA PTR2  /POINT AT BUFFER #2 TAD M201  /LENGTH OF RECORD DCA CTR CPLOOP, TAD I PTR1  /GET A WORD CIA   /NEGATE IT TAD I PTR2  /ADD IN CORRESPONDING WORD SZA   /SKIP IF EQUAL JMP NOTEQU  /PRINT ERROR COMP1, ISZ PTR1  /INC PTRS ISZ PTR2 ISZ CTR  /INC CTR JMP CPLOOP  /LOOP IF NOT DONE JMP I CMPARE /RETURN NOTEQU, CLA TAD KERR1  /PT. AT MESSAGE JMS TYPE TAD I BLOCK  /GET BLOCK # JMS PROCT  /PRINT IT TAD KERR2 JMS TYPE TAD CTR  /GET WORD # TAD K202  /CONVERT JMS PROCT  /PRINT IT TAD KERR3 JMS TYPE TAD I PTR1 JMS PROCT  /PRINT SOURCE WORD TAD KERR4 JMS TYPE TAD I PTR2 JMS PROCT  /PRINT DEST. WORD TAD CRLF JMS TYPE  /PRINT CR/LF JMP COMP1  /GO CHECK NEXT WORD / CKBUF1, BUFF1 CKBUF2, BUFF2 PTR1, 0 PTR2, 0 CTR, 0 M201, -201 K202, 202 BLOCK, UNIT1+1   /POINTS AT CURRENT BLOCK KERR1, ERR1   /POINTERS TO ERROR MESSAGES KERR2, ERR2 KERR3, ERR3 KERR4, ERR4 CRLF, ERR5 / TYPE, 0 DCA TPTR  /SAVE PTR TLOOP, TAD I TPTR  /GET A CHAR SNA JMP I TYPE  /RETURN IF 0 TLS   /PRINT THE CHAR CLA ISZ TPTR  /POINT AT NEXT CHAR JMP TLOOP  /LOOP UNTIL 0 / TPTR, 0 / PROCT, 0 DCA PROCT1  /SAVE THE NUMBER TAD PROCT1 RTL RTL JMS DIGIT  /1ST DIGIT TAD PROCT1 RTR RTR RTR JMS DIGIT  /2ND DIGIT TAD PROCT1 RTR RAR JMS DIGIT  /3RD DIGIT TAD PROCT1 JMS DIGIT  /4TH DIGIT JMP I PROCT  /RETURN / DIGIT, 0 AND K7  /MASK OUT AC0-AC8 TAD K260  /CONVERT TO ASCII TLS CLA JMP I DIGIT / PROCT1, 0 K7, 7 K260, "0 / ERROR, DCA PROCT1  /SAVE STATUS REG. TAD DTERR JMS TYPE  /PRINT 'DECTAPE ERROR: ' TAD PROCT1  /GET ST. REG. B JMS PROCT  /PRINT IT TAD CRLF  /POINT AT CR/LF JMS TYPE  /PRINT IT HLT   /DIE / DTERR, ERR6 / PAGE STR1, -31 . "D "E "C "T "A "P "E " "C "O "P "Y 215 212 "F "R "O "M " "U "N "I "T "? " STR2, -11 . "T "O " "U "N "I "T "? " STR3, -36 . "C "O "P "Y " "( "0 ") " "O "R " "C "O "M "P "A "R "E " "O "N "L "Y " "( "1 ") "? " ERR1, "* "* " "B "L "O "C "K " 0 ERR2, ", " "W "O "R "D " 0 ERR3, ": " "E "X "P "E "C "T "E "D " 0 ERR4, ", " "F "O "U "N "D " 0 ERR5, 215 212 0 ERR6, "D "E "C "T "A "P "E " "E "R "R "O "R ": " 0 / BUFF1=. BUFF2=.+201 / $