Delivered-To: vincent.slyngstad@gmail.com Received: by 2002:a0c:e0ce:0:0:0:0:0 with SMTP id x14csp2792978qvk; Tue, 2 Nov 2021 14:26:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwcF6zsW5z8UMq8tfxerSBOtY3CcKwGHbW7dg2tsHtyTv5kaiquWjXo0nSSMVr1qD9Gk5BD X-Received: by 2002:a02:b796:: with SMTP id f22mr21081033jam.112.1635888363645; Tue, 02 Nov 2021 14:26:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635888363; cv=none; d=google.com; s=arc-20160816; b=xhM9+rF4NyMv6kIA7kR1w1AsGmE543dOSn3xv9xDp8zQZYqw1DQule2A9WmRKZ+M2A b2uIfY9g5dVZAA2TuSYlqiihwPbTaJuTja8k7b6gVy4K0nYYCZjMFQL+34ApG0LhDh88 Fv3oJxOPjCk3NVV9sUYxJLctuzZMiAm9TyRjupq8NYkeNQk1l7D/l2JqNIscJi3PYYX5 PQgBc5/yIPska1FDq9r6WpqbDqOrZzafoNuPQ1TMSU145WZp/7jEVgxnpC9rWy9y2plr jdVGRkl0cFyZ8DDA2Q3tN4n0JlhxqPr5EmOmVkNTkeRZPj9xhuA1mUeJoUHy4RfoIGTY CyJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:to:subject:delivered-to; bh=7mL8TAZ1LNAzsJaPV0qImczrvp7Cnl/yO6K38nboLs4=; b=zlfHUWarJEDiNonNXRN+BAB+UpWiRS/A7cDvXfg/MDouAWp++5fsSyUp7eEKRHeeKF Ju0H1TvF3IhG43OSjtkWW7Nn4b0poE+aPRoY+keLnX8zkuZ3AvdCiTAaMmlPhcnR+q/M aSxdVHG9+vlIp6NYltTA/SrqBuX8L4Wa7kQF1cmAS6tDy3GvJr+ytEheDN4X0seN/dqJ jO5iXhxJtGW3QJLV8/ef3MCe88bEHZkb3yC1JTglzKFaUj2miS89M5M4660f2o69QJ0v kFzx7ADK4BG3h9a5J7vK04VTkfe+tr1h5SKATMzfT04E2vcYE9voZc6Rdqe2rZGi0TdI Vlyw== ARC-Authentication-Results: i=1; mx.google.com; spf=neutral (google.com: 71.91.242.75 is neither permitted nor denied by best guess record for domain of cctalk-bounces@classiccmp.org) smtp.mailfrom=cctalk-bounces@classiccmp.org Return-Path: Received: from huey.classiccmp.org (071-091-242-075.biz.spectrum.com. [71.91.242.75]) by mx.google.com with ESMTP id h22si158083jal.48.2021.11.02.14.26.02; Tue, 02 Nov 2021 14:26:03 -0700 (PDT) Received-SPF: neutral (google.com: 71.91.242.75 is neither permitted nor denied by best guess record for domain of cctalk-bounces@classiccmp.org) client-ip=71.91.242.75; Authentication-Results: mx.google.com; spf=neutral (google.com: 71.91.242.75 is neither permitted nor denied by best guess record for domain of cctalk-bounces@classiccmp.org) smtp.mailfrom=cctalk-bounces@classiccmp.org Received: from 071-091-242-075.biz.spectrum.com (localhost [127.0.0.1]) by huey.classiccmp.org (Postfix) with ESMTP id B7BE72073C2A; Tue, 2 Nov 2021 16:25:57 -0500 (CDT) Delivered-To: cctalk@classiccmp.org Received: from mx1.ezwind.net (mx1.ezwind.net [172.25.1.26]) by huey.classiccmp.org (Postfix) with ESMTP id A180F2073C1C for ; Tue, 2 Nov 2021 16:25:55 -0500 (CDT) Received: from mx1.ezwind.net (localhost [127.0.0.1]) by mx1.ezwind.net (Postfix) with ESMTP id 6C6EB273C0 for ; Tue, 2 Nov 2021 16:25:55 -0500 (CDT) Received: by mx1.ezwind.net (Postfix, from userid 58) id 4C57327393; Tue, 2 Nov 2021 16:25:55 -0500 (CDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mx1.ezwind.net X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=FREEMAIL_FROM=0.001,LOTS_OF_MONEY=0.001,NICE_REPLY_A=-2.549,RCVD_IN_DNSWL_BLOCKED=0.001,RCVD_IN_MSPIKE_H2=-0.001,SPF_HELO_NONE=0.001 mx1.ezwind.net 1255; Body=1 Fuz1=1 Fuz2=1 Reported 0 times. [127.0.0.17] [127.0.0.255] autolearn=disabled version=3.4.4 Received: from impout002.msg.chrl.nc.charter.net (impout002aa.msg.chrl.nc.charter.net [47.43.20.26]) by mx1.ezwind.net (Postfix) with ESMTP id 0564C27347 for ; Tue, 2 Nov 2021 16:25:51 -0500 (CDT) Received: from [192.168.42.60] ([131.93.245.130]) by cmsmtp with ESMTPA id i1HymuiJEBR4Qi1HzmKI6C; Tue, 02 Nov 2021 21:25:51 +0000 X-Authority-Analysis: v=2.4 cv=DNBKXwBb c=1 sm=1 tr=0 ts=6181acdf a=Zm06Qz7rp3B7EBCg0pjSMA==:117 a=Zm06Qz7rp3B7EBCg0pjSMA==:17 a=IkcTkHD0fZMA:10 a=jKLuITCa6ktO7PAEbt4A:9 a=QEXdDO2ut3YA:10 Subject: Re: LINCtape images To: cctalk@classiccmp.org References: <75313981-6534-85af-7913-ccee8a22e71b@informatik.uni-stuttgart.de> Message-ID: Date: Tue, 2 Nov 2021 16:25:47 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <75313981-6534-85af-7913-ccee8a22e71b@informatik.uni-stuttgart.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-CMAE-Envelope: MS4xfBSUpiLT/Nm5PqVbAlqmBdY5CszUVUD4bQxFgKyKMw6qM7W/5MxJ4XXPVvKbDPDAd+T1vMwEvqDOlKj0qle19LxMj4BAhJ+kdq3W2y0qLu37beGF+P3o 1DsgN5gAad8U6qakpnhYynrIJ6z5Gd4gdPN98r2yDMHF8moJobvvlImMcavhNQ31kLA66qcb6iol/A== X-Virus-Scanned: ClamAV using ClamSMTP X-BeenThere: cctalk@classiccmp.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "General Discussion: On-Topic and Off-Topic Posts" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Jay Jaeger via cctalk Reply-To: Jay Jaeger , "General Discussion: On-Topic and Off-Topic Posts" Errors-To: cctalk-bounces@classiccmp.org Sender: "cctalk" On 10/29/2021 7:22 AM, Christian Corti via cctalk wrote: > Short question: > How do I transfer LINCtape images back to tape on a PDP-12? Ideally > there is some binary program to load via papertape to format a tape and > recreate it with data transfer over the console serial line. > > Christian Here is a program I wrote for reading/writing tape images via XModem protocol for my PDP-12, and another for comparing two linctapes. JRJ 8L OF XMTAPE PAGE 01 LN=0001 0001 [ PROGRAM TO SEND A 0002 [ TAPE ON UNIT 1 TO 0003 [ A PC VIA XMODEM 0004 [ 0005 [ CONSTANTS 0006 [ 0007 XSOH=1 0010 XNAK=25 0011 XCAN=30 0012 XACK=6 0013 XEOT=4 0014 SRTAPE=1 [ SR11 1 FOR OS/12 TAPE 0015 SRCMP=2 [ SR10 1 FOR COMPARE 0016 SRWRIT=4 [ SR9 1 FOR WRITE 0017 [ 0020 [ SPECIAL INSTRUCTIONS 0021 [ 0022 AXO=1 0023 PDP=2 0024 TMA=23 0025 RDC=700 0026 WDE=706 0027 DKSF=6401 0030 DKCC=6402 0031 DKRB=6406 0032 DTLS=6416 0033 DTSF=6411 0034 [ 0035 [ DATA 0036 [ 0037 $70 0040 0070 0000 #XMPTR 0 [ PTR INTO XMBUF 0041 0071 0000 #XMBLK 0 [ XMODEM BLOCK # 0042 0072 0000 #XMCKSM 0 [ XMODEM CHECKSUM 0043 0073 0000 #XMCNT 0 [ WORK COUNTER 0044 0074 0000 #XMACK 0 [ ACKNOWLEDGEMENT CHAR 0045 0075 0000 #ROTCNT 0 [ WORK COUNTER FOR RAR 0046 0076 0000 #WDCNTI 0 [ WORDS PER BLOCK 0047 0077 0000 #BLKCNT 0 [ BLOCKS PER TAPE 0050 0100 0000 #WDCNT 0 [ WORK COUNTER 0051 0101 0000 #HNKCNT 0 [ WORK COUNTER 0052 0102 0000 #HNKMEM 0 [ ADDRESS OF BLOCK 0053 0103 0000 #XMWORD 0 [ XMODEM INCOMING WORD 0054 0104 0000 #XMPROT 0 [ XMODEM PROTOCOL CHAR 0055 [ 0056 [ INITIALIZATION 0057 [ 0060 $200 0061 0200 7402 #START HLT 0062 0201 7301 CLA CLL IAC [ XMODEM BLOCK=1 0063 0202 3071 0071 DCA XMBLK 0064 0203 1177 1155 TAD (XMBUF [ XMPTR = ADDR(XMBUF) 0065 0204 3070 0070 DCA XMPTR 0066 0205 1176 7600 TAD (0-128. [ XMCNT = -128 0067 0206 3073 0073 DCA XMCNT 8L OF XMTAPE PAGE 02 LN=0070 0070 0207 7404 OSR [ IF SR11 == 0 THEN 0071 0210 0175 0001 AND (SRTAPE 0072 0211 7440 SZA 0073 0212 5220 0220 JMP INITP 0074 0213 1174 7400 TAD (0-256. [ WDCNTI= -256. 0075 0214 3076 0076 DCA WDCNTI 0076 0215 1173 7000 TAD (0-1000 [ BLKCNT = -01000 0077 0216 3077 0077 DCA BLKCNT 0100 0217 5225 0225 JMP INIT1 [ ELSE 0101 0220 7300 #INITP CLA CLL 0102 0221 1172 7577 TAD (0-129. [ WDCNTI = -129. 0103 0222 3076 0076 DCA WDCNTI 0104 0223 1171 5000 TAD (0-3000 [ BLKCNT = - 03000 0105 0224 3077 0077 DCA BLKCNT 0106 0225 3254 0254 #INIT1 DCA BLOCK [ BLOCK = 0 0107 0226 7404 OSR [ IF SR10==1 THEN COMPARE 0110 0227 0170 0002 AND (SRCMP 0111 0230 7440 SZA 0112 0231 5567 0500 JMP CMPINI [ GO COMPARE 0113 0232 7404 OSR [ IF SR9==1 THEN WRITE 0114 0233 0166 0004 AND (SRWRIT 0115 0234 7440 SZA 0116 0235 5565 0603 JMP WTINI [ GO WRITE 0117 [ 0120 [ READ NEXT HUNK (1 FIELD) 0121 [ (16 BLOCKS) INTO MEM. 0122 [ 0123 0236 7300 #RDHNK CLA CLL 0124 0237 1164 7760 TAD (0-16. [ HNKCNT = -16. 0125 0240 3101 0101 DCA HNKCNT 0126 0241 3102 0102 DCA HNKMEM [ HNKMEM = 0 0127 0242 7300 #RDBLK CLA CLL 0130 0243 1102 0102 TAD HNKMEM [ TMA MEMORY ADDRESS 0131 0244 6141 LINC 0132 0245 0023 TMA 0133 0246 0002 PDP 0134 0247 7300 CLA CLL [ EXTENDED, FIELD 1 0135 0250 1163 1020 TAD (1020 0136 0251 6141 LINC 0137 0252 0001 AXO 0140 0253 0710 RDC 10 [ READ UNIT 1 0141 0254 0000 #BLOCK 0 0142 0255 0002 PDP 0143 0256 2254 0254 ISZ BLOCK [ ++BLOCK 0144 0257 7300 CLA CLL 0145 0260 1102 0102 TAD HNKMEM [ HNKMEM += 256. 0146 0261 1162 0400 TAD (256. [ EVEN FOR 129. WORD 0147 0262 3102 0102 DCA HNKMEM [ SIMULATED DECTAPES 0150 0263 2101 0101 ISZ HNKCNT [ WHILE ++HNKCNT != 0 0151 0264 5242 0242 JMP RDBLK 0152 [ 0153 [ FILL XMODEM BUFFER 0154 [ 1 WORD AT A TIME. 0155 [ TRANSMIT AS NECESSARY 0156 [ 8L OF XMTAPE PAGE 03 LN=0157 0157 0265 7300 CLA CLL 0160 0266 1164 7760 TAD (0-16. [ HNKCNT = -16. 0161 0267 3101 0101 DCA HNKCNT 0162 0270 3102 0102 DCA HNKMEM [ MEMORY ADDR=0 0163 0271 7300 #HNKSND CLA CLL 0164 0272 1076 0076 TAD WDCNTI [ WDCNT = WDCNTI 0165 0273 3100 0100 DCA WDCNT [ (- WORD COUNT) 0166 0274 6211 #HNKNXW CDF 10 [ FIELD 1 HOLDS DATA 0167 0275 1502 0102 TAD;HNKMEM [ AC=WORD 0170 0276 6201 CDF 0 [ BACK TO NORMAL 0171 0277 4330 0330 JMS WDSEND [ PUT WORD IN BUFF 0172 0300 2102 0102 ISZ HNKMEM [ POINT TO NEXT WD 0173 0301 7000 NOP [ FOR SKIP ON ZERO 0174 0302 2100 0100 ISZ WDCNT [ UNTIL ++WDCNT == 0 0175 0303 5274 0274 JMP HNKNXW 0176 0304 7300 CLA CLL 0177 0305 1076 0076 TAD WDCNTI [ BUMP MEM ADDR TO 0200 0306 1162 0400 TAD (256. [ NEXT BLOCK. DOES 0201 0307 1102 0102 TAD HNKMEM [ NOTHING IF BLOCK 0202 0310 3102 0102 DCA HNKMEM [ SIZE IS 256. 0203 0311 2101 0101 ISZ HNKCNT [ UNTIL ++HNKCNT == 0 0204 0312 5271 0271 JMP HNKSND 0205 [ 0206 [ IF WE HAVE SENT THEM 0207 [ ALL, FLUSH THE BUFFER 0210 [ AND HALT. OTHERWISE 0211 [ GO BACK FOR MORE 0212 [ 0213 0313 7300 CLA CLL 0214 0314 1077 0077 TAD BLKCNT [ BLKCNT += 16. 0215 0315 1161 0020 TAD (16. 0216 0316 3077 0077 DCA BLKCNT 0217 0317 1077 0077 TAD BLKCNT 0220 0320 7440 SZA [ UNTIL BLKCNT == 0 0221 0321 5236 0236 JMP RDHNK 0222 0322 4361 0361 JMS WDFLSH [ FLUSH THE BUFFER 0223 0323 7300 CLA CLL 0224 0324 1166 0004 TAD (XEOT [ SEND EOT CHAR 0225 0325 4560 0466 JMS CHSEND 0226 0326 7402 HLT [ AND HALT 0227 0327 5200 0200 JMP START 0230 [ 0231 [ SUBROUTINE TO PUT A 0232 [ WORD INTO XMODEM 0233 [ BUFFER AND TRIGGER 0234 [ A TRANSMISSION IF 0235 [ THE BUFFER IS FULL 0236 [ 0237 0330 0000 #WDSEND 0 [ RETURN ADDRESS 0240 0331 3470 0070 DCA;XMPTR [ STORE LOW 8 BITS 0241 0332 1157 7770 TAD (0-8. 0242 0333 3075 0075 DCA ROTCNT 0243 0334 1470 0070 TAD;XMPTR [ RESTORE DATA WORD 0244 0335 7110 #WDROT CLL RAR [ AC >>= 8. 0245 0336 2075 0075 ISZ ROTCNT 8L OF XMTAPE PAGE 04 LN=0246 0246 0337 5335 0335 JMP WDROT 0247 0340 2070 0070 ISZ XMPTR [ ++ XMPTR 0250 0341 7000 NOP [ FOR SKIP 0251 0342 3470 0070 DCA;XMPTR [ STORE HIGH 4 BITS 0252 0343 2070 0070 ISZ XMPTR [ ++ XMPTR 0253 0344 7000 NOP [ FOR SKIP 0254 0345 2073 0073 ISZ XMCNT 0255 0346 2073 0073 ISZ XMCNT 0256 0347 5730 0330 JMP;WDSEND [ RTRN IF NOT FULL 0257 0350 4562 0400 JMS XMSEND [ ELSE SEND BUFFER 0260 0351 7300 CLA CLL [ RE-INITIALIZE 0261 0352 1177 1155 TAD (XMBUF [ XMPTR = ADDR(XMBUF) 0262 0353 3070 0070 DCA XMPTR 0263 0354 1176 7600 TAD (0-128. [ XMCNT = -128. 0264 0355 3073 0073 DCA XMCNT 0265 0356 2071 0071 ISZ XMBLK [ ++XMBLK (XMODEM BLOCK) 0266 0357 7000 NOP [ FOR SKIP 0267 0360 5730 0330 JMP;WDSEND [ AND RETURN 0270 [ 0271 [ SUBROUTINE TO FLUSH 0272 [ AND AND SEND XMODEM 0273 [ BUFFER 0274 [ 0275 0361 7300 #WDFLSH CLA CLL 0276 0362 1073 0073 TAD XMCNT [ IF COUNT==128. 0277 0363 1176 7600 TAD (0-128. 0300 0364 7450 SNA 0301 0365 5761 0361 JMP;WDFLSH [ THEN JUST RETURN 0302 0366 7300 #WDFILL CLA CLL 0303 0367 3470 0070 DCA;XMPTR [ STUFF A 0 BYTE 0304 0370 2070 0070 ISZ XMPTR [ ++XMPTR 0305 0371 7000 NOP [ FOR SKIP 0306 0372 2073 0073 ISZ XMCNT [ UNTIL ++XMCNT == 0 0307 0373 5366 0366 JMP WDFILL 0310 0374 5761 0361 JMP;WDFLSH [ RETURN WHEN DONE 0311 [ 0312 [ SUBROUTINE TO SEND 0313 [ AN XMODEM MESSAGE, 0314 [ WITH RETRIES 0315 [ 0316 $400 0317 0400 0000 #XMSEND 0 [ RETURN ADDRESS 0320 0401 4225 0425 JMS XMPUT [ TRY AND SEND 0321 0402 4273 0473 JMS CHGET [ GET ACKNOWLEDGEMENT 0322 0403 0156 0077 AND (77 [ FOR TESTING CONV. 0323 0404 3074 0074 DCA XMACK [ SAVE IT FOR LATER 0324 0405 1074 0074 TAD XMACK [ GET IT BACK 0325 0406 1155 7753 TAD (0-XNAK [ IF == NAK 0326 0407 7450 SNA 0327 0410 5201 0401 JMP XMSEND+1 [ THEN RETRY 0330 0411 7300 CLA CLL 0331 0412 1074 0074 TAD XMACK 0332 0413 1154 7750 TAD (0-XCAN [ IF == CANCEL 0333 0414 7440 SZA 0334 0415 5217 0417 JMP XMSND1 8L OF XMTAPE PAGE 05 LN=0335 0335 0416 5553 0201 JMP START+1 [ JUST RESTART 0336 0417 7300 #XMSND1 CLA CLL [ ELSE 0337 0420 1074 0074 TAD XMACK 0340 0421 1152 7772 TAD (0-XACK [ IF != ACK 0341 0422 7440 SZA 0342 0423 5201 0401 JMP XMSEND+1 [ RETRY 0343 0424 5600 0400 JMP;XMSEND [ ACK -- RETURN 0344 [ 0345 [ SUBROUTINE TO SEND 0346 [ XMODEM BUFFER 1 TIME 0347 [ 0350 0425 0000 #XMPUT 0 [ RETURN ADDRESS 0351 0426 7300 CLA CLL 0352 0427 1175 0001 TAD (XSOH [ TRANSMIT SOH 0353 0430 4266 0466 JMS CHSEND 0354 0431 7300 CLA CLL 0355 0432 1071 0071 TAD XMBLK [ TRANSMIT BLOCK NO. 0356 0433 4266 0466 JMS CHSEND 0357 0434 7300 CLA CLL 0360 0435 1071 0071 TAD XMBLK 0361 0436 7040 CMA [ TRANSMIT COMPLEMENT 0362 0437 4266 0466 JMS CHSEND 0363 0440 7300 CLA CLL 0364 0441 3072 0072 DCA XMCKSM [ XMCKSM = 0 0365 0442 1176 7600 TAD (0-128. [ XMCNT = -128. 0366 0443 3073 0073 DCA XMCNT 0367 0444 1177 1155 TAD (XMBUF [ XMPTR = ADDR(XMBUF) 0370 0445 3070 0070 DCA XMPTR 0371 0446 7300 #XMSPUT CLA CLL [ SEND *XMPTR 0372 0447 1470 0070 TAD;XMPTR 0373 0450 4266 0466 JMS CHSEND 0374 0451 7300 CLA CLL [ XMCKSM += *XMPTR 0375 0452 1470 0070 TAD;XMPTR 0376 0453 1072 0072 TAD XMCKSM 0377 0454 3072 0072 DCA XMCKSM 0400 0455 2070 0070 ISZ XMPTR [ ++XMPTR 0401 0456 7000 NOP [ FOR SKIP 0402 0457 2073 0073 ISZ XMCNT [ UNTIL ++XMCNT == 0 0403 0460 5246 0446 JMP XMSPUT 0404 0461 6402 DKCC [ PREPARE FOR ACK CHAR 0405 0462 7300 CLA CLL [ SEND CHECKSUM 0406 0463 1072 0072 TAD XMCKSM 0407 0464 4266 0466 JMS CHSEND 0410 0465 5625 0425 JMP;XMPUT [ AND RETURN 0411 [ 0412 [ ROUTINE TO SEND CHAR 0413 [ 0414 0466 0000 #CHSEND 0 [ RETURN ADDRESS 0415 0467 6416 DTLS [ SEND THE CHAR 0416 0470 6411 DTSF [ CHECK FLAG 0417 0471 5270 0470 JMP *-1 [ WAIT TILL DONE 0420 0472 5666 0466 JMP;CHSEND 0421 [ 0422 [ ROUTINE TO WAIT FOR 0423 [ AND RECEIVE A CHAR 8L OF XMTAPE PAGE 06 LN=0424 0424 [ 0425 0473 0000 #CHGET 0 [ RETURN ADDRESS 0426 0474 6401 DKSF [ WAIT FOR CHAR 0427 0475 5274 0474 JMP *-1 0430 0476 6406 DKRB [ RECEIVE THE CHAR 0431 0477 5673 0473 JMP;CHGET [ AND RETURN 0432 [ 0433 [ COMPARE INCOMING DATA 0434 [ TO TAPE DRIVE 1 0435 [ 0436 0500 7300 #CMPINI CLA CLL 0437 0501 3323 0523 DCA CMPBLK [ CMPBLK = 0 0440 0502 3073 0073 DCA XMCNT [ INIT XM BUFFER EMPTY 0441 0503 1151 0025 TAD (XNAK [ PRIME INITAL NACK 0442 0504 3074 0074 DCA XMACK 0443 [ 0444 [ COMPARE NEXT HUNK 0445 [ 0446 0505 7300 #CMPHNK CLA CLL 0447 0506 1164 7760 TAD (0-16. [ HNKCNT = -16 0450 0507 3101 0101 DCA HNKCNT 0451 0510 3102 0102 DCA HNKMEM [ HNKMEM = 0 0452 0511 7300 #CMPRB CLA CLL [ READ NEXT BLOCK 0453 0512 1102 0102 TAD HNKMEM [ GET MEM ADDR 0454 0513 6141 LINC 0455 0514 0023 TMA 0456 0515 0002 PDP 0457 0516 7300 CLA CLL 0460 0517 1163 1020 TAD (1020 [ XA MODE, FIELD 1 0461 0520 6141 LINC 0462 0521 0001 AXO 0463 0522 0710 RDC 10 [ READ UNIT 1 0464 0523 0000 #CMPBLK 0 [ BLOCK NUMBER 0465 0524 0002 PDP 0466 0525 2323 0523 ISZ CMPBLK [ ++CMPBLK 0467 0526 7300 CLA CLL 0470 0527 1102 0102 TAD HNKMEM [ HNKMEM += 256 0471 0530 1162 0400 TAD (256. [ EVEN FOR 129 WORD 0472 0531 3102 0102 DCA HNKMEM [ BLOCK TAPES 0473 0532 2101 0101 ISZ HNKCNT [ WHILE ++HNKCNT != 0 0474 0533 5311 0511 JMP CMPRB [ GO READ NEXT BLK 0475 [ 0476 [ THEN COMPARE WHAT WE 0477 [ JUST READ TO INCOMING 0500 [ DATA FROM XMODEM 0501 [ 0502 0534 7300 CLA CLL 0503 0535 1164 7760 TAD (0-16. [ HNKCNT = -16. 0504 0536 3101 0101 DCA HNKCNT 0505 0537 3102 0102 DCA HNKMEM [ HNKMEM = 0 0506 0540 7300 #CMPCBK CLA CLL 0507 0541 1076 0076 TAD WDCNTI [ WDCNT = WDCNTI 0510 0542 3100 0100 DCA WDCNT 0511 0543 4550 1000 #CMPCWD JMS RDWD [ GET WORD FROM XMODEM 0512 0544 7041 CMA IAC [ AC = -AC 8L OF XMTAPE PAGE 07 LN=0513 0513 0545 6211 CDF 10 [ COMPARE TO DATA 0514 0546 1502 0102 TAD;HNKMEM [ FROM TAPE 0515 0547 6201 CDF 0 0516 0550 7440 SZA [ COMPARE OK 0517 0551 7402 HLT [ MIS-COMPARE!!! 0520 0552 2102 0102 ISZ HNKMEM [ POINT TO NEXT WORD 0521 0553 7000 NOP [ FOR SKIP 0522 0554 2100 0100 ISZ WDCNT [ UNTIL ++WDCNT == 0 0523 0555 5343 0543 JMP CMPCWD [ GO COMPARE NEXT WD 0524 0556 7300 CLA CLL [ BUMP UP TO NEXT 0525 0557 1076 0076 TAD WDCNTI [ BLOCK. DOES NOTHING 0526 0560 1162 0400 TAD (256. [ FOR 256. WORD BLOCKS 0527 0561 1102 0102 TAD HNKMEM 0530 0562 3102 0102 DCA HNKMEM 0531 0563 2101 0101 ISZ HNKCNT [ UNTIL ++HNKCNT == 0 0532 0564 5340 0540 JMP CMPCBK [ GO COMPARE NEXT BLOCK 0533 [ 0534 [ IF WE COMPARED IT ALL, HALT 0535 [ 0536 0565 7300 CLA CLL 0537 0566 1077 0077 TAD BLKCNT [ BLKCNT += 16 0540 0567 1161 0020 TAD (16. 0541 0570 3077 0077 DCA BLKCNT 0542 0571 1077 0077 TAD BLKCNT [ RESTORE AC 0543 0572 7440 SZA 0544 0573 5305 0505 JMP CMPHNK [ MORE TO COMPARE 0545 0574 1147 0006 TAD (XACK [ ACK FINAL BLOCK 0546 0575 4266 0466 JMS CHSEND 0547 0576 7300 CLA CLL 0550 0577 1147 0006 TAD (XACK 0551 0600 4560 0466 JMS CHSEND 0552 0601 7402 HLT [ HALT, THEN RESTART 0553 0602 5553 0201 JMP START+1 [ SKIP INIT HLT 0554 [ 0555 [ WRITE TAPE FROM INCOMING DATA 0556 [ 0557 0603 7402 #WTINI HLT [ FOR SAFETY 0560 0604 7300 CLA CLL 0561 0605 3253 0653 DCA WTBLOK [ WTBLOK = 0 0562 0606 3073 0073 DCA XMCNT [ INIT XMODEM BUF EMPTY 0563 0607 1151 0025 TAD (XNAK [ PRIME INITIAL NACK 0564 0610 3074 0074 DCA XMACK 0565 0611 7300 #WTGHNK CLA CLL [ HNKCNT = -16. 0566 0612 1164 7760 TAD (0-16. 0567 0613 3101 0101 DCA HNKCNT 0570 0614 3102 0102 DCA HNKMEM [ HNKMEM = 0 0571 0615 7300 #WTGBK CLA CLL 0572 0616 1076 0076 TAD WDCNTI [ WDCNT = -WORDS/BLOCK 0573 0617 3100 0100 DCA WDCNT 0574 0620 4550 1000 #WTGWD JMS RDWD [ GET WORD FROM XMODEM 0575 0621 6211 CDF 10 0576 0622 3502 0102 DCA;HNKMEM [ STORE IN TAPE BUFF 0577 0623 6201 CDF 0 0600 0624 2102 0102 ISZ HNKMEM [ ++HNKMEM 8L OF XMTAPE PAGE 08 LN=0601 0601 0625 7000 NOP [ FOR SKIP 0602 0626 2100 0100 ISZ WDCNT [ UNTIL ++WDCNT == 0 0603 0627 5220 0620 JMP WTGWD 0604 0630 1076 0076 TAD WDCNTI [ BUMP TO NEXT BLOCK 0605 0631 1162 0400 TAD (256. [ HNKMEM += 256-BLKSIZE 0606 0632 1102 0102 TAD HNKMEM 0607 0633 3102 0102 DCA HNKMEM 0610 0634 2101 0101 ISZ HNKCNT [ UNTIL ++HNKCNT == 0 0611 0635 5215 0615 JMP WTGBK 0612 0636 1164 7760 TAD (0-16. [ HNKCNT = -16. 0613 0637 3101 0101 DCA HNKCNT 0614 0640 3102 0102 DCA HNKMEM [ HNKMEM = 0 0615 0641 7300 #WTBLK CLA CLL 0616 0642 1102 0102 TAD HNKMEM [ TMA MEMORY ADDR 0617 0643 6141 LINC 0620 0644 0023 TMA 0621 0645 0002 PDP 0622 0646 7300 CLA CLL 0623 0647 1163 1020 TAD (1020 [ XA MODE, FIELD 1 0624 0650 6141 LINC 0625 0651 0001 AXO 0626 0652 0716 WDE 10 [ WRITE TAPE BLOCK 0627 0653 0000 #WTBLOK 0 0630 0654 0002 PDP 0631 0655 2253 0653 ISZ WTBLOK [ ++WTBLOK 0632 0656 7300 CLA CLL 0633 0657 1102 0102 TAD HNKMEM [ HNKMEM += 256. 0634 0660 1162 0400 TAD (256. [ EVEN FOR 129 WD 0635 0661 3102 0102 DCA HNKMEM [ BLOCKS 0636 0662 2101 0101 ISZ HNKCNT [ UNTIL ++HNKCNT == 0 0637 0663 5241 0641 JMP WTBLK 0640 [ 0641 [ IF ALL HUNKS WRITTEN 0642 [ THEN HALT 0643 [ 0644 0664 7300 CLA CLL 0645 0665 1077 0077 TAD BLKCNT [ BLKCNT += BLOCKS/HUNK 0646 0666 1161 0020 TAD (16. 0647 0667 3077 0077 DCA BLKCNT 0650 0670 1077 0077 TAD BLKCNT 0651 0671 7440 SZA 0652 0672 5211 0611 JMP WTGHNK [ GO DO NEXT HUNK 0653 0673 1147 0006 TAD (XACK [ ACK FINAL BLOCK 0654 0674 4560 0466 JMS CHSEND 0655 0675 7300 CLA CLL 0656 0676 1147 0006 TAD (XACK 0657 0677 4560 0466 JMS CHSEND 0660 0700 7402 HLT [ THEN HALT -- WELL DONE! 0661 0701 5553 0201 JMP START+1 [ SKIP INITIAL HALT 0662 [ 0663 [ ROUTINE TO RECEIVE 0664 [ A WORD FROM XMODEM 0665 [ 0666 $1000 0667 1000 0000 #RDWD 0 [ RETURN ADDR 8L OF XMTAPE PAGE 09 LN=0670 0670 1001 7300 CLA CLL 0671 1002 1073 0073 TAD XMCNT [ IF BUFFER IS EMPTY 0672 1003 7440 SZA 0673 1004 5216 1016 JMP RDWD2 [ BUFFER NOT EMPTY 0674 1005 4237 1037 JMS XMGET [ GO FILL BUFFER 0675 1006 7450 SNA [ SKIP IF EOT 0676 1007 5212 1012 JMP RDWD1 [ NOT EOT -- OK 0677 1010 7402 HLT [ EOT - NOT EXPECTED 0700 1011 5210 1010 JMP *-1 [ HARD HALT 0701 1012 1177 1155 #RDWD1 TAD (XMBUF [ XMPTR = ADDR(XMBUFF) 0702 1013 3070 0070 DCA XMPTR 0703 1014 1176 7600 TAD (0-128. [ XMCNT = -128. 0704 1015 3073 0073 DCA XMCNT 0705 1016 7300 #RDWD2 CLA CLL [ CLEAR AC 0706 1017 1470 0070 TAD;XMPTR [ WORD = *XMPTR 0707 1020 3103 0103 DCA XMWORD [ SAVE IT 0710 1021 2070 0070 ISZ XMPTR [ ++XMPTR 0711 1022 7000 NOP [ FOR SKIP 0712 1023 1470 0070 TAD;XMPTR [ GET NEXT CHAR 0713 1024 2070 0070 ISZ XMPTR [ ++XMPTR 0714 1025 7000 NOP [ FOR SKIP 0715 1026 7012 RTR [ >>= 2 0716 1027 7012 RTR [ >>= 2 0717 1030 7010 RAR [ >>= 1 == <<= 8 0720 1031 0174 7400 AND (7400 [ KEEP 4 BITS 0721 1032 1103 0103 TAD XMWORD [ OR IN LOW 8 BITS 0722 1033 2073 0073 ISZ XMCNT 0723 1034 2073 0073 ISZ XMCNT 0724 1035 7000 NOP [ FOR SKIP 0725 1036 5600 1000 JMP;RDWD [ RETURN WITH WORD 0726 [ 0727 [ ROUTINE TO READ 1 0730 [ 128 BYTE XMODEM BLOCK 0731 [ 0732 1037 0000 #XMGET 0 [ RETURN ADDRESS 0733 1040 7300 CLA CLL 0734 1041 1177 1155 TAD (XMBUF [ XMPTR = ADDR(XMBUF) 0735 1042 3070 0070 DCA XMPTR 0736 1043 3072 0072 DCA XMCKSM [ XMCKSM = 0 0737 1044 1176 7600 TAD (0-128. 0740 1045 3073 0073 DCA XMCNT [ XMCNT = -128. 0741 1046 1074 0074 TAD XMACK [ SEND ACK OR NACK 0742 1047 4560 0466 JMS CHSEND 0743 1050 4546 0473 #XMGSOH JMS CHGET [ WAIT FOR SOH 0744 1051 3104 0104 DCA XMPROT [ SAVE CHAR 0745 1052 1104 0104 TAD XMPROT [ RESTORE 0746 1053 1145 7777 TAD (0-XSOH [ IS CHAR == SOH? 0747 1054 7450 SNA 0750 1055 5267 1067 JMP XMGBLK [ CHAR == SOH 0751 1056 7300 CLA CLL [ CHAR != SOH 0752 1057 1104 0104 TAD XMPROT [ IS CHAR == EOT? 0753 1060 1144 7774 TAD (0-XEOT 0754 1061 7450 SNA 0755 1062 5265 1065 JMP XMGEOT [ CHAR IS EOT 0756 1063 4350 1150 JMS XMNACK [ NOT EOT. JUNK! NAK! 8L OF XMTAPE PAGE 10 LN=0757 0757 1064 5250 1050 JMP XMGSOH [ AND GO LOOK FOR SOH 0760 1065 7301 #XMGEOT CLA CLL IAC [ IF EOT -- RETURN 1 0761 1066 5637 1037 JMP;XMGET 0762 1067 4546 0473 #XMGBLK JMS CHGET [ SOH. GET BLOCK # 0763 1070 7041 CMA IAC [ COMPARE TO EXPECTED 0764 1071 1071 0071 TAD XMBLK 0765 1072 7450 SNA 0766 1073 5277 1077 JMP XMGBLC [ OK. GET COMPLEMENT 0767 1074 7402 HLT [ NOT OK. HALT, THEN NAK 0770 1075 4350 1150 JMS XMNACK 0771 1076 5250 1050 JMP XMGSOH [ THEN GET SOH AGAIN 0772 1077 4546 0473 #XMGBLC JMS CHGET [ GET BLOCK COMPLEMENT 0773 1100 7001 IAC [ NOW IT IS -BLOCK (ALMOST) 0774 1101 1071 0071 TAD XMBLK [ COMPARE WITH EXPECTED 0775 1102 0143 0377 AND (377 [ 8 BIT SUM 0776 1103 7450 SNA 0777 1104 5310 1110 JMP XMGDAT [ OK - GO GET DATA 1000 1105 7402 HLT [ NOT OK. HALT, THEN NAK 1001 1106 4350 1150 JMS XMNACK 1002 1107 5250 1050 JMP XMGSOH 1003 1110 4546 0473 #XMGDAT JMS CHGET [ GET A CHAR OF DATA 1004 1111 3470 0070 DCA;XMPTR [ *XMPTR = CHAR 1005 1112 1470 0070 TAD;XMPTR [ RESTORE TO AC 1006 1113 1072 0072 TAD XMCKSM [ ADD TO CHKSUM 1007 1114 3072 0072 DCA XMCKSM 1010 1115 2070 0070 ISZ XMPTR [ ++XMPTR 1011 1116 7000 NOP [ FOR SKIP 1012 1117 2073 0073 ISZ XMCNT [ UNTIL ++XMCNT == 0 1013 1120 5310 1110 JMP XMGDAT 1014 1121 4546 0473 #XMGCKS JMS CHGET [ GET CHECKSUM CHAR 1015 1122 7041 CMA IAC [ - CHECKSUM 1016 1123 1072 0072 TAD XMCKSM [ COMPARE WITH EXPECTED 1017 1124 0143 0377 AND (377 [ 8 BIT SUM 1020 1125 7450 SNA 1021 1126 5334 1134 JMP XMGACK [ OK -- GO ACK 1022 1127 7402 HLT [ FOR DEBUGGING 1023 1130 7300 CLA CLL 1024 1131 1151 0025 TAD (XNAK [ PRIME TO NACK 1025 1132 3074 0074 DCA XMACK 1026 1133 5240 1040 JMP XMGET+1 [ AND TRY AGAIN 1027 1134 1147 0006 #XMGACK TAD (XACK [ ACK1 1030 1135 3074 0074 DCA XMACK [ PRIME TO ACK IT 1031 1136 7300 CLA CLL [ BUMP XMODEM BLOCK # 1032 1137 1071 0071 TAD XMBLK 1033 1140 7001 IAC 1034 1141 0143 0377 AND (377 [ ONLY 8 BITS! 1035 1142 3071 0071 DCA XMBLK 1036 1143 1177 1155 TAD (XMBUF [ XMPTR = ADDR(XMBUF) 1037 1144 3070 0070 DCA XMPTR 1040 1145 1176 7600 TAD (0-128. [ XMCNT = -128. 1041 1146 3073 0073 DCA XMCNT 1042 1147 5637 1037 JMP;XMGET [ RETURN (AC=0) 1043 [ 1044 [ ROUTINE TO SEND 1045 [ A NACK CHAR 8L OF XMTAPE PAGE 11 LN=1046 1046 [ 1047 1150 0000 #XMNACK 0 [ RETURN ADDR 1050 1151 7300 CLA CLL 1051 1152 1151 0025 TAD (XNAK 1052 1153 4560 0466 JMS CHSEND 1053 1154 5750 1150 JMP;XMNACK [ RETURN 1054 [ 1055 [ XMODEM BUFFER 1056 [ 1057 1155 0000 #XMBUF 0 8R OF XMTAPE PAGE 01 0001 AXO 0022 0137 0462 0625 0077 BLKCNT 0047 0077 0105 0214 0216 0217 0537 0541 0542 0645 0647 0650 0254 BLOCK 0141 0106 0143 0473 CHGET 0425 0321 0431 0743 0762 0772 1003 1014 0466 CHSEND 0414 0225 0353 0356 0362 0373 0407 0420 0546 0551 0654 0657 0742 1052 0523 CMPBLK 0464 0437 0466 0540 CMPCBK 0506 0532 0543 CMPCWD 0511 0523 0505 CMPHNK 0446 0544 0500 CMPINI 0436 0112 0511 CMPRB 0452 0474 6402 DKCC 0030 0404 6406 DKRB 0031 0430 6401 DKSF 0027 0426 6416 DTLS 0032 0415 6411 DTSF 0033 0416 0101 HNKCNT 0051 0125 0150 0161 0203 0450 0473 0504 0531 0567 0610 0613 0636 0102 HNKMEM 0052 0126 0130 0145 0147 0162 0167 0172 0201 0202 0451 0453 0470 0472 0505 0514 0520 0527 0530 0570 0576 0600 0606 0607 0614 0616 0633 0635 0274 HNKNXW 0166 0175 0271 HNKSND 0163 0204 0225 INIT1 0106 0100 0220 INITP 0101 0073 0002 PDP 0023 0133 0142 0456 0465 0621 0630 0242 RDBLK 0127 0151 0700 RDC 0025 0140 0463 0236 RDHNK 0123 0221 1012 RDWD1 0701 0676 1016 RDWD2 0705 0673 1000 RDWD 0667 0511 0574 0725 0075 ROTCNT 0045 0242 0245 0002 SRCMP 0015 0110 0001 SRTAPE 0014 0071 0004 SRWRIT 0016 0114 0200 START 0061 0227 0335 0553 0661 0023 TMA 0024 0132 0455 0620 0100 WDCNT 0050 0165 0174 0510 0522 0573 0602 0076 WDCNTI 0046 0075 0103 0164 0177 0507 0525 0572 0604 0706 WDE 0026 0626 0366 WDFILL 0302 0307 0361 WDFLSH 0275 0222 0301 0310 0335 WDROT 0244 0246 0330 WDSEND 0237 0171 0256 0267 0641 WTBLK 0615 0637 0653 WTBLOK 0627 0561 0631 0615 WTGBK 0571 0611 0611 WTGHNK 0565 0652 0620 WTGWD 0574 0603 0603 WTINI 0557 0116 0006 XACK 0012 0340 0545 0550 0653 0656 1027 0030 XCAN 0011 0332 0004 XEOT 0013 0224 0753 0074 XMACK 0044 0323 0324 0331 0337 0442 0564 0741 1025 1030 8R OF XMTAPE PAGE 02 0071 XMBLK 0041 0063 0265 0355 0360 0764 0774 1032 1035 1155 XMBUF 1057 0064 0261 0367 0701 0734 1036 0072 XMCKSM 0042 0364 0376 0377 0406 0736 1006 1007 1016 0073 XMCNT 0043 0067 0254 0255 0264 0276 0306 0366 0402 0440 0562 0671 0704 0722 0723 0740 1012 1041 1134 XMGACK 1027 1021 1077 XMGBLC 0772 0766 1067 XMGBLK 0762 0750 1121 XMGCKS 1014 1110 XMGDAT 1003 0777 1013 1065 XMGEOT 0760 0755 1037 XMGET 0732 0674 0761 1026 1042 1050 XMGSOH 0743 0757 0771 1002 1150 XMNACK 1047 0756 0770 1001 1053 0104 XMPROT 0054 0744 0745 0752 0070 XMPTR 0040 0065 0240 0243 0247 0251 0252 0262 0303 0304 0370 0372 0375 0400 0702 0706 0710 0712 0713 0735 1004 1005 1010 1037 0425 XMPUT 0350 0320 0410 0400 XMSEND 0317 0257 0327 0342 0343 0417 XMSND1 0336 0334 0446 XMSPUT 0371 0403 0103 XMWORD 0053 0707 0721 0025 XNAK 0010 0325 0441 0563 1024 1051 0001 XSOH 0007 0352 0746 ================================================= 8L OF CMPTAP PAGE 01 LN=0001 0001 [ 0002 [ PROGRAM TO COMARE TWO 0003 [ LINC TAPES IN STD OR 0004 [ 129. WORD FORMAT 0005 [ 0006 [ 0007 [ CONSTANTS 0010 [ 0011 SRTAPE=1 [ SR 11 = 1 FOR DECTAPE 0012 [ 0013 [ SPECIAL INSTRUCTIONS 0014 [ 0015 AXO=1 0016 PDP=2 0017 TMA=23 0020 RDC=700 0021 [ 0022 [ DATA 0023 [ 0024 $70 0025 0070 0000 #WDCNTI 0 [ WORDS / BLOCK 0026 0071 0000 #BLKCNT 0 [ BLOCKS / TAPE 0027 0072 0000 #WDCNT 0 [ WORD COUNTER 0030 0073 0000 #HNKCNT 0 [ BLOCK COUNTER 0031 0074 0000 #HNKMEM 0 [ MEMORY POINTER 0032 [ 0033 [ BEGIN HERE 0034 [ 0035 $200 0036 0200 7402 #START HLT [ WAIT FOR TAPE MOUNT 0037 0201 7300 CLA CLL 0040 0202 7404 OSR [ READ RIGHT SWITCHES 0041 0203 0177 0001 AND (SRTAPE 0042 0204 7440 SZA [ SKIP IF STD LINC TAPE 0043 0205 5213 0213 JMP INITP [ GO INIT DEC TAPE 0044 0206 1176 7400 TAD (0-256. [ STD IS 256 WDS 0045 0207 3070 0070 DCA WDCNTI 0046 0210 1175 7000 TAD (0-1000 [ 1000 BLOCKS 0047 0211 3071 0071 DCA BLKCNT 0050 0212 5220 0220 JMP INIT1 [ CONTINUE 0051 0213 7300 #INITP CLA CLL 0052 0214 1174 7577 TAD (0-129. [ DEC TAPES 129. WDS 0053 0215 3070 0070 DCA WDCNTI 0054 0216 1173 5000 TAD (0-3000 [ 3000 BLOCKS 0055 0217 3071 0071 DCA BLKCNT 0056 0220 7300 #INIT1 CLA CLL 0057 0221 3241 0241 DCA BLOCK0 [ RESET BLOCK #'S 0060 0222 3270 0270 DCA BLOCK1 0061 [ 0062 [ READ IN THE NEXT HUNK 0063 [ OF 16 BLOCKS 0064 [ 0065 0223 7300 #RDHNK CLA CLL 0066 0224 1172 7760 TAD (0-16. 0067 0225 3073 0073 DCA HNKCNT [ HNKCNT = -16. 8L OF CMPTAP PAGE 02 LN=0070 0070 0226 3074 0074 DCA HNKMEM [ HNKMEM = 0 0071 0227 7300 #RDBLK0 CLA CLL [ READ HUNK FROM U0 0072 0230 1074 0074 TAD HNKMEM [ TMA MEM ADDR 0073 0231 6141 LINC 0074 0232 0023 TMA 0075 0233 0002 PDP 0076 0234 7300 CLA CLL 0077 0235 1171 1020 TAD (1020 [ XA FIELD 1 0100 0236 6141 LINC 0101 0237 0001 AXO 0102 0240 0700 RDC 0 [ READ UNIT 0 0103 0241 0000 #BLOCK0 0 [ BLOCK NUMBER 0104 0242 0002 PDP 0105 0243 2241 0241 ISZ BLOCK0 [ ++BLOCK0 0106 0244 7300 CLA CLL 0107 0245 1074 0074 TAD HNKMEM [ HNKMEM += 256. 0110 0246 1170 0400 TAD (256. 0111 0247 3074 0074 DCA HNKMEM 0112 0250 2073 0073 ISZ HNKCNT [ UNTIL ++HNKCNT == 0 0113 0251 5227 0227 JMP RDBLK0 0114 [ 0115 [ THEN READ A HUNK 0116 [ FROM UNIT 1 0117 [ 0120 0252 7300 CLA CLL 0121 0253 1172 7760 TAD (0-16. [ HNKCNT = -16. 0122 0254 3073 0073 DCA HNKCNT 0123 0255 3074 0074 DCA HNKMEM [ HNKMEM = 0 0124 0256 7300 #RDBLK1 CLA CLL 0125 0257 1074 0074 TAD HNKMEM [ TMA MEM ADDR 0126 0260 6141 LINC 0127 0261 0023 TMA 0130 0262 0002 PDP 0131 0263 7300 CLA CLL 0132 0264 1167 2020 TAD (2020 [ XA MODE, FIELD 2 0133 0265 6141 LINC 0134 0266 0001 AXO 0135 0267 0710 RDC 10 [ READ UNIT 1 0136 0270 0000 #BLOCK1 0 0137 0271 0002 PDP 0140 0272 2270 0270 ISZ BLOCK1 [ ++BLOCK1 0141 0273 7300 CLA CLL 0142 0274 1074 0074 TAD HNKMEM [ HNKMEM += 256 0143 0275 1170 0400 TAD (256. 0144 0276 3074 0074 DCA HNKMEM 0145 0277 2073 0073 ISZ HNKCNT [ UNTIL ++HNKCNT == 0 0146 0300 5256 0256 JMP RDBLK1 0147 [ 0150 [ THEN COMPARE THE 0151 [ TWO, 1 WORD AT A 0152 [ TIME, BLOCK BY BLOCK 0153 [ UNTIL THE HUNK IS DONE 0154 [ 0155 0301 7300 CLA CLL 0156 0302 1172 7760 TAD (0-16. [ BLOCKS / HUNK 8L OF CMPTAP PAGE 03 LN=0157 0157 0303 3073 0073 DCA HNKCNT 0160 0304 3074 0074 DCA HNKMEM [ HNKMEM = 0 0161 0305 7300 #CMPBLK CLA CLL 0162 0306 1070 0070 TAD WDCNTI [ WDCNT = -WORDS/BLOCK 0163 0307 3072 0072 DCA WDCNT 0164 0310 7300 #CMPWD CLA CLL 0165 0311 6211 CDF 10 [ DATA FIELD 1 0166 0312 1474 0074 TAD;HNKMEM [ GET WORD 0167 0313 7041 CMA IAC [ -WORD 0170 0314 6221 CDF 20 [ DATA FIELD 2 0171 0315 1474 0074 TAD;HNKMEM 0172 0316 6201 CDF 0 [ BACK TO NORMAL 0173 0317 7440 SZA [ DID WORDS COMPARE? 0174 0320 7402 HLT [ MIS COMPARE !! 0175 0321 2074 0074 ISZ HNKMEM [ ++HNKMEM 0176 0322 7000 NOP [ FOR SKIP 0177 0323 2072 0072 ISZ WDCNT [ UNTIL BLOCK IS DONE 0200 0324 5310 0310 JMP CMPWD 0201 0325 7300 CLA CLL 0202 0326 1070 0070 TAD WDCNTI [ BUMP TO NEXT BLOCK 0203 0327 1170 0400 TAD (256. 0204 0330 1074 0074 TAD HNKMEM 0205 0331 3074 0074 DCA HNKMEM 0206 0332 2073 0073 ISZ HNKCNT [ UNTIL ALL HUNKS DONE 0207 0333 5305 0305 JMP CMPBLK 0210 [ 0211 [ SEE IF ALL HUNKS 0212 [ HAVE BEEN COMPARED 0213 [ 0214 0334 7300 CLA CLL 0215 0335 1071 0071 TAD BLKCNT [ BLKCNT += 16 0216 0336 1166 0020 TAD (16. 0217 0337 3071 0071 DCA BLKCNT 0220 0340 1071 0071 TAD BLKCNT [ RESTORE BLOCK COUNTER 0221 0341 7440 SZA [ ALL DONE? 0222 0342 5223 0223 JMP RDHNK [ NOPE - BACK FOR MORE 0223 0343 7402 HLT [ ALL DONE1 0224 0344 5201 0201 JMP START+1 [ TO RUN AGAIN 8R OF CMPTAP PAGE 01 0001 AXO 0015 0101 0134 0071 BLKCNT 0026 0047 0055 0215 0217 0220 0241 BLOCK0 0103 0057 0105 0270 BLOCK1 0136 0060 0140 0305 CMPBLK 0161 0207 0310 CMPWD 0164 0200 0073 HNKCNT 0030 0067 0112 0122 0145 0157 0206 0074 HNKMEM 0031 0070 0072 0107 0111 0123 0125 0142 0144 0160 0166 0171 0175 0204 0205 0220 INIT1 0056 0050 0213 INITP 0051 0043 0002 PDP 0016 0075 0104 0130 0137 0227 RDBLK0 0071 0113 0256 RDBLK1 0124 0146 0700 RDC 0020 0102 0135 0223 RDHNK 0065 0222 0001 SRTAPE 0011 0041 0200 START 0036 0224 0023 TMA 0017 0074 0127 0072 WDCNT 0027 0163 0177 0070 WDCNTI 0025 0045 0053 0162 0202