be7cffa585e0d96a7aba06214b8d07c129cb3bdb
[pdp8.git] / sw / os8 / v3d / sources / extensions / dectapes / dectape2 / reseq.ba
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