| 1 | 1000 DIM L$(80),F$(1),C$(1),N$(16) |
| 2 | 1010 DIM L2$(80) |
| 3 | 1020 DIM N(350) |
| 4 | 1030 LET F$=CHR$(28) |
| 5 | 1040 PRINT "FILE"; |
| 6 | 1050 INPUT N$ |
| 7 | 1060 PRINT "START,STEP"; |
| 8 | 1070 INPUT S1,S |
| 9 | 1080 LET S1=INT(ABS(S1)) |
| 10 | 1090 LET S=INT(ABS(S)) |
| 11 | 1100 LET T=0 |
| 12 | 1110 LET N2=0 |
| 13 | 1120 FILE #1:N$ |
| 14 | 1130 LET I=1 |
| 15 | 1140 INPUT #1:L$ |
| 16 | 1150 IFEND #1 THEN 1320 |
| 17 | 1160 LET L=LEN(L$) |
| 18 | 1170 GOSUB 1980 |
| 19 | 1180 IF N1>0 THEN 1220 |
| 20 | 1190 PRINT "NO LINE NUMBER" |
| 21 | 1200 PRINT L$ |
| 22 | 1210 GO TO 1130 |
| 23 | 1220 IF N1>N2 THEN 1260 |
| 24 | 1230 PRINT "OUT OF SEQUENCE" |
| 25 | 1240 PRINT L$ |
| 26 | 1250 GO TO 1130 |
| 27 | 1260 LET N2=N1 |
| 28 | 1270 LET T=T+1 |
| 29 | 1280 LET N(T)=N1 |
| 30 | 1290 IF T<350 THEN 1130 |
| 31 | 1300 PRINT "TOO MANY LINES" |
| 32 | 1310 STOP |
| 33 | 1320 RESTORE #1 |
| 34 | 1330 FILEV #2:N$ |
| 35 | 1340 LET N2=S1 |
| 36 | 1350 INPUT #1: L$ |
| 37 | 1360 IFEND #1 THEN 1730 |
| 38 | 1370 LET I=1 |
| 39 | 1380 LET L=LEN(L$) |
| 40 | 1390 GOSUB 1980 |
| 41 | 1400 LET L2$=STR$(N2) |
| 42 | 1410 PRINT #2: L2$; |
| 43 | 1420 LET L$=SEG$(L$,I,80) |
| 44 | 1430 LET N2=N2+S |
| 45 | 1440 LET F=0 |
| 46 | 1450 LET D=POS(L$,F$,1) \ LET P=D |
| 47 | 1460 IF D=0 THEN 1490 |
| 48 | 1470 LET L2$=SEG$(L$,P+1,80) |
| 49 | 1480 LET L$=SEG$(L$,1,P-1) |
| 50 | 1490 LET I=POS(L$,"GOTO",1)+4 |
| 51 | 1500 IF I>4 THEN 1750 |
| 52 | 1510 LET I=POS(L$,"GO TO",1)+5 |
| 53 | 1520 IF I>5 THEN 1750 |
| 54 | 1530 LET I=POS(L$,"THEN",1)+4 |
| 55 | 1540 IF I>4 THEN 1750 |
| 56 | 1550 LET I=POS(L$,"GOSUB",1)+5 |
| 57 | 1560 IF I>5 THEN 1750 |
| 58 | 1570 LET I=POS(L$,"GO SUB",1)+6 |
| 59 | 1580 IF I>6 THEN 1750 |
| 60 | 1590 IF F=0 THEN 1610 |
| 61 | 1600 PRINT #2:F$; |
| 62 | 1610 PRINT #2:L$; |
| 63 | 1620 LET F=F+1 |
| 64 | 1630 IF D>0 THEN 1660 |
| 65 | 1640 PRINT #2: |
| 66 | 1650 GO TO 1350 |
| 67 | 1660 LET D=POS(L2$,F$,1) \ LET P=D |
| 68 | 1670 IF D>0 THEN 1700 |
| 69 | 1680 LET L$=L2$ |
| 70 | 1690 GO TO 1490 |
| 71 | 1700 LET L$=SEG$(L2$,1,P-1) |
| 72 | 1710 LET L2$=SEG$(L2$,P+1,80) |
| 73 | 1720 GO TO 1490 |
| 74 | 1730 CLOSE #2 |
| 75 | 1740 STOP |
| 76 | 1750 LET L=LEN(L$) |
| 77 | 1760 GOSUB 1920 |
| 78 | 1770 IF C=32 THEN 1760 |
| 79 | 1780 IF C<0 THEN 1890 |
| 80 | 1790 LET I=I-1 |
| 81 | 1800 LET P=I |
| 82 | 1810 GOSUB 1980 |
| 83 | 1820 IF N1=0 THEN 1890 |
| 84 | 1830 FOR J=1 TO T |
| 85 | 1840 IF N1<>N(J) THEN 1880 |
| 86 | 1850 LET Q$=STR$(J*S-S+S1) |
| 87 | 1860 LET L$=SEG$(L$,1,P-1)&Q$ |
| 88 | 1870 GO TO 1590 |
| 89 | 1880 NEXT J |
| 90 | 1890 PRINT "BAD REFERENCE" |
| 91 | 1900 PRINT L$ |
| 92 | 1910 GO TO 1590 |
| 93 | 1920 IF I<=L THEN 1950 |
| 94 | 1930 LET C=-1 |
| 95 | 1940 RETURN |
| 96 | 1950 LET C=ASC(SEG$(L$,I,I)) |
| 97 | 1960 LET I=I+1 |
| 98 | 1970 RETURN |
| 99 | 1980 LET N1=0 |
| 100 | 1990 GOSUB 1920 |
| 101 | 2000 IF C<48 THEN 2040 |
| 102 | 2010 IF C>57 THEN 2040 |
| 103 | 2020 LET N1=N1*10+C-48 |
| 104 | 2030 GO TO 1990 |
| 105 | 2040 IF C<0 THEN 2060 |
| 106 | 2050 LET I=I-1 |
| 107 | 2060 RETURN |
| 108 | 2070 END |