" THIS PROGRAM ORIGINATED ATC HONEYWELL LTD,(U.K) IN THEj LATE 60'S OR EARLY 70'S. IT WAS TRANSLATED FROM ASSEMBLER TO" FORTRAN BY RUSS BARBOUR, AND HAS( BEEN UPDATED BY JIM BUTLER FOR) VARIOUS MINICOMPUTERS. THIS! * VERSION WAS TRANSLATED FROM THEG + FORTRAN BY ERIC SPIEWAK - 1984.x - 8100: INITIALIZE 'STRING THING' , PART 1 1RV$"2.0" 2 "COMPARE-64 REV. ";RV$ < 5220 @ 8200 ACM$"," FFR(0):FR0FR65536FR  "OLD MASTER";OM$  (OM$)0"ERROR":5002  "NEW MASTER";NM$O  (NM$)0"ERROR":510p  "DIFFERENCE (FILE NAME OR"  " SCREEN OR PRINTER) S";DF$ FX$"@0:"DF$",S,W":SA3 D8: DF$"P"D4:FX$"":SA7  DF$"S"D3# ! "FILE TYPE (PRG OR SEQ) PRG";FT$T "SQ0:PG1: FT$"SEQ"SQ1:PG0:LQ1: 550 #JL80:LQ$"": "IGNORE DIFFERENT LINE NUMBERS Y";IG$ $LQ3: IG$"N"LQ1:LQ$"NOT " % 560 & "LINE LENGTH";JL 0IN1: 15,8,15,"I0" : 1,8,4,"0:"OM$","FT$",R", ?FI$OM$:4530:(IE)830N D 2,8,2,"0:"NM$","FT$",R"j IFI$NM$:4530:(IE)830{ N 3,D,SA,FX$ SD8FI$NM$:4530:(IE)830 TIN0: FINISHED INITIALIZATION W CALCULATE COMPARISON DEPTH' XLM10((FR21000)(10(JL3))):XO$(LM): XN$(LM): R(2): AB(2)V ZCH%2: NUMBER OF MATCHES TO END NON-MATCHe ] SQ 680 b#1,L$,H$: L$""L$(0) l H$""H$(0) vS1(L$)(H$)256 #2,L$,H$: L$""L$(0)  H$""H$(0) S2(L$)(H$)256. S1S2 OM$" STARTS AT";S1;NM$" STARTS AT";S2M3,"COMPARE-64 REV. ";RV$h3,"OLD MASTER = ";OM$3,"NEW MASTER = ";NM$3,"FILE TYPE = ";FT$ PG 3,"LINE NUMBER DIFFERENCES ARE ";LQ$;"IGNORED"EN$"": SQ EN$(13)3,"LINE LENGTH= ";JL;" DEPTH = ";LMA "START OF COMPARISON - ";TI$X BEGIN COMPARISONuBO0:BN0:OV0:DO0:DN0BOBO1:BNBN1: NEXT RECORDOV0:EX0:DN0DO0(DNLMEX DOLMEX)1000J1: 4400:OL$C$J2: 4400:NL$C$6 (OL$,LQ)(NL$,LQ)910: COMPARE TWO RECORDSV DODN0 800: CHECK EOF CHECK FOR TRIVIAL MATCH AFTER MIS-MATCHTL1:PGTL4LQ: 3 OR 1 FOR BASIC WITH/WITHOUT LINE #'S INCLUDED ((OL$,LQ))TL2000 EXEX1:710 N(1)N(2)2E9 820#) OV0 703F* (BOAB(1)BNAB(2))LM5701{+I0R(1)BO1:XO$(I)XO$(BOAB(1)I)::AB(1)BO,I0R(2)BN1:XN$(I)XN$(BNAB(2)I)::AB(2)BN/ 70143,"END OF COMPARISON"9 "END OF COMPARISON - ";TI$ > 1: 2: 3: 15H, LINES DO NOT COMPAREc SET CH=NUMBER WHICH MUST COMPARE TO END MISMATCHEX0:CHCH%:IDN:DNDO:DOI(DODN)0 710(DODN)0 DNDN1: 705DODO1: 710 "OVERFLOW"EX0:J1:II0: "OLD MASTER - ";BO  I03IILM1050EDOII:4400:P$C$:PGLI$P$:5710Q IIII1uP$:(((C$,LQ))TL) 1025{$EX0:J2:II0: "NEW MASTER - ";BN. I033IILM10958DNII:4400:P$C$:PGLI$P$:5710=IIII1BP$:(((C$,LQ))TL) 1075G\V "DO YOU THINK IT'S 'REPLACE', 'INSERT', 'DELETE',"{` "OR SHOULD I QUIT";AN$jAN$(AN$,1):DO0:DN0:EX0o(AN$"R" AN$"I") DNR(2)BN:OV1q(AN$"I")2020 t(AN$"R" AN$"D") DOR(1)BO:OV1:2020~ AN$"Q" 1200) 1110> 1: 2: 3: 15Dh RECORDS MATCH AFTER NON-MATCHCHCH1:CH0780 DODN0 800CB$"OMITTED": DO0CB$"INSERTED" (DO0)(DN0)CB$"CHANGED" DO1 2100 3,"***** ";CB$;" AT ";BO;" *****"" 2220T43,"***** ";CB$;" AT ";BO;","BODO1;" *****"f DO0 2274 CB$"OMITTED" 3,"OLD MASTER HAD:" IBOAB(1) DOBOAB(1)1 :P$XO$(I):PGLI$P$:57103,P$: DN0 22773," ":3,"NEW MASTER HAS:":3," "Y IBNAB(2) DNBNAB(2)1 :LI$XN$(I):P$LI$:FT$"PRG"5710e3,P$: PRINT AB(1);R(1);BO;DO;AB(2);R(2);BN;DN;XO$(0);XN$(0):STOPIDO(R(1)BO):XO$(IDO)XO$(IBOAB(1)):IDN(R(2)BN):XN$(IDN)XN$(IBNAB(2)):+BOBODO:BNBNDN:DO0:DN0:EX0SAB(1)BO:AB(2)BN:BOBOEX:BNBNEX] 800 PSEUDO "GET" ROUTINE FOR DE-TOKENIZERA$(LI$,IX,1):IXIX1:/ DISK I/O ROUTINE - MANAGES ARRAY STORAGE0(J1)(BODOEX)R(1) 44205(J2)(BNDNEX)R(2) 4420A:(J1)C$XO$(DOBOAB(1)EX):4580i?(J2)C$XN$(DNBNAB(2)EX):4580D DS(J)0C$"":4580F SQ C$"": 4490I#J,A$,B$N A$"" B$"" 4540X#J,A$,B$b A$"" A$(0)l B$"" B$(0)vN(J)(A$)(B$)256%C$A$B$A143,J:251,(EN$(0))V 49152:DS(J)STnC$C$(SQ$,(142))DS(J)0 R(J)R(J)1:4550FI$OM$:J2FI$NM$IE0:15,E1$,E2$,E3$,E4$(E1$"00"(C$)254IN)  "DISK I/O ERROR- ";FI$9 " STATUS = ";E1$CM$E2$CM$E3$CM$E4$:(IN) IE1:X "RECORD LENGTH = ";(C$)vN(J)1E9:C$"":DS(J)64: J1DO0 AB(1)BO J2DN0 AB(2)BN(J1)XO$(DOBOAB(1)EX)C$(J2)XN$(DNBNAB(2)EX)C$DS(J)0N(J)1E96 PRINT "FILE ";J;R(J);BO;DO;BN;DN;MID$(C$,1)< THE FOLLOWING IS TAKEN FROM LISTER..VIC/64 COMPUTE! DEC 1983 19,147,17,145,29,157,18,146,20, 148,141,32 80-COLUMN CURSOR STUFF 129,149,150,151,152,14,142,153, 154  155 VIC STUFF8 144,5,28,159,156,30,31,158f( 8,9,133,137,134,138,135,139,136 ,1402 HOME,CLEAR,DOWN,UP,RIGHT,LEFT,RVS,RVOFF,DEL,INST,RETURN,SPACE< ORANGE,BROWN,L.RED,GRAY1,GRAY2,TEXT,GRAPHIC,L.GREEN,L.BLUEF GRAY3,P BLACK,WHITE,RED,CYAN,MAGENTA,GREEN,BLUE,YELLOWVZ LOCK,UNLOCK,F1,F2,F3,F4,F5,F6,F7,F8odA(40),A$(40),K$(90)nJ039:A(J):JxJ039:A$(J):J END,FOR,NEXT,DATA,INPUT#,INPUT,DIM,READ,LET,GOTO,RUN,IF,RESTORE,GOSUB0 RETURN,REM,STOP,ON,WAIT,LOAD,SAVE,VERIFY,DEF,POKE,PRINT#,PRINT,CONTx LIST,CLR,CMD,SYS,OPEN,CLOSE,GET,NEW,TAB(,TO,FN,SPC(,THEN,NOT,STEP +,-,*,/,^,AND,OR,>,=,<,SGN,INT,ABS,USR,FRE,POS,SQR,RND,LOG,EXP,COS  SIN,TAN,ATN,PEEK,LEN,STR$,VAL,ASC,CHR$,LEFT$,RIGHT$,MID$,GO,CONCATR  DOPEN,DCLOSE,RECORD,HEADER,COLLECT,BACKUP,COPY,APPEND,DSAVE,DLOADy  CATALOG,RENAME,SCRATCH,DIRECTORY J090:K$(J):J P1$"[":P2$"]":P3$"[":P4$"]":F$P1$ T71: TRANSLATE CURSOR MOVES  D NEW LINE!NIX1:7010:Q0:T11:C111!b4000:X$A$:4000:B$A$:A$X$Q!lL(A$(0))(B$(0))256f!F21:P$(L)" "! (P$,1)" "P$(P$,2):5780! START TEXT HERE!4000:A$"" !T0:A(A$):A32F$","5840!Q0(A127)31T705900"J040:AA(J)B$A$(J): 5860%"J:6000="B$B1$BB1:5810a"B0A$((B1),2)F$B$:5890n"A$F$B$"B0:B1$B$:F$",":F11:6010" AA128:A0Q06000"A127A$"":6000" T1:A$K$(A)"*A15Q2"p7010"zA$(34)Q1Q# C=-1 FOR ALPHANUMERICF#C((A$,1)):C(C48C57)(C65C90)Z#TT1T1T1T#C((A$,1)):C1((C48C57)(C65C90))A37#P$P$A$#5810#X CLOSE OFF CURSOR EXPRESSION#bF107040#lB0P$P$((B1),2)$vB0:F10:B1$"":P$P$P2$:F$P1$$@$ JIM BUTTERFIELD'S STRING THINGe$ MODIFIED FOR VARIABLE FILE #$ AT 143 (HEX 8F)$ AND VARIABLE TERMINATION CHAR$ AT 251 (HEX FB)$SQ$"ABCDEFGHIJKLMNOPQ"$SQ$SQ$SQ$SQ$SQ$SQ$ %SQ$SQ$SQ$SQ$%5% ABOVE SETS STRING FOR MAX(255)\% 160,2,177,45,153,137,0,200,192,6}% 208,246,166,143,32,198,255% 32,228,255,197,251,240,11,164,142,145%& 140,200,132,142,196,139,208,238,76,204,255&: J49152 49189: X:J,X:TTX: J&D T5915 &l