100 DIM L$(72),F$(1),C$(1),N$(16) 110 DIM L2$(72) 120 DIM N(350) 130 LET F$=CHR$(28) 140 PRINT "FILE"; 150 INPUT N$ 160 PRINT "START,STEP"; 170 INPUT S1,S 180 LET S1=INT(ABS(S1)) 190 LET S=INT(ABS(S)) 200 LET T=0 210 LET N2=0 220 FILE #1:N$ 230 LET I=1 240 INPUT #1:L$ 250 IFEND #1 THEN 420 260 LET L=LEN(L$) 270 GOSUB 1080 280 IF N1>0 THEN 320 290 PRINT "NO LINE NUMBER" 300 PRINT L$ 310 GO TO 230 320 IF N1>N2 THEN 360 330 PRINT "OUT OF SEQUENCE" 340 PRINT L$ 350 GO TO 230 360 LET N2=N1 370 LET T=T+1 380 LET N(T)=N1 390 IF T<350 THEN 230 400 PRINT "TOO MANY LINES" 410 STOP 420 RESTORE #1 430 FILEV #2:N$ 440 LET N2=S1 450 INPUT #1: L$ 460 IFEND #1 THEN 830 470 LET I=1 480 LET L=LEN(L$) 490 GOSUB 1080 500 LET L2$=STR$(N2) 510 PRINT #2: L2$; 520 LET L$=SEG$(L$,I,72) 530 LET N2=N2+S 540 LET F=0 550 LET D=POS(L$,F$,1) \ LET P=D 560 IF D=0 THEN 590 570 LET L2$=SEG$(L$,P+1,72) 580 LET L$=SEG$(L$,1,P-1) 590 LET I=POS(L$,"GOTO",1)+4 600 IF I>4 THEN 850 610 LET I=POS(L$,"GO TO",1)+5 620 IF I>5 THEN 850 630 LET I=POS(L$,"THEN",1)+4 640 IF I>4 THEN 850 650 LET I=POS(L$,"GOSUB",1)+5 660 IF I>5 THEN 850 670 LET I=POS(L$,"GO SUB",1)+6 680 IF I>6 THEN 850 690 IF F=0 THEN 710 700 PRINT #2:F$; 710 PRINT #2:L$; 720 LET F=F+1 730 IF D>0 THEN 760 740 PRINT #2: 750 GO TO 450 760 LET D=POS(L2$,F$,1) \ LET P=D 770 IF D>0 THEN 800 780 LET L$=L2$ 790 GO TO 590 800 LET L$=SEG$(L2$,1,P-1) 810 LET L2$=SEG$(L2$,P+1,72) 820 GO TO 590 830 CLOSE #2 840 STOP 850 LET L=LEN(L$) 860 GOSUB 1020 870 IF C=32 THEN 860 880 IF C<0 THEN 990 890 LET I=I-1 900 LET P=I 910 GOSUB 1080 920 IF N1=0 THEN 990 930 FOR J=1 TO T 940 IF N1<>N(J) THEN 980 950 LET Q$=STR$(J*S-S+S1) 960 LET L$=SEG$(L$,1,P-1)&Q$ 970 GO TO 690 980 NEXT J 990 PRINT "BAD REFERENCE" 1000 PRINT L$ 1010 GO TO 690 1020 IF I<=L THEN 1050 1030 LET C=-1 1040 RETURN 1050 LET C=ASC(SEG$(L$,I,I)) 1060 LET I=I+1 1070 RETURN 1080 LET N1=0 1090 GOSUB 1020 1100 IF C<48 THEN 1140 1110 IF C>57 THEN 1140 1120 LET N1=N1*10+C-48 1130 GO TO 1090 1140 IF C<0 THEN 1160 1150 LET I=I-1 1160 RETURN 1170 END