1 CHAIN "$TYPIST" 10 &:&:&:Z1%=1%:Z%=0%:V%=32%:V2%=8%:V3%=127%:V5%=57%:V6%=48%:V7%=47%:V8%=45%: DEF FNA%(D1%,D2%)=D1%-D2%*INT(D1%/D2%) 460 INPUT "Enter your input, output file names";T1$,T2$: ON ERROR GOTO 500:OPEN T1$ FOR INPUT AS FILE Z1%: OPEN T2$ FOR OUTPUT AS FILE 2%:GOTO 610 500 &:& "There is a PROBLEM on one of your files !!!": & "IT IS -";SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)): &:& "It has caused TERMINATION of this program.": CHAIN "$TYPIST" 170 610 CHANGE SYS(CHR$(7%)) TO C%:P1%=C%(1%):P2%=C%(2%):P3%=C%(3%): P4%=C%(4%):P5%=C%(5%):P6%=C%(6%): T1$="TYPI"+NUM$(C%(7%))+NUM$(C%(8%))+".TMP": C%(0%)=8%:C%(I%-8%)=C%(I%) FOR I%=9% TO 16%:CHANGE C% TO D$ 615 DIM A%(100%),C%(250%),D%(250%):OPEN T1$ AS FILE 3%,CLUSTERSIZE 8%: DIM #3%,B%(100%),A$(100%)=128%,B$(100%)=128%:B$(100%)="": C4%,C5%,C6%,C7%,C8%,B7%,B8%,D6%,T7%,T8%=Z%:C9%,D9%=250%: A9%,B9%=100%:T3%,T4%=Z1%:T1$="DEJ:BENF":T2$=" ":H$="": GOTO 4500 1090 A8%=Z% 1100 A8%=A8%+Z1%:GOTO 1210 IF A8%V%:C%(Z%)=C%(Z%)-Z1%:NEXT I% 1360 C1%=Z%:FOR I%=Z1% TO C%(Z%):GOTO 1470 IF C%(I%)<>V%:C1%=C1%+Z1%:NEXT I%: GOTO 3070 1470 F1%,F2%=2:J%=I%-Z1%:FOR I%=J%+Z1% TO C%(Z%):GOTO 1590 IF C%(I%)>=V%: GOTO 1650 IF C%(I%)=Z%:GOTO 1570 IF C%(I%)=V2%:F2%=Z1%:GOTO 1650 1570 F1%=Z1%:GOTO 1630 1590 GOTO 1630 IF C%(I%)V2%: GOTO 1780 IF J%<=Z1%:J%=J%-Z1% 1780 C%(I%)=C%(I%)+1024*J%:GOTO 1820 1800 C%(I%)=C%(I%)+1024*J%:J%=J%+Z1% 1820 T9%=FNA%(C%(I%),128):C%(I%)=C%(I%)+128 IF (T9%<>V2%) OR (T9%<>95%):NEXT I% 1860 F1%=2:FOR I%=Z1% TO C%(Z%)-Z1%:GOTO 1940 IF C%(I%)<=C%(I%+Z1%): C0%=C%(I%):C%(I%)=C%(I%+Z1%):C%(I%+Z1%)=C0%:F1%=Z1% 1940 NEXT I%:GOTO 1860 IF F1%=Z1%:J%=Z1%:F1%=Z%:FOR I%=Z1% TO C%(Z%): C%(I%)=FNA%(C%(I%),128):GOTO 2040 IF C%(I%)<>V2%:F1%=F1%+Z1%:GOTO 2100 2040 C%(J%)=C%(I%):GOTO 2090 IF F1%=Z%:C%(J%+Z1%)=V2%:F1%=F1%-Z1%:J%=J%+Z1% 2090 J%=J%+Z1% 2100 NEXT I% 2110 F1%,I%=Z% 2140 GOTO 3070 IF I%=C%(Z%):I%=I%+Z1%:GOTO 2220 IF C%(I%)<>V%: F1%=F1%+Z1%:GOTO 2140 2220 IF F1%<>Z% THEN 2900 2230 GOTO 2280 IF C%(I%)=58%:GOTO 3090 IF I%=C%(Z%):I%=I%+Z1%: GOTO 2900 IF C%(I%)=V%:GOTO 2230 2280 GOTO 3090 IF I%=C%(Z%):I%=I%+Z1%:GOTO 2900 IF C%(I%)=V% 2310 GOTO 3090 IF I%=C%(Z%):I%=I%+Z1%:GOTO 2310 IF C%(I%)<>V%: GOTO 3090 IF I%=C%(Z%):T3$=LEFT(C$,(I%-Z1%)):I%=I%+Z1%: GOTO 2900 IF C%(I%)<>V% 2380 GOTO 3090 IF I%=C%(Z%):I%=I%+Z1%:GOTO 2380 IF C%(I%)=V%:T2%=I% 2430 GOTO 3170 IF I%=C%(Z%):I%=I%+Z1%:GOTO 2430 IF C%(I%)<>V%: GOTO 3170 IF (C%(I%-Z1%)>V5%) OR (C%(I%-Z1%)20) OR (I%=C%(Z%)): I1%=I%-Z1%:FOR I2%=I1% TO T2% STEP -Z1%: GOTO 2550 IF (C%(I2%)-V6%)*(C%(I2%)-V5%)>Z%:NEXT I2%:I2%=I2%-Z1% 2550 T4$=MID(C$,T2%,(I2%-T2%+Z1%)):T4%=VAL(MID(C$,(I2%+Z1%),(I1%-I2%))) 2580 GOTO 3170 IF I%=C%(Z%):I%=I%+Z1%:GOTO 2580 IF C%(I%)=V%: GOTO 3170 IF ((C%(I%)-V6%)*(C%(I%)-V5%)>Z%) OR (I%=C%(Z%)): I%=I%+Z1%:GOTO 2690 IF C%(I%)=V7%: GOTO 3170 IF ((C%(I%)-V6%)*(C%(I%)-V5%)>Z%) OR (I%=C%(Z%)):I%=I%+Z1% 2690 GOTO 3170 IF (C%(I%)<>V7%) OR (I%=C%(Z%)):I%=I%+Z1%: GOTO 3170 IF ((C%(I%)-V6%)*(C%(I%)-V5%)>Z%) OR (I%=C%(Z%)):I%=I%+Z1%: GOTO 2790 IF C%(I%)=V7%: GOTO 3170 IF ((C%(I%)-V6%)*(C%(I%)-V5%)>Z%) OR (I%=C%(Z%)):I%=I%+Z1% 2790 GOTO 3170 IF(C%(I%)<>V7%) OR ((I%+2)<>C%(Z%)): GOTO 3170 IF (C%(I%+Z1%)-V6%)*(C%(I%+Z1%)-V5%)>Z%: GOTO 3170 IF (C%(I%+2)-V6%)*(C%(I%+2)-V5%)>Z%: T1$=T3$:GOTO 3190 2900 I%=F1% 2920 GOTO 3090 IF I%=C%(Z%):I%=I%+Z1%:GOTO 3030 IF C%(I%)<>V% 2950 GOTO 3090 IF I%=C%(Z%):I%=I%+Z1%:GOTO 3030 IF C%(I%)<>V%: GOTO 3090 IF I%=C%(Z%):I%=I%+Z1%:GOTO 3170 IF C%(I%)=V% 3030 GOTO 2920 IF (C%(I%)=46%) OR (C%(I%)=33%) OR (C%(I%)=63%) OR (C%(I%)=41%): GOTO 2920 IF C%(I%)=93%:GOTO 2950 3070 C%=Z%:GOTO 3210 3090 FOR I%=Z1% TO C%(Z%):GOTO 3130 IF (C%(I%)<97%) OR (C%(I%)>122%): GOTO 3150 IF C%(I%)<>108% 3130 NEXT I%:GOTO 3170 3150 C%=100+F1%:GOTO 3210 3170 C%=200+F1%:GOTO 3210 3190 C%=300%+F1% 3210 CHANGE C% TO A$(A8%):A%(A8%)=C%:GOTO 1100 IF C%<300:A7%=Z%: IF T8%=8800 GOTO 3340 3300 GOTO 3710 IF A7%=A8%:A7%=A7%+Z1%:GOTO 3300 IF A%(A7%)=Z%: A%(A7%)=A%(A7%)+7000 3340 GOTO 3710 IF A7%=A8%:A7%=A7%+Z1%:GOTO 3340 IF A%(A7%)=Z%: GOTO 3690 IF A7%=A8%:GOTO 3430 IF T8%=8800%: IF A%(A7%+Z1%)=Z% THEN 3590 3430 T5%=FNA%(INT(A%(A7%)/100),10):T6%=FNA%(INT(T7%/100),10): GOTO 3560 IF (T5%<1) OR (T5%>2) OR (T5%<>T6%):GOTO 3690 IF T8%=8800: GOTO 3560 IF FNA%(A%(A7%),100)<>FNA%(T7%,100):GOTO 3690 3490 GOTO 3710 IF A7%=A8%:A7%=A7%+Z1%:IF A%(A7%)<>Z% THEN 3630 3530 GOTO 3710 IF A7%=A8%:A7%=A7%+Z1%:IF A%(A7%)=Z% THEN 3530 3560 GOTO 3630 IF (A%(A7%)>=300%) OR (A7%=A8%): GOTO 3630 IF A%(A7%+Z1%)<>Z% 3590 A%(A7%)=1000+A%(A7%):A7%=A7%+Z1%:GOTO 3490 3630 GOTO 3710 IF A%(A7%)>=300:A%(A7%)=A%(A7%)+3000 3650 GOTO 3710 IF A7%=A8%:A7%=A7%+Z1%:GOTO 3710 IF A%(A7%)>=300: IF A%(A7%)=Z% GOTO 3490 3690 A%(A7%)=A%(A7%)+2000:GOTO 3650 3710 GOTO 3830 IF A7%=Z%:A%(A7%)=8000+FNA%(A%(A7%),1000):T8%=A%(A7%): GOTO 3810 IF A%(I%)<>Z% FOR I%=(A7%-Z1%) TO 1 STEP -Z1%:T7%=Z%:GOTO 3820 3810 T7%=A%(I%) 3820 A6%=Z% 3830 RETURN 3880 GOTO 3900 IF A6%89:GOSUB 5410:GOSUB 6380: &:& "Normal Termination":CLOSE 1%,2%:CHAIN "$TYPIST" 170 4100 GOTO 4210 IF INT(C%/1000)<>7:GOTO 4130 IF LEN(T2$)<>LEN(T4$): IF T2$=T4$ GOTO 4160 4130 T2$=T4$:T3%=T4%:GOTO 4170 4160 IF A$(A6%)=H$ THEN 4200 4170 GOSUB 5410:GOSUB 6380:H$=A$(A6%) 4200 GOTO 3880 4210 GOTO 4280 IF INT(C%/1000)<>1:GOSUB 5310:GOSUB 5310:GOSUB 5200: GOTO 3880 4280 T9%=C%/1000%:GOTO 3880 IF T9%=8%:GOTO 4370 IF T9%<>3%:GOSUB 5310: GOTO 4390 IF C%/100%<>31%:D4%=C7%:GOSUB 5090: D4%=FNA%(A%(A6%+Z1%),100%):B%=C%:GOTO 4420 4370 GOTO 4400 IF FNA%(INT(C%/100),10)=2:GOTO 4420 4390 D4%=FNA%(A%(A6%+Z1%),100%) 4400 GOSUB 5200 4410 GOTO 3880 4420 RETURN 4500 GOTO 4520 IF C7%V2%:C4%=C4%-2 4590 GOTO 4730 IF C%(C7%)=V8%:GOTO 4640 IF (C7%>=C8%) OR (C%(C7%+Z1%)=V%) 4620 C7%=C7%+Z1%:GOTO 4560 4640 GOTO 4690 IF (C%(C7%)=46%) OR (C%(C7%)=93%) OR (C%(C7%)=41%): GOTO 4710 IF (C%(C7%)=33%) OR (C%(C7%)=63%) 4670 C5%=Z1%:GOTO 4800 4690 GOTO 4710 IF (C7%+2)>C8%:IF C%(C7%+2)<>V% THEN 4670 4710 C5%=2:GOTO 4800 4730 GOTO 4770 IF C7%>=C8%:GOTO 4670 IF C%(C7%+Z1%)=V%: GOTO 4620 IF C%(C7%+Z1%)=V8%:GOTO 4780 4770 IF C%(C7%-Z1%)=V8% THEN 4670 4780 C5%=Z%:GOTO 4800 4800 GOTO 4880 IF (D6%+C4%)>P6%:IF (D8%+(C7%-C6%+Z1%))<=D9% THEN 4890 4880 GOSUB 5410 4890 GOTO 4910 IF D8%>=Z%:GOSUB 5090 4910 FOR I%=C6% TO C7%:D8%=D8%+Z1%:D%(D8%)=C%(I%):NEXT I%:D6%=D6%+C4%: GOTO 4990 IF (D8%+B4%)<=D9%:GOSUB 5410:GOTO 5040 4990 FOR I%=Z1% TO C5%:D8%=D8%+Z1%:D%(D8%)=V%:NEXT I%:D6%=D6%+C5% 5040 GOTO 4500 5090 GOTO 5120 IF D4%<>Z%:D8%=Z%:GOTO 5150 5120 D%(D8%)=V% FOR D8%=Z1% TO D4% 5150 D6%=D8%:RETURN 5200 GOSUB 5410:B%=C%:D8%=C8%:D%(I%)=C%(I%) FOR I%=Z1% TO D8%:GOSUB 5410: RETURN 5310 GOSUB 5410:RETURN IF B8%=Z%:D8%,B%=Z%:D%(D8%)=V%:GOSUB 5430:RETURN 5410 IF D8%<=Z% THEN 5530 5430 D%(Z%)=D8%:D8%=-Z1%:D6%=Z%:B8%=B8%+Z1%:CHANGE D% TO B$(B8%):B%(B8%)=B%: GOTO 5510 IF B8%<(P3%+3):GOSUB 6140 5510 IF B8%>=B9% THEN GOSUB 6380 5530 B%=2000:RETURN 5590 GOTO 5620 IF B7%<>Z%:GOTO 6090 IF B8%=Z%:B7%=B8% 5620 F%=2%:&# F% FOR I%=Z1% TO P1%:&# F% H$:&# F% FOR I%=Z1% TO P2%: &# F% B$(I%) FOR I%=Z1% TO B7%:&# F% FOR I%=(B7%+Z1%) TO P3%: &# F% FOR I%=Z1% TO P4%:&# F% T1$;TAB(P6%/2%-LEN(T2$));T2$;: &# F% NUM$(T3%);TAB(P6%-8%);D$:T3%=T3%+Z1% 5980 &# F% FOR I%=Z1% TO P5%: GOTO 6010 IF B%(B7%)<>Z% FOR B7%=(B7%+Z1%) TO B8%: B7%=B8%+Z1% 6010 FOR I%=B7% TO B8%:B$(I%-B7%+Z1%)=B$(I%):B%(I%-B7%+Z1%)=B%(I%):NEXT I%: B8%=B8%-B7%+Z1%:B7%=Z% 6090 RETURN 6140 FOR B7%=(B8%-3%) TO Z1% STEP -Z1%:G1%=B%(B7%)/1000%: G2%=B%(B7%+Z1%)/1000%:G3%=B%(B7%+2%)/1000%:G4%=B%(B7%+3%)/1000%: GOTO 6300 IF G1%<>2%:GOTO 6280 IF G2%=Z%:GOTO 6250 IF G2%=2% 6220 &:& "Successor NOT followed by successor or Null--ERROR": CLOSE Z1%,2%:& B$(B7%):CHAIN "$TYPIST" 170 6250 GOTO 6300 IF G3%=Z%:GOTO 6220 IF G3%<>2:GOTO 6320 6280 GOTO 6320 IF (G3%<>3) OR (G4%<>Z%) 6300 NEXT B7%:B7%=B8%-2 6320 GOSUB 5590:RETURN 6380 GOTO 6410 IF B8%<=P3%:GOTO 6430 IF B8%=Z%:GOSUB 6140 6410 B7%=B8%:GOSUB 5590 6430 RETURN:END