1 /TD8E DECTAPE COPY, V4 2 / 3 / 4 / 5 / 6 / 7 / 8 // 9 / 10 / 11 / 12 / 13 /COPYRIGHT (C) 1972, 1975 14 /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 15 / 16 / 17 / 18 /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A 19 /SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- 20 /SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER 21 /COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE 22 /TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO 23 /AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE 24 /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. 25 / 26 / 27 /THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 28 /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL 29 /EQUIPMRNT COROPATION. 30 / 31 /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 32 /SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. 33 / 34 / 35 / 36 / 37 / 38 / 39 40 41 42 /DEFINITIONS FOR PAL8 AND PAL10 43 44 BSW=7002 45 MQL=7421 46 MQA=7501 47 CAM=7621 48 SWP=7521 49 ACL=7701 50 CAF=6007 51 CDI=6203 52 KCF=6030 53 SDSS=6771 54 SDST=6772 55 SDSQ=6773 56 SDLC=6774 57 SDLD=6775 58 SDRC=6776 59 SDRD=6777 60 FIXTAB 61 62 63 HALT=HLT 64 65 66 /UNIT NUMBER DEFINITIONS FOR TD8E IOT'S 67 68 UNIT01=0770 69 UNIT23=0760 70 UNIT45=0750 71 UNIT67=0740 72 73 74 75 LIMIT=7600 76 77 *11 78 79 000011 0000 X11, 0 80 000012 0000 X12, 0 81 82 /PAGE 0 CONSTANTS AND VARIABLES 83 84 *20 85 000020 0000 INPUT, 0 /INPUT UNIT CONSTANT 86 000021 0000 OUTPUT, 0 /OUTPUT UNIT CONSTANTS 87 000022 0000 0 88 000023 0000 0 89 000024 0000 0 90 000025 0000 0 91 000026 0000 0 92 000027 0000 0 93 000030 0000 OCOUNT, 0 /NUMBER OF OUTPUT UNITS SPECIFIED 94 000031 0000 OPOINT, 0 95 000032 0020 LIST, OUTPUT-1 96 000033 0000 OUTNUM, 0 97 000034 0000 IBLOCK, 0 /STARTING INPUT BLOCK 98 000035 0000 OBLOCK, 0 /STARTING OUTPUT BLOCK 99 000036 0000 NUMBER, 0 /NUMBER OF BLOCKS TO TRANSFER 100 000037 0000 FIELDS, 0 /-(HIGHEST FIELD AVAILABLE) 101 000040 0000 COUNT, 0 /TEMPORARY COUNTERS 102 000041 0000 COUNT1, 0 / " 103 000042 0000 COUNT2, 0 / " 104 000043 0000 COUNT3, 0 / " 105 000044 0000 COUNT4, 0 / " 106 000045 0000 UNIT, 0 /UNIT CONSTANT--THIS TRANSFER 107 000046 0000 VERF, 0 /VERIFY SWITCH (1=YES,0=NO) 108 000047 0000 WDCNT, 0 /-(NUMBER OF WORDS PER BLOCK) 109 000050 0000 RW, 0 /READ/WRITE BIT--THIS TRANSFER 110 000051 0000 FLD0, 0 /# OF BLOCKS IN FIELD 0 BUFFER 111 000052 0000 FLDN, 0 /# OF BLOCKS IN FIELD N BUFFER 112 000053 0000 BUF0, 0 /START OF FIELD 0 BUFFER 113 000054 0000 BUFN, 0 /START OF FIELD N BUFFER 114 000055 0000 XNUMB, 0 /# OF BLOCKS LEFT TO TRANSFER 115 000056 0000 BLOCKN, 0 /STARTING BLOCK NUMBER--THIS TRANSFER 116 000057 0000 NUMB1, 0 117 000060 0000 NUMB2, 0 118 000061 0000 VB, 0 119 000062 0000 END0, 0 /BEGINNING OF FIELD 0 VERIFY BUFFER 120 000063 0000 ENTRY, 0 /ENTRY TO TD8E HANDLER 121 000064 0000 INB, 0 122 000065 0000 OUTB, 0 123 000066 0000 OHOLD, 0 124 125 000067 2404 MESSG1, TEXT @TD8E COPY V4A@ 000070 7005 000071 4003 000072 1720 000073 3140 000074 2664 000075 0100 126 000076 4061 MESSG3, TEXT @ 12-BIT WORDS PER BLOCK@ 000077 6255 000100 0211 000101 2440 000102 2717 000103 2204 000104 2340 000105 2005 000106 2240 000107 0214 000110 1703 000111 1300 127 128 *200 129 130 000200 6046 START, TLS 131 000201 4317 JMS CRLF 132 000202 4577 JMS I [MESSGE 133 000203 0067 MESSG1 /@TD8E COPY@ 134 000204 4317 JMS CRLF 135 000205 3040 DCA COUNT 136 000206 5576 JMP I [END /ONCE ONLY CODE FOR MULTIPLE FIELD TEST 137 000207 4336 START1, JMS QUEST 138 000210 2457 MESSG4 /@FROM UNIT:@ 139 000211 7521 SWP 140 000212 4352 JMS UNITNO /MAKE UNIT NUMBER CONSTANT 141 000213 3020 DCA INPUT 142 000214 1032 TAD LIST 143 000215 3031 DCA OPOINT 144 000216 7410 SKP 145 000217 4325 AGAIN, JMS ERR4 /*ILLEGAL RESPONSE* 146 000220 3030 DCA OCOUNT 147 000221 3040 DCA COUNT 148 000222 4577 JMS I [MESSGE 149 000223 2465 MESSG5 /@TO UNITS:@ 150 000224 4575 MORE2, JMS I [ANSWER 151 000225 5217 JMP AGAIN 152 000226 7701 ACL 153 000227 4352 JMS UNITNO /MAKE UNIT NUMBER CONSTANT 154 000230 7421 MQL /STORE IN MQ 155 000231 7501 MQA /RESTORE TO AC 156 000232 7041 CIA 157 000233 1020 TAD INPUT 158 000234 7650 SNA CLA /IS OUTPUT UNIT = INPUT UNIT ? 159 000235 5225 JMP MORE2+1 /YES--ERROR 160 000236 2031 ISZ OPOINT 161 000237 2030 ISZ OCOUNT /COUNT ONE MORE OUTPUT UNIT 162 000240 1030 TAD OCOUNT 163 000241 1174 TAD [-10 164 000242 7710 SPA CLA /WERE MORE THAN 7 UNITS SPECIFIED? 165 000243 5246 JMP .+3 166 000244 4317 JMS CRLF /YES--CARRIAGE RETURN 167 000245 5255 JMP OALL /IGNORE EXTRA ONE 168 000246 7521 SWP /NO-- 169 000247 3431 DCA I OPOINT /STORE UNIT CONSTANT IN LIST 170 000250 1040 TAD COUNT 171 000251 7041 CIA 172 000252 1030 TAD OCOUNT 173 000253 7750 SPA SNA CLA /ALL UNITS IN? 174 000254 5224 JMP MORE2 /YES 175 176 000255 3040 OALL, DCA COUNT 177 000256 4577 JMS I [MESSGE 178 000257 1040 MESSG6 /@FIRST INPUT BLOCK:@ 179 000260 4575 JMS I [ANSWER 180 000261 5306 JMP WHOLE /COPY WHOLE TAPE 181 000262 1040 TAD COUNT 182 000263 7650 SNA CLA /WERE TOO MANY SPECIFIED? 183 000264 5271 JMP .+5 184 000265 4577 JMS I [MESSGE /YES 185 000266 2511 ERROR4 /@ILLEGAL RESPONSE@ 186 000267 4317 JMS CRLF 187 000270 5255 JMP OALL /REPEAT THE QUESTION 188 000271 7701 ACL /NO 189 000272 3034 DCA IBLOCK /STORE 190 000273 4336 JMS QUEST 191 000274 1052 MESSG7 /@FIRST OUTPUT BLOCK:@ 192 000275 7701 ACL 193 000276 3035 DCA OBLOCK 194 000277 4336 JMS QUEST 195 000300 1064 MESSG8 /@NUMBER OF BLOCKS TO COPY:@ 196 000301 7701 ACL 197 000302 7450 SNA /WERE 0 BLOCKS SPECIFIED? 198 000303 5345 JMP QUEST1 /YES--REPEAT QUESTION 199 000304 3036 DCA NUMBER 200 000305 5311 JMP .+4 201 000306 3034 WHOLE, DCA IBLOCK 202 000307 3035 DCA OBLOCK 203 000310 3036 DCA NUMBER /0 MEANS WHOLE TAPE 204 000311 4336 JMS QUEST 205 000312 1101 MESSG9 /@VERIFY OUTPUT (YES=1,NO=0):@ 206 000313 7701 ACL 207 000314 0173 AND [7 208 000315 3046 DCA VERF 209 000316 5777 JMP I (SETUP 210 211 /OUTPUT CARRIAGE RETURN/LINE FEED 212 213 000317 0000 CRLF, 0 214 000320 1376 TAD (215 215 000321 4572 JMS I [TYPE 216 000322 1171 TAD [212 217 000323 4572 JMS I [TYPE 218 000324 5717 JMP I CRLF /--RETURN-- 219 220 000325 0000 ERR4, 0 221 000326 4577 JMS I [MESSGE 222 000327 2511 ERROR4 /@ILLEGAL RESPONSE@ 223 000330 4317 JMS CRLF /OUTPUT CARRIAGE RETURN/LINE FEED 224 000331 1170 TAD [-4 225 000332 1325 TAD ERR4 226 000333 3325 DCA ERR4 227 000334 3040 DCA COUNT 228 000335 5725 JMP I ERR4 /--RETURN-- 229 230 231 000336 0000 QUEST, 0 232 000337 1736 TAD I QUEST 233 000340 3343 DCA MNUM 234 000341 2336 ISZ QUEST 235 000342 4577 JMS I [MESSGE 236 000343 0000 MNUM, 0 237 000344 4575 JMS I [ANSWER 238 000345 4325 QUEST1, JMS ERR4 239 000346 1040 TAD COUNT 240 000347 7640 SZA CLA 241 000350 5345 JMP QUEST1 242 000351 5736 JMP I QUEST /--RETURN-- 243 244 245 /CONVERT UNIT NUMBER TO A WORD OF THE FORM 246 /000 XXX XXX 000 OR 247 /100 XXX XXX 000 248 /WHERE XY0 IS THE THIRD DIGIT OF THE IOT 249 /AND 0 OR 1 REFLECTS THE TD8E UNIT NUMBER 250 /ENTER WITH THE UNIT NUMBER IN THE AC 251 /EXIT WITH SPECIAL CODE IN AC 252 253 000352 0000 UNITNO, 0 254 000353 0173 AND [7 /MASK OUT ALL EXTRANEOUS BITS 255 000354 7110 CLL RAR /SAVE 0/1 BIT IN LINK 256 000355 7421 MQL /STORE ROTATED WORD, CLEAR AC 257 000356 7010 RAR 258 000357 7521 SWP /PRESERVE 0/1 BIT IN MQ 259 000360 1365 TAD TABX /GET DEVICE NUMBER CORRECTLY 260 000361 3317 DCA CRLF 261 000362 1717 TAD I CRLF 262 000363 7501 MQA /OR IN 0/1 BIT 263 000364 5752 JMP I UNITNO /--RETURN-- 264 265 000365 2435 TABX, UNITS 266 267 /SKIP 4 LINES AND FETCH MARK TRACK 268 269 000366 0000 SKIPQ, 0 270 000367 6773 IOTR5, SDSQ 271 000370 5367 JMP .-1 272 000371 6776 IOTR6, SDRC 273 000372 5766 JMP I SKIPQ /--RETURN-- 274 275 000376 0215 *400 000377 0600 276 277 /USER RESPONSE HANDLER 278 /USES MQ FOR TEMPORARY STORAGE 279 /EXIT WITH RESPONSE IN MQ 280 /EXIT TO CALL+1 IF JUST CARRIAGE RETURN 281 /OR ILLEGAL CHARACTER, CARRIAGE RETURN 282 /OR ;,CARRIAGE RETURN 283 /EXIT TO CALL+2 IF GOOD DATA, CARRIAGE RETURN 284 /INCREMENT COUNT AND EXIT TO CALL+2 IF GOOD DATA; 285 /ILLEGAL CHARACTERS CAUSE WHOLE ANSWER TO BE IGNORED 286 /AND EXIT TO CALL+1 287 288 000400 0000 ANSWER, 0 289 000401 7621 CAM /CLEAR AC AND MQ 290 000402 1236 TAD CLEAR 291 000403 3212 DCA SWITCH 292 000404 4250 MORE, JMS LISTEN /FETCH A CHARACTER 293 000405 1377 TAD (-215 294 000406 7440 SZA /IS IT A CARRIAGE RETURN? 295 000407 5214 JMP .+5 /NO 296 000410 1171 TAD [212 /YES--OUTPUT LINE FEED 297 000411 4327 JMS TYPE 298 000412 7000 SWITCH, NOP /SET UP EXIT ADDRESS 299 000413 5600 JMP I ANSWER /--RETURN-- 300 000414 1376 TAD (215-260 301 000415 7510 SPA /IS CHARACTER LESS THAN 260? 302 000416 5240 JMP BAD /YES--ILLEGAL CHARACTER 303 000417 1174 TAD [260-270 /NO 304 000420 7500 SMA /IS IT MORE THAN 269? 305 000421 5243 JMP SEMI /YES--CHECK FOR SEMICOLON 306 000422 1375 TAD (270 /RESTORE CHARACTER 307 000423 0173 AND [7 /MASK OUT EXTRANEOUS BITS 308 000424 7100 CLL 309 000425 7521 SWP 310 000426 0374 AND (777 /MASK OUT FIRST DIGIT IF THERE ARE 4 311 000427 7004 RAL /ROTATE 3 LEFT 312 000430 7006 RTL 313 000431 7501 MQA /FETCH NEW CHARACTER 314 000432 7421 MQL /STORE RESULT IN MQ 315 000433 1237 TAD SKIP /SET UP TO SKIP ON RETURN 316 000434 3212 DCA SWITCH 317 000435 5204 JMP MORE /FETCH ANOTHER 318 319 320 000436 7000 CLEAR, NOP 321 000437 2200 SKIP, ISZ ANSWER 322 323 000440 7200 BAD, CLA /ILLEGAL CHARACTER 324 000441 4567 JMS I [CRLF 325 000442 5600 JMP I ANSWER /--RETURN-- 326 327 328 /TEST FOR SEMICOLON 329 330 000443 1373 SEMI, TAD (270-273 331 000444 7640 SZA CLA /IS CHARACTER A SEMICOLON? 332 000445 5240 JMP BAD /NO--ILLEGAL CHARACTER 333 000446 2040 ISZ COUNT /YES--INCREMENT COUNTER 334 000447 5212 JMP SWITCH /EXIT FROM ANSWER ROUTINE 335 336 337 /TELETYPE INPUT AND ECHO HANDLER 338 339 000450 0000 LISTEN, 0 340 000451 6031 KSF 341 000452 5251 JMP .-1 342 000453 4566 JMS I [PARITY 343 000454 6046 TLS /ECHO CHARACTER 344 000455 4257 JMS CHECK /CHECK FOR CTRL/C AND CTRL/S 345 000456 5650 JMP I LISTEN /--RETURN-- 346 347 /CHECK FOR CTRL/C AND CTRL/S 348 /ENTER WITH INPUT CHARACTER IN AC 349 /EXIT TO HANDLER OR WITH CHARACTER IN AC 350 351 000457 0000 CHECK, 0 352 000460 1372 TAD (-203 353 000461 7450 SNA /IS IT CTRL/C? 354 000462 5670 JMP I CTRLC /YES--HANDLE IT 355 000463 1371 TAD (203-223 356 000464 7450 SNA /IS IT CTRL/S? 357 000465 5565 JMP I [REPEAT /YES--HANDLE IT 358 000466 1370 TAD (223 /RESTORE CHARACTER 359 000467 5657 JMP I CHECK /--RETURN-- 360 361 000470 7600 CTRLC, LIMIT 362 363 /MESSAGE OUTPUT HANDLER 364 365 /EXPECTS MESSAGE ADDRESS TO BE IN LOCATION AFTER CALL 366 /EXITS TO CALL+2 367 368 000471 0000 MESSGE, 0 369 000472 1671 TAD I MESSGE 370 000473 3324 DCA FINDER /SET UP POINTER 371 000474 2271 ISZ MESSGE 372 000475 3325 DCA LOC /SET L/R SWITCH TO L (EVEN) 373 000476 1724 LNEXT, TAD I FINDER /GET WORD 374 000477 7002 BSW 375 000500 0164 RHALF, AND [77 376 000501 7450 SNA /IS CHARACTER 0 (TERMINATOR)? 377 000502 5671 JMP I MESSGE /YES--RETURN-- 378 000503 3326 DCA CHAR 379 000504 1326 TAD CHAR 380 000505 0367 AND (40 381 000506 7650 SNA CLA /IS IT A LETTER? 382 000507 1163 TAD [100 /YES--301-337 383 000510 1162 TAD [200 /NO--240-277 384 000511 1326 TAD CHAR /RESTORE CHARACTER 385 000512 4327 JMS TYPE /OUTPUT IT 386 000513 2325 ISZ LOC 387 000514 1325 TAD LOC 388 000515 7010 RAR 389 000516 7630 SZL CLA /WHICH HALF WAS THAT? 390 000517 5322 JMP .+3 391 000520 2324 ISZ FINDER /RIGHT 392 000521 5276 JMP LNEXT 393 000522 1724 TAD I FINDER /LEFT 394 000523 5300 JMP RHALF 395 000524 0000 FINDER, 0 396 000525 0000 LOC, 0 397 000526 0000 CHAR, 0 398 399 400 /TELETYPE OUTPUT ROUTINE 401 402 403 000527 0000 TYPE, 0 404 000530 6041 TSF 405 000531 5330 JMP .-1 406 000532 6046 TLS 407 000533 7200 CLA 408 000534 5727 JMP I TYPE /--RETURN-- 409 410 411 /INSERT IOT'S ACCORDING TO TABLES 412 /UNIT CONTAINS APPROPRIATE UNIT CODE 413 /COUNT CONTAINS -(NUMBER OF IOT'S TO TRANSFER) 414 /COUNT1 CONTAINS ADDRESS OF ADDRESS TABLE 415 /UNIT CONTAINS UNIT CODE OF CURRENT UNIT 416 417 000535 0000 INSERT, 0 418 000536 1441 TAD I COUNT1 419 000537 3043 DCA COUNT3 420 000540 1045 TAD UNIT 421 000541 7421 MQL 422 000542 1443 TAD I COUNT3 /MAKE NEW IOT 423 000543 0366 AND (7007 424 000544 7501 MQA 425 000545 7041 CIA 426 000546 1443 TAD I COUNT3 /COMPARE WITH IOT FROM PROGRAM 427 000547 7650 SNA CLA /ARE THE IOT'S THE SAME AS THE LAST UNIT? 428 000550 5735 JMP I INSERT /YES--RETURN-- 429 000551 1441 INS1, TAD I COUNT1 430 000552 3043 DCA COUNT3 431 000553 1443 TAD I COUNT3 /GET IOT FROM PROGRAM 432 000554 0366 AND (7007 /RETAIN ONLY SIGNIFICANT BITS 433 000555 7501 MQA /OR IN UNIT NUMBER 434 000556 3443 DCA I COUNT3 /PUT IT IN PROGRAM 435 000557 2041 ISZ COUNT1 /BUMP COUNTERS 436 000560 2040 ISZ COUNT /DONE YET? 437 000561 5351 JMP INS1 /NO 438 000562 5735 JMP I INSERT /YES--RETURN-- 439 440 441 000566 7007 PAGE 000567 0040 000570 0223 000571 7760 000572 7575 000573 7775 000574 0777 000575 0270 000576 7735 000577 7563 442 443 /COUNT THE NUMBER OF WORDS PER BLOCK 444 /PLACE IT IN MWORDS 445 /BE SURE ALL TAPES MATCH INPUT FORMAT 446 447 000600 1032 SETUP, TAD LIST 448 000601 3031 DCA OPOINT /SET POINTER TO I/O LIST 449 000602 3042 DCA COUNT2 /CLEAR COUNTER 450 000603 1030 TAD OCOUNT 451 000604 7040 CMA 452 000605 3033 DCA OUTNUM /SET # OF UNITS 453 000606 1377 SET4, TAD (TABLE1-END1-1 /SET UP COUNTERS FOR IOT FIX 454 000607 3040 DCA COUNT 455 000610 1376 TAD (TABLE1 456 000611 3041 DCA COUNT1 457 000612 1431 TAD I OPOINT 458 000613 3045 DCA UNIT 459 000614 4561 JMS I [INSERT /PUT THE PROPER IOT'S IN THE FOLLOWING ROUTINE 460 000615 3047 DCA WDCNT /CLEAR WORD COUNT 461 000616 1045 TAD UNIT 462 000617 0160 AND [4000 463 000620 1375 TAD (2000 464 000621 6774 IOTX7, SDLC 465 000622 7200 CLA 466 000623 6776 IOTX8, SDRC 467 000624 7006 RTL 468 000625 7430 SZL /DOES UNIT EXIST? 469 000626 5231 JMP .+3 /YES 470 000627 4557 SELERR, JMS I [ERR3 /@SELECT ERROR UNIT N@ 471 000630 5200 JMP SETUP 472 000631 0374 AND (400 473 000632 7640 SZA CLA /TURNED ON? 474 000633 5227 JMP SELERR /NO 475 000634 1045 TAD UNIT /GET 0 OR 1 UNIT BIT (0 OR 4000) 476 000635 0160 AND [4000 477 000636 1156 TAD [1000 /GET GO BIT 478 000637 6774 IOTX1, SDLC /START READING FORWARD 479 000640 4353 JMS SKIP4 /SKIP 8 LINES TO AVOID GARBAGE 480 000641 4353 JMS SKIP4 481 000642 6771 IOTX3, SDSS /LOOK FOR FORWARD BLOCK NUMBER (26) 482 000643 5242 JMP .-1 483 000644 6776 IOTX4, SDRC 484 000645 0164 AND [77 485 000646 1373 TAD (-26 486 000647 7640 SZA CLA /FOUND YET? 487 000650 5242 JMP IOTX3 /NO--KEEP LOOKING 488 489 000651 4353 SET2, JMS SKIP4 /YES--START COUNTING LINES BY FOURS 490 000652 2047 ISZ WDCNT 491 000653 7000 NOP 492 000654 0164 AND [77 493 000655 1372 TAD (-51 494 000656 7640 SZA CLA /FOUND GUARD YET? 495 000657 5251 JMP SET2 /NO 496 000660 1045 TAD UNIT /YES 497 000661 0160 AND [4000 498 000662 6774 IOTX2, SDLC /STOP UNIT 499 000663 7200 CLA 500 000664 1042 TAD COUNT2 501 000665 7440 SZA /IS THIS THE INPUT UNIT? 502 000666 5274 JMP SET5 /NO 503 000667 1371 TAD (-11 /YES--SAVE THE COUNT 504 000670 1047 TAD WDCNT 505 000671 7041 CIA 506 000672 3042 DCA COUNT2 507 000673 5300 JMP SET3 /FIRST OUTPUT UNIT 508 000674 1371 SET5, TAD (-11 /NOT INPUT UNIT 509 000675 1047 TAD WDCNT 510 000676 7640 SZA CLA /SAME NUMBER OF WORDS AS INPUT UNIT? 511 000677 5344 JMP ERR5 /NO*ILLEGAL FORMAT* 512 000700 2031 SET3, ISZ OPOINT /NEXT UNIT 513 000701 2033 ISZ OUTNUM /DONE YET? 514 000702 5206 JMP SET4 /NO 515 000703 1042 TAD COUNT2 /YES--PRINT MESSAGE 516 000704 3555 DCA I [MWORDS /SET UP NUMBER OF WORDS PER BLOCK 517 000705 1555 TAD I [MWORDS 518 000706 7041 CIA 519 000707 4554 JMS I [PRINT /PRINT 4 DIGIT NUMBER OF BLOCKS 520 000710 4577 JMS I [MESSGE /YES--PRINT REST OF MESSAGE 521 000711 0076 MESSG3 522 000712 4567 JMS I [CRLF 523 524 /IF WHOLE TAPE IS TO BE COPIED, IT IS NECESSARY TO 525 /COMPUTE THE NUMBER OF BLOCKS ON THE TAPE (NB) 526 /USING THE NUMBER OF WORDS PER BLOCK (WB) 527 /AND THE FORMULA: 528 /OCTAL: NB=[63 6160/(WB+17)]+2 529 /DECIMAL: NB=[212,080/(WB+15)]+2 530 531 000713 1036 TAD NUMBER 532 000714 7640 SZA CLA /COPY WHOLE TAPE? 533 000715 5770 JMP VERFQ /NO-- 534 000716 3040 DCA COUNT /YES--COMPUTE NUMBER OF BLOCKS ON TAPE 535 000717 1555 TAD I [MWORDS 536 000720 7041 CIA 537 000721 1367 TAD (17 538 000722 3041 DCA COUNT1 /GET NUMBER OF WORDS PER BLOCK+17 539 000723 1366 TAD (-64 540 000724 3042 DCA COUNT2 541 000725 1365 TAD (-6160 542 000726 7100 SUB, CLL 543 000727 1041 TAD COUNT1 544 000730 2040 ISZ COUNT /COUNT A BLOCK--TOO MANY? 545 000731 7410 SKP /NO 546 000732 5344 JMP ERR5 /YES--ERROR 547 000733 7430 SZL 548 000734 2042 ISZ COUNT2 549 000735 5326 JMP SUB 550 000736 7300 CLA CLL 551 000737 1040 TAD COUNT /COUNT IS [63 6160/WB+17]+1 552 000740 7001 IAC /ADD 1 MORE 553 000741 3036 DCA NUMBER /STORE AS # OF BLOCKS TO TRANSFER 554 000742 5743 JMP I .+1 555 000743 1000 VERFQ 556 557 000744 7200 ERR5, CLA 558 000745 4577 JMS I [MESSGE 559 000746 2472 ERROR5 /*ILLEGAL FORMAT UNIT* 560 000747 4553 JMS I [DECODE /PRINT UNIT NUMBER 561 000750 4552 JMS I [CTRLR /WAIT FOR CTRL/R 562 000751 4567 JMS I [CRLF /CARRIAGE RETURN/LINE FEED 563 000752 5200 JMP SETUP /TRY AGAIN 564 565 566 567 568 /READ FOUR LINES AND FETCH MARK TRACK 569 570 000753 0000 SKIP4, 0 571 000754 6773 IOTX5, SDSQ 572 000755 5354 JMP .-1 573 000756 6776 IOTX6, SDRC 574 000757 5753 JMP I SKIP4 /--RETURN-- 575 576 577 578 579 000765 1620 PAGE 000766 7714 000767 0017 000770 1000 000771 7767 000772 7727 000773 7752 000774 0400 000775 2000 000776 2447 000777 7770 580 581 /IS TAPE TO BE VERIFIED? 582 /SET UP DEPENDING ON RESPONSE 583 001000 1046 VERFQ, TAD VERF 584 001001 7640 SZA CLA /VERIFY? 585 001002 5210 JMP YES /YES-- 586 001003 1377 TAD (NOP /NO-- 587 001004 3616 DCA I VERF1A 588 001005 1376 TAD (OUTN 589 001006 3617 DCA I VERF2A 590 001007 5214 JMP CONT 591 001010 1375 YES, TAD (RAR 592 001011 3616 DCA I VERF1A 593 001012 1374 TAD (VERIFY 594 001013 3617 DCA I VERF2A 595 001014 5615 CONT, JMP I .+1 596 001015 1200 DOIT 597 598 001016 1311 VERF1A, VERF1 599 001017 1274 VERF2A, VERF2 600 601 /WAIT FOR CTRL/R 602 603 001020 0000 CTRLR, 0 604 001021 4551 JMS I [LISTEN /FETCH CHARACTER 605 001022 1150 TAD [-222 606 001023 7640 SZA CLA /IT IT CTRL/R? 607 001024 5221 JMP .-3 /NO--WAIT FOR ONE 608 001025 4567 JMS I [CRLF /CARRIAGE RETURN/LINE FEED 609 001026 5620 JMP I CTRLR /--RETURN-- 610 611 612 001027 3040 REPEAT, DCA COUNT 613 001030 4567 JMS I [CRLF 614 001031 4547 JMS I [QUEST /@REPEAT (YES=1;NO=0):@ 615 001032 1122 MESS11 616 001033 7701 ACL 617 001034 0173 AND [7 618 001035 7640 SZA CLA 619 001036 5546 JMP I [CLEAN /YES 620 001037 5545 JMP I [START+4 /NO--RESTART 621 622 001040 0611 MESSG6, TEXT @FIRST INPUT BLOCK:@ 001041 2223 001042 2440 001043 1116 001044 2025 001045 2440 001046 0214 001047 1703 001050 1372 001051 0000 623 001052 0611 MESSG7, TEXT @FIRST OUTPUT BLOCK:@ 001053 2223 001054 2440 001055 1725 001056 2420 001057 2524 001060 4002 001061 1417 001062 0313 001063 7200 624 001064 1625 MESSG8, TEXT @NUMBER OF BLOCKS TO COPY:@ 001065 1502 001066 0522 001067 4017 001070 0640 001071 0214 001072 1703 001073 1323 001074 4024 001075 1740 001076 0317 001077 2031 001100 7200 625 001101 2605 MESSG9, TEXT @VERIFY OUTPUT (YES=1,NO=0):@ 001102 2211 001103 0631 001104 4017 001105 2524 001106 2025 001107 2440 001110 5031 001111 0523 001112 7561 001113 5416 001114 1775 001115 6051 001116 7200 626 001117 0417 MESS10, TEXT @DONE@ 001120 1605 001121 0000 627 001122 2205 MESS11, TEXT @REPEAT (YES=1,NO=0):@ 001123 2005 001124 0124 001125 4050 001126 3105 001127 2375 001130 6154 001131 1617 001132 7560 001133 5172 001134 0000 628 001135 2605 ERROR1, TEXT @VERIFY ERROR BLOCK @ 001136 2211 001137 0631 001140 4005 001141 2222 001142 1722 001143 4002 001144 1417 001145 0313 001146 4000 629 001147 2401 ERROR2, TEXT @TAPE ERROR BLOCK @ 001150 2005 001151 4005 001152 2222 001153 1722 001154 4002 001155 1417 001156 0313 001157 4000 630 001160 2305 ERROR3, TEXT @SELECT ERROR UNIT @ 001161 1405 001162 0324 001163 4005 001164 2222 001165 1722 001166 4025 001167 1611 001170 2440 001171 0000 631 632 001174 1400 PAGE 001175 7010 001176 1246 001177 7000 633 634 /SETUP FOR ACTUAL READ/WRITE/VERIFY OPERATION 635 001200 1144 DOIT, TAD [LIMIT-END /SET UP NUMBER OF BLOCKS 636 001201 4275 JMS DIV1 /IN FIELD 0 BUFFER 637 001202 3051 DCA FLD0 638 001203 1371 TAD M200 639 001204 4275 JMS DIV1 /AND IN FIELD N BUFFERS 640 001205 3052 DCA FLDN 641 001206 1034 TAD IBLOCK /SET UP RUNNING COUNTERS AND POINTERS 642 001207 3064 DCA INB /FOR NEXT INPUT BLOCK 643 001210 1035 TAD OBLOCK 644 001211 3065 DCA OUTB /FOR NEXT OUTPUT BLOCK 645 001212 1036 TAD NUMBER 646 001213 3057 DCA NUMB1 /FOR NUMBER OF BLOCKS LEFT TO TRANSFER 647 001214 5220 JMP .+4 648 001215 1055 ALLDUN, TAD XNUMB 649 001216 7650 SNA CLA /DONE WITH ALL BLOCKS YET? 650 001217 5313 JMP REWIND /YES 651 /READ--- 652 001220 1032 READX, TAD LIST /NO--SET UP POINTER TO OUTPUT UNITS 653 001221 3031 DCA OPOINT 654 001222 1030 TAD OCOUNT 655 001223 7040 CMA 656 001224 3033 DCA OUTNUM 657 001225 1064 TAD INB 658 001226 3056 DCA BLOCKN 659 001227 1057 TAD NUMB1 /SET POINTERS FOR TRANSFER 660 001230 3055 DCA XNUMB 661 001231 1057 TAD NUMB1 662 001232 3060 DCA NUMB2 /SAVE COUNTER FOR WRITE 663 001233 1020 TAD INPUT /SELECT INPUT UNIT 664 001234 3045 DCA UNIT 665 001235 3050 DCA RW /SET R/W BIT TO READ 666 667 001236 1176 TAD [END /SET START OF BUFFERS IN CASE 668 001237 3053 DCA BUF0 /THEY WERE CHANGED BY VERIFY 669 001240 3054 DCA BUFN 670 001241 4543 JMS I [READY /FILL THE BUFFERS 671 001242 1055 TAD XNUMB /SAVE THE POINTERS 672 001243 3057 DCA NUMB1 673 001244 1056 TAD BLOCKN 674 001245 3064 DCA INB 675 676 001246 2031 OUTN, ISZ OPOINT 677 001247 2033 ISZ OUTNUM /DONE WITH ALL UNITS YET? 678 001250 5254 JMP .+4 /NO--CONTINUE WRITING 679 001251 1066 TAD OHOLD /YES 680 001252 3065 DCA OUTB 681 001253 5215 JMP ALLDUN /READ ANOTHER BUFFER LOAD 682 001254 1065 WRITEX, TAD OUTB 683 001255 3066 DCA OHOLD 684 001256 1066 TAD OHOLD /WRITE 685 001257 3056 DCA BLOCKN /RESET POINTERS 686 001260 1065 TAD OUTB 687 001261 3061 DCA VB /SAVE COUNTER FOR VERIFY 688 001262 1060 TAD NUMB2 689 001263 3055 DCA XNUMB 690 001264 1431 TAD I OPOINT /SELECT OUTPUT UNIT 691 001265 3045 DCA UNIT 692 001266 7330 CLA CLL CML RAR /AC=4000 693 001267 3050 DCA RW /SET R/W BIT TO WRITE 694 001270 4543 JMS I [READY 695 001271 1056 TAD BLOCKN 696 001272 3066 DCA OHOLD 697 001273 5674 JMP I .+1 698 001274 1400 VERF2, VERIFY 699 700 701 702 /SEE HOW MANY BLOCKS WILL FIT INTO BUFFER 703 /ENTER WITH BUFFER SIZE IN AC 704 /EXIT WITH # OF BLOCKS IN AC 705 706 001275 0000 DIV1, 0 707 001276 3041 DCA COUNT1 708 001277 3040 DCA COUNT 709 001300 1041 TAD COUNT1 /TOTAL WORDS 710 001301 7100 DIV2, CLL 711 001302 1555 TAD I [MWORDS /-NUMBER OF WORDS PER BLOCK 712 001303 7420 SNL /RUN OUT OF ROOM? 713 001304 5307 JMP .+3 /YES-- 714 001305 2040 ISZ COUNT /NO--COUNT A BLOCK 715 001306 5301 JMP DIV2 716 001307 7300 CLA CLL /IGNORE LESS THAN A BLOCK LEFT 717 001310 1040 TAD COUNT 718 001311 7010 VERF1, RAR /DIVIDE BY 2 IF VERIFY (NOP IF NO VERIFY) 719 001312 5675 JMP I DIV1 /--RETURN-- 720 721 /END OF OPERATION 722 /REWIND TAPES TO INITIAL END ZONE 723 724 001313 1030 REWIND, TAD OCOUNT 725 001314 7040 CMA 726 001315 3042 DCA COUNT2 /SET NUMBER OF TAPES STILL SPINNING 727 001316 7240 RLIST, CLA CMA 728 001317 1032 TAD LIST 729 001320 3031 DCA OPOINT /SET POINTER TO UNIT LIST 730 001321 1030 TAD OCOUNT 731 001322 7001 IAC 732 001323 7040 CMA 733 001324 3033 DCA OUTNUM /SET NUMBER OF UNITS IN LIST 734 001325 4566 RUNIT, JMS I [PARITY 735 001326 4542 JMS I [CHECK /CHECK TTY FOR CTRL/S OR CTRL/C 736 001327 2033 ISZ OUTNUM /DONE WITH WHOLE LIST YET? 737 001330 7610 SKP CLA /NO 738 001331 5316 JMP RLIST /YES--START THROUGH LIST AGAIN 739 001332 2031 ISZ OPOINT 740 001333 1431 TAD I OPOINT /GET UNIT CODE 741 001334 7006 RTL 742 001335 7630 SZL CLA /STILL SPINNING? 743 001336 5325 JMP RUNIT /NO--TRY NEXT TAPE 744 001337 1431 TAD I OPOINT /YES 745 001340 3045 DCA UNIT 746 747 748 001341 1141 TAD [-6 749 001342 3040 DCA COUNT 750 001343 1140 TAD [RTAB 751 001344 3041 DCA COUNT1 752 001345 4561 JMS I [INSERT /PUT PROPER IOT'S IN THIS ROUTINE 753 001346 1431 TAD I OPOINT 754 001347 0160 AND [4000 /UNIT/READ 755 001350 1137 TAD [3000 /REVERSE/GO 756 001351 6774 IOTR1, SDLC 757 001352 4536 JMS I [SKIPQ 758 001353 4536 JMS I [SKIPQ /WAIT FOR DRIVE TO GET UP TO SPEED 759 001354 6771 IOTR2, SDSS 760 001355 5354 JMP .-1 761 001356 6776 IOTR3, SDRC /GET MARK TRACK BITS 762 001357 0164 AND [77 763 001360 1135 TAD [-22 764 001361 7640 SZA CLA /END ZONE? 765 001362 5325 JMP RUNIT /NO--NEXT UNIT 766 001363 7332 CLA CLL CML RTR /AC=2000 767 001364 7501 MQA /UNIT CODE STILL IN MQ FROM INSERT 768 001365 3431 DCA I OPOINT /SET STOPPED BIT 769 001366 1431 TAD I OPOINT 770 001367 0134 AND [6000 771 001370 6774 IOTR4, SDLC /STOP UNIT 772 001371 7600 M200, 7600 /CLA 773 001372 2042 ISZ COUNT2 /ALL TAPES STOPPED? 774 001373 5325 JMP RUNIT /NO--NEXT UNIT 775 001374 4577 JMS I [MESSGE /YES 776 001375 1117 MESS10 /@DONE@ 777 001376 5565 JMP I [REPEAT 778 779 780 781 PAGE 782 783 /VERIFICATION ROUTINES 784 785 001400 1061 VERIFY, TAD VB /SET POINTERS AND COUNTERS FOR TRANSFER 786 001401 3056 DCA BLOCKN 787 001402 1060 TAD NUMB2 788 001403 3055 DCA XNUMB 789 001404 3050 DCA RW 790 001405 1062 TAD END0 /SET BEGINNINGS OF VERIFY BUFFERS 791 001406 3053 DCA BUF0 792 001407 1377 TAD (3700 793 001410 3054 DCA BUFN 794 001411 1275 TAD CDF0 795 001412 3271 DCA COMP2 796 001413 4543 JMS I [READY /READ VERIFY BUFFERS FULL 797 001414 1041 TAD COUNT1 /GET # OF BLOCKS IN LAST BUFFER FILLED 798 001415 3043 DCA COUNT3 799 001416 7040 CMA /SET AUTOINDEX POINTERS TO BUFFERS 800 001417 1176 TAD [END 801 001420 3011 DCA X11 802 001421 7140 CMA CLL 803 001422 1062 TAD END0 804 001423 3012 DCA X12 805 001424 1040 TAD COUNT 806 001425 7040 CMA 807 001426 1037 TAD FIELDS 808 001427 3040 DCA COUNT /SET NUMBER OF FIELDS WHICH WERE FILLED 809 001430 4255 JMS COMP4 /GET NUMBER OF BLOCKS 810 001431 1051 TAD FLD0 811 001432 7041 CIA 812 001433 3044 DCA COUNT4 /SET COUNTER 813 001434 4266 JMS COMP /COMPARE THE BUFFERS 814 815 001435 1040 COMP3, TAD COUNT 816 001436 7650 SNA CLA 817 001437 5533 JMP I [OUTN 818 001440 4255 JMS COMP4 /GET NUMBER OF BLOCKS 819 001441 1052 TAD FLDN 820 001442 7041 CIA 821 001443 3044 DCA COUNT4 822 001444 1271 TAD COMP2 /EACH FIELD------ 823 001445 1376 TAD (10 824 001446 3271 DCA COMP2 /SET CDF INSTRUCTION PROPERLY 825 001447 7140 CMA CLL /SET AUTOINDEX POINTERS TO BUFFERS 826 001450 3011 DCA X11 827 001451 1375 TAD (3677 828 001452 3012 DCA X12 829 001453 4266 JMS COMP 830 001454 5235 JMP COMP3 /DO THE NEXT FIELD 831 832 833 /ENTER WITH AC CLEAR 834 /EXIT TO CALL+1 WITH AC CLEAR IF 835 /NORMAL BUFFER FILL 836 /EXIT TO CALL+2 WITH # OF BLOCKS IN AC IF 837 /LAST BUFFER 838 839 001455 0000 COMP4, 0 840 001456 2040 ISZ COUNT /LAST FIELD FILLED? 841 001457 5655 JMP I COMP4 /NO--RETURN-- 842 001460 1055 TAD XNUMB /YES--OUT OF BLOCKS? 843 001461 7640 SZA CLA 844 001462 5655 JMP I COMP4 /NO--RETURN-- 845 001463 1043 TAD COUNT3 /YES--GET ACTUAL # OF BLOCKS 846 001464 2255 ISZ COMP4 /INCREMENT RETURN ADDRESS 847 001465 5655 JMP I COMP4 /--RETURN-- 848 849 850 /COMPARE PORTION OF VERIFY ROUTINE 851 852 001466 0000 COMP, 0 853 001467 1555 TAD I [MWORDS /SET NUMBER OF WORDS PER BLOCK COUNTER 854 001470 3042 DCA COUNT2 855 001471 7402 COMP2, HALT /SHOULD CONTAIN CDF N 856 001472 1411 TAD I X11 /GET CORRESPONDING WORDS FROM EACH BUFFER 857 001473 7041 CIA 858 001474 1412 TAD I X12 859 001475 6201 CDF0, CDF 0 860 001476 7640 SZA CLA /DO WORDS MATCH? 861 001477 5305 JMP ERR1 /NO--VERIFY ERROR 862 001500 2042 TRY, ISZ COUNT2 /DONE WITH BLOCK? 863 001501 5271 JMP COMP2 /NO--CONTINUE 864 001502 2044 ISZ COUNT4 /DONE WITH ALL BLOCKS? 865 001503 5267 JMP COMP+1 /NO 866 001504 5666 JMP I COMP /YES--RETURN-- 867 868 001505 4577 ERR1, JMS I [MESSGE 869 001506 1135 ERROR1 /*VERIFY ERROR BLOCK * 870 001507 1044 TAD COUNT4 /GET CURRENT BLOCK NUMBER 871 001510 7041 CIA 872 001511 1774 TAD I (BLOCKS /FROM BLOCK THIS OPERATION STARTED WITH 873 001512 4331 JMS PRINT /PRINT 4 DIGIT BLOCK NUMBER 874 001513 4577 JMS I [MESSGE 875 001514 2505 ERROR6 /*UNIT * 876 001515 4553 JMS I [DECODE /PRINT UNIT NUMBER 877 001516 4551 WAIT, JMS I [LISTEN /WAIT FOR RESPONSE 878 001517 3331 DCA PRINT 879 001520 4567 JMS I [CRLF 880 001521 1331 TAD PRINT 881 001522 1132 TAD [-224 882 001523 7450 SNA /WAS IT CTRL/T? 883 001524 5531 JMP I [WRITEX /YES--TRY AGAIN 884 001525 1130 TAD [2 885 001526 7640 SZA CLA /WAS IT CTRL/R? 886 001527 5316 JMP WAIT /NO--WAIT FOR A GOOD RESPONSE 887 001530 5300 JMP TRY /YES--IGNORE AND CONTINUE 888 889 890 891 892 /PRINT A 4 DIGIT OCTAL NUMBER 893 /ENTER WITH NUMBER IN AC 894 895 001531 0000 PRINT, 0 896 001532 3577 DCA I [MESSGE /TEMPORARY STORAGE 897 001533 1170 TAD [-4 898 001534 3575 DCA I [ANSWER /SET DIGIT COUNTER 899 001535 1577 TAD I [MESSGE 900 001536 7004 RAL 901 001537 3567 DCA I [CRLF 902 001540 1567 FOUR, TAD I [CRLF 903 001541 7004 RAL 904 001542 7006 RTL 905 001543 3567 DCA I [CRLF 906 001544 1567 TAD I [CRLF 907 001545 0173 AND [7 908 001546 1127 TAD [260 909 001547 4572 JMS I [TYPE /PRINT ONE DIGIT 910 001550 2575 ISZ I [ANSWER /DONE YET? 911 001551 5340 JMP FOUR /NO 912 001552 5731 JMP I PRINT /YES--RETURN-- 913 914 915 /CLEAN UP UNIT TABLES AFTER REWIND 916 917 001553 1032 CLEAN, TAD LIST 918 001554 3031 DCA OPOINT 919 001555 1030 TAD OCOUNT 920 001556 7040 CMA 921 001557 3033 DCA OUTNUM /SET POINTER AND COUNTER 922 001560 1431 CLEAN1, TAD I OPOINT /GET UNIT CODE 923 001561 0373 AND (4770 /MASK OUT EXTRANEOUS BITS 924 001562 3431 DCA I OPOINT /REPLACE IT 925 001563 2031 ISZ OPOINT 926 001564 2033 ISZ OUTNUM /DONE YET? 927 001565 5360 JMP CLEAN1 /NO 928 001566 5526 JMP I [DOIT /YES--NEXT OPERATION 929 930 931 932 933 001573 4770 PAGE 001574 1715 001575 3677 001576 0010 001577 3700 934 935 /FILL ALL N FIELDS ONCE 936 /ENTER WITH AC CLEAR 937 /# OF BLOCKS FOR FIELD 0 IN FLD0 938 /# OF BLOCKS FOR OTHERS IN FLDN 939 /ADDRESSES OF BUFFERS IN BUF0, BUFN 940 /R/W BIT (0 OR 4000) IN RW 941 942 943 944 001600 0000 READY, 0 945 001601 1125 TAD [IOTLOC-TABEND-1 946 001602 3040 DCA COUNT 947 001603 1124 TAD [IOTLOC 948 001604 3041 DCA COUNT1 949 001605 4561 JMS I [INSERT /PUT PROPER IOT'S IN HANDLER 950 001606 1045 TAD UNIT 951 001607 7710 SPA CLA /EVEN OR ODD UNIT NUMBER? 952 001610 7107 CLL IAC RTL /ODD 953 001611 1123 TAD [ORIGIN /EVEN 954 001612 3063 DCA ENTRY /SET UP ENTRY TO HANDLER 955 001613 1050 TAD RW 956 001614 7421 MQL /STORE UNIT BIT FOR LATER 957 001615 7040 CMA 958 001616 1037 TAD FIELDS /SET COUNTER FOR # OF FIELDS 959 001617 3040 DCA COUNT 960 001620 7100 CLL 961 001621 1051 TAD FLD0 /ADJUST NUMBER OF BLOCKS TO 962 001622 4257 JMS SUB1 /TRANSFER DEPENDING ON NUMBER 963 001623 1051 TAD FLD0 /LEFT TO BE TRANSFERRED 964 001624 4266 JMS SUB2 /RESET FUNCTION WORD 965 001625 1053 TAD BUF0 /SET UP BUFFER POINTERS 966 001626 4277 JMS SUB3 967 001627 4307 JMS TRANS /TRANSFER DATA--FIELD 0 968 001630 2040 ZOOM, ISZ COUNT /BEGINNING OF LOOP FOR EACH FIELD ABOVE 0 969 001631 7410 SKP /DONE YET? 970 001632 5600 JMP I READY /YES--RETURN-- 971 972 001633 1037 TAD FIELDS 973 001634 7141 CIA CLL 974 001635 1040 TAD COUNT 975 001636 7001 IAC 976 001637 7004 RAL 977 001640 7006 RTL /GET FIELD SETTING READY 978 001641 7421 MQL /STORE IN MQ 979 001642 1313 TAD FUNCTN /GET PREVIOUS FUNCTION WORD 980 001643 0160 AND [4000 /GET R/W BIT 981 001644 7501 MQA /OR IN FIELD SETTING 982 001645 7421 MQL /STORE 983 001646 7100 CLL 984 001647 1052 TAD FLDN /ADJUST NUMBER OF BLOCKS TO TRANSFER 985 001650 4257 JMS SUB1 986 001651 1052 TAD FLDN 987 001652 4266 JMS SUB2 /AND RESET FUNCTION WORD 988 001653 1054 TAD BUFN 989 001654 4277 JMS SUB3 /SET UP BUFFER POINTERS 990 001655 4307 JMS TRANS /TRANSFER DATA--FIELDS 1-N 991 001656 5230 JMP ZOOM /FILL ANOTHER FIELD 992 993 001657 0000 SUB1, 0 994 001660 7041 CIA 995 001661 1055 TAD XNUMB 996 001662 7120 CLL CML /SET LINK=1 997 001663 7500 SMA /ARE THERE LESS BLOCKS LEFT THAN A FIELD FULL? 998 001664 3055 DCA XNUMB /NO--REDUCE COUNT OF BLOCKS LEFT 999 001665 5657 JMP I SUB1 /YES-TRANSFER BLOCKS LEFT--RETURN-- 1000 1001 001666 0000 SUB2, 0 1002 001667 3041 DCA COUNT1 /LINK=1 IF BLOCKS LEFT, 0 IF NONE 1003 001670 7420 SNL /DONE WITH ALL BLOCKS YET? 1004 001671 3055 DCA XNUMB /YES--BUMP SWITCH 1005 001672 1041 TAD COUNT1 /NO 1006 001673 7002 BSW 1007 001674 7501 MQA /PUT # OF BLOCKS INTO FUNCTION WORD 1008 001675 3313 DCA FUNCTN /START REVERSE 1009 001676 5666 JMP I SUB2 /--RETURN-- 1010 1011 1012 001677 0000 SUB3, 0 1013 001700 3314 DCA BUFADD 1014 001701 1056 TAD BLOCKN /SET STARTING BLOCK NUMBER 1015 001702 3315 DCA BLOCKS 1016 001703 1041 TAD COUNT1 1017 001704 1056 TAD BLOCKN 1018 001705 3056 DCA BLOCKN /RESET STARTING BLOCK FOR NEXT TIME 1019 001706 5677 JMP I SUB3 /--RETURN-- 1020 1021 1022 /CALL TO THE HANDLER 1023 1024 001707 0000 TRANS, 0 1025 001710 4566 JMS I [PARITY /CHECK TELETYPE 1026 001711 4542 JMS I [CHECK /WAS ^C OR ^S TYPED? 1027 001712 4463 JMS I ENTRY 1028 001713 0000 FUNCTN, 0 /FUNCTION WORD 1029 001714 0000 BUFADD, 0 /BUFFER ADDRESS 1030 001715 0000 BLOCKS, 0 /STARTING BLOCK NUMBER 1031 001716 5330 JMP ERR /ERROR RETURN 1032 001717 4566 JMS I [PARITY /CHECK TELETYPE 1033 001720 4542 JMS I [CHECK /WAS ^C OR ^S TYPED? 1034 001721 7200 CLA 1035 001722 1055 TAD XNUMB 1036 001723 7640 SZA CLA /DONE YET? 1037 001724 5707 JMP I TRANS /NO--RETURN-- 1038 001725 2040 ISZ COUNT 1039 001726 5600 JMP I READY /--RETURN-- 1040 001727 5600 JMP I READY /--RETURN-- 1041 1042 /TRANSFER ERROR HANDLER 1043 1044 001730 7650 ERR, SNA CLA /FATAL ERROR? 1045 001731 5343 JMP SELECT /NO 1046 001732 4577 JMS I [MESSGE /YES 1047 001733 1147 ERROR2 /*TAPE ERROR BLOCK * 1048 001734 1777 TAD I (BLOCK 1049 001735 4554 JMS I [PRINT /PRINT BLOCK NUMBER 1050 001736 4577 JMS I [MESSGE 1051 001737 2505 ERROR6 /*UNIT * 1052 001740 4354 JMS DECODE /PRINT UNIT NUMBER 1053 001741 4567 JMS I [CRLF 1054 001742 5522 JMP I [REWIND 1055 001743 4346 SELECT, JMS ERR3 1056 001744 2313 ISZ FUNCTN /TURN AROUND AND TRY AGAIN 1057 001745 5312 JMP FUNCTN-1 1058 1059 1060 001746 0000 ERR3, 0 1061 001747 4577 JMS I [MESSGE 1062 001750 1160 ERROR3 /*SELECT ERROR UNIT * 1063 001751 4354 JMS DECODE /PRINT UNIT NUMBER 1064 001752 4776 JMS CTRLR /WAIT FOR CTRL/R 1065 001753 5746 JMP I ERR3 /--RETURN-- 1066 1067 1068 /DECODE UNIT NUMBER FOR PRINTING 1069 /PRINT UNIT NUMBER BEFORE RETURNING 1070 1071 001754 0000 DECODE, 0 1072 001755 7100 CLL 1073 001756 1045 TAD UNIT 1074 001757 7004 RAL 1075 001760 7421 MQL /SAVE ROTATED CODE IN MQ 1076 001761 7004 RAL 1077 001762 7521 SWP /SAVE EVEN/ODD BIT IN MQ 1078 001763 7010 RAR /WORK ON IOT CODE 1079 001764 7012 RTR 1080 001765 7001 IAC 1081 001766 7040 CMA 1082 001767 0173 AND [7 1083 001770 7501 MQA /INCLUDE EVEN/ODD BIT 1084 001771 1127 TAD [260 /MAKE ASCII DIGIT 1085 001772 4572 JMS I [TYPE 1086 001773 5754 JMP I DECODE /--RETURN-- 1087 1088 1089 001776 1020 PAGE 001777 2004 1090 1091 1092 /TD8E DECTAPE HANDLER 1093 1094 /SLIGHTLY MODIFIED VERSION OF DEC-E8-UZTA-D 1095 /COPYRIGHT 1971 DIGITAL EQUIPMENT CORPORATION 1096 / MAYNARD, MASSACHUSETTS 01754 1097 1098 /THE CALLING SEQUENCE IS: 1099 / JMS ENTRY 1100 / FUNCTION WORD 1101 / BUFFER ADDRESS 1102 / STARTING BLOCK 1103 / ERROR RETURN 1104 / NORMAL RETURN (AC CLEAR) 1105 1106 /FUNCTION WORD: 1107 / BIT 0: 0=READ, 1=WRITE 1108 / BITS 1-5: # OF BLOCKS TO BE TRANSFERRED 1109 / BITS 6-8: FIELD OF BUFFER AREA 1110 / BITS 9-10: UNUSED 1111 / BIT 11: 1=START FORWARD, 0=START REVERSE 1112 1113 /ERRORS: 1114 /THE HANDLER DETECTS TWO TYPES OF ERRORS: 1115 /FATAL ERRORS: 1116 / PARITY ERROR 1117 / TIMING ERROR 1118 / TOO GREAT A BLOCK NUMBER 1119 /FATAL ERRORS TAKE ERROR RETURN WITH AC=4000 1120 /NON-FATAL ERROR: 1121 / SELECT ERROR (IMPROPER UNIT NUMBER OR NO UNIT NUMBER) 1122 /NON-FATAL ERROR TAKES ERROR RETURN WITH AC=0 1123 PAGE 1124 1125 MFIELD=0 1126 ORIGIN=. 1127 1128 002000 0000 DTA0, 0 /ENTRY POINT FROM UNIT 0 1129 002001 7300 CLA CLL /0 TO LINK 1130 002002 5210 JMP DTA1X 1131 002003 1000 C1000, 1000 1132 002004 0000 DTA1, 0 /UNIT 2 ENTRY 1133 002005 7320 CLA CLL CML /1 TO LINK 1134 002006 1204 TAD DTA1 1135 002007 3200 DCA DTA0 /PICK UP ARGS AT DTA0 1136 002010 7010 DTA1X, RAR 1137 002011 3361 DCA YUNIT /LINK TO UNIT POSITION 1138 002012 6214 RDF 1139 002013 1354 TAD C6203 /GET DATA FIELD AND SETUP RETURN 1140 002014 3351 DCA LEAVE 1141 002015 1361 TAD YUNIT /GET FUNCTION WORD 1142 002016 6774 IOT4, SDLC /PUT FUNCTION INTO DATA REGISTER 1143 002017 1600 TAD I DTA0 1144 002020 6775 IOT1, SDLD 1145 002021 7200 CLA 1146 002022 1360 TAD MWORDS 1147 002023 3356 DCA WCOUNT /STORE MASTER WORD COUNT 1148 002024 2200 ISZ DTA0 /TO BUFFER 1149 002025 1600 TAD I DTA0 1150 002026 3357 DCA BUFF 1151 002027 2200 ISZ DTA0 /TO BLOCK NUMBER 1152 002030 1600 TAD I DTA0 1153 002031 3204 DCA BLOCK 1154 002032 2200 ISZ DTA0 /POINT TO ERROR EXIT 1155 002033 6203 CIF CDF MFIELD /TO ROUTINES DATA FIELD 1156 002034 6777 IOT2, SDRD /GET FUNCTION INTO AC 1157 002035 7104 CLL RAL 1158 002036 0305 AND CM200 /GET # PAGES TO XFER 1159 002037 3364 DCA PGCT 1160 002040 6777 IOT3, SDRD 1161 002041 0374 C374, AND C70 /GET FIELD FOR XFER 1162 002042 1353 TAD C6201 /FORM CDF N 1163 002043 3377 DCA XFIELD /IF=0 AND DF=N AT XFER. 1164 002044 7346 CLA CLL CMA RTL 1165 002045 3367 DCA TRYCNT /3 ERROR TRIES 1166 002046 6776 IOT5, SDRC 1167 002047 0366 AND C100 1168 002050 7640 SZA CLA 1169 002051 5345 JMP FATAL-1 1170 1171 002052 6777 IOT6, SDRD /PUT FUNCT INTO XFUNCT IN SECOND PG. 1172 002053 3762 DCA I CXFUN 1173 002054 1356 TAD WCOUNT 1174 002055 3765 DCA I CXWCT 1175 002056 6777 IOT7, SDRD /GET MOTION BIT TO LINK 1176 002057 7110 CLL RAR 1177 002060 5277 JMP GO /AND START THE MOTION. 1178 002061 6772 RWCOM, SDST /ANY CHECKSUM ERRORS? 1179 002062 7640 SZA CLA /OR CHECKSUM ERRORS? 1180 002063 5337 JMP TRY3 /PLEASE NOTE THAT THE LINK IS ALWAYS 1181 /SET AT RWCOM. GETCHK SETS IT. 1182 002064 1364 TAD PGCT /NO ERROR..FINISHED XFER? 1183 002065 1305 TAD CM200 1184 002066 7450 SNA 1185 002067 5344 JMP EXIT /ALL DONE. GET OUT 1186 002070 3364 DCA PGCT /NEW PAGE COUNT 1187 002071 2204 ISZ BLOCK /NEXT BLOCK TO XFER 1188 002072 1356 TAD WCOUNT /FORM NEXT BUFFER ADDRESS 1189 002073 7041 CIA 1190 002074 1357 TAD BUFF 1191 002075 3357 DCA BUFF 1192 002076 7120 CLL CML /FORCES MOTION FORWARD 1193 002077 7232 GO, CLA CML RTR /LINK BECOMES MOTION BIT 1194 002100 1203 TAD C1000 1195 002101 1361 TAD YUNIT /PUT IN 'GO' AND UNIT # 1196 002102 6774 IOT8, SDLC /LOOK FOR BLOCK NO. 1197 002103 4755 JMS I CRDQUD /WAIT AT LEAST 6 LINES TO LOOK 1198 002104 4755 JMS I CRDQUD 1199 002105 7600 CM200, 7600 /COULD HAVE SAVED A LOC. HERE 1200 002106 6771 SRCH, SDSS 1201 002107 5306 JMP .-1 /WAIT FOR SINGLE LINE FLAG 1202 002110 6776 IOT9, SDRC 1203 002111 7106 CLL RTL /DIRECTION TO LINK. INFO BITS 1204 /ARE SHIFTED. 1205 002112 0241 AND C374 /ISOLATE MARK TRACK BITS 1206 002113 1331 TAD M110 /IS IT END ZONE? 1207 002114 7450 SNA /THE LINK STAYS SAME THRU THIS 1208 002115 5333 JMP ENDZ 1209 002116 1363 TAD M20 /CHECK FOR BLOCK MARK 1210 002117 7640 SZA CLA 1211 002120 5306 JMP SRCH 1212 002121 6777 IOT10, SDRD /GET THE BLOCK NUMBER 1213 002122 7430 SZL /IF WE ARE IN REVERSE, LOOK FOR 3 1214 /BLOCKS BEFORE TARGET BLOCK. THIS 1215 /ALLOWS TURNAROUND AND UP TO SPEED. 1216 002123 1375 TAD C3 /REVERSE 1217 002124 7040 CMA 1218 002125 1204 TAD BLOCK 1219 002126 7040 CMA /IS IT RIGHT BLOCK? 1220 002127 7450 SNA 1221 002130 5370 JMP FOUND /YES..HOORAY! 1222 002131 7670 M110, SZL SNA CLA /NO, BUT ARE WE HEADED FOR IT? 1223 /ABOVE SNA IS SUPERFLUOUS. 1224 002132 5306 JMP SRCH /YES 1225 002133 6776 ENDZ, SDRC /WE ARE IN THE END ZONE 1226 002134 7106 CLL RTL /DIRECTION TO LINK 1227 002135 7200 CLA /ARE WE IN REVERSE? 1228 002136 5277 JMP GO /YES..TURN US AROUND 1229 /IF WE ARE IN THE END ZONE GOING FORWARD, IT IS AN ERROR 1230 002137 7300 TRY3, CLL CLA 1231 002140 2367 ISZ TRYCNT 1232 002141 5277 JMP GO /TRY 3 TIMES 1233 002142 7300 CLL CLA 1234 002143 5346 JMP FATAL /LINK OFF MEANS AC=4000 ON RETURN 1235 002144 2200 EXIT, ISZ DTA0 1236 002145 7120 CLL CML /AC=0 ON NORMAL RETURN 1237 002146 1361 FATAL, TAD YUNIT 1238 002147 6774 SDLC /STOP THE UNIT 1239 002150 7230 CLA CML RAR 1240 002151 7402 LEAVE, HLT 1241 002152 5600 JMP I DTA0 /--RETURN-- 1242 1243 1244 002153 6201 C6201, 6201 1245 002154 6203 C6203, 6203 1246 002155 2314 CRDQUD, RDQUAD 1247 002156 0000 WCOUNT, 0 1248 002157 0000 BUFF, 0 1249 002160 0000 MWORDS, 0 1250 002161 0000 YUNIT, 0 1251 002162 2354 CXFUN, XFUNCT 1252 002163 7760 M20, -20 1253 002164 0000 PGCT, 0 1254 002165 2362 CXWCT, XWCT 1255 002166 0100 C100, 100 1256 002167 7775 TRYCNT, -3 1257 BLOCK=DTA1 1258 1259 1260 *ORIGIN+170 1261 002170 7630 FOUND, SZL CLA /RIGHT BLOCK. HOW ABOUT DIRECTION? 1262 002171 5277 JMP GO /WRONG..TURN AROUND 1263 002172 1361 TAD YUNIT /PUT UNIT INTO LINK 1264 002173 7104 CLL RAL /AC IS NOW 0 1265 002174 0070 C70, 70 /********DON'T MOVE THIS!!!!****** 1266 002175 0003 C3, 3 1267 002176 1357 TAD BUFF /GET BUFFER ADDRESS 1268 002177 7402 XFIELD, HLT /INTO NEXT PAGE 1269 1270 *ORIGIN+200 1271 XUNIT=EQUFUN 1272 1273 002200 3361 DCA XBUFF 1274 002201 6776 IOT16, SDRC 1275 002202 6774 IOT17, SDLC 1276 002203 7010 RAR /NOW GET UNIT # 1277 002204 3321 DCA XUNIT 1278 002205 6771 REVGRD, SDSS 1279 002206 5205 JMP REVGRD /LOOK FOR REVERSE GUARD 1280 002207 6776 IOT11, SDRC 1281 002210 0242 AND K77 1282 002211 1355 TAD CM32 /IS IT REVERSE GUARD? 1283 002212 7640 SZA CLA 1284 002213 5205 JMP REVGRD /NO.KEEP LOOKING 1285 002214 1362 TAD XWCT 1286 002215 3360 DCA WORDS /WORD COUNTER 1287 002216 1354 TAD XFUNCT /GET FUNCTION READ OR WRITE 1288 002217 7700 K7700, SMA CLA 1289 002220 5255 JMP READ /NEG. IS WRITE 1290 002221 6776 WRITE, SDRC 1291 002222 0267 AND C300 /CHECK FOR WRITE LOCK AND SELECT ERROR 1292 002223 7120 CLL CML /LOCK OUT AND SELECT ARE AC 0 ERRORS 1293 002224 7640 SZA CLA 1294 002225 5752 JMP I CFATAL /FATAL ERROR. LINK MUST BE ON 1295 002226 4314 JMS RDQUAD /NO ONE EVER USES THIS WORD! 1296 002227 7600 C7600, 7600 1297 002230 1356 TAD C1400 1298 002231 1321 TAD XUNIT /INITIATE WRITE MODE 1299 002232 6774 IOT12, SDLC 1300 002233 7240 CLA CMA 1301 002234 4305 JMS WRQUAD /PUT 77 IN REVERSE CHECKSUM 1302 002235 7240 CLA CMA 1303 002236 3357 DCA CHKSUM 1304 002237 1761 WRLP, TAD I XBUFF /GLORY BE! THE ACTUAL WRITE! 1305 002240 4305 JMS WRQUAD 1306 002241 2361 ISZ XBUFF /BUMP CORE POINTER 1307 002242 0077 K77, 77 /ABOVE MAY SKIP 1308 002243 2360 ISZ WORDS /DONE THIS BLOCK? 1309 002244 5237 JMP WRLP /NOT YET..LOOP A WHILE 1310 002245 1354 TAD XFUNCT /IS THE OPERATION FOR WDSBLK PER BLOCK? 1311 002246 7112 CLL RTR /IF NO, WRITE A 0 WORD 1312 002247 7630 SZL CLA 1313 1314 002250 4305 JMS WRQUAD /WRITE A WORD OF 0 1315 002251 4336 JMS GETCHK /DO THE CHECK SUM 1316 002252 4305 JMS WRQUAD /WRITE FORWARD CHECKSUM 1317 002253 4305 JMS WRQUAD /ALLOW CHECKSUM TO BE WRITTEN 1318 002254 5753 JMP I CRWCOM 1319 1320 1321 002255 4314 READ, JMS RDQUAD 1322 002256 4314 JMS RDQUAD 1323 002257 4314 JMS RDQUAD /SKIP CONTROL WORDS 1324 002260 0242 AND K77 1325 002261 1217 TAD K7700 /TACK 7700 ONTO CHECKSUM. 1326 002262 3357 DCA CHKSUM /CHECKSUM ONLY LOW 6 BITS ANYWAY 1327 002263 4314 RDLP, JMS RDQUAD 1328 002264 4321 JMS EQUFUN /COMPUT CHECKSUM AS WE GO 1329 002265 3761 DCA I XBUFF /IT GETS CONDENSED LATER 1330 002266 2361 ISZ XBUFF 1331 002267 0300 C300, 300 /PROTECTION 1332 002270 2360 ISZ WORDS /DONE THIS OP? 1333 002271 5263 JMP RDLP /NO SUCH LUCK 1334 002272 1354 TAD XFUNCT /IF OP WAS FOR WDSBLK-1, READ AND 1335 002273 7112 CLL RTR /CHECKSUM THE LAST TAPE WORD 1336 002274 7620 SNL CLA 1337 002275 5300 JMP RDLP2 1338 002276 4314 JMS RDQUAD /NOT NEEDED FOR WDSBLK/BLOCK 1339 002277 4321 JMS EQUFUN /CHECKSUM IT 1340 002300 4314 RDLP2, JMS RDQUAD /READ CHECKSUM 1341 002301 0217 AND K7700 1342 002302 4321 JMS EQUFUN 1343 002303 4336 JMS GETCHK /GET SIX BIT CHECKSUM 1344 002304 5753 JMP I CRWCOM 1345 1346 002305 0000 WRQUAD, 0 /WRITE OUT A 12 BIT WORD 1347 002306 4321 JMS EQUFUN /ADD THIS TO CHECKSUM 1348 002307 6773 IOT13, SDSQ /SKIP ON QUADLINE FLAG 1349 002310 5307 JMP .-1 1350 002311 6775 IOT14, SDLD /LOAD DATA ONTO BUS 1351 002312 7200 CLA /SDLD DOESN'T CLEAR AC 1352 002313 5705 JMP I WRQUAD 1353 1354 002314 0000 RDQUAD, 0 /READ A 12 BIT WORD 1355 002315 6773 SDSQ 1356 002316 5315 JMP .-1 1357 002317 6777 IOT15, SDRD /READ DATA 1358 002320 5714 JMP I RDQUAD 1359 1360 1361 002321 0000 EQUFUN, 0 /COMPUTE EQUIVALENCE CHECKSUM 1362 002322 7040 CMA 1363 002323 3363 DCA EQUTMP /ACTUALLY CHECKSUMS ON DECTAPE ARE 1364 002324 1363 TAD EQUTMP /EQUIVALENCE OF ALL WORDS IN A RECORD 1365 002325 0357 AND CHKSUM /SIX BITS AT A TIME. BUT SINCE EQUIVALENCE 1366 002326 7041 CIA /IS ASSOCIATIVE, WE CAN DO IT 12 1367 002327 7104 CLL RAL /BITS AT A TIME AND CONDENSE LATER. 1368 002330 1363 TAD EQUTMP /THIS ROUTINE USES THESE IDENTITIES: 1369 002331 1357 TAD CHKSUM /A+B=(A.XOR.B)+2*(A.AND.B) 1370 002332 3357 DCA CHKSUM /A.EQU.B=.NOT.(A.XOR.B)=A.XOR.(.NOT.B) 1371 002333 1363 TAD EQUTMP /A.EQU.B=(A+(.NOT.B))-2*(A.AND.(.NOT.B)) 1372 002334 7040 CMA 1373 002335 5721 JMP I EQUFUN 1374 1375 002336 0000 GETCHK, 0 /FORM 6 BIT CHECKSUM 1376 002337 7200 CLA 1377 002340 1357 TAD CHKSUM 1378 002341 7040 CMA 1379 002342 7106 CLL RTL 1380 002343 7006 RTL 1381 002344 7006 RTL 1382 002345 4321 JMS EQUFUN 1383 002346 7320 CLA CLL CML /FORCES LINK ON AT RWCOM 1384 002347 1357 TAD CHKSUM 1385 002350 0217 AND K7700 1386 002351 5736 JMP I GETCHK 1387 1388 002352 2146 CFATAL, FATAL 1389 002353 2061 CRWCOM, RWCOM 1390 002354 0000 XFUNCT, 0 1391 002355 7746 CM32, -32 1392 002356 1400 C1400, 1400 1393 002357 0000 CHKSUM, 0 1394 002360 0000 WORDS, 0 1395 002361 0000 XBUFF, 0 1396 002362 0000 XWCT, 0 1397 002363 0000 EQUTMP, 0 1398 1399 PAGE 1400 / 1401 / 1402 002400 0000 PARITY, 0 1403 002401 6036 KRB 1404 002402 0121 AND [177 1405 002403 1162 TAD [200 1406 002404 5600 JMP I PARITY 1407 1408 /IOT TABLES FOR TD8E SUBROUTINE 1409 1410 002405 2020 IOTLOC, IOT1 1411 002406 2034 IOT2 1412 002407 2040 IOT3 1413 002410 2016 IOT4 1414 002411 2046 IOT5 1415 002412 2052 IOT6 1416 002413 2056 IOT7 1417 002414 2061 RWCOM 1418 002415 2102 IOT8 1419 002416 2106 SRCH 1420 002417 2110 IOT9 1421 002420 2121 IOT10 1422 002421 2133 ENDZ 1423 002422 2147 FATAL+1 1424 002423 2205 REVGRD 1425 002424 2207 IOT11 1426 002425 2221 WRITE 1427 002426 2232 IOT12 1428 002427 2307 IOT13 1429 002430 2311 IOT14 1430 002431 2315 RDQUAD+1 1431 002432 2317 IOT15 1432 002433 2201 IOT16 1433 002434 2202 TABEND, IOT17 1434 1435 UNITS=. 1436 002435 0770 UNIT01 1437 002436 0760 UNIT23 1438 002437 0750 UNIT45 1439 002440 0740 UNIT67 1440 1441 002441 1351 RTAB, IOTR1 1442 002442 1354 IOTR2 1443 002443 1356 IOTR3 1444 002444 1370 IOTR4 1445 002445 0367 IOTR5 1446 002446 0371 IOTR6 1447 1448 1449 /IOT TABLES FOR WORDS PER BLOCK ROUTINE 1450 1451 002447 0637 TABLE1, IOTX1 1452 002450 0662 IOTX2 1453 002451 0642 IOTX3 1454 002452 0644 IOTX4 1455 002453 0754 IOTX5 1456 002454 0756 IOTX6 1457 002455 0621 IOTX7 1458 002456 0623 END1, IOTX8 1459 1460 002457 0622 MESSG4, TEXT @FROM UNIT:@ 002460 1715 002461 4025 002462 1611 002463 2472 002464 0000 1461 002465 2417 MESSG5, TEXT @TO UNITS:@ 002466 4025 002467 1611 002470 2423 002471 7200 1462 002472 1114 ERROR5, TEXT @ILLEGAL FORMAT UNIT @ 002473 1405 002474 0701 002475 1440 002476 0617 002477 2215 002500 0124 002501 4025 002502 1611 002503 2440 002504 0000 1463 002505 4025 ERROR6, TEXT @ UNIT @ 002506 1611 002507 2440 002510 0000 1464 002511 1114 ERROR4, TEXT @ILLEGAL RESPONSE@ 002512 1405 002513 0701 002514 1440 002515 2205 002516 2320 002517 1716 002520 2305 002521 0000 1465 1466 1467 PAGE 1468 /ONCE ONLY CODE 1469 1470 002600 4777 END, JMS I (QUEST 1471 002601 2646 MESSG2 /@HIGHEST FIELD AVAILABLE:@ 1472 002602 7701 ACL 1473 002603 0173 AND [7 1474 002604 7041 CIA 1475 002605 3037 DCA FIELDS 1476 002606 1376 TAD (CDF 1477 002607 3220 DCA CDF00 1478 002610 1037 TAD FIELDS 1479 002611 7450 SNA /MORE THAN 1 FIELD?? 1480 002612 5237 JMP LIM /NO--NO PROBLEM 1481 002613 3041 DCA COUNT1 /YES--ARE THEY ALL PRESENT? 1482 002614 1220 NEXT, TAD CDF00 1483 002615 1375 TAD (10 1484 002616 3220 DCA CDF00 /SET FOR DATA FIELD CHANGE 1485 002617 1374 TAD (HLT 1486 002620 6201 CDF00, CDF 1487 002621 3775 DCA I (10 /TRY LOCATION 10 1488 002622 1775 TAD I (10 1489 002623 6201 CDF 0 1490 002624 7041 CIA 1491 002625 1374 TAD (HLT 1492 002626 7650 SNA CLA /IS FIELD THERE? 1493 002627 5235 JMP NEXT1 /YES--TRY NEXT ONE 1494 002630 4577 JMS I [MESSGE /NO 1495 002631 2511 ERROR4 /ILLEGAL RESPONSE 1496 002632 4567 JMS I [CRLF /CARRIAGE RETURN/LINE FEED 1497 002633 3040 DCA COUNT /CLEAR COUNT 1498 002634 5200 JMP END /TRY AGAIN 1499 002635 2041 NEXT1, ISZ COUNT1 /DONE YET? 1500 002636 5214 JMP NEXT /NO 1501 1502 002637 1373 LIM, TAD (LIMIT-END /SET BEGINNING OF VERIFY BUFFER 1503 002640 7110 CLL RAR 1504 002641 1176 TAD [END 1505 002642 3062 DCA END0 1506 002643 1372 TAD (NOP 1507 002644 3771 DCA I (START1-1 1508 002645 5770 JMP I (START1 1509 002646 1011 MESSG2, TEXT @HIGHEST FIELD AVAILABLE:@ 002647 0710 002650 0523 002651 2440 002652 0611 002653 0514 002654 0440 002655 0126 002656 0111 002657 1401 002660 0214 002661 0572 002662 0000 1510 1511 002770 0207 FIELD 0 002771 0206 002772 7000 002773 5000 002774 7402 002775 0010 002776 6201 002777 0336 000121 0177 000122 1313 000123 2000 000124 2405 000125 7750 000126 1200 000127 0260 000130 0002 000131 1254 000132 7554 000133 1246 000134 6000 000135 7756 000136 0366 000137 3000 000140 2441 000141 7772 000142 0457 000143 1600 000144 5000 000145 0204 000146 1553 000147 0336 000150 7556 000151 0450 000152 1020 000153 1754 000154 1531 000155 2160 000156 1000 000157 1746 000160 4000 000161 0535 000162 0200 000163 0100 000164 0077 000165 1027 000166 2400 000167 0317 000170 7774 000171 0212 000172 0527 000173 0007 000174 7770 000175 0400 000176 2600 000177 0471 1512 *200 1513 1514 $ ACL 7701 AGAIN 0217 ALLDUN 1215 ANSWER 0400 BAD 0440 BLOCK 2004 BLOCKN 0056 BLOCKS 1715 BSW 7002 BUF0 0053 BUFADD 1714 BUFF 2157 BUFN 0054 C100 2166 C1000 2003 C1400 2356 C3 2175 C300 2267 C374 2041 C6201 2153 C6203 2154 C70 2174 C7600 2227 unreferenced CAF 6007 unreferenced CAM 7621 CDF0 1475 CDF00 2620 CDI 6203 unreferenced CFATAL 2352 CHAR 0526 CHECK 0457 CHKSUM 2357 CLEAN 1553 CLEAN1 1560 CLEAR 0436 CM200 2105 CM32 2355 COMP 1466 COMP2 1471 COMP3 1435 COMP4 1455 CONT 1014 COUNT 0040 COUNT1 0041 COUNT2 0042 COUNT3 0043 COUNT4 0044 CRDQUD 2155 CRLF 0317 CRWCOM 2353 CTRLC 0470 CTRLR 1020 CXFUN 2162 CXWCT 2165 DECODE 1754 DIV1 1275 DIV2 1301 DOIT 1200 DTA0 2000 DTA1 2004 DTA1X 2010 END 2600 END0 0062 END1 2456 ENDZ 2133 ENTRY 0063 EQUFUN 2321 EQUTMP 2363 ERR 1730 ERR1 1505 ERR3 1746 ERR4 0325 ERR5 0744 ERROR1 1135 ERROR2 1147 ERROR3 1160 ERROR4 2511 ERROR5 2472 ERROR6 2505 EXIT 2144 FATAL 2146 FIELDS 0037 FINDER 0524 FLD0 0051 FLDN 0052 FOUND 2170 FOUR 1540 FUNCTN 1713 GETCHK 2336 GO 2077 HALT 7402 IBLOCK 0034 INB 0064 INPUT 0020 INS1 0551 INSERT 0535 IOT1 2020 IOT10 2121 IOT11 2207 IOT12 2232 IOT13 2307 IOT14 2311 IOT15 2317 IOT16 2201 IOT17 2202 IOT2 2034 IOT3 2040 IOT4 2016 IOT5 2046 IOT6 2052 IOT7 2056 IOT8 2102 IOT9 2110 IOTLOC 2405 IOTR1 1351 IOTR2 1354 IOTR3 1356 IOTR4 1370 IOTR5 0367 IOTR6 0371 IOTX1 0637 IOTX2 0662 IOTX3 0642 IOTX4 0644 IOTX5 0754 IOTX6 0756 IOTX7 0621 IOTX8 0623 K77 2242 K7700 2217 KCF 6030 unreferenced LEAVE 2151 LIM 2637 LIMIT 7600 LIST 0032 LISTEN 0450 LNEXT 0476 LOC 0525 M110 2131 M20 2163 M200 1371 MESS10 1117 MESS11 1122 MESSG1 0067 MESSG2 2646 MESSG3 0076 MESSG4 2457 MESSG5 2465 MESSG6 1040 MESSG7 1052 MESSG8 1064 MESSG9 1101 MESSGE 0471 MFIELD 0000 MNUM 0343 MORE 0404 MORE2 0224 MQA 7501 MQL 7421 MWORDS 2160 NEXT 2614 NEXT1 2635 NUMB1 0057 NUMB2 0060 NUMBER 0036 OALL 0255 OBLOCK 0035 OCOUNT 0030 OHOLD 0066 OPOINT 0031 ORIGIN 2000 OUTB 0065 OUTN 1246 OUTNUM 0033 OUTPUT 0021 PARITY 2400 PGCT 2164 PRINT 1531 QUEST 0336 QUEST1 0345 RDLP 2263 RDLP2 2300 RDQUAD 2314 READ 2255 READX 1220 unreferenced READY 1600 REPEAT 1027 REVGRD 2205 REWIND 1313 RHALF 0500 RLIST 1316 RTAB 2441 RUNIT 1325 RW 0050 RWCOM 2061 SDLC 6774 SDLD 6775 SDRC 6776 SDRD 6777 SDSQ 6773 SDSS 6771 SDST 6772 SELECT 1743 SELERR 0627 SEMI 0443 SET2 0651 SET3 0700 SET4 0606 SET5 0674 SETUP 0600 SKIP 0437 SKIP4 0753 SKIPQ 0366 SRCH 2106 START 0200 START1 0207 SUB 0726 SUB1 1657 SUB2 1666 SUB3 1677 SWITCH 0412 SWP 7521 TABEND 2434 TABLE1 2447 TABX 0365 TRANS 1707 TRY 1500 TRY3 2137 TRYCNT 2167 TYPE 0527 UNIT 0045 UNIT01 0770 UNIT23 0760 UNIT45 0750 UNIT67 0740 UNITNO 0352 UNITS 2435 VB 0061 VERF 0046 VERF1 1311 VERF1A 1016 VERF2 1274 VERF2A 1017 VERFQ 1000 VERIFY 1400 WAIT 1516 WCOUNT 2156 WDCNT 0047 WHOLE 0306 WORDS 2360 WRITE 2221 WRITEX 1254 WRLP 2237 WRQUAD 2305 X11 0011 X12 0012 XBUFF 2361 XFIELD 2177 XFUNCT 2354 XNUMB 0055 XUNIT 2321 XWCT 2362 YES 1010 YUNIT 2161 ZOOM 1630