File: SRCC50.LS of Disk: V50/Source/Source-Listing-PAL-2
(Source file text)
/ OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 1 / OS8 SOURCE COMPARE V50 / / / / / / / / / /COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY /DIGITAL. / / / / / / / / / / / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 2 /LAST EDITED 4/28/77 / / /COPYRIGHT 1973,1977 /DIGITAL EQUIPMENT CORPORATION /MAYNARD, MASS. 01754 / /PDP-8 SOURCE COMPARISON PROGRAM /STOLEN FROM PDP-10 SRCCOM BY R. LARY DECIMAL 0062 VERSIO= 50 /CHANGE EVERY MAJOR EDIT 0301 PATCH="A OCTAL /GERMAN=1 IFNDEF CORE <CORE=2 /DEFAULT IS 8K SYSTEM> 7643 MPARAM=7643 /COMMAND DECODER PARAMETER BLOCK 0000 IFZERO CORE-2 <F1=0 /FIELD FOR FILE 1 0010 F2=10 /FIELD FOR FILE 2 2000 LNBEG=2000 /BEGINNING OF LINE BUFFER > IFZERO CORE-4 <F1=20 F2=30 LNBEG=20 > 6555 BUFLIM=FBLOCK-1001 /END OF LINE BUFFER 6556 INBUF=FBLOCK-1000 /INPUT BUFFER / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 3 /SRCCOM FIELD 0 PAGE 0 0000 FIELD 0 0001 *1 000001 6232 CIF 30 000002 5001 JMP 1 /FOR SYMBIONT 0010 XR=10 0020 *20 000020 0000 SCT, 0 /TEMPORARY 000021 0000 OFILNM, ZBLOCK 4 /OUTPUT FILE NAME 000025 0000 IFPTR, 0 /TEMPORARY SETUP1, NOPUNCH 7556 *7556 /JAM PARAMETERS UP AGAINST TOP OF USER CORE FBLOCK, ENPUNCH /LAYOUT OF FILE PARAMETER TABLE /THERE IS A COPY OF THIS TABLE IN FIELDS F1 AND F2. EACH COPY /CONTAINS ALL THE INFORMATION ABOUT THE FILE WHOSE BUFFERS /ARE IN THE SAME FIELD 007556 0001 PGNUM, 1 /CURRENT INPUT PAGE 007557 0000 CURLIN, 0 /CURRENT LINE (IN LINE BUFFER) 007560 0000 TOPLIN, 0 /NUMBER OF LINES IN LINE BUFFER 007561 0000 TMPLIN, 0 /TEMPORARY STORAGE FOR "CURLIN" 007562 0001 OLDLIN, 1 /LINE OPTIMIZATION COUNTER 007563 2000 OLDPTR, LNBEG /LINE OPTIMIZATION POINTER /THE NEXT SEVERAL WORDS ARE A SUBROUTINE /WHICH READS A BUFFER IN FROM THE INPUT FILE 007564 0000 INTEMP, 0 /SHIFT REGISTER FOR "GCHAR" ROUTINE 007565 6202 CIF 0 007566 4775 JMS I INHNDL 007567 7777 INCHCT, 7777 /COUNT OF CHARACTERS IN BUFFER 007570 0000 INPTR, 0 /POINTS TO CURRENT WORD IN BUFFER 007571 0000 INREC, 0 /CONTAINS CURRENT INPUT RECORD 007572 2364 ISZ INTEMP /SUBROUTINE SKIPS ON INPUT ERROR 007573 6212 CIF 10 007574 5764 JMP I INTEMP 007575 0000 INHNDL, 0 /POINTS TO ENTRY POINT OF INPUT HANDLER 007576 0000 INEOF, 0 /END-OF-FILE INDICATOR 007577 0000 INRCNT, 0 /COUNT OF RECORDS REMAINING IN THIS FILE IFNZRO .-7600 <_ERROR_> 0050 *SETUP1+.-FBLOCK/PUT ASSEMBLER LOCATION COUNTER BACK 0050 SETUP2=. / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 4 /CORE ALLOCATION FOR 8K SYSTEM / FIELD 0 / /0000-0377 CONTROL CODE /0400-0777 INPUT HANDLER 1 /1000-1377 INPUT HANDLER 2 /1400-1777 OUTPUT HANDLER /2000-6555 FILE 1 LINE BUFFER /6556-7555 FILE 1 INPUT BUFFER /7556-7577 FILE 1 CONTROL BLOCK / / FIELD 1 / /0000-1377 SRCCOM PROPER /1400-1777 OUTPUT BUFFER /2000-6555 FILE 2 LINE BUFFER /6556-7555 FILE 2 INPUT BUFFER /7556-7577 FILE 2 CONTROL BLOCK / / / FORMAT OF LINE BUFFER: / THE LINE BUFFER CONSISTS OF SOURCE LINES. THE FIRST WORD / OF EACH LINE IS A LENGTH WORD GIVING THE LENGTH OF THE / LINE (INCLUDING THE LENGTH WORD ITSELF) AS A POSITIVE / NUMBER. THE NEXT WORD IS THE NUMBER OF THE SOURCE PAGE / ON WHICH THIS LINE WAS FOUND. SUBSEQUENT WORDS CONTAIN THE / CHARACTERS OF THE LINE ITSELF, PACKED ONE PER WORD. NODFMS, 000050 0316 IFNDEF GERMAN < "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 IFDEF GERMAN < "I;"d;"e;"n;"t;"i;"s;"c;"h;"!;0 ;0 ;0 ;0 ;0> / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 5 000067 0000 SETUP, 0 /ROUTINE TO SET UP FILE PARAMETERS 000070 1177 TAD [SETUP1-SETUP2 000071 3020 DCA SCT 000072 1176 TAD [TAD SETUP1 000073 3076 DCA INST2 000074 1175 TAD [FBLOCK-1 000075 3010 DCA XR 000076 7402 INST2, HLT /MOVE THE SKELETON PARAMETER BLOCK 000077 3410 DCA I XR /UP INTO THE DESIRED FIELD 000100 2076 ISZ INST2 000101 2020 ISZ SCT 000102 5076 JMP INST2 000103 6214 RDF 000104 1174 TAD [6201 000105 3132 DCA SETCDF /SAVE FIELD NUMBER 000106 6211 CDF 10 000107 1425 TAD I IFPTR 000110 6201 CDF 0 000111 7450 SNA 000112 5573 JMP I [INERR1 /NO INPUT FILE - BAD 000113 6212 CIF 10 000114 4572 JMS I [200 /ASSIGN DEVICE HANDLER 000115 0001 1 000116 0000 DVPAGE, 0 000117 7402 HLT /NEVER HOPPEN 000120 6211 CDF 10 000121 1425 TAD I IFPTR 000122 0171 AND [7760 /COMPUTE FILE LENGTH 000123 7440 SZA 000124 1170 TAD [17 000125 7132 CLL CML RTR 000126 7012 RTR 000127 3020 DCA SCT /SAVE IT AWAY TEMPORARILY 000130 2025 ISZ IFPTR 000131 1425 TAD I IFPTR 000132 7402 SETCDF, HLT /RESET DATA FIELD 000133 3567 DCA I [INREC /SAVE STARTING BLOCK NUMBER 000134 1020 TAD SCT 000135 3566 DCA I [INRCNT /SAVE FILE LENGTH 000136 1116 TAD DVPAGE 000137 3565 DCA I [INHNDL /SAVE DEVICE HANDLER ENTRY POINT 000140 2025 ISZ IFPTR 000141 5467 JMP I SETUP /RETURN / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 6 0200 *200 /INITIALIZATION CODE 000200 2343 SRCCOM, ISZ NOCHN 000201 6212 CIF 10 000202 4564 JMS I [7700 000203 0010 10 /BRING USR INTO CORE 000204 1343 SRCCD, TAD NOCHN /HAVE WE BEEN CHAINED TO? 000205 7650 SNA CLA 000206 5213 JMP NOSRCD /YES 000207 6212 CIF 10 000210 4572 JMS I [200 000211 0005 5 /COMMAND DECODE 000212 0000 0 /NO DEFAULT EXTENSIONS 000213 1163 NOSRCD, TAD [7617 000214 3025 DCA IFPTR /SET IFPTR POINTING TO FILE 1 000215 1162 TAD [401 000216 3116 DCA DVPAGE /FILE 1 HANDLER GOES IN 400-777 000217 6201 CDF F1 000220 4067 JMS SETUP /SET UP FILE 1 PARAMETER AREA 000221 1161 TAD [1001 000222 3116 DCA DVPAGE /FILE 2 HANDLER GOES INTO 1000-1377 000223 6211 CDF F2 000224 4067 JMS SETUP /SET UP FILE 2 PARAMETER AREA 000225 1160 TAD [1401 000226 3253 DCA OUPAGE /OUTPUT HANDLER GOES INTO 1400-1777 000227 6211 GTOUHN, CDF 10 000230 1557 TAD I [7600 /GET OUTPUT DEVICE # 000231 6201 CDF 0 000232 7440 SZA /IS THERE ONE? 000233 5250 JMP ASSOUT 000234 3241 DCA TTYNO 000235 6212 CIF 10 /NO - LOOK UP "TTY" 000236 4572 JMS I [200 000237 0012 12 /INQUIRE 000240 5524 5524 /=2424+3100 = TTY 000241 0000 TTYNO, 0 000242 0000 0 000243 5350 JMP OUERR1 /NO TELETYPE 000244 1241 TAD TTYNO 000245 6211 CDF 10 000246 3557 DCA I [7600 000247 5227 JMP GTOUHN /BACK TO GET IT AGAIN 000250 6212 ASSOUT, CIF 10 000251 4572 JMS I [200 000252 0001 1 000253 0000 OUPAGE, 0 000254 5350 JMP OUERR1 / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 7 000255 1156 TAD [-4 000256 3020 DCA SCT 000257 1157 TAD [7600 000260 3010 DCA XR 000261 1155 TAD [DCA OFILNM 000262 3265 DCA INST1 000263 6211 CDF 10 /MOVE OUTPUT FILE NAME INTO FIELD 0 000264 1410 TAD I XR 000265 7402 INST1, HLT 000266 2265 ISZ INST1 000267 2020 ISZ SCT 000270 5264 JMP INST1-1 000271 1331 TAD PFILNM 000272 3304 DCA ORCNO /SET UP ENTER 000273 1024 TAD OFILNM+3 000274 7450 SNA 000275 1154 TAD [1423 /ASSUMED OUTPUT EXTENSION = .LS 000276 3024 DCA OFILNM+3 000277 1557 TAD I [7600 000300 6201 CDF 0 000301 6212 CIF 10 000302 4572 JMS I [200 000303 0003 3 000304 0000 ORCNO, 0 /POINTS TO FILE NAME 000305 0000 OLEN, 0 000306 5350 JMP OUERR1 000307 6212 CIF 10 000310 4572 JMS I [200 000311 0011 11 /KICK USR OUT OF CORE 000312 3332 DCA OCOUNT 000313 6213 CDF CIF 10 000314 1304 TAD ORCNO 000315 3553 DCA I [OUREC 000316 1253 TAD OUPAGE 000317 5720 JMP I .+1 000320 1330 SRCOPT /GO SET UP OPTION SWITCHES AND COMPARE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 8 000321 6212 OCLOSE, CIF 10 000322 4564 JMS I [7700 000323 0010 10 /GET USR INTO CORE 000324 6213 CDF CIF 10 000325 1557 TAD I [7600 /GET OUTPUT DEVICE NUMBER 000326 6201 CDF 0 000327 4572 JMS I [200 000330 0004 4 /CLOSE OUTPUT FILE 000331 0021 PFILNM, OFILNM 000332 0000 OCOUNT, 0 /COUNT OF BLOCKS WRITTEN 000333 5350 JMP OUERR1 /ERROR ON CLOSE 000334 2343 SRCATS, ISZ NOCHN /IN CASE WE LOOP, CLEAR "CHAINED TO" FLAG 000335 6211 CDF 10 000336 1552 TAD I [MPARAM-1 /GET ALTMODE FLAG 000337 6201 CDF 0 000340 7710 SPA CLA 000341 5551 JMP I [7605 /GO AWAY IF ALTMODE 000342 5204 JMP SRCCD /GO BACK FOR MORE 000343 0000 NOCHN, 0 000344 6214 INERR1, RDF 000345 7112 CLL RTR 000346 7010 RAR 000347 1156 TAD [-4 000350 1150 OUERR1, TAD [4005 000351 1147 NOROOM, TAD [260 000352 3067 DCA SETUP 000353 1146 TAD [277 000354 4372 JMS TYPE /OUTPUT "?N" WHERE N IS THE ERROR NUMBER 000355 1067 TAD SETUP 000356 4372 JMS TYPE 000357 1145 TAD [215 000360 4372 JMS TYPE 000361 1144 TAD [212 000362 4372 JMS TYPE 000363 1067 TAD SETUP 000364 7710 SPA CLA /IS THE USR IN CORE? 000365 5334 JMP SRCATS /YES - DON'T LOAD IT 000366 6212 CIF 10 000367 4564 JMS I [7700 /NO - LOAD IT 000370 0010 10 000371 5334 JMP SRCATS 000372 0000 TYPE, 0 000373 6046 TLS 000374 6041 TSF 000375 5374 JMP .-1 000376 7200 CLA 000377 5772 JMP I TYPE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 9 / PAGE 0 LITERALS 000144 0212 000145 0215 000146 0277 000147 0260 000150 4005 000151 7605 000152 7642 000153 1245 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 0001 FIELD 1 / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 10 /PAGE 0 FOR SRCCOM 0000 *0 010000 0000 T1, 0 010001 0000 T2, 0 010002 0000 T, 0 010003 0000 CT, 0 0011 XR1=11 0012 XR2=12 0020 *20 /*************** SRCCOM SWITCHES *************** 010020 0000 CSW, 0 /"C" SWITCH - ON=-257, MEANING IGNORE COMMENTS / OFF=+521, MEANING COMPARE COMMENTS 010021 0000 SSW, 0 /"S" SWITCH - ON=-240, MEANING IGNORE SPACES & TABS / OFF=-200, MEANING COMPARE SPACES&TABS 010022 0000 TSW, 0 /"T" SWITCH - ON=20 , MEANING CONVERT TABS ON OUTPUT / OFF=0 , MEANING PRINT TABS ON OUTPUT 010023 0000 XSW, 0 /"X" SWITCH - ON=1 , MEANING DON'T INPUT COMMENTS / OFF=0 , MEANING INPUT COMMENTS INTO CORE 010024 0000 ALLSW, 0 /"B" SWITCH - ON=2000, MEANING COMPARE BLANK LINES / OFF=0 , MEANING IGNORE BLANK LINES 010025 0000 NUMLIN, 0 /NUMERICAL ARGUMENT - NUMBER OF LINES CONSTITUTING /A MATCH - SET TO -3 IF NO NUMERICAL ARGUMENT 010026 0000 MLIMIT, 0 010027 0000 GETCNT, 0 010030 0000 GETFIL, 0 010031 0000 CHAR, 0 010032 0000 IPTR, 0 010033 0000 NUMTMP, 0 010034 0000 PLNCNT, 0 010035 0000 PNTPGN, 0 010036 0000 OUHNDL, 0 /THESE 5 WORDS ARE USED BY OUTPUT ROUTINE 010037 0000 OUCHCT, 0 010040 0000 OUPTR, 0 010041 0000 OUXPTR, 0 010042 0000 OUTEMP, 0 010043 0000 TABCT, 0 010044 0000 DIFFS, 0 /DIFFERENCES FOUND FLAG 010045 0000 CTCCHK, 0 010046 1177 TAD [200 010047 6034 KRS /GET A CHAR FROM THE TELETYPE 010050 1176 TAD [-203 /CHECK FOR EITHER PARITY ^C 010051 7650 SNA CLA 010052 6031 KSF /WITH THE KEYBOARD FLAG UP 010053 5445 JMP I CTCCHK /NOPE 010054 6203 CDF CIF 0 /YUP - RETURN TO OS/8 010055 5575 JMP I [7600 / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 11 0200 PAGE 010200 0000 SETONE, 0 /ROUTINE TO FIND WHERE A LINE IS 010201 1574 TAD I [CURLIN /GET LINE NUMBER 010202 3230 DCA TLNNUM /SAVE IT AWAY 010203 1573 TAD I [OLDPTR /GET THE POINTER TO THE LATEST LINE 010204 3002 SETOPT, DCA T /SAVE THE STARTING POINTER 010205 1230 TAD TLNNUM /GET THE TARGET LINE 010206 7140 CMA CLL 010207 1572 TAD I [OLDLIN /IS IT BEFORE OR AFTER THE LATEST LINE? 010210 7430 SZL 010211 5231 JMP SETRST /BEFORE - WE MUST START SEARCHING FROM LINE 1 010212 3003 DCA CT /AFTER - START SEARCHING FROM LATEST LINE 010213 2003 TLOOP, ISZ CT 010214 5224 JMP KEEPON /NOT THERE YET 010215 1230 TAD TLNNUM /WE FOUND IT - MAKE THIS LINE 010216 3572 DCA I [OLDLIN /THE NEW "LATEST LINE" 010217 1002 TAD T /TO SPEED UP 010220 3573 DCA I [OLDPTR /FUTURE SEARCHES. 010221 7240 CLA CMA 010222 1002 TAD T 010223 5600 JMP I SETONE /RETURN POINTER FOR AUTO-XR 010224 1402 KEEPON, TAD I T 010225 1002 TAD T /ADD LENGTH OF THIS LINE TO POINTER 010226 3002 DCA T /TO GET POINTER TO NEXT LINE 010227 5213 JMP TLOOP 010230 0000 TLNNUM, 0 /TEMPORARY FOR SETONE - DO NOT USE ANYWHERE ELSE 010231 7201 SETRST, CLA IAC /RESET THE "LATEST LINE" POINTERS TO THE FIRST 010232 3572 DCA I [OLDLIN /LINE, SINCE THE LINE WE SEEK IS BEFORE 010233 1171 TAD [LNBEG /THE CURRENT "LATEST LINE" 010234 5204 JMP SETOPT /GO BACK AND FIND THE LINE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 12 010235 0000 MOVEUP, 0 /SUBR TO DELETE LINES FROM CORE 010236 1574 TAD I [CURLIN /GET FIRST LINE NOT TO BE DELETED 010237 7041 CIA 010240 1570 TAD I [TOPLIN 010241 3570 DCA I [TOPLIN /REDUCE THE NUMBER OF LINES IN THE BUFFER 010242 1570 TAD I [TOPLIN /GET NEW LINE COUNT 010243 7450 SNA /IF ALL LINES DELETED, DON'T MOVE CORE 010244 5264 JMP MOVXIT /JUST CLEAN UP AND GET OUT 010245 7001 IAC 010246 4200 JMS SETONE /GET POINTER TO LAST LINE+1 010247 7041 CIA 010250 3026 DCA MLIMIT /SAVE AS LIMIT ON MOVE 010251 7001 IAC 010252 4200 JMS SETONE /GET POINTER TO THE FIRST LINE NOT TO DELETE 010253 3011 DCA XR1 010254 1167 TAD [LNBEG-1 010255 3012 DCA XR2 010256 1411 MLOOP, TAD I XR1 010257 3412 DCA I XR2 /AREN'T AUTO-XRS WONDERFUL 010260 1011 TAD XR1 010261 1026 TAD MLIMIT /(ACTUALLY, NO) 010262 7640 SZA CLA 010263 5256 JMP MLOOP 010264 7201 MOVXIT, CLA IAC /AFTER MOVING CORE AROUND, WE MUST 010265 3572 DCA I [OLDLIN /RESET THE "LATEST LINE" POINTERS TO THE FIRST 010266 1171 TAD [LNBEG /LINE SINCE IT IS THE ONLY ONE WHICH 010267 3573 DCA I [OLDPTR /HAS A KNOWN POSITION. 010270 5635 JMP I MOVEUP / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 13 010271 0000 COMPL, 0 /SUBROUTINE TO COMPARE TWO LINES 010272 6201 CDF F1 010273 4200 JMS SETONE /GET POINTER TO CURRENT LINE IN FILE 1 010274 1166 TAD [2 /SKIP OVER PROLOGUE 010275 3011 DCA XR1 010276 6211 CDF F2 010277 4200 JMS SETONE /GET POINTER TO CURRENT LINE IN FILE 2 010300 1166 TAD [2 /SKIP OVER PROLOGUE 010301 3012 DCA XR2 010302 6201 COMP1, CDF F1 010303 1411 TAD I XR1 /GET A CHAR FROM FILE 1 010304 3000 DCA T1 010305 6211 COMP2, CDF F2 010306 1412 TAD I XR2 010307 3001 DCA T2 /AND A CHAR FROM FILE 2 010310 1001 COMP0, TAD T2 010311 7041 CIA 010312 1000 TAD T1 010313 7640 SZA CLA /ARE THEY EQUAL? 010314 5326 JMP COMP4 /NO 010315 1000 COMP5, TAD T1 010316 7440 SZA 010317 1020 TAD CSW /IF AT END OF LINE, OR IF AT A "/" 010320 7640 SZA CLA /AND "IGNORE COMMENTS" SWITCH ON, 010321 5302 JMP COMP1 010322 5671 JMP I COMPL /TAKE "LINES MATCH" RETURN 010323 6201 COMP3, CDF F1 010324 1411 TAD I XR1 /GET THE NEXT CHAR FROM FILE 1 010325 3000 DCA T1 010326 1000 COMP4, TAD T1 010327 1021 TAD SSW /IF T1 IS A BLANK OR A TAB 010330 7440 SZA 010331 1165 TAD [27 /(27=BLANK-TAB) 010332 7650 SNA CLA /AND WE ARE IGNORING BLANKS, 010333 5323 JMP COMP3 /THEN IGNORE T1 010334 1001 TAD T2 010335 1021 TAD SSW /DO THE SAME WITH T2 010336 7440 SZA 010337 1165 TAD [27 010340 7650 SNA CLA 010341 5305 JMP COMP2 010342 1000 TAD T1 010343 7041 CIA 010344 1001 TAD T2 /NOW THAT WE HAVE (MAYBE) ELIMINATED BLANKS 010345 7650 SNA CLA /ARE T1 AND T2 STILL UNEQUAL? 010346 5315 JMP COMP5 /NO - THERE'S STILL HOPE 010347 1000 TAD T1 /YES - NOW TEST COMMENT SWITCH 010350 7040 CMA 010351 0001 AND T2 010352 1020 TAD CSW /IF T1 IS A CARRIAGE RETURN AND T2 IS A "/" 010353 7650 SNA CLA /WITH THE COMMENT SWITCH ON WE'VE SUCEEDED 010354 5671 JMP I COMPL /SO TAKE "LINES MATCH" RETURN 010355 1001 TAD T2 / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 13-1 010356 7040 CMA 010357 0000 AND T1 /SAME IF T2=CARRIAGE RETURN AND T1="/" 010360 1020 TAD CSW 010361 7640 SZA CLA 010362 2271 ISZ COMPL /OTHERWISE TAKE "LINES DON'T MATCH" RETURN 010363 5671 JMP I COMPL 010364 0000 GETTWO, 0 /SUBROUTINE TO GET A LINE FROM EACH FILE 010365 7346 CLA CLL CMA RTL 010366 3027 DCA GETCNT 010367 3030 DCA GETFIL /ZERO INDICATOR AS TO WHICH FILE IS NULL 010370 6201 CDF F1 010371 4564 JMS I [GLINE /GET A LINE FROM FILE 1 010372 6211 CDF F2 010373 4564 JMS I [GLINE /DITTO FILE 2 010374 2027 ISZ GETCNT /HOW MANY LINES DID WE GET? 010375 5764 JMP I GETTWO /LESS THAN TWO - TAKE EOF RETURN 010376 2364 ISZ GETTWO 010377 5764 JMP I GETTWO /TAKE NORMAL RETURN 0400 PAGE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 14 010400 0000 GLINE, 0 /SUBROUTINE TO GET A LINE FROM A FILE 010401 1574 TAD I [CURLIN 010402 7041 CIA 010403 1570 TAD I [TOPLIN 010404 7640 SZA CLA /IS THE LINE IN CORE? 010405 5250 JMP GLEXIT /YES 010406 7201 CLA IAC 010407 4577 JMS I [SETONE /GET POINTER TO THIS LINE 010410 3011 DCA XR1 010411 7326 CLA CLL CML RTL 010412 3411 DCA I XR1 /SET WORD COUNT TO 2 010413 1011 TAD XR1 010414 3002 DCA T /SAVE POINTER TO LENGTH WORD 010415 4045 JMS CTCCHK /CHECK FOR ^C TYPED 010416 2011 ISZ XR1 010417 4256 GLINE2, JMS GCHAR /MAIN LOOP - GET A CHARACTER 010420 4563 JMS I [TSTXSW /SEE WHETHER WE SHOULD INPUT COMMENTS 010421 7344 CLA CLL CMA RAL 010422 1031 TAD CHAR 010423 1024 TAD ALLSW /IF THE CHAR IS A CARRIAGE RETURN AND THE 010424 1402 TAD I T /"B" SWITCH IS OFF AND THE LINE COUNT IS 2, 010425 7650 SNA CLA /THEN WE SHOULD IGNORE THIS BLANK LINE. 010426 5217 JMP GLINE2 010427 1031 TAD CHAR 010430 3411 DCA I XR1 /SALT IT AWAY 010431 1011 TAD XR1 010432 7100 CLL 010433 1162 TAD [4-BUFLIM /COMPARE AGAINST END OF BUFFER 010434 7620 SNL CLA 010435 5240 JMP .+3 010436 6203 CDF CIF 0 /LINE OVERFLOWS CORE - BAD! 010437 5561 JMP I [NOROOM /TELL THE WORLD 010440 2402 ISZ I T /BUMP COUNTER OF WORDS IN LINE 010441 1031 TAD CHAR 010442 7640 SZA CLA /WAS IT A CARRIAGE RETURN? 010443 5217 JMP GLINE2 /NO 010444 2570 ISZ I [TOPLIN /YES - BUMP COUNT OF LINES IN CORE 010445 2002 ISZ T 010446 1560 TAD I [PGNUM 010447 3402 DCA I T 010450 2027 GLEXIT, ISZ GETCNT /BUMP COUNTER OF # OF LINES GOTTEN 010451 6214 RDF 010452 1157 TAD [6201 010453 3030 DCA GETFIL /INDICATE THAT THIS FILE WAS NOT NULL 010454 2574 ISZ I [CURLIN /BUMP CURRENT LINE POINTER 010455 5600 JMP I GLINE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 15 010456 0000 GCHAR, 0 /SUBROUTINE TO GET A CHAR FROM A FILE 010457 1556 TAD I [INPTR 010460 3032 DCA IPTR /SAVE POINTER TO CURRENT BUFFER WORD 010461 2555 ISZ I [INCHCT /BUMP CHAR COUNTER 010462 5330 JMP GETIN 010463 1554 TAD I [INEOF /END OF BUFFER 010464 7640 SZA CLA /END OF FILE?? 010465 5375 JMP GEOF+1 /YES 010466 7326 CLA CLL CML RTL 010467 1553 TAD I [INRCNT /BUMP COUNT OF REMAINING RECORDS BY 2 010470 7430 SZL /OVERFLOW? 010471 2554 ISZ I [INEOF /YES - SET END OF FILE FLAG 010472 7420 SNL 010473 3553 DCA I [INRCNT /RESTORE COUNTER IF NO OVERFLOW 010474 7166 CLL CMA CML RTL 010475 7006 RTL 010476 7006 RTL 010477 1152 TAD [401 /COMPUTE INPUT CONTROL WORD 010500 6214 RDF 010501 3555 DCA I [INCHCT 010502 1151 TAD [INBUF 010503 3556 DCA I [INPTR /PUT BUFFER ADDRESS INTO CALLING SEQUENCE 010504 6214 RDF 010505 1150 TAD [6203 010506 3307 DCA .+1 010507 7000 NOP /SET INSTRUCTION FIELD TO DATA FIELD 010510 4547 JMS I [INTEMP /CALL SUBR TO READ IN BUFFER 010511 5315 JMP .+4 /NO ERROR 010512 7710 SPA CLA /FATAL ERROR? 010513 5546 JMP I [INERR /YES 010514 2554 ISZ I [INEOF /NO - SET END OF FILE FLAG 010515 2545 ISZ I [INREC 010516 2545 ISZ I [INREC /BUMP RECORD NUMBER BY 2 010517 1144 TAD [10 010520 3547 DCA I [INTEMP /INITIALIZE SHIFT REGISTER 010521 1555 TAD I [INCHCT 010522 7104 CLL RAL 010523 1555 TAD I [INCHCT 010524 0175 AND [7600 010525 7040 CMA 010526 3555 DCA I [INCHCT /COMPUTE CHAR COUNT FROM BUFFER CONTROL WD 010527 5257 JMP GCHAR+1 /START ALL OVER WITH NEW BUFFER / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 16 010530 1547 GETIN, TAD I [INTEMP 010531 7510 SPA /IF WE HAVE A CHAR IN THE SHIFT BUFFER 010532 3432 DCA I IPTR /WRITE OVER THE CURRENT BUFFER WORD WITH IT 010533 3547 DCA I [INTEMP /AND ZERO THE SHIFT BUFFER 010534 1432 TAD I IPTR /GET THE CURRENT BUFFER WORD 010535 0143 AND [7400 010536 7104 CLL RAL 010537 1547 TAD I [INTEMP 010540 7006 RTL /SHIFT THE HIGH ORDER 4 BITS 010541 7006 RTL /INTO THE SHIFT BUFFER 010542 7500 SMA /DID WE GET A COMPLETE CHARACTER? 010543 2556 ISZ I [INPTR /NO - BUMP WORD POINTER 010544 3547 DCA I [INTEMP 010545 1432 TAD I IPTR 010546 0142 AND [177 /USE LOW ORDER 7 BITS OF THE CURRENT WORD 010547 7440 SZA /AS THE CHARACTER 010550 1141 TAD [-177 /IGNORING BLANK TAPE, RUBOUTS, LINE-FEEDS 010551 7440 SZA /AND VERT. TABS 010552 1140 TAD [177-13 010553 7440 SZA 010554 7001 IAC 010555 7450 SNA 010556 5257 JMP GCHAR+1 010557 1137 TAD [12-14 010560 7450 SNA 010561 5372 JMP FFEED /FORM FEED IS SPECIAL 010562 1136 TAD [14-32 010563 7450 SNA 010564 5374 JMP GEOF /^Z SIGNIFIES END-OF-FILE 010565 1135 TAD [32-15 010566 7440 SZA 010567 1134 TAD [215 /AND CARRIAGE RETURN IS MAPPED INTO 0 010570 3031 DCA CHAR 010571 5656 JMP I GCHAR 010572 2560 FFEED, ISZ I [PGNUM /BUMP THE PROPER PAGE COUNT ON A FORM FEED 010573 5257 JMP GCHAR+1 /BUT OTHERWISE IGNORE IT 010574 2554 GEOF, ISZ I [INEOF /SET END-OF-FILE FLAG 010575 7240 CLA CMA 010576 3555 DCA I [INCHCT /FORCE AN EMPTY BUFFER 010577 5600 JMP I GLINE /RETURN FROM GLINE WITHOUT SETTING GETFIL 0600 PAGE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 17 / INITIALIZATION 010600 4533 STARTC, JMS I [OUSETP /INITIALIZE OUTPUT BUFFER POINTERS 010601 7201 CLA IAC 010602 3035 DCA PNTPGN /FUDGE PNTPGN WHILE PRINTING HEADER LINES 010603 1132 TAD [HEDING-1 010604 4531 JMS I [PNTHDG /PRINT SRCCOM HEADING LINE 010605 4530 JMS I [GETTWO /GET TITLE LINES 010606 5323 JMP FINISH /ONE FILE IS EMPTY - ABORT COMPARISON 010607 6201 CDF F1 010610 4527 JMS I [PNTTXT /PRINT FILE 1 HEADER 010611 6211 CDF F2 010612 4527 JMS I [PNTTXT /AND FILE 2 HEADER 010613 3035 DCA PNTPGN /INITIALIZE PAGE NUMBER 010614 7240 STA 010615 3044 DCA DIFFS /INITIALIZE FLAG TO NO DIFFERENCES / MAIN LOOP 010616 6201 MAIN, CDF F1 010617 4526 JMS I [MOVEUP 010620 6211 CDF F2 010621 4526 JMS I [MOVEUP /DELETE ANY USELESS LINES 010622 6201 MAINST, CDF F1 010623 3574 DCA I [CURLIN 010624 6211 CDF F2 010625 3574 DCA I [CURLIN 010626 4530 JMS I [GETTWO /GET TWO INPUT LINES 010627 5267 JMP MAIN15 /ONE FILE IS EMPTY 010630 4525 JMS I [COMPL /COMPARE THE LINES 010631 5216 JMP MAIN /EQUAL - DELETE AND CONTINUE 010632 3044 DCA DIFFS /UNEQUAL - CLEAR "NO DIFFERENCES" FLAG / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 18 010633 4530 MAIN10, JMS I [GETTWO /GET TWO MORE LINES 010634 5267 JMP MAIN15 /ONE FILE RAN OUT 010635 6201 CDF F1 010636 3574 DCA I [CURLIN /INITIALIZE FILE 1 LINE NO. 010637 2574 MAIN12, ISZ I [CURLIN /BUMP TO NEXT LINE IN FILE 1 010640 4525 JMS I [COMPL /COMPARE NEW LINE FROM FILE 2 010641 4332 JMS MULTI /WITH THIS LINE FROM FILE 1 010642 6211 CDF F2 /AND IF MATCH IS FOUND CHECK MULTIPLE LINES 010643 1574 TAD I [CURLIN 010644 7041 CIA 010645 6201 CDF F1 010646 1574 TAD I [CURLIN 010647 7640 SZA CLA /THROUGH WITH FILE 1 LINES? 010650 5237 JMP MAIN12 /NO 010651 6211 CDF F2 010652 7201 CLA IAC 010653 3574 DCA I [CURLIN /NOW INITIALIZE FILE 2 LINE NO. 010654 1574 MAIN14, TAD I [CURLIN 010655 7041 CIA 010656 6201 CDF F1 010657 1574 TAD I [CURLIN 010660 7650 SNA CLA /HAVE WE EXHAUSTED FILE 2 LINES? 010661 5233 JMP MAIN10 /YES - NO MATCH AT ALL 010662 4525 JMS I [COMPL /NO - COMPARE ALL FILE 2 LINES 010663 4332 JMS MULTI /AGAINST NEW FILE 1 LINE 010664 6211 CDF F2 /AND, IF MATCH, CHECK MULTIPLE LINES 010665 2574 ISZ I [CURLIN /GO TO NEXT FILE 2 LINE 010666 5254 JMP MAIN14 /AND LOOP / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 19 010667 1030 MAIN15, TAD GETFIL 010670 7450 SNA /FIND WHICH FILE WAS EMPTY 010671 5323 JMP FINISH /BOTH - ALL DONE 010672 3320 DCA MAIN18 010673 6201 CDF F1 010674 1574 TAD I [CURLIN 010675 6211 CDF F2 010676 7640 SZA CLA 010677 1574 TAD I [CURLIN 010700 7650 SNA CLA /IS EITHER FILE EXHAUSTED IN CORE? 010701 5320 JMP MAIN18 /YES - PRINT ALL OF OTHER FILE 010702 1320 TAD MAIN18 /GET CDF OF LONG FILE 010703 7041 CIA 010704 1124 TAD [4402+F1+F2 /COMPUTE CDF OF SHORT FILE 010705 3306 DCA MAIN17 010706 7000 MAIN17, NOP 010707 1574 TAD I [CURLIN 010710 7140 CMA CLL 010711 1570 TAD I [TOPLIN 010712 7620 SNL CLA /IS CURLIN < TOPLIN? 010713 5233 JMP MAIN10 /NO - WE STILL HAVE SOME COMPARING TO DO 010714 2574 ISZ I [CURLIN 010715 4525 JMS I [COMPL 010716 4332 JMS MULTI 010717 5306 JMP MAIN17 010720 7000 MAIN18, NOP /SET DF TO DATA FIELD OF LONG FILE 010721 4527 JMS I [PNTTXT /PRINT IT 010722 5216 JMP MAIN 010723 6201 FINISH, CDF F1 010724 1574 TAD I [CURLIN 010725 6211 CDF F2 010726 1574 TAD I [CURLIN 010727 7640 SZA CLA /ARE BOTH CORE BUFFERS EMPTY? 010730 4523 JMS I [PNTBTH /NO - PRINT THEM 010731 5522 JMP I [EOCOMP / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 20 / MULTI-LINE COMPARATOR 010732 0000 MULTI, 0 010733 6201 CDF F1 010734 1574 TAD I [CURLIN 010735 3521 DCA I [TMPLIN 010736 6211 CDF F2 010737 1574 TAD I [CURLIN 010740 3521 DCA I [TMPLIN /STORE CURLIN AWAY IN A TEMPORARY 010741 1025 TAD NUMLIN 010742 3033 DCA NUMTMP /GET COUNT OF LINES TO COMPARE 010743 5352 JMP MULT6 010744 4530 MULT2, JMS I [GETTWO /GET TWO LINES 010745 5350 JMP MULT4 /ONE FILE HAS NO MORE 010746 4525 JMS I [COMPL /COMPARE THEM 010747 5352 JMP MULT6 /THEY COMPARE - KEEP GOING 010750 4362 MULT4, JMS SWAPCT /RESET OLD CURLIN 010751 5732 JMP I MULTI 010752 2033 MULT6, ISZ NUMTMP /LINE COUNT EXHAUSTED? 010753 5344 JMP MULT2 /NO - KEEP COMPARING 010754 4362 JMS SWAPCT /RESTORE OLD CURLIN 010755 4523 JMS I [PNTBTH /PRINT OUT DIFFERENCES 010756 1120 TAD [-10 010757 4517 JMS I [PNTAST /PRINT OUT SEPARATOR 010760 4362 JMS SWAPCT /RE-SWAP FOR DELETION 010761 5216 JMP MAIN /DELETE THRU MATCHING LINES AND CONTINUE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 21 010762 0000 SWAPCT, 0 010763 6201 CDF F1 010764 4370 JMS SWAPX /SWAP CURLIN AND TMPLIN FOR FILE 1 010765 6211 CDF F2 010766 4370 JMS SWAPX /DITTO FOR FILE 2 010767 5762 JMP I SWAPCT 010770 0000 SWAPX, 0 010771 1574 TAD I [CURLIN 010772 3033 DCA NUMTMP 010773 1521 TAD I [TMPLIN 010774 3574 DCA I [CURLIN 010775 1033 TAD NUMTMP 010776 3521 DCA I [TMPLIN 010777 5770 JMP I SWAPX 1000 PAGE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 22 011000 0000 PNTBTH, 0 /PRINT BOTH TEXT BUFFERS 011001 1116 TAD [212 011002 4515 JMS I [OCHAR /SEPARATOR 011003 6201 CDF F1 011004 4214 JMS PNTTXT /PRINT FILE 1 BUFFER 011005 1114 TAD [-4 011006 4322 JMS PNTAST /PRINT SEPARATOR 011007 6211 CDF F2 011010 4214 JMS PNTTXT /PRINT FILE 2 BUFFER 011011 1116 TAD [212 011012 4515 JMS I [OCHAR /SEPARATOR 011013 5600 JMP I PNTBTH 011014 0000 PNTTXT, 0 /PRINT A TEXT BUFFER 011015 1574 TAD I [CURLIN 011016 7041 CIA 011017 3034 DCA PLNCNT /GET # OF LINES TO PRINT 011020 3043 PNTLP, DCA TABCT /ZERO TAB COUNTER (IN CASE "T" SW ON) 011021 6214 RDF 011022 7112 CLL RTR 011023 7010 RAR /GET FILE NUMBER 011024 1113 TAD [261 /260 FOR 12K VERSION 011025 4515 JMS I [OCHAR 011026 1112 TAD [251 011027 4515 JMS I [OCHAR /PRINT RPAR 011030 1034 TAD PLNCNT 011031 7001 IAC 011032 4577 JMS I [SETONE /GET POINTER TO LINE 011033 7001 IAC 011034 3011 DCA XR1 011035 1411 TAD I XR1 /GET THE PAGE NUMBER OF THE LINE 011036 3002 DCA T 011037 1002 TAD T 011040 7041 CIA 011041 1035 TAD PNTPGN 011042 7650 SNA CLA /DID THE PAGE NUMBER JUST CHANGE? 011043 5271 JMP PNTTAB /NO - DON'T PRINT IT 011044 1356 TAD TENTAD 011045 3257 DCA PNTTAD 011046 1002 TAD T 011047 3035 DCA PNTPGN /UPDATE THE CURRENT PAGE NUMBER 011050 7346 CLA CLL CMA RTL 011051 3003 DCA CT /PRINT 3 DECIMAL DIGITS / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 23 011052 3000 DIGLP1, DCA T1 011053 5256 JMP .+3 011054 3002 DIGLP2, DCA T 011055 2000 ISZ T1 011056 1002 TAD T 011057 7402 PNTTAD, HLT /ADD IN A POWER OF 10 011060 7500 SMA 011061 5254 JMP DIGLP2 /KEEP GOING 011062 7200 PN7200, CLA 011063 2257 ISZ PNTTAD /GOT A DIGIT - GO TO NEXT POWER OF 10 011064 1000 TAD T1 011065 1111 TAD [260 011066 4515 JMS I [OCHAR /PRINT DIGIT 011067 2003 ISZ CT /THROUGH? 011070 5252 JMP DIGLP1 /NO 011071 1022 PNTTAB, TAD TSW 011072 7650 SNA CLA /SHOULD WE SIMULATE TABS? 011073 5310 JMP PNTCHR /NO 011074 1110 TAD [240 /YES - PRINT A BLANK 011075 4515 JMS I [OCHAR 011076 1043 TAD TABCT 011077 0107 AND [7 011100 7640 SZA CLA /KEEP PRINTING BLANKS UNTIL WE REACH A MULTIPLE OF 011101 5271 JMP PNTTAB /EIGHT COLUMNS. 011102 1411 PNTCLP, TAD I XR1 /GET A CHARACTER FROM THE LINE 011103 7450 SNA /END? 011104 5313 JMP PNTCR /YES 011105 1155 TAD [-211 011106 7450 SNA /IS IT A TAB? 011107 5271 JMP PNTTAB /YES 011110 1106 PNTCHR, TAD [211 /NO - RESTORE THE CHAR 011111 4515 JMS I [OCHAR 011112 5302 JMP PNTCLP /PRINT IT AND LOOP 011113 1134 PNTCR, TAD [215 /PRINT CRLF 011114 4515 JMS I [OCHAR 011115 1116 TAD [212 011116 4515 JMS I [OCHAR 011117 2034 ISZ PLNCNT 011120 5220 JMP PNTLP /LOOP FOR EACH LINE IN BUFFER 011121 5614 JMP I PNTTXT / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 24 011122 0000 PNTAST, 0 /ROUTINE TO PRINT ASTERISKS 011123 3003 DCA CT /SAVE COUNTER 011124 1105 TAD ["* 011125 4515 JMS I [OCHAR 011126 2003 ISZ CT 011127 5324 JMP .-3 /PRINT REQUIRED NUMBER OF ASTERISKS 011130 1134 TAD [215 011131 4515 JMS I [OCHAR /TERMINATE THE LINE 011132 1116 TAD [212 011133 4515 JMS I [OCHAR 011134 3035 DCA PNTPGN /KILL CURR. PAGE NUMBER 011135 5722 JMP I PNTAST 011136 2044 EOCOMP, ISZ DIFFS /ANY DIFFERENCES? 011137 5343 JMP .+4 /YES 011140 6201 CDF 0 /MESSAGE IN FIELD 0 011141 1104 TAD [NODFMS-1 011142 4531 JMS I [PNTHDG /NO - PRINT MESSAGE 011143 1262 TAD PN7200 /ROUTINE TO FINISH UP OUTPUT 011144 3003 DCA CT 011145 1103 TAD [214 011146 4515 JMS I [OCHAR /TERMINATE THE OUTPUT FILE 011147 1102 TAD [232 /WITH A FORM FEED AND A ^Z 011150 4515 JMS I [OCHAR 011151 2003 ISZ CT 011152 5350 JMP .-2 /FILL WITH ZEROS TO FORCE BUFFER OUT 011153 6203 CDF CIF 0 011154 5755 JMP I .+1 /GO TO FIELD 0 TO FINISH UP AS WE WILL BE 011155 0321 OCLOSE /OVERLAYED BY THE USR DURING THE CLOSE 011156 1357 TENTAD, TAD .+1 /TABLE OF POWERS OF TEN 011157 7634 -144 011160 7766 -12 011161 7777 -1 011162 6214 INERR, RDF /INPUT ERROR - ERROR NUMBER=FILE NUMBER 011163 7112 CLL RTR 011164 7010 RAR 011165 7001 IFZERO CORE-2 <IAC> IFZERO CORE-4 <TAD [-1> 011166 6203 CDF CIF 0 011167 5561 JMP I [NOROOM /GO TO COMMON ERROR ROUTINE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 25 011170 0000 PNTHDG, 0 /ROUTINE TO PRINT A LITERAL LINE 011171 3011 DCA XR1 /POINTER TO LINE IN AC 011172 1370 TAD PNTHDG 011173 3214 DCA PNTTXT /WE WORK BY FAKING OUT PNTTXT 011174 7240 STA 011175 3034 DCA PLNCNT /SET LINE COUNTER TO 1 011176 5302 JMP PNTCLP 1200 PAGE / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 26 011200 0000 OCHAR, 0 /LOW LEVEL OUTPUT ROUTINE 011201 0101 AND [377 011202 3042 DCA OUTEMP 011203 2043 ISZ TABCT /BUMP TAB COUNTER 011204 6214 RDF 011205 1157 TAD [6201 011206 3261 DCA OCDF 011207 6211 CDF 10 011210 1037 TAD OUCHCT /GET CHAR COUNTER - CHAR COUNTER COUNTS 011211 7012 RTR /FOUR TIMES FOR EACH THREE CHARACTERS. 011212 7020 CML /WHEN THE LOW ORDER BITS OF THE COUNT ARE 10, 011213 7730 SZL SPA CLA /ITS TIME TO SQUEEZE A CHAR INTO THE HIGH 011214 5232 JMP OUNORM /ORDER BITS - OTHERWISE JUST STORE IT 011215 2037 ISZ OUCHCT /WE MUST SQUEEZE - BUMP OUCHCT AN EXTRA 011216 1042 TAD OUTEMP /TIME 011217 7006 RTL 011220 7006 RTL 011221 0143 AND [7400 011222 1441 TAD I OUXPTR /FIRST WORD OF DOUBLET 011223 3441 DCA I OUXPTR 011224 1042 TAD OUTEMP 011225 7002 BSW 011226 7106 CLL RTL 011227 0143 AND [7400 011230 1440 TAD I OUPTR /SECOND WORD OF DOUBLET 011231 5236 JMP OUCOMN / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 27 011232 1040 OUNORM, TAD OUPTR 011233 3041 DCA OUXPTR /REMEMBER LAST WORD 011234 2040 ISZ OUPTR 011235 1042 TAD OUTEMP 011236 3440 OUCOMN, DCA I OUPTR 011237 2037 ISZ OUCHCT /BUMP CHAR COUNT 011240 5261 JMP OCDF /RETURN 011241 6202 CIF 0 /CHAR COUNT OVFLO - OUTPUT BUFFER 011242 4436 JMS I OUHNDL 011243 4210 4210 011244 1400 1400 011245 0000 OUREC, 0 011246 5255 JMP OUERR2 011247 4263 JMS OUSETP /INITIALIZE FOR NEXT BUFFER 011250 2245 ISZ OUREC /BUMP RECORD NUMBER 011251 6201 CDF 0 011252 2500 ISZ I [OCOUNT /BUMP CLOSING COUNT 011253 2477 ISZ I [OLEN /AND LENGTH OF HOLE 011254 5261 JMP OCDF 011255 7126 OUERR2, CLL CML RTL /OUTPUT ERROR OR FILE TOO BIG - GENERATE 011256 7001 IAC /A 3 OR A 4 MESSAGE, RESPECTIVELY 011257 6203 CDF CIF 0 011260 5561 JMP I [NOROOM 011261 7402 OCDF, HLT /RESTORE DATA FIELD 011262 5600 JMP I OCHAR /RETURN / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 28 011263 0000 OUSETP, 0 011264 1076 TAD [7000 /4 COUNTS FOR 2 WORDS 011265 3037 DCA OUCHCT 011266 1075 TAD [1377 011267 3040 DCA OUPTR 011270 5663 JMP I OUSETP 011271 0000 TSTXSW, 0 /SUBROUTINE TO IGNORE COMMENTS ON INPUT 011272 1031 TAD CHAR /IF "X" SWITCH SET 011273 1074 TAD [-257 011274 7650 SNA CLA 011275 1023 TAD XSW /IF XSW IS OFF OR THE CURRENT CHAR ISN'T A / 011276 7650 SNA CLA 011277 5671 JMP I TSTXSW /RETURN 011300 4473 JMS I [GCHAR 011301 1031 TAD CHAR /SKIP CHARACTERS UNTIL CARRIAGE RETURN 011302 7640 SZA CLA 011303 5300 JMP .-3 011304 7344 TSTXLP, CLA CLL CMA RAL 011305 1402 TAD I T 011306 7650 SNA CLA /ARE WE AT THE BEGINNING OF A LINE? 011307 5671 JMP I TSTXSW /YES - GLINE WILL DELETE IT IF NECESSARY 011310 1011 TAD XR1 011311 3327 DCA TX 011312 1727 TAD I TX 011313 1072 TAD [-240 011314 7440 SZA /IS THE PREVIOUS CHARACTER A SPACE 011315 1165 TAD [240-211 011316 7640 SZA CLA /OR A TAB? 011317 5671 JMP I TSTXSW /NO 011320 7040 CMA 011321 1011 TAD XR1 011322 3011 DCA XR1 /BACK UP CHAR PTR 011323 7040 CMA 011324 1402 TAD I T 011325 3402 DCA I T /AND CHAR CTR 011326 5304 JMP TSTXLP /LOOP 011327 0000 TX, 0 / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 29 011330 3036 SRCOPT, DCA OUHNDL 011331 1471 TAD I [MPARAM 011332 7040 CMA 011333 0123 AND [1000 /"C" OPTION 011334 1074 TAD [-257 011335 3020 DCA CSW 011336 7332 CLA CLL CML RTR 011337 0471 AND I [MPARAM 011340 3024 DCA ALLSW /"B" OPTION 011341 1470 TAD I [MPARAM+1 011342 7040 CMA 011343 0067 AND [40 /"S" OPTION 011344 1072 TAD [-240 011345 3021 DCA SSW 011346 1470 TAD I [MPARAM+1 011347 0066 AND [20 /"T" OPTION 011350 3022 DCA TSW 011351 7201 CLA IAC 011352 0470 AND I [MPARAM+1 011353 3023 DCA XSW /"X" OPTION 011354 1465 TAD I [MPARAM+3 011355 7041 CIA /GET NEGATIVE OF NUMERICAL ARGUMENT 011356 7450 SNA 011357 7346 CLA CLL CMA RTL /DEFAULT VALUE IS 3 011360 3025 DCA NUMLIN /TO NUMBER OF LINES NECESSARY FOR A MATCH 011361 5762 JMP I .+1 011362 0600 STARTC 0005 VV1=VERSION%12 0062 VV2=VV1^12 011363 0323 HEDING, "S;"r;"c;"C;"o;"m;" ;"V;VV1+"0;VERSION-VV2+"0;PATCH;212;0 011364 0362 011365 0343 011366 0303 011367 0357 011370 0355 011371 0240 011372 0326 011373 0265 011374 0260 011375 0301 011376 0212 011377 0000 / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 30 /PAGE 0 LITERALS FOR FIELD 1 $-$-$ /END OF ASSEMBLY OF SRCCOM 010065 7646 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 1362 010133 1263 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 / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 30-1 010151 6556 010152 0401 010153 7577 010154 7576 010155 7567 010156 7570 010157 6201 010160 7556 010161 0351 010162 1227 010163 1271 010164 0400 010165 0027 010166 0002 010167 1777 010170 7560 010171 2000 010172 7562 010173 7563 010174 7557 010175 7600 010176 7575 010177 0200 / OS8 SOURCE COMPARE V50 PAL8-V50X 29-AUG-88 PAGE 31 ALLSW 0024 MAIN10 0633 PNTTAD 1057 ASSOUT 0250 MAIN12 0637 PNTTXT 1014 BUFLIM 6555 MAIN14 0654 PN7200 1062 CHAR 0031 MAIN15 0667 SCT 0020 COMPL 0271 MAIN17 0706 SETCDF 0132 COMP0 0310 MAIN18 0720 SETONE 0200 COMP1 0302 MLIMIT 0026 SETOPT 0204 COMP2 0305 MLOOP 0256 SETRST 0231 COMP3 0323 MOVEUP 0235 SETUP 0067 COMP4 0326 MOVXIT 0264 SETUP1 0026 COMP5 0315 MPARAM 7643 SETUP2 0050 CORE 0002 MULTI 0732 SRCATS 0334 CSW 0020 MULT2 0744 SRCCD 0204 CT 0003 MULT4 0750 SRCCOM 0200 CTCCHK 0045 MULT6 0752 SRCOPT 1330 CURLIN 7557 NOCHN 0343 SSW 0021 DIFFS 0044 NODFMS 0050 STARTC 0600 DIGLP1 1052 NOROOM 0351 SWAPCT 0762 DIGLP2 1054 NOSRCD 0213 SWAPX 0770 DVPAGE 0116 NUMLIN 0025 T 0002 EOCOMP 1136 NUMTMP 0033 TABCT 0043 FBLOCK 7556 OCDF 1261 TENTAD 1156 FFEED 0572 OCHAR 1200 TLNNUM 0230 FINISH 0723 OCLOSE 0321 TLOOP 0213 F1 0000 OCOUNT 0332 TMPLIN 7561 F2 0010 OFILNM 0021 TOPLIN 7560 GCHAR 0456 OLDLIN 7562 TSTXLP 1304 GEOF 0574 OLDPTR 7563 TSTXSW 1271 GETCNT 0027 OLEN 0305 TSW 0022 GETFIL 0030 ORCNO 0304 TTYNO 0241 GETIN 0530 OUCHCT 0037 TX 1327 GETTWO 0364 OUCOMN 1236 TYPE 0372 GLEXIT 0450 OUERR1 0350 T1 0000 GLINE 0400 OUERR2 1255 T2 0001 GLINE2 0417 OUHNDL 0036 VERSIO 0062 GTOUHN 0227 OUNORM 1232 VV1 0005 HEDING 1363 OUPAGE 0253 VV2 0062 IFPTR 0025 OUPTR 0040 XR 0010 INBUF 6556 OUREC 1245 XR1 0011 INCHCT 7567 OUSETP 1263 XR2 0012 INEOF 7576 OUTEMP 0042 XSW 0023 INERR 1162 OUXPTR 0041 INERR1 0344 PATCH 0301 INHNDL 7575 PFILNM 0331 INPTR 7570 PGNUM 7556 INRCNT 7577 PLNCNT 0034 INREC 7571 PNTAST 1122 INST1 0265 PNTBTH 1000 INST2 0076 PNTCHR 1110 INTEMP 7564 PNTCLP 1102 IPTR 0032 PNTCR 1113 KEEPON 0224 PNTHDG 1170 LNBEG 2000 PNTLP 1020 MAIN 0616 PNTPGN 0035 MAINST 0622 PNTTAB 1071 ERRORS DETECTED: 0 LINKS GENERATED: 0