1 /1 OS8 SOURCE COMPARE (SRCCOM) 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 /COPYRIGHT (C) 1972,1973,1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION 12 / 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE 23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY 25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. 26 / 27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER 28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED 29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH 30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. 31 / 32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE 33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY 34 /DIGITAL. 35 / 36 / 37 / 38 / 39 / 40 / 41 / 42 / 43 / 44 / 45 /LAST EDITED 4/28/77 46 / 47 / 48 /COPYRIGHT 1973,1977 49 /DIGITAL EQUIPMENT CORPORATION 50 /MAYNARD, MASS. 01754 51 / 52 /PDP-8 SOURCE COMPARISON PROGRAM 53 /STOLEN FROM PDP-10 SRCCOM BY R. LARY 54 55 VERSION= 4 /CHANGE EVERY MAJOR EDIT 56 PATCH="A 57 58 IFNDEF CORE 59 MPARAM=7643 /COMMAND DECODER PARAMETER BLOCK 60 61 IFZERO CORE-2 65 IFZERO CORE-4 69 BUFLIM=FBLOCK-1001 /END OF LINE BUFFER 70 INBUF=FBLOCK-1000 /INPUT BUFFER 71 /SRCCOM FIELD 0 PAGE 0 72 73 FIELD 0 74 75 XR=10 76 77 *20 78 000020 0000 SCT, 0 /TEMPORARY 79 000021 0000 OFILNM, ZBLOCK 4 /OUTPUT FILE NAME 000022 0000 000023 0000 000024 0000 80 000025 0000 IFPTR, 0 /TEMPORARY 81 SETUP1, NOPUNCH 82 *7556 /JAM PARAMETERS UP AGAINST TOP OF USER CORE 83 FBLOCK, ENPUNCH 84 85 /LAYOUT OF FILE PARAMETER TABLE 86 /THERE IS A COPY OF THIS TABLE IN FIELDS F1 AND F2. EACH COPY 87 /CONTAINS ALL THE INFORMATION ABOUT THE FILE WHOSE BUFFERS 88 /ARE IN THE SAME FIELD 89 90 91 007556 0001 PGNUM, 1 /CURRENT INPUT PAGE 92 007557 0000 CURLIN, 0 /CURRENT LINE (IN LINE BUFFER) 93 007560 0000 TOPLIN, 0 /NUMBER OF LINES IN LINE BUFFER 94 007561 0000 TMPLIN, 0 /TEMPORARY STORAGE FOR "CURLIN" 95 007562 0001 OLDLIN, 1 /LINE OPTIMIZATION COUNTER 96 007563 2000 OLDPTR, LNBEG /LINE OPTIMIZATION POINTER 97 /THE NEXT SEVERAL WORDS ARE A SUBROUTINE 98 /WHICH READS A BUFFER IN FROM THE INPUT FILE 99 007564 0000 INTEMP, 0 /SHIFT REGISTER FOR "GCHAR" ROUTINE 100 007565 6202 CIF 0 101 007566 4775 JMS I INHNDL 102 007567 7777 INCHCT, 7777 /COUNT OF CHARACTERS IN BUFFER 103 007570 0000 INPTR, 0 /POINTS TO CURRENT WORD IN BUFFER 104 007571 0000 INREC, 0 /CONTAINS CURRENT INPUT RECORD 105 007572 2364 ISZ INTEMP /SUBROUTINE SKIPS ON INPUT ERROR 106 007573 6212 CIF 10 107 007574 5764 JMP I INTEMP 108 007575 0000 INHNDL, 0 /POINTS TO ENTRY POINT OF INPUT HANDLER 109 110 007576 0000 INEOF, 0 /END-OF-FILE INDICATOR 111 007577 0000 INRCNT, 0 /COUNT OF RECORDS REMAINING IN THIS FILE 112 IFNZRO .-7600 <_ERROR_> 113 *SETUP1+.-FBLOCK/PUT ASSEMBLER LOCATION COUNTER BACK 114 SETUP2=. 115 116 117 /CORE ALLOCATION FOR 8K SYSTEM 118 119 / FIELD 0 120 / 121 /0000-0377 CONTROL CODE 122 /0400-0777 INPUT HANDLER 1 123 /1000-1377 INPUT HANDLER 2 124 /1400-1777 OUTPUT HANDLER 125 /2000-6555 FILE 1 LINE BUFFER 126 /6556-7555 FILE 1 INPUT BUFFER 127 /7556-7577 FILE 1 CONTROL BLOCK 128 / 129 / FIELD 1 130 / 131 /0000-1377 SRCCOM PROPER 132 /1400-1777 OUTPUT BUFFER 133 /2000-6555 FILE 2 LINE BUFFER 134 /6556-7555 FILE 2 INPUT BUFFER 135 /7556-7577 FILE 2 CONTROL BLOCK 136 / 137 / 138 / FORMAT OF LINE BUFFER: 139 / THE LINE BUFFER CONSISTS OF SOURCE LINES. THE FIRST WORD 140 / OF EACH LINE IS A LENGTH WORD GIVING THE LENGTH OF THE 141 / LINE (INCLUDING THE LENGTH WORD ITSELF) AS A POSITIVE 142 / NUMBER. THE NEXT WORD IS THE NUMBER OF THE SOURCE PAGE 143 / ON WHICH THIS LINE WAS FOUND. SUBSEQUENT WORDS CONTAIN THE 144 / CHARACTERS OF THE LINE ITSELF, PACKED ONE PER WORD. 145 146 147 000050 0316 NODFMS, "N;"O;" ;"D;"I;"F;"F;"E;"R;"E;"N;"C;"E;"S;0 000051 0317 000052 0240 000053 0304 000054 0311 000055 0306 000056 0306 000057 0305 000060 0322 000061 0305 000062 0316 000063 0303 000064 0305 000065 0323 000066 0000 148 000067 0000 SETUP, 0 /ROUTINE TO SET UP FILE PARAMETERS 149 000070 1177 TAD [SETUP1-SETUP2 150 000071 3020 DCA SCT 151 000072 1176 TAD [TAD SETUP1 152 000073 3076 DCA INST2 153 000074 1175 TAD [FBLOCK-1 154 000075 3010 DCA XR 155 000076 7402 INST2, HLT /MOVE THE SKELETON PARAMETER BLOCK 156 000077 3410 DCA I XR /UP INTO THE DESIRED FIELD 157 000100 2076 ISZ INST2 158 000101 2020 ISZ SCT 159 000102 5076 JMP INST2 160 000103 6214 RDF 161 000104 1174 TAD [6201 162 000105 3132 DCA SETCDF /SAVE FIELD NUMBER 163 000106 6211 CDF 10 164 000107 1425 TAD I IFPTR 165 000110 6201 CDF 0 166 000111 7450 SNA 167 000112 5573 JMP I [INERR1 /NO INPUT FILE - BAD 168 000113 6212 CIF 10 169 000114 4572 JMS I [200 /ASSIGN DEVICE HANDLER 170 000115 0001 1 171 000116 0000 DVPAGE, 0 172 000117 7402 HLT /NEVER HOPPEN 173 000120 6211 CDF 10 174 000121 1425 TAD I IFPTR 175 000122 0171 AND [7760 /COMPUTE FILE LENGTH 176 000123 7440 SZA 177 000124 1170 TAD [17 178 000125 7132 CLL CML RTR 179 000126 7012 RTR 180 000127 3020 DCA SCT /SAVE IT AWAY TEMPORARILY 181 000130 2025 ISZ IFPTR 182 000131 1425 TAD I IFPTR 183 000132 7402 SETCDF, HLT /RESET DATA FIELD 184 000133 3567 DCA I [INREC /SAVE STARTING BLOCK NUMBER 185 000134 1020 TAD SCT 186 000135 3566 DCA I [INRCNT /SAVE FILE LENGTH 187 000136 1116 TAD DVPAGE 188 000137 3565 DCA I [INHNDL /SAVE DEVICE HANDLER ENTRY POINT 189 000140 2025 ISZ IFPTR 190 000141 5467 JMP I SETUP /RETURN 191 *200 /INITIALIZATION CODE 192 000200 2343 SRCCOM, ISZ NOCHN 193 000201 6212 CIF 10 194 000202 4564 JMS I [7700 195 000203 0010 10 /BRING USR INTO CORE 196 000204 1343 SRCCD, TAD NOCHN /HAVE WE BEEN CHAINED TO? 197 000205 7650 SNA CLA 198 000206 5213 JMP NOSRCD /YES 199 000207 6212 CIF 10 200 000210 4572 JMS I [200 201 000211 0005 5 /COMMAND DECODE 202 000212 0000 0 /NO DEFAULT EXTENSIONS 203 000213 1163 NOSRCD, TAD [7617 204 000214 3025 DCA IFPTR /SET IFPTR POINTING TO FILE 1 205 000215 1162 TAD [401 206 000216 3116 DCA DVPAGE /FILE 1 HANDLER GOES IN 400-777 207 000217 6201 CDF F1 208 000220 4067 JMS SETUP /SET UP FILE 1 PARAMETER AREA 209 000221 1161 TAD [1001 210 000222 3116 DCA DVPAGE /FILE 2 HANDLER GOES INTO 1000-1377 211 000223 6211 CDF F2 212 000224 4067 JMS SETUP /SET UP FILE 2 PARAMETER AREA 213 000225 1160 TAD [1401 214 000226 3253 DCA OUPAGE /OUTPUT HANDLER GOES INTO 1400-1777 215 000227 6211 GTOUHN, CDF 10 216 000230 1557 TAD I [7600 /GET OUTPUT DEVICE # 217 000231 6201 CDF 0 218 000232 7440 SZA /IS THERE ONE? 219 000233 5250 JMP ASSOUT 220 000234 3241 DCA TTYNO 221 000235 6212 CIF 10 /NO - LOOK UP "TTY" 222 000236 4572 JMS I [200 223 000237 0012 12 /INQUIRE 224 000240 5524 5524 /=2424+3100 = TTY 225 000241 0000 TTYNO, 0 226 000242 0000 0 227 000243 5350 JMP OUERR1 /NO TELETYPE 228 000244 1241 TAD TTYNO 229 000245 6211 CDF 10 230 000246 3557 DCA I [7600 231 000247 5227 JMP GTOUHN /BACK TO GET IT AGAIN 232 000250 6212 ASSOUT, CIF 10 233 000251 4572 JMS I [200 234 000252 0001 1 235 000253 0000 OUPAGE, 0 236 000254 5350 JMP OUERR1 237 000255 1156 TAD [-4 238 000256 3020 DCA SCT 239 000257 1157 TAD [7600 240 000260 3010 DCA XR 241 000261 1155 TAD [DCA OFILNM 242 000262 3265 DCA INST1 243 000263 6211 CDF 10 /MOVE OUTPUT FILE NAME INTO FIELD 0 244 000264 1410 TAD I XR 245 000265 7402 INST1, HLT 246 000266 2265 ISZ INST1 247 000267 2020 ISZ SCT 248 000270 5264 JMP INST1-1 249 000271 1331 TAD PFILNM 250 000272 3304 DCA ORCNO /SET UP ENTER 251 000273 1024 TAD OFILNM+3 252 000274 7450 SNA 253 000275 1154 TAD [1423 /ASSUMED OUTPUT EXTENSION = .LS 254 000276 3024 DCA OFILNM+3 255 000277 1557 TAD I [7600 256 000300 6201 CDF 0 257 000301 6212 CIF 10 258 000302 4572 JMS I [200 259 000303 0003 3 260 000304 0000 ORCNO, 0 /POINTS TO FILE NAME 261 000305 0000 OLEN, 0 262 000306 5350 JMP OUERR1 263 000307 6212 CIF 10 264 000310 4572 JMS I [200 265 000311 0011 11 /KICK USR OUT OF CORE 266 000312 3332 DCA OCOUNT 267 000313 6213 CDF CIF 10 268 000314 1304 TAD ORCNO 269 000315 3553 DCA I [OUREC 270 000316 1253 TAD OUPAGE 271 000317 5720 JMP I .+1 272 000320 1331 SRCOPT /GO SET UP OPTION SWITCHES AND COMPARE 273 000321 6212 OCLOSE, CIF 10 274 000322 4564 JMS I [7700 275 000323 0010 10 /GET USR INTO CORE 276 000324 6213 CDF CIF 10 277 000325 1557 TAD I [7600 /GET OUTPUT DEVICE NUMBER 278 000326 6201 CDF 0 279 000327 4572 JMS I [200 280 000330 0004 4 /CLOSE OUTPUT FILE 281 000331 0021 PFILNM, OFILNM 282 000332 0000 OCOUNT, 0 /COUNT OF BLOCKS WRITTEN 283 000333 5350 JMP OUERR1 /ERROR ON CLOSE 284 000334 2343 SRCATS, ISZ NOCHN /IN CASE WE LOOP, CLEAR "CHAINED TO" FLAG 285 000335 6211 CDF 10 286 000336 1552 TAD I [MPARAM-1 /GET ALTMODE FLAG 287 000337 6201 CDF 0 288 000340 7710 SPA CLA 289 000341 5551 JMP I [7605 /GO AWAY IF ALTMODE 290 000342 5204 JMP SRCCD /GO BACK FOR MORE 291 292 000343 0000 NOCHN, 0 293 294 000344 6214 INERR1, RDF 295 000345 7112 CLL RTR 296 000346 7010 RAR 297 000347 1156 TAD [-4 298 000350 1150 OUERR1, TAD [4005 299 000351 1147 NOROOM, TAD [260 300 000352 3067 DCA SETUP 301 000353 1146 TAD [277 302 000354 4372 JMS TYPE /OUTPUT "?N" WHERE N IS THE ERROR NUMBER 303 000355 1067 TAD SETUP 304 000356 4372 JMS TYPE 305 000357 1145 TAD [215 306 000360 4372 JMS TYPE 307 000361 1144 TAD [212 308 000362 4372 JMS TYPE 309 000363 1067 TAD SETUP 310 000364 7710 SPA CLA /IS THE USR IN CORE? 311 000365 5334 JMP SRCATS /YES - DON'T LOAD IT 312 000366 6212 CIF 10 313 000367 4564 JMS I [7700 /NO - LOAD IT 314 000370 0010 10 315 000371 5334 JMP SRCATS 316 317 000372 0000 TYPE, 0 318 000373 6046 TLS 319 000374 6041 TSF 320 000375 5374 JMP .-1 321 000376 7200 CLA 322 000377 5772 JMP I TYPE 323 / PAGE 0 LITERALS 324 000144 0212 FIELD 1 000145 0215 000146 0277 000147 0260 000150 4005 000151 7605 000152 7642 000153 1246 000154 1423 000155 3021 000156 7774 000157 7600 000160 1401 000161 1001 000162 0401 000163 7617 000164 7700 000165 7575 000166 7577 000167 7571 000170 0017 000171 7760 000172 0200 000173 0344 000174 6201 000175 7555 000176 1026 000177 7756 325 /PAGE 0 FOR SRCCOM 326 327 *0 328 010000 0000 T1, 0 329 010001 0000 T2, 0 330 010002 0000 T, 0 331 010003 0000 CT, 0 332 333 XR1=11 334 XR2=12 335 336 *20 337 338 /*************** SRCCOM SWITCHES *************** 339 340 010020 0000 CSW, 0 /"C" SWITCH - ON=-257, MEANING IGNORE COMMENTS 341 / OFF=+521, MEANING COMPARE COMMENTS 342 010021 0000 SSW, 0 /"S" SWITCH - ON=-240, MEANING IGNORE SPACES & TABS 343 / OFF=-200, MEANING COMPARE SPACES&TABS 344 010022 0000 TSW, 0 /"T" SWITCH - ON=20 , MEANING CONVERT TABS ON OUTPUT 345 / OFF=0 , MEANING PRINT TABS ON OUTPUT 346 010023 0000 XSW, 0 /"X" SWITCH - ON=1 , MEANING DON'T INPUT COMMENTS 347 / OFF=0 , MEANING INPUT COMMENTS INTO CORE 348 010024 0000 ALLSW, 0 /"B" SWITCH - ON=2000, MEANING COMPARE BLANK LINES 349 / OFF=0 , MEANING IGNORE BLANK LINES 350 010025 0000 NUMLIN, 0 /NUMERICAL ARGUMENT - NUMBER OF LINES CONSTITUTING 351 /A MATCH - SET TO -3 IF NO NUMERICAL ARGUMENT 352 353 010026 0000 MLIMIT, 0 354 010027 0000 GETCNT, 0 355 010030 0000 GETFIL, 0 356 010031 0000 CHAR, 0 357 010032 0000 IPTR, 0 358 010033 0000 NUMTMP, 0 359 010034 0000 PLNCNT, 0 360 010035 0000 PNTPGN, 0 361 010036 0000 OUHNDL, 0 /THESE 5 WORDS ARE USED BY OUTPUT ROUTINE 362 010037 0000 OUCHCT, 0 363 010040 0000 OUPTR, 0 364 010041 0000 OUXPTR, 0 365 010042 0000 OUTEMP, 0 366 010043 0000 TABCT, 0 367 010044 0000 DIFFS, 0 /DIFFERENCES FOUND FLAG 368 369 010045 0000 CTCCHK, 0 370 010046 1177 TAD [200 371 010047 6034 KRS /GET A CHAR FROM THE TELETYPE 372 010050 1176 TAD [-203 /CHECK FOR EITHER PARITY ^C 373 010051 7650 SNA CLA 374 010052 6031 KSF /WITH THE KEYBOARD FLAG UP 375 010053 5445 JMP I CTCCHK /NOPE 376 010054 6203 CDF CIF 0 /YUP - RETURN TO OS/8 377 010055 5575 JMP I [7600 378 PAGE 379 380 010200 0000 SETONE, 0 /ROUTINE TO FIND WHERE A LINE IS 381 010201 1574 TAD I [CURLIN /GET LINE NUMBER 382 010202 3230 DCA TLNNUM /SAVE IT AWAY 383 010203 1573 TAD I [OLDPTR /GET THE POINTER TO THE LATEST LINE 384 010204 3002 SETOPT, DCA T /SAVE THE STARTING POINTER 385 010205 1230 TAD TLNNUM /GET THE TARGET LINE 386 010206 7140 CMA CLL 387 010207 1572 TAD I [OLDLIN /IS IT BEFORE OR AFTER THE LATEST LINE? 388 010210 7430 SZL 389 010211 5231 JMP SETRST /BEFORE - WE MUST START SEARCHING FROM LINE 1 390 010212 3003 DCA CT /AFTER - START SEARCHING FROM LATEST LINE 391 010213 2003 TLOOP, ISZ CT 392 010214 5224 JMP KEEPON /NOT THERE YET 393 010215 1230 TAD TLNNUM /WE FOUND IT - MAKE THIS LINE 394 010216 3572 DCA I [OLDLIN /THE NEW "LATEST LINE" 395 010217 1002 TAD T /TO SPEED UP 396 010220 3573 DCA I [OLDPTR /FUTURE SEARCHES. 397 010221 7240 CLA CMA 398 010222 1002 TAD T 399 010223 5600 JMP I SETONE /RETURN POINTER FOR AUTO-XR 400 010224 1402 KEEPON, TAD I T 401 010225 1002 TAD T /ADD LENGTH OF THIS LINE TO POINTER 402 010226 3002 DCA T /TO GET POINTER TO NEXT LINE 403 010227 5213 JMP TLOOP 404 010230 0000 TLNNUM, 0 /TEMPORARY FOR SETONE - DO NOT USE ANYWHERE ELSE 405 406 010231 7201 SETRST, CLA IAC /RESET THE "LATEST LINE" POINTERS TO THE FIRST 407 010232 3572 DCA I [OLDLIN /LINE, SINCE THE LINE WE SEEK IS BEFORE 408 010233 1171 TAD [LNBEG /THE CURRENT "LATEST LINE" 409 010234 5204 JMP SETOPT /GO BACK AND FIND THE LINE 410 010235 0000 MOVEUP, 0 /SUBR TO DELETE LINES FROM CORE 411 010236 1574 TAD I [CURLIN /GET FIRST LINE NOT TO BE DELETED 412 010237 7041 CIA 413 010240 1570 TAD I [TOPLIN 414 010241 3570 DCA I [TOPLIN /REDUCE THE NUMBER OF LINES IN THE BUFFER 415 010242 1570 TAD I [TOPLIN /GET NEW LINE COUNT 416 010243 7450 SNA /IF ALL LINES DELETED, DON'T MOVE CORE 417 010244 5264 JMP MOVXIT /JUST CLEAN UP AND GET OUT 418 010245 7001 IAC 419 010246 4200 JMS SETONE /GET POINTER TO LAST LINE+1 420 010247 7041 CIA 421 010250 3026 DCA MLIMIT /SAVE AS LIMIT ON MOVE 422 010251 7001 IAC 423 010252 4200 JMS SETONE /GET POINTER TO THE FIRST LINE NOT TO DELETE 424 010253 3011 DCA XR1 425 010254 1167 TAD [LNBEG-1 426 010255 3012 DCA XR2 427 010256 1411 MLOOP, TAD I XR1 428 010257 3412 DCA I XR2 /AREN'T AUTO-XRS WONDERFUL 429 010260 1011 TAD XR1 430 010261 1026 TAD MLIMIT /(ACTUALLY, NO) 431 010262 7640 SZA CLA 432 010263 5256 JMP MLOOP 433 010264 7201 MOVXIT, CLA IAC /AFTER MOVING CORE AROUND, WE MUST 434 010265 3572 DCA I [OLDLIN /RESET THE "LATEST LINE" POINTERS TO THE FIRST 435 010266 1171 TAD [LNBEG /LINE SINCE IT IS THE ONLY ONE WHICH 436 010267 3573 DCA I [OLDPTR /HAS A KNOWN POSITION. 437 010270 5635 JMP I MOVEUP 438 010271 0000 COMPL, 0 /SUBROUTINE TO COMPARE TWO LINES 439 010272 6201 CDF F1 440 010273 4200 JMS SETONE /GET POINTER TO CURRENT LINE IN FILE 1 441 010274 1166 TAD [2 /SKIP OVER PROLOGUE 442 010275 3011 DCA XR1 443 010276 6211 CDF F2 444 010277 4200 JMS SETONE /GET POINTER TO CURRENT LINE IN FILE 2 445 010300 1166 TAD [2 /SKIP OVER PROLOGUE 446 010301 3012 DCA XR2 447 010302 6201 COMP1, CDF F1 448 010303 1411 TAD I XR1 /GET A CHAR FROM FILE 1 449 010304 3000 DCA T1 450 010305 6211 COMP2, CDF F2 451 010306 1412 TAD I XR2 452 010307 3001 DCA T2 /AND A CHAR FROM FILE 2 453 010310 1001 COMP0, TAD T2 454 010311 7041 CIA 455 010312 1000 TAD T1 456 010313 7640 SZA CLA /ARE THEY EQUAL? 457 010314 5326 JMP COMP4 /NO 458 010315 1000 COMP5, TAD T1 459 010316 7440 SZA 460 010317 1020 TAD CSW /IF AT END OF LINE, OR IF AT A "/" 461 010320 7640 SZA CLA /AND "IGNORE COMMENTS" SWITCH ON, 462 010321 5302 JMP COMP1 463 010322 5671 JMP I COMPL /TAKE "LINES MATCH" RETURN 464 465 010323 6201 COMP3, CDF F1 466 010324 1411 TAD I XR1 /GET THE NEXT CHAR FROM FILE 1 467 010325 3000 DCA T1 468 010326 1000 COMP4, TAD T1 469 010327 1021 TAD SSW /IF T1 IS A BLANK OR A TAB 470 010330 7440 SZA 471 010331 1165 TAD [27 /(27=BLANK-TAB) 472 010332 7650 SNA CLA /AND WE ARE IGNORING BLANKS, 473 010333 5323 JMP COMP3 /THEN IGNORE T1 474 010334 1001 TAD T2 475 010335 1021 TAD SSW /DO THE SAME WITH T2 476 010336 7440 SZA 477 010337 1165 TAD [27 478 010340 7650 SNA CLA 479 010341 5305 JMP COMP2 480 010342 1000 TAD T1 481 010343 7041 CIA 482 010344 1001 TAD T2 /NOW THAT WE HAVE (MAYBE) ELIMINATED BLANKS 483 010345 7650 SNA CLA /ARE T1 AND T2 STILL UNEQUAL? 484 010346 5315 JMP COMP5 /NO - THERE'S STILL HOPE 485 010347 1000 TAD T1 /YES - NOW TEST COMMENT SWITCH 486 010350 7040 CMA 487 010351 0001 AND T2 488 010352 1020 TAD CSW /IF T1 IS A CARRIAGE RETURN AND T2 IS A "/" 489 010353 7650 SNA CLA /WITH THE COMMENT SWITCH ON WE'VE SUCEEDED 490 010354 5671 JMP I COMPL /SO TAKE "LINES MATCH" RETURN 491 010355 1001 TAD T2 492 010356 7040 CMA 493 010357 0000 AND T1 /SAME IF T2=CARRIAGE RETURN AND T1="/" 494 010360 1020 TAD CSW 495 010361 7640 SZA CLA 496 010362 2271 ISZ COMPL /OTHERWISE TAKE "LINES DON'T MATCH" RETURN 497 010363 5671 JMP I COMPL 498 499 010364 0000 GETTWO, 0 /SUBROUTINE TO GET A LINE FROM EACH FILE 500 010365 7346 CLA CLL CMA RTL 501 010366 3027 DCA GETCNT 502 010367 3030 DCA GETFIL /ZERO INDICATOR AS TO WHICH FILE IS NULL 503 010370 6201 CDF F1 504 010371 4564 JMS I [GLINE /GET A LINE FROM FILE 1 505 010372 6211 CDF F2 506 010373 4564 JMS I [GLINE /DITTO FILE 2 507 010374 2027 ISZ GETCNT /HOW MANY LINES DID WE GET? 508 010375 5764 JMP I GETTWO /LESS THAN TWO - TAKE EOF RETURN 509 010376 2364 ISZ GETTWO 510 010377 5764 JMP I GETTWO /TAKE NORMAL RETURN 511 512 PAGE 513 010400 0000 GLINE, 0 /SUBROUTINE TO GET A LINE FROM A FILE 514 010401 1574 TAD I [CURLIN 515 010402 7041 CIA 516 010403 1570 TAD I [TOPLIN 517 010404 7640 SZA CLA /IS THE LINE IN CORE? 518 010405 5250 JMP GLEXIT /YES 519 010406 7201 CLA IAC 520 010407 4577 JMS I [SETONE /GET POINTER TO THIS LINE 521 010410 3011 DCA XR1 522 010411 7326 CLA CLL CML RTL 523 010412 3411 DCA I XR1 /SET WORD COUNT TO 2 524 010413 1011 TAD XR1 525 010414 3002 DCA T /SAVE POINTER TO LENGTH WORD 526 010415 4045 JMS CTCCHK /CHECK FOR ^C TYPED 527 010416 2011 ISZ XR1 528 010417 4256 GLINE2, JMS GCHAR /MAIN LOOP - GET A CHARACTER 529 010420 4563 JMS I [TSTXSW /SEE WHETHER WE SHOULD INPUT COMMENTS 530 010421 7344 CLA CLL CMA RAL 531 010422 1031 TAD CHAR 532 010423 1024 TAD ALLSW /IF THE CHAR IS A CARRIAGE RETURN AND THE 533 010424 1402 TAD I T /"B" SWITCH IS OFF AND THE LINE COUNT IS 2, 534 010425 7650 SNA CLA /THEN WE SHOULD IGNORE THIS BLANK LINE. 535 010426 5217 JMP GLINE2 536 010427 1031 TAD CHAR 537 010430 3411 DCA I XR1 /SALT IT AWAY 538 010431 1011 TAD XR1 539 010432 7100 CLL 540 010433 1162 TAD [4-BUFLIM /COMPARE AGAINST END OF BUFFER 541 010434 7620 SNL CLA 542 010435 5240 JMP .+3 543 010436 6203 CDF CIF 0 /LINE OVERFLOWS CORE - BAD! 544 010437 5561 JMP I [NOROOM /TELL THE WORLD 545 010440 2402 ISZ I T /BUMP COUNTER OF WORDS IN LINE 546 010441 1031 TAD CHAR 547 010442 7640 SZA CLA /WAS IT A CARRIAGE RETURN? 548 010443 5217 JMP GLINE2 /NO 549 010444 2570 ISZ I [TOPLIN /YES - BUMP COUNT OF LINES IN CORE 550 010445 2002 ISZ T 551 010446 1560 TAD I [PGNUM 552 010447 3402 DCA I T 553 010450 2027 GLEXIT, ISZ GETCNT /BUMP COUNTER OF # OF LINES GOTTEN 554 010451 6214 RDF 555 010452 1157 TAD [6201 556 010453 3030 DCA GETFIL /INDICATE THAT THIS FILE WAS NOT NULL 557 010454 2574 ISZ I [CURLIN /BUMP CURRENT LINE POINTER 558 010455 5600 JMP I GLINE 559 010456 0000 GCHAR, 0 /SUBROUTINE TO GET A CHAR FROM A FILE 560 010457 1556 TAD I [INPTR 561 010460 3032 DCA IPTR /SAVE POINTER TO CURRENT BUFFER WORD 562 010461 2555 ISZ I [INCHCT /BUMP CHAR COUNTER 563 010462 5330 JMP GETIN 564 010463 1554 TAD I [INEOF /END OF BUFFER 565 010464 7640 SZA CLA /END OF FILE?? 566 010465 5375 JMP GEOF+1 /YES 567 010466 7326 CLA CLL CML RTL 568 010467 1553 TAD I [INRCNT /BUMP COUNT OF REMAINING RECORDS BY 2 569 010470 7430 SZL /OVERFLOW? 570 010471 2554 ISZ I [INEOF /YES - SET END OF FILE FLAG 571 010472 7420 SNL 572 010473 3553 DCA I [INRCNT /RESTORE COUNTER IF NO OVERFLOW 573 010474 7166 CLL CMA CML RTL 574 010475 7006 RTL 575 010476 7006 RTL 576 010477 1152 TAD [401 /COMPUTE INPUT CONTROL WORD 577 010500 6214 RDF 578 010501 3555 DCA I [INCHCT 579 010502 1151 TAD [INBUF 580 010503 3556 DCA I [INPTR /PUT BUFFER ADDRESS INTO CALLING SEQUENCE 581 010504 6214 RDF 582 010505 1150 TAD [6203 583 010506 3307 DCA .+1 584 010507 7000 NOP /SET INSTRUCTION FIELD TO DATA FIELD 585 010510 4547 JMS I [INTEMP /CALL SUBR TO READ IN BUFFER 586 010511 5315 JMP .+4 /NO ERROR 587 010512 7710 SPA CLA /FATAL ERROR? 588 010513 5546 JMP I [INERR /YES 589 010514 2554 ISZ I [INEOF /NO - SET END OF FILE FLAG 590 010515 2545 ISZ I [INREC 591 010516 2545 ISZ I [INREC /BUMP RECORD NUMBER BY 2 592 010517 1144 TAD [10 593 010520 3547 DCA I [INTEMP /INITIALIZE SHIFT REGISTER 594 010521 1555 TAD I [INCHCT 595 010522 7104 CLL RAL 596 010523 1555 TAD I [INCHCT 597 010524 0175 AND [7600 598 010525 7040 CMA 599 010526 3555 DCA I [INCHCT /COMPUTE CHAR COUNT FROM BUFFER CONTROL WD 600 010527 5257 JMP GCHAR+1 /START ALL OVER WITH NEW BUFFER 601 010530 1547 GETIN, TAD I [INTEMP 602 010531 7510 SPA /IF WE HAVE A CHAR IN THE SHIFT BUFFER 603 010532 3432 DCA I IPTR /WRITE OVER THE CURRENT BUFFER WORD WITH IT 604 010533 3547 DCA I [INTEMP /AND ZERO THE SHIFT BUFFER 605 010534 1432 TAD I IPTR /GET THE CURRENT BUFFER WORD 606 010535 0143 AND [7400 607 010536 7104 CLL RAL 608 010537 1547 TAD I [INTEMP 609 010540 7006 RTL /SHIFT THE HIGH ORDER 4 BITS 610 010541 7006 RTL /INTO THE SHIFT BUFFER 611 010542 7500 SMA /DID WE GET A COMPLETE CHARACTER? 612 010543 2556 ISZ I [INPTR /NO - BUMP WORD POINTER 613 010544 3547 DCA I [INTEMP 614 010545 1432 TAD I IPTR 615 010546 0142 AND [177 /USE LOW ORDER 7 BITS OF THE CURRENT WORD 616 010547 7440 SZA /AS THE CHARACTER 617 010550 1141 TAD [-177 /IGNORING BLANK TAPE, RUBOUTS, LINE-FEEDS 618 010551 7440 SZA /AND VERT. TABS 619 010552 1140 TAD [177-13 620 010553 7440 SZA 621 010554 7001 IAC 622 010555 7450 SNA 623 010556 5257 JMP GCHAR+1 624 010557 1137 TAD [12-14 625 010560 7450 SNA 626 010561 5372 JMP FFEED /FORM FEED IS SPECIAL 627 010562 1136 TAD [14-32 628 010563 7450 SNA 629 010564 5374 JMP GEOF /^Z SIGNIFIES END-OF-FILE 630 010565 1135 TAD [32-15 631 010566 7440 SZA 632 010567 1134 TAD [215 /AND CARRIAGE RETURN IS MAPPED INTO 0 633 010570 3031 DCA CHAR 634 010571 5656 JMP I GCHAR 635 636 010572 2560 FFEED, ISZ I [PGNUM /BUMP THE PROPER PAGE COUNT ON A FORM FEED 637 010573 5257 JMP GCHAR+1 /BUT OTHERWISE IGNORE IT 638 639 010574 2554 GEOF, ISZ I [INEOF /SET END-OF-FILE FLAG 640 010575 7240 CLA CMA 641 010576 3555 DCA I [INCHCT /FORCE AN EMPTY BUFFER 642 010577 5600 JMP I GLINE /RETURN FROM GLINE WITHOUT SETTING GETFIL 643 644 PAGE 645 / INITIALIZATION 646 010600 4533 STARTC, JMS I [OUSETP /INITIALIZE OUTPUT BUFFER POINTERS 647 010601 7201 CLA IAC 648 010602 3035 DCA PNTPGN /FUDGE PNTPGN WHILE PRINTING HEADER LINES 649 010603 1132 TAD [HEDING-1 650 010604 4531 JMS I [PNTHDG /PRINT SRCCOM HEADING LINE 651 010605 4530 JMS I [GETTWO /GET TITLE LINES 652 010606 5323 JMP FINISH /ONE FILE IS EMPTY - ABORT COMPARISON 653 010607 6201 CDF F1 654 010610 4527 JMS I [PNTTXT /PRINT FILE 1 HEADER 655 010611 6211 CDF F2 656 010612 4527 JMS I [PNTTXT /AND FILE 2 HEADER 657 010613 3035 DCA PNTPGN /INITIALIZE PAGE NUMBER 658 010614 7240 STA 659 010615 3044 DCA DIFFS /INITIALIZE FLAG TO NO DIFFERENCES 660 661 / MAIN LOOP 662 663 010616 6201 MAIN, CDF F1 664 010617 4526 JMS I [MOVEUP 665 010620 6211 CDF F2 666 010621 4526 JMS I [MOVEUP /DELETE ANY USELESS LINES 667 010622 6201 MAINST, CDF F1 668 010623 3574 DCA I [CURLIN 669 010624 6211 CDF F2 670 010625 3574 DCA I [CURLIN 671 010626 4530 JMS I [GETTWO /GET TWO INPUT LINES 672 010627 5267 JMP MAIN15 /ONE FILE IS EMPTY 673 010630 4525 JMS I [COMPL /COMPARE THE LINES 674 010631 5216 JMP MAIN /EQUAL - DELETE AND CONTINUE 675 010632 3044 DCA DIFFS /UNEQUAL - CLEAR "NO DIFFERENCES" FLAG 676 677 010633 4530 MAIN10, JMS I [GETTWO /GET TWO MORE LINES 678 010634 5267 JMP MAIN15 /ONE FILE RAN OUT 679 010635 6201 CDF F1 680 010636 3574 DCA I [CURLIN /INITIALIZE FILE 1 LINE NO. 681 010637 2574 MAIN12, ISZ I [CURLIN /BUMP TO NEXT LINE IN FILE 1 682 010640 4525 JMS I [COMPL /COMPARE NEW LINE FROM FILE 2 683 010641 4332 JMS MULTI /WITH THIS LINE FROM FILE 1 684 010642 6211 CDF F2 /AND IF MATCH IS FOUND CHECK MULTIPLE LINES 685 010643 1574 TAD I [CURLIN 686 010644 7041 CIA 687 010645 6201 CDF F1 688 010646 1574 TAD I [CURLIN 689 010647 7640 SZA CLA /THROUGH WITH FILE 1 LINES? 690 010650 5237 JMP MAIN12 /NO 691 010651 6211 CDF F2 692 010652 7201 CLA IAC 693 010653 3574 DCA I [CURLIN /NOW INITIALIZE FILE 2 LINE NO. 694 010654 1574 MAIN14, TAD I [CURLIN 695 010655 7041 CIA 696 010656 6201 CDF F1 697 010657 1574 TAD I [CURLIN 698 010660 7650 SNA CLA /HAVE WE EXHAUSTED FILE 2 LINES? 699 010661 5233 JMP MAIN10 /YES - NO MATCH AT ALL 700 010662 4525 JMS I [COMPL /NO - COMPARE ALL FILE 2 LINES 701 010663 4332 JMS MULTI /AGAINST NEW FILE 1 LINE 702 010664 6211 CDF F2 /AND, IF MATCH, CHECK MULTIPLE LINES 703 010665 2574 ISZ I [CURLIN /GO TO NEXT FILE 2 LINE 704 010666 5254 JMP MAIN14 /AND LOOP 705 706 010667 1030 MAIN15, TAD GETFIL 707 010670 7450 SNA /FIND WHICH FILE WAS EMPTY 708 010671 5323 JMP FINISH /BOTH - ALL DONE 709 010672 3320 DCA MAIN18 710 010673 6201 CDF F1 711 010674 1574 TAD I [CURLIN 712 010675 6211 CDF F2 713 010676 7640 SZA CLA 714 010677 1574 TAD I [CURLIN 715 010700 7650 SNA CLA /IS EITHER FILE EXHAUSTED IN CORE? 716 010701 5320 JMP MAIN18 /YES - PRINT ALL OF OTHER FILE 717 010702 1320 TAD MAIN18 /GET CDF OF LONG FILE 718 010703 7041 CIA 719 010704 1124 TAD [4402+F1+F2 /COMPUTE CDF OF SHORT FILE 720 010705 3306 DCA MAIN17 721 010706 7000 MAIN17, NOP 722 010707 1574 TAD I [CURLIN 723 010710 7140 CMA CLL 724 010711 1570 TAD I [TOPLIN 725 010712 7620 SNL CLA /IS CURLIN < TOPLIN? 726 010713 5233 JMP MAIN10 /NO - WE STILL HAVE SOME COMPARING TO DO 727 010714 2574 ISZ I [CURLIN 728 010715 4525 JMS I [COMPL 729 010716 4332 JMS MULTI 730 010717 5306 JMP MAIN17 731 732 010720 7000 MAIN18, NOP /SET DF TO DATA FIELD OF LONG FILE 733 010721 4527 JMS I [PNTTXT /PRINT IT 734 010722 5216 JMP MAIN 735 736 010723 6201 FINISH, CDF F1 737 010724 1574 TAD I [CURLIN 738 010725 6211 CDF F2 739 010726 1574 TAD I [CURLIN 740 010727 7640 SZA CLA /ARE BOTH CORE BUFFERS EMPTY? 741 010730 4523 JMS I [PNTBTH /NO - PRINT THEM 742 010731 5522 JMP I [EOCOMP 743 / MULTI-LINE COMPARATOR 744 010732 0000 MULTI, 0 745 010733 6201 CDF F1 746 010734 1574 TAD I [CURLIN 747 010735 3521 DCA I [TMPLIN 748 010736 6211 CDF F2 749 010737 1574 TAD I [CURLIN 750 010740 3521 DCA I [TMPLIN /STORE CURLIN AWAY IN A TEMPORARY 751 010741 1025 TAD NUMLIN 752 010742 3033 DCA NUMTMP /GET COUNT OF LINES TO COMPARE 753 010743 5352 JMP MULT6 754 755 010744 4530 MULT2, JMS I [GETTWO /GET TWO LINES 756 010745 5350 JMP MULT4 /ONE FILE HAS NO MORE 757 010746 4525 JMS I [COMPL /COMPARE THEM 758 010747 5352 JMP MULT6 /THEY COMPARE - KEEP GOING 759 010750 4362 MULT4, JMS SWAPCT /RESET OLD CURLIN 760 010751 5732 JMP I MULTI 761 010752 2033 MULT6, ISZ NUMTMP /LINE COUNT EXHAUSTED? 762 010753 5344 JMP MULT2 /NO - KEEP COMPARING 763 010754 4362 JMS SWAPCT /RESTORE OLD CURLIN 764 010755 4523 JMS I [PNTBTH /PRINT OUT DIFFERENCES 765 010756 1120 TAD [-10 766 010757 4517 JMS I [PNTAST /PRINT OUT SEPARATOR 767 010760 4362 JMS SWAPCT /RE-SWAP FOR DELETION 768 010761 5216 JMP MAIN /DELETE THRU MATCHING LINES AND CONTINUE 769 770 010762 0000 SWAPCT, 0 771 010763 6201 CDF F1 772 010764 4370 JMS SWAPX /SWAP CURLIN AND TMPLIN FOR FILE 1 773 010765 6211 CDF F2 774 010766 4370 JMS SWAPX /DITTO FOR FILE 2 775 010767 5762 JMP I SWAPCT 776 010770 0000 SWAPX, 0 777 010771 1574 TAD I [CURLIN 778 010772 3033 DCA NUMTMP 779 010773 1521 TAD I [TMPLIN 780 010774 3574 DCA I [CURLIN 781 010775 1033 TAD NUMTMP 782 010776 3521 DCA I [TMPLIN 783 010777 5770 JMP I SWAPX 784 785 PAGE 786 011000 0000 PNTBTH, 0 /PRINT BOTH TEXT BUFFERS 787 011001 1116 TAD [212 788 011002 4515 JMS I [OCHAR /SEPARATOR 789 011003 6201 CDF F1 790 011004 4214 JMS PNTTXT /PRINT FILE 1 BUFFER 791 011005 1114 TAD [-4 792 011006 4322 JMS PNTAST /PRINT SEPARATOR 793 011007 6211 CDF F2 794 011010 4214 JMS PNTTXT /PRINT FILE 2 BUFFER 795 011011 1116 TAD [212 796 011012 4515 JMS I [OCHAR /SEPARATOR 797 011013 5600 JMP I PNTBTH 798 799 011014 0000 PNTTXT, 0 /PRINT A TEXT BUFFER 800 011015 1574 TAD I [CURLIN 801 011016 7041 CIA 802 011017 3034 DCA PLNCNT /GET # OF LINES TO PRINT 803 011020 3043 PNTLP, DCA TABCT /ZERO TAB COUNTER (IN CASE "T" SW ON) 804 011021 6214 RDF 805 011022 7112 CLL RTR 806 011023 7010 RAR /GET FILE NUMBER 807 011024 1113 TAD [261 /260 FOR 12K VERSION 808 011025 4515 JMS I [OCHAR 809 011026 1112 TAD [251 810 011027 4515 JMS I [OCHAR /PRINT RPAR 811 011030 1034 TAD PLNCNT 812 011031 7001 IAC 813 011032 4577 JMS I [SETONE /GET POINTER TO LINE 814 011033 7001 IAC 815 011034 3011 DCA XR1 816 011035 1411 TAD I XR1 /GET THE PAGE NUMBER OF THE LINE 817 011036 3002 DCA T 818 011037 1002 TAD T 819 011040 7041 CIA 820 011041 1035 TAD PNTPGN 821 011042 7650 SNA CLA /DID THE PAGE NUMBER JUST CHANGE? 822 011043 5271 JMP PNTTAB /NO - DON'T PRINT IT 823 011044 1356 TAD TENTAD 824 011045 3257 DCA PNTTAD 825 011046 1002 TAD T 826 011047 3035 DCA PNTPGN /UPDATE THE CURRENT PAGE NUMBER 827 011050 7346 CLA CLL CMA RTL 828 011051 3003 DCA CT /PRINT 3 DECIMAL DIGITS 829 011052 3000 DIGLP1, DCA T1 830 011053 5256 JMP .+3 831 011054 3002 DIGLP2, DCA T 832 011055 2000 ISZ T1 833 011056 1002 TAD T 834 011057 7402 PNTTAD, HLT /ADD IN A POWER OF 10 835 011060 7500 SMA 836 011061 5254 JMP DIGLP2 /KEEP GOING 837 011062 7200 PN7200, CLA 838 011063 2257 ISZ PNTTAD /GOT A DIGIT - GO TO NEXT POWER OF 10 839 011064 1000 TAD T1 840 011065 1111 TAD [260 841 011066 4515 JMS I [OCHAR /PRINT DIGIT 842 011067 2003 ISZ CT /THROUGH? 843 011070 5252 JMP DIGLP1 /NO 844 011071 1022 PNTTAB, TAD TSW 845 011072 7650 SNA CLA /SHOULD WE SIMULATE TABS? 846 011073 5310 JMP PNTCHR /NO 847 011074 1110 TAD [240 /YES - PRINT A BLANK 848 011075 4515 JMS I [OCHAR 849 011076 1043 TAD TABCT 850 011077 0107 AND [7 851 011100 7640 SZA CLA /KEEP PRINTING BLANKS UNTIL WE REACH A MULTIPLE OF 852 011101 5271 JMP PNTTAB /EIGHT COLUMNS. 853 011102 1411 PNTCLP, TAD I XR1 /GET A CHARACTER FROM THE LINE 854 011103 7450 SNA /END? 855 011104 5313 JMP PNTCR /YES 856 011105 1155 TAD [-211 857 011106 7450 SNA /IS IT A TAB? 858 011107 5271 JMP PNTTAB /YES 859 011110 1106 PNTCHR, TAD [211 /NO - RESTORE THE CHAR 860 011111 4515 JMS I [OCHAR 861 011112 5302 JMP PNTCLP /PRINT IT AND LOOP 862 011113 1134 PNTCR, TAD [215 /PRINT CRLF 863 011114 4515 JMS I [OCHAR 864 011115 1116 TAD [212 865 011116 4515 JMS I [OCHAR 866 011117 2034 ISZ PLNCNT 867 011120 5220 JMP PNTLP /LOOP FOR EACH LINE IN BUFFER 868 011121 5614 JMP I PNTTXT 869 011122 0000 PNTAST, 0 /ROUTINE TO PRINT ASTERISKS 870 011123 3003 DCA CT /SAVE COUNTER 871 011124 1105 TAD ["* 872 011125 4515 JMS I [OCHAR 873 011126 2003 ISZ CT 874 011127 5324 JMP .-3 /PRINT REQUIRED NUMBER OF ASTERISKS 875 011130 1134 TAD [215 876 011131 4515 JMS I [OCHAR /TERMINATE THE LINE 877 011132 1116 TAD [212 878 011133 4515 JMS I [OCHAR 879 011134 3035 DCA PNTPGN /KILL CURR. PAGE NUMBER 880 011135 5722 JMP I PNTAST 881 882 011136 2044 EOCOMP, ISZ DIFFS /ANY DIFFERENCES? 883 011137 5343 JMP .+4 /YES 884 011140 6201 CDF 0 /MESSAGE IN FIELD 0 885 011141 1104 TAD [NODFMS-1 886 011142 4531 JMS I [PNTHDG /NO - PRINT MESSAGE 887 011143 1262 TAD PN7200 /ROUTINE TO FINISH UP OUTPUT 888 011144 3003 DCA CT 889 011145 1103 TAD [214 890 011146 4515 JMS I [OCHAR /TERMINATE THE OUTPUT FILE 891 011147 1102 TAD [232 /WITH A FORM FEED AND A ^Z 892 011150 4515 JMS I [OCHAR 893 011151 2003 ISZ CT 894 011152 5350 JMP .-2 /FILL WITH ZEROS TO FORCE BUFFER OUT 895 011153 6203 CDF CIF 0 896 011154 5755 JMP I .+1 /GO TO FIELD 0 TO FINISH UP AS WE WILL BE 897 011155 0321 OCLOSE /OVERLAYED BY THE USR DURING THE CLOSE 898 899 011156 1357 TENTAD, TAD .+1 /TABLE OF POWERS OF TEN 900 011157 7634 -144 901 011160 7766 -12 902 011161 7777 -1 903 904 011162 6214 INERR, RDF /INPUT ERROR - ERROR NUMBER=FILE NUMBER 905 011163 7112 CLL RTR 906 011164 7010 RAR 907 011165 7001 IFZERO CORE-2 908 IFZERO CORE-4 909 011166 6203 CDF CIF 0 910 011167 5561 JMP I [NOROOM /GO TO COMMON ERROR ROUTINE 911 912 011170 0000 PNTHDG, 0 /ROUTINE TO PRINT A LITERAL LINE 913 011171 3011 DCA XR1 /POINTER TO LINE IN AC 914 011172 1370 TAD PNTHDG 915 011173 3214 DCA PNTTXT /WE WORK BY FAKING OUT PNTTXT 916 011174 7240 STA 917 011175 3034 DCA PLNCNT /SET LINE COUNTER TO 1 918 011176 5302 JMP PNTCLP 919 920 PAGE 921 011200 0000 OCHAR, 0 /LOW LEVEL OUTPUT ROUTINE 922 011201 0101 AND [377 923 011202 3042 DCA OUTEMP 924 011203 2043 ISZ TABCT /BUMP TAB COUNTER 925 011204 6214 RDF 926 011205 1157 TAD [6201 927 011206 3262 DCA OCDF 928 011207 6211 CDF 10 929 011210 1037 TAD OUCHCT /GET CHAR COUNTER - CHAR COUNTER COUNTS 930 011211 7012 RTR /FOUR TIMES FOR EACH THREE CHARACTERS. 931 011212 7020 CML /WHEN THE LOW ORDER BITS OF THE COUNT ARE 10, 932 011213 7730 SZL SPA CLA /ITS TIME TO SQUEEZE A CHAR INTO THE HIGH 933 011214 5233 JMP OUNORM /ORDER BITS - OTHERWISE JUST STORE IT 934 011215 2037 ISZ OUCHCT /WE MUST SQUEEZE - BUMP OUCHCT AN EXTRA 935 011216 1042 TAD OUTEMP /TIME 936 011217 7006 RTL 937 011220 7006 RTL 938 011221 0143 AND [7400 939 011222 1441 TAD I OUXPTR /FIRST WORD OF DOUBLET 940 011223 3441 DCA I OUXPTR 941 011224 1042 TAD OUTEMP 942 011225 7012 RTR 943 011226 7012 RTR 944 011227 7010 RAR 945 011230 0143 AND [7400 946 011231 1440 TAD I OUPTR /SECOND WORD OF DOUBLET 947 011232 5237 JMP OUCOMN 948 949 011233 1040 OUNORM, TAD OUPTR 950 011234 3041 DCA OUXPTR /REMEMBER LAST WORD 951 011235 2040 ISZ OUPTR 952 011236 1042 TAD OUTEMP 953 011237 3440 OUCOMN, DCA I OUPTR 954 011240 2037 ISZ OUCHCT /BUMP CHAR COUNT 955 011241 5262 JMP OCDF /RETURN 956 011242 6202 CIF 0 /CHAR COUNT OVFLO - OUTPUT BUFFER 957 011243 4436 JMS I OUHNDL 958 011244 4210 4210 959 011245 1400 1400 960 011246 0000 OUREC, 0 961 011247 5256 JMP OUERR2 962 011250 4264 JMS OUSETP /INITIALIZE FOR NEXT BUFFER 963 011251 2246 ISZ OUREC /BUMP RECORD NUMBER 964 011252 6201 CDF 0 965 011253 2500 ISZ I [OCOUNT /BUMP CLOSING COUNT 966 011254 2477 ISZ I [OLEN /AND LENGTH OF HOLE 967 011255 5262 JMP OCDF 968 011256 7126 OUERR2, CLL CML RTL /OUTPUT ERROR OR FILE TOO BIG - GENERATE 969 011257 7001 IAC /A 3 OR A 4 MESSAGE, RESPECTIVELY 970 011260 6203 CDF CIF 0 971 011261 5561 JMP I [NOROOM 972 011262 7402 OCDF, HLT /RESTORE DATA FIELD 973 011263 5600 JMP I OCHAR /RETURN 974 011264 0000 OUSETP, 0 975 011265 1076 TAD [7000 /4 COUNTS FOR 2 WORDS 976 011266 3037 DCA OUCHCT 977 011267 1075 TAD [1377 978 011270 3040 DCA OUPTR 979 011271 5664 JMP I OUSETP 980 981 011272 0000 TSTXSW, 0 /SUBROUTINE TO IGNORE COMMENTS ON INPUT 982 011273 1031 TAD CHAR /IF "X" SWITCH SET 983 011274 1074 TAD [-257 984 011275 7650 SNA CLA 985 011276 1023 TAD XSW /IF XSW IS OFF OR THE CURRENT CHAR ISN'T A / 986 011277 7650 SNA CLA 987 011300 5672 JMP I TSTXSW /RETURN 988 011301 4473 JMS I [GCHAR 989 011302 1031 TAD CHAR /SKIP CHARACTERS UNTIL CARRIAGE RETURN 990 011303 7640 SZA CLA 991 011304 5301 JMP .-3 992 011305 7344 TSTXLP, CLA CLL CMA RAL 993 011306 1402 TAD I T 994 011307 7650 SNA CLA /ARE WE AT THE BEGINNING OF A LINE? 995 011310 5672 JMP I TSTXSW /YES - GLINE WILL DELETE IT IF NECESSARY 996 011311 1011 TAD XR1 997 011312 3330 DCA TX 998 011313 1730 TAD I TX 999 011314 1072 TAD [-240 1000 011315 7440 SZA /IS THE PREVIOUS CHARACTER A SPACE 1001 011316 1165 TAD [240-211 1002 011317 7640 SZA CLA /OR A TAB? 1003 011320 5672 JMP I TSTXSW /NO 1004 011321 7040 CMA 1005 011322 1011 TAD XR1 1006 011323 3011 DCA XR1 /BACK UP CHAR PTR 1007 011324 7040 CMA 1008 011325 1402 TAD I T 1009 011326 3402 DCA I T /AND CHAR CTR 1010 011327 5305 JMP TSTXLP /LOOP 1011 011330 0000 TX, 0 1012 011331 3036 SRCOPT, DCA OUHNDL 1013 011332 1471 TAD I [MPARAM 1014 011333 7040 CMA 1015 011334 0123 AND [1000 /"C" OPTION 1016 011335 1074 TAD [-257 1017 011336 3020 DCA CSW 1018 011337 7332 CLA CLL CML RTR 1019 011340 0471 AND I [MPARAM 1020 011341 3024 DCA ALLSW /"B" OPTION 1021 011342 1470 TAD I [MPARAM+1 1022 011343 7040 CMA 1023 011344 0067 AND [40 /"S" OPTION 1024 011345 1072 TAD [-240 1025 011346 3021 DCA SSW 1026 011347 1470 TAD I [MPARAM+1 1027 011350 0066 AND [20 /"T" OPTION 1028 011351 3022 DCA TSW 1029 011352 7201 CLA IAC 1030 011353 0470 AND I [MPARAM+1 1031 011354 3023 DCA XSW /"X" OPTION 1032 011355 1465 TAD I [MPARAM+3 1033 011356 7041 CIA /GET NEGATIVE OF NUMERICAL ARGUMENT 1034 011357 7450 SNA 1035 011360 7346 CLA CLL CMA RTL /DEFAULT VALUE IS 3 1036 011361 3025 DCA NUMLIN /TO NUMBER OF LINES NECESSARY FOR A MATCH 1037 011362 5763 JMP I .+1 1038 011363 0600 STARTC 1039 1040 011364 0323 HEDING, "S;"R;"C;"C;"O;"M;" ;"V;VERSION+"0;PATCH;212;0 011365 0322 011366 0303 011367 0303 011370 0317 011371 0315 011372 0240 011373 0326 011374 0264 011375 0301 011376 0212 011377 0000 1041 /PAGE 0 LITERALS FOR FIELD 1 1042 010065 7646 $-$-$ /END OF ASSEMBLY OF SRCCOM 010066 0020 010067 0040 010070 7644 010071 7643 010072 7540 010073 0456 010074 7521 010075 1377 010076 7000 010077 0305 010100 0332 010101 0377 010102 0232 010103 0214 010104 0047 010105 0252 010106 0211 010107 0007 010110 0240 010111 0260 010112 0251 010113 0261 010114 7774 010115 1200 010116 0212 010117 1122 010120 7770 010121 7561 010122 1136 010123 1000 010124 4412 010125 0271 010126 0235 010127 1014 010130 0364 010131 1170 010132 1363 010133 1264 010134 0215 010135 0015 010136 7762 010137 7776 010140 0164 010141 7601 010142 0177 010143 7400 010144 0010 010145 7571 010146 1162 010147 7564 010150 6203 010151 6556 010152 0401 010153 7577 010154 7576 010155 7567 010156 7570 010157 6201 010160 7556 010161 0351 010162 1227 010163 1272 010164 0400 010165 0027 010166 0002 010167 1777 010170 7560 010171 2000 010172 7562 010173 7563 010174 7557 010175 7600 010176 7575 010177 0200 ALLSW 0024 ASSOUT 0250 BUFLIM 6555 CHAR 0031 COMP0 0310 unreferenced COMP1 0302 COMP2 0305 COMP3 0323 COMP4 0326 COMP5 0315 COMPL 0271 CORE 0002 CSW 0020 CT 0003 CTCCHK 0045 CURLIN 7557 DIFFS 0044 DIGLP1 1052 DIGLP2 1054 DVPAGE 0116 EOCOMP 1136 F1 0000 F2 0010 FBLOCK 7556 FFEED 0572 FINISH 0723 GCHAR 0456 GEOF 0574 GETCNT 0027 GETFIL 0030 GETIN 0530 GETTWO 0364 GLEXIT 0450 GLINE 0400 GLINE2 0417 GTOUHN 0227 HEDING 1364 IFPTR 0025 INBUF 6556 INCHCT 7567 INEOF 7576 INERR 1162 INERR1 0344 INHNDL 7575 INPTR 7570 INRCNT 7577 INREC 7571 INST1 0265 INST2 0076 INTEMP 7564 IPTR 0032 KEEPON 0224 LNBEG 2000 MAIN 0616 MAIN10 0633 MAIN12 0637 MAIN14 0654 MAIN15 0667 MAIN17 0706 MAIN18 0720 MAINST 0622 unreferenced MLIMIT 0026 MLOOP 0256 MOVEUP 0235 MOVXIT 0264 MPARAM 7643 MULT2 0744 MULT4 0750 MULT6 0752 MULTI 0732 NOCHN 0343 NODFMS 0050 NOROOM 0351 NOSRCD 0213 NUMLIN 0025 NUMTMP 0033 OCDF 1262 OCHAR 1200 OCLOSE 0321 OCOUNT 0332 OFILNM 0021 OLDLIN 7562 OLDPTR 7563 OLEN 0305 ORCNO 0304 OUCHCT 0037 OUCOMN 1237 OUERR1 0350 OUERR2 1256 OUHNDL 0036 OUNORM 1233 OUPAGE 0253 OUPTR 0040 OUREC 1246 OUSETP 1264 OUTEMP 0042 OUXPTR 0041 PATCH 0301 PFILNM 0331 PGNUM 7556 PLNCNT 0034 PN7200 1062 PNTAST 1122 PNTBTH 1000 PNTCHR 1110 PNTCLP 1102 PNTCR 1113 PNTHDG 1170 PNTLP 1020 PNTPGN 0035 PNTTAB 1071 PNTTAD 1057 PNTTXT 1014 SCT 0020 SETCDF 0132 SETONE 0200 SETOPT 0204 SETRST 0231 SETUP 0067 SETUP1 0026 SETUP2 0050 SRCATS 0334 SRCCD 0204 SRCCOM 0200 unreferenced SRCOPT 1331 SSW 0021 STARTC 0600 SWAPCT 0762 SWAPX 0770 T 0002 T1 0000 T2 0001 TABCT 0043 TENTAD 1156 TLNNUM 0230 TLOOP 0213 TMPLIN 7561 TOPLIN 7560 TSTXLP 1305 TSTXSW 1272 TSW 0022 TTYNO 0241 TX 1330 TYPE 0372 VERSIO 0004 XR 0010 XR1 0011 XR2 0012 XSW 0023