X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fos8%2Fv3d%2Fsources%2Fextensions%2Fdectapes%2Fdectape2%2Freseq.ba;fp=sw%2Fos8%2Fv3d%2Fsources%2Fextensions%2Fdectapes%2Fdectape2%2Freseq.ba;h=be7cffa585e0d96a7aba06214b8d07c129cb3bdb;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git diff --git a/sw/os8/v3d/sources/extensions/dectapes/dectape2/reseq.ba b/sw/os8/v3d/sources/extensions/dectapes/dectape2/reseq.ba new file mode 100644 index 0000000..be7cffa --- /dev/null +++ b/sw/os8/v3d/sources/extensions/dectapes/dectape2/reseq.ba @@ -0,0 +1,108 @@ +1000 DIM L$(80),F$(1),C$(1),N$(16) +1010 DIM L2$(80) +1020 DIM N(350) +1030 LET F$=CHR$(28) +1040 PRINT "FILE"; +1050 INPUT N$ +1060 PRINT "START,STEP"; +1070 INPUT S1,S +1080 LET S1=INT(ABS(S1)) +1090 LET S=INT(ABS(S)) +1100 LET T=0 +1110 LET N2=0 +1120 FILE #1:N$ +1130 LET I=1 +1140 INPUT #1:L$ +1150 IFEND #1 THEN 1320 +1160 LET L=LEN(L$) +1170 GOSUB 1980 +1180 IF N1>0 THEN 1220 +1190 PRINT "NO LINE NUMBER" +1200 PRINT L$ +1210 GO TO 1130 +1220 IF N1>N2 THEN 1260 +1230 PRINT "OUT OF SEQUENCE" +1240 PRINT L$ +1250 GO TO 1130 +1260 LET N2=N1 +1270 LET T=T+1 +1280 LET N(T)=N1 +1290 IF T<350 THEN 1130 +1300 PRINT "TOO MANY LINES" +1310 STOP +1320 RESTORE #1 +1330 FILEV #2:N$ +1340 LET N2=S1 +1350 INPUT #1: L$ +1360 IFEND #1 THEN 1730 +1370 LET I=1 +1380 LET L=LEN(L$) +1390 GOSUB 1980 +1400 LET L2$=STR$(N2) +1410 PRINT #2: L2$; +1420 LET L$=SEG$(L$,I,80) +1430 LET N2=N2+S +1440 LET F=0 +1450 LET D=POS(L$,F$,1) \ LET P=D +1460 IF D=0 THEN 1490 +1470 LET L2$=SEG$(L$,P+1,80) +1480 LET L$=SEG$(L$,1,P-1) +1490 LET I=POS(L$,"GOTO",1)+4 +1500 IF I>4 THEN 1750 +1510 LET I=POS(L$,"GO TO",1)+5 +1520 IF I>5 THEN 1750 +1530 LET I=POS(L$,"THEN",1)+4 +1540 IF I>4 THEN 1750 +1550 LET I=POS(L$,"GOSUB",1)+5 +1560 IF I>5 THEN 1750 +1570 LET I=POS(L$,"GO SUB",1)+6 +1580 IF I>6 THEN 1750 +1590 IF F=0 THEN 1610 +1600 PRINT #2:F$; +1610 PRINT #2:L$; +1620 LET F=F+1 +1630 IF D>0 THEN 1660 +1640 PRINT #2: +1650 GO TO 1350 +1660 LET D=POS(L2$,F$,1) \ LET P=D +1670 IF D>0 THEN 1700 +1680 LET L$=L2$ +1690 GO TO 1490 +1700 LET L$=SEG$(L2$,1,P-1) +1710 LET L2$=SEG$(L2$,P+1,80) +1720 GO TO 1490 +1730 CLOSE #2 +1740 STOP +1750 LET L=LEN(L$) +1760 GOSUB 1920 +1770 IF C=32 THEN 1760 +1780 IF C<0 THEN 1890 +1790 LET I=I-1 +1800 LET P=I +1810 GOSUB 1980 +1820 IF N1=0 THEN 1890 +1830 FOR J=1 TO T +1840 IF N1<>N(J) THEN 1880 +1850 LET Q$=STR$(J*S-S+S1) +1860 LET L$=SEG$(L$,1,P-1)&Q$ +1870 GO TO 1590 +1880 NEXT J +1890 PRINT "BAD REFERENCE" +1900 PRINT L$ +1910 GO TO 1590 +1920 IF I<=L THEN 1950 +1930 LET C=-1 +1940 RETURN +1950 LET C=ASC(SEG$(L$,I,I)) +1960 LET I=I+1 +1970 RETURN +1980 LET N1=0 +1990 GOSUB 1920 +2000 IF C<48 THEN 2040 +2010 IF C>57 THEN 2040 +2020 LET N1=N1*10+C-48 +2030 GO TO 1990 +2040 IF C<0 THEN 2060 +2050 LET I=I-1 +2060 RETURN +2070 END