Commit | Line | Data |
---|---|---|
81e70d48 PH |
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 |