Compucolor.org – Virtual Media

Listing of file='EDT32.BAS;01' on disk='vmedia/taylor_4-sector.ccvf'

100 CLEAR 9500:I= 0:J= 0:K= 0:P= 0:C= 0:R= 0:B= 0:F= 0:U= 0:UN= 1:S= 0:E= 0:M= 0:N= 0:L= 0
110 Q= 250:DIM F(Q),B(Q),L(Q),L$(Q):G$= "\":F$= "SICTMEFUDLRPN":PLOT 6,2,15,12
120 B$= " ":A$= "A":Z$= "Z":X$= "0":Y$= "9":D$= ".":C$= "DIPCFONTBRMEWLSKQXH"
130 PRINT ,,"EDITOR/FORMATTER":PRINT ,,"VERSION 32K  10/08/79 JBW":PRINT
140 FOR I= 1TO Q:F(I)= I+ 1:B(I)= I- 1:L(I)= 0:L$(I)= "":NEXT I:F(Q)= 0:U= 0:UN= 1:M= 0:BY= 1:GOTO 2170
160 L= L(M):P= 1:I$= B$:GOSUB 2980:INPUT I$:GOSUB 2210:IF R< 0THEN GOTO 200
170 T$= LEFT$ (T$,1):FOR O= 1TO 19:IF MID$ (C$,O,1)= T$THEN 190
180 NEXT :GOTO 2490
190 ON OGOTO 220,390,560,670,980,990,1000,1140,1160,1190,1220,1540,1550,1840,1940,2080,2110,2140,2170
200 IF O= 5THEN B= 0:GOTO 940
210 GOTO 2490
220 S= L:E= L:GOSUB 2210:IF R= 2THEN GOSUB 2210:IF R> 0THEN 2500
230 IF R= 0THEN S= VAL (T$):E= S:GOSUB 2210:IF R= 2THEN GOSUB 2210
240 IF R= 0THEN E= VAL (T$):GOSUB 2210:IF E< STHEN 2530
250 IF T$= "BY"THEN GOSUB 2210:BY= VAL (T$):GOTO 270
260 IF R= 0OR R= 1THEN 2500
270 IF BY< .0001OR BY> 10000THEN 2530
280 B= 0:F= 0:C= U:IF C= 0THEN 2550
290 IF C> 0AND L(C)< STHEN C= F(C):GOTO 290
300 IF C> 0AND L(C)< = ETHEN B= C
310 IF C> 0AND L(C)< = ETHEN F= C:L(C)= 0:C= F(C):GOTO 310
320 IF B= 0AND F= 0THEN 2510
330 M= B(B):IF U= BTHEN U= F(F):B(U)= 0:GOTO 350
340 F(B(B))= F(F):B(F(F))= B(B)
350 F(F)= UN:B(UN)= F:UN= B:M= B(B)
360 IF M= 0THEN M= U
370 IF O= 1THEN 2600
380 I= S- BY:GOTO 440
390 I= L:GOSUB 2210:IF R> 1THEN 2500
400 IF R= 0THEN I= VAL (T$):GOSUB 2210
410 IF T$= "BY"THEN GOSUB 2210:BY= VAL (T$):GOTO 430
420 IF R> 0THEN 2500
430 IF BY< .0001OR BY> 10000THEN 2530
440 B= 0:F= U:J= I+ BY
450 IF F> 0AND L(F)< JTHEN B= F:F= F(F):GOTO 450
460 I= VAL (STR$ (I+ BY)):C= UN:IF O< > 12THEN 490
470 IF R= 0OR L(R)> ETHEN 2600
480 I$= L$(R):R= F(R):GOTO 500
490 I$= "":INPUT ">";I$:IF I$= "0"OR LEN (I$)> 64THEN PRINT "INSERT MODE EXITED":GOTO 2600
500 IF UN= 0THEN 2520
510 UN= F(C):IF F> 0AND I> = L(F)THEN 2540
520 IF B= 0THEN U= C:GOTO 540
530 F(B)= C:B(C)= B
540 F(C)= F:B(F)= C:B(UN)= 0:L(C)= I:L$(C)= I$:M= C
550 B= C:GOTO 460
560 S= L:E= L:IF U= 0THEN 2550
570 GOSUB 2210:IF T$= "ALL"THEN S= 0:E= 100000:GOTO 610
580 IF R> 0THEN 2500
590 IF R= 0THEN S= VAL (T$):E= S:GOSUB 2210:IF R= 2THEN GOSUB 2210:IF R> 0THEN 2500
600 IF R= 0THEN E= VAL (T$):IF E< STHEN 2530
610 C= U:J= 0
620 IF C> 0AND L(C)< STHEN C= F(C):GOTO 620
630 IF C= 0OR L(C)> ETHEN 650
640 J= 1:PRINT L(C);TAB( 8);L$(C):M= C:C= F(C):GOTO 630
650 IF J= 0THEN 2510
660 GOTO 160
670 F= 0:C= 0:B= 0:J= LEN (I$):R= J:I= 0:IF O= 5THEN B= J
680 T$= MID$ (I$,J,1):IF T$< A$OR T$> Z$THEN 730
690 T$= MID$ (I$,J,1):IF T$> = A$AND T$< = Z$THEN J= J- 1:IF J> 0THEN 690
700 IF J= 0THEN 2500
710 T$= RIGHT$ (I$,R- J):IF T$= "PRALL"THEN I= 2:GOTO 730
720 I= 1:IF T$< > "ALL"THEN 2500
730 T$= MID$ (I$,J,1):IF T$> = X$AND T$< = Y$THEN 2500
740 IF MID$ (I$,J,1)= T$THEN F= C:C= B:B= J:IF F> 0THEN 760
750 J= J- 1:IF J> 0THEN 740
760 S= L:E= L:IF J= 0OR F= 0THEN 2500
770 S$= MID$ (I$,B+ 1,C- B- 1):IF O= 5THEN E$= S$:E= 100000:GOTO 790
780 E$= MID$ (I$,C+ 1,F- C- 1)
790 R= 9:IF P< BTHEN GOSUB 2210:IF R> 0THEN 2500
800 IF R= 0THEN S= VAL (T$):E= S:IF P< BTHEN GOSUB 2210
810 IF P< BAND R= 2THEN GOSUB 2210:IF R> 1THEN 2500
820 IF R= 0THEN E= VAL (T$)
830 IF P< > BTHEN 2500
840 B= 0:C= U:IF C= 0THEN 2550
850 IF C> 0AND L(C)< STHEN C= F(C):GOTO 850
860 P= 1:IF C= 0OR L(C)> ETHEN 950
870 I$= L$(C):M= C:T$= S$:GOSUB 2300:F= P:IF R> 0THEN 940
880 B= 1:L$(C)= MID$ (I$,1,P- K- 1)+ E$:IF I= 0THEN 920
890 F= P:GOSUB 2300:IF R> 0THEN 920
900 L$(C)= L$(C)+ MID$ (I$,F,P- F- K)+ E$:IF I> 0THEN 890
910 IF O= 5THEN 2600
920 L$(C)= L$(C)+ MID$ (I$,F,LEN (I$)- F+ 1):IF O= 5AND I= 0THEN 2600
930 IF I= 2THEN PRINT L(C);TAB( 8);L$(C)
940 C= F(C):GOTO 860
950 O= 0:IF B= 0THEN 2560
960 IF I< 2THEN 2600
970 GOTO 160
980 GOTO 670
990 GOTO 220
1000 IF U= 0THEN 2550
1010 I= 1:GOSUB 2210:K= 1:IF R< 0THEN 1050
1020 IF T$= "-"THEN I= - 1
1030 IF R= 2THEN GOSUB 2210:IF R< > 0THEN 2500
1040 K= VAL (T$)
1050 J= M:IF I< 0THEN 1100
1060 IF J= 0THEN PRINT "BOTTOM REACHED":GOTO 2600
1070 IF K= 0THEN 2600
1080 J= F(J):K= K- 1:IF J> 0THEN M= J
1090 GOTO 1060
1100 IF J= 0THEN PRINT "TOP REACHED":GOTO 2600
1110 IF K= 0THEN 2600
1120 J= B(J):K= K- 1:IF J> 0THEN M= J
1130 GOTO 1100
1140 IF U= 0THEN 2550
1150 M= U:GOTO 2600
1160 F= U:IF U= 0THEN 2550
1170 IF F(F)> 0THEN F= F(F):GOTO 1170
1180 M= F:GOTO 2600
1190 J= U:K= 1:M= U
1200 IF J= 0THEN 2600
1210 L(J)= K:K= K+ 1:J= F(J):GOTO 1200
1220 S= L:GOSUB 2210:IF R< > 0THEN 2500
1230 I= VAL (T$):GOSUB 2210:IF R= 2THEN GOSUB 2210
1240 IF F= 0THEN S= I:I= VAL (T$):GOSUB 2210:IF R= 2THEN GOSUB 2210:IF R= 2THEN 2500
1250 E= S:IF R= 0THEN E= I:I= VAL (T$):GOSUB 2210:IF R> 1THEN 2500
1260 IF T$< > "BY"THEN 1290
1270 GOSUB 2210:IF R< > 0THEN 2500
1280 BY= VAL (T$):IF BY< .0001OR BY> 10000THEN 2530
1290 K= 0:IF E< STHEN 2530
1300 J= I:C= 0:B= 0:F= 0:R= U
1310 IF R= 0THEN 2550
1320 IF L(R)< = JTHEN C= R
1330 IF L(R)< STHEN R= F(R):GOTO 1310
1340 IF L(R)< = ETHEN B= R
1350 IF R= 0THEN 1390
1360 IF L(R)< = JTHEN C= R
1370 IF L(R)< = ETHEN K= K+ 1:F= R:R= F(R):GOTO 1350
1380 IF R> 0AND L(R)< = JTHEN C= R:R= F(R):GOTO 1380
1390 IF B= 0THEN 2510
1400 IF O= 12THEN R= B:K= 1:GOTO 440
1410 R= F(C):IF C= 0THEN R= U
1420 IF R= BTHEN R= F(F)
1430 M= F:IF R> 0AND L(R)< = I+ K* BYTHEN 2540
1440 R= B
1450 I= VAL (STR$ (I+ BY)):L(R)= I:IF R< > FTHEN R= F(R):GOTO 1450
1460 IF B(B)= COR F= CTHEN 1530
1470 IF U= BTHEN U= F(F)
1480 IF F(C)> 0THEN B(F(C))= B
1490 IF F(F)> 0THEN B(F(F))= B(B)
1500 IF B(B)> 0THEN F(B(B))= F(F)
1510 B(B)= C:IF C> 0THEN F(F)= F(C):F(C)= B:GOTO 1530
1520 F(F)= U:B(U)= F:U= B
1530 GOTO 2600
1540 GOTO 1220
1550 CW= 0:MW= 1:FW= 1:UW= 6:DW= 4:LW= 0:RW= 62:PW= 60:NW= 0:FE= 1:S= 0:E= 100000
1560 E$= "":IF U= 0THEN 2550
1570 C= U:B= 0:F= 0:I= 0:N= 0:V= 1:W= RW- LW+ 1:GOSUB 2210:IF R> 0THEN 2500
1580 IF R= 0THEN S= VAL (T$):E= S:FE= 0:GOSUB 2210:IF R= 2THEN GOSUB 2210
1590 IF R> 0THEN 2500
1600 IF R= 0THEN E= VAL (T$):IF E< STHEN 2530
1610 IF C> 0AND L(C)< STHEN C= F(C):GOTO 1610
1620 PRINT "HIT -RETURN- TO DISPLAY OR -1- TO PRINT ON PRINTER :";:INPUT T:IF T= 1THEN GOSUB 2970
1630 O= 0:IF C= 0OR L(C)> ETHEN 1810
1640 I$= L$(C):M= C:L= LEN (I$):IF L= 0THEN C= F(C):GOTO 1630
1650 FOR P= 1TO L:S$= MID$ (I$,P,1):IF S$< > G$THEN 1720
1660 S= - 1:P= P+ 1:GOSUB 2210:IF R< > 1THEN 2570
1670 S$= LEFT$ (T$,1):GOSUB 2210:IF R= 1THEN 2570
1680 IF R= 0THEN S= VAL (T$):GOSUB 2210
1690 P= P- 1:IF T$< > G$THEN 2570
1700 FOR K= 1TO 13:IF MID$ (F$,K,1)< > S$THEN NEXT :GOTO 2570
1710 ON KGOTO 2620,2650,2680,2730,2780,2800,2840,2860,2880,2900,2920,2940,2960
1720 E$= E$+ S$:F= F+ 1:IF FW= 0THEN 1790
1730 IF P= LTHEN E$= E$+ B$:N= F:B= B+ 1:F= F+ 1:I= 0:O= P:GOTO 1760
1740 IF S$< > B$THEN I= 1:GOTO 1760
1750 IF I= 1THEN B= B+ 1:I= 0:N= F- 1:O= P
1760 IF F< WTHEN 1790
1770 IF B= 0THEN N= F:O= P
1780 E$= LEFT$ (E$,N):B= B- 1:P= O:F= W- N:GOSUB 2330
1790 NEXT P:IF FW= 0THEN GOSUB 2330
1800 C= F(C):GOTO 1630
1810 FW= 0:GOSUB 2330:IF V= 1OR FE= 0THEN 160
1820 GOSUB 2420:IF V> 1THEN 1820
1830 GOTO 160
1840 GOSUB 2990
1850 PRINT "ENTER COMPLETE NAME (IE-LETTER.TXT;1)"
1860 PRINT "OF THE FILE YOU WISH TO LOAD"
1870 INPUT "OR HIT -RETURN- TO ABORT: ";Q1$:IF Q1$= "0"THEN 160
1880 FILE "R",1,Q1$,1:FILE "T",3010:FILE "A",1,CR,NR,RS,BF:FOR I= 1TO NR:T$= ""
1890 GET 1,I,1;T$[64]:B(F(I))= I:B1$= "       ":X= 0:X1= 7:L(I)= I
1900 IF MID$ (T$,64- X1,7)= B1$THEN X= X1:X1= X1+ 7:GOTO 1900
1910 IF MID$ (T$,64- X,1)= B$THEN X= X+ 1:GOTO 1910
1920 T$= LEFT$ (T$,64- X):L$(I)= T$:NEXT I:U= 1:UN= NR+ 1:M= U:F(NR)= 0:B(UN)= 0:FILE "C",1
1930 F(0)= 0:B(0)= 0:L(0)= 0:GOTO 160
1940 J= U:K= 1:M= U
1950 IF J= 0THEN K= K- 1:GOTO 1970
1960 L(J)= K:K= K+ 1:J= F(J):GOTO 1950
1970 IF M= 0THEN 2550
1980 L(0)= U:PRINT "ENTER FILE NAME(6 CHAR MAX) OF FILE TO SAVE"
1990 INPUT "OR HIT -RETURN- TO ABORT : ";Q1$:IF Q1$= "0"THEN 160
2000 IF LEN (Q1$)> 6THEN PRINT "TOO MANY CHARACTERS":GOTO 1980
2010 FILE "T",3010:FILE "N",Q1$+ ".TXT",K,64,8:FILE "R",1,Q1$+ ".TXT",1
2020 C= U:J= 0:I= 1
2030 IF C> 0AND L(C)< STHEN C= F(C):GOTO 2030
2040 IF C= 0OR L(C)> ETHEN 2060
2050 J= 1:T$= "":T$= L$(C):PUT 1,I,1;T$[64]:M= C:C= F(C):I= I+ 1:GOTO 2040
2060 IF J= 0THEN 2510
2070 FILE "C",1:GOTO 2610
2080 INPUT "DO YOU WANT TO KILL ENTIRE TEXT(Y/N)? ";I$
2090 IF LEFT$ (I$,1)= "Y"THEN 140
2100 GOTO 160
2110 PRINT :INPUT "DO YOU REALLY WANT TO END THE PROGRAM? ";I$
2120 IF LEFT$ (I$,1)= "Y"THEN PRINT "NORMAL PROGRAM END":END
2130 GOTO 160
2140 PRINT "UNUSED = "UN"  USED = "U"  B = "B"   F = "F"  C = "C:PRINT
2150 PRINT ," I"," F"," B"," L"
2160 PRINT :FOR I= 1TO Q:PRINT ,I,F(I),B(I),L(I):NEXT :PRINT :GOTO 160
2170 PRINT ,"BOTTOM","CHANGE","DELETE","EXCERPT","FIND"
2180 PRINT ,"INSERT","KILL","LOAD","MOVE","OVERLAY"
2190 PRINT ,"NEXT","PRINT","QUIT","SAVE","RENUMBER"
2200 PRINT ,"TOP","WRITE","XRAY","HELP":GOTO 160
2210 R= - 1:J= LEN (I$):IF P> JOR I$= "0"THEN T$= "":RETURN
2220 FOR P= PTO J:IF MID$ (I$,P,1)= B$THEN NEXT :RETURN
2230 R= 2:K= P:T$= MID$ (I$,P,1):IF T$> = A$AND T$< = Z$THEN 2280
2240 IF T$> = X$AND T$< = Y$OR T$= D$THEN 2260
2250 P= P+ 1:RETURN
2260 FOR P= PTO J:T$= MID$ (I$,P,1):IF T$> = X$AND T$< = Y$OR T$= D$THEN R= 0:NEXT
2270 T$= MID$ (I$,K,P- K):RETURN
2280 FOR P= PTO J:T$= MID$ (I$,P,1):IF T$> = A$AND T$< = Z$THEN R= 1:NEXT
2290 T$= MID$ (I$,K,P- K):RETURN
2300 K= LEN (T$):FOR J= PTO LEN (I$):IF MID$ (I$,J,K)< > T$THEN NEXT :R= 1:RETURN
2310 IF LEN (I$)= 0THEN I= 0
2320 P= J+ K:R= 0:RETURN
2330 IF UW+ DW+ MW> PWTHEN M= VS:GOTO 2580
2340 IF RW< LWTHEN M= HS:GOTO 2590
2350 IF LEN (E$)= 0THEN E$= "":N= 0:B= 0:F= 0:I= 0:RETURN
2360 IF V= 1THEN IF UW> 0THEN FOR I= 1TO UW:PRINT :NEXT :V= UW+ 1
2370 PRINT TAB( LW);:IF FW= 0THEN PRINT E$;:GOTO 2410
2380 J= - 1:FOR I= 1TO LEN (E$):S$= MID$ (E$,I,1):IF S$< > B$THEN J= 1:GOTO 2400
2390 IF J= 1AND B> 0THEN K= INT (F/ B+ RND (1)):PRINT SPC( K);:B= B- 1:F= F- K:J= 0
2400 PRINT S$;:NEXT
2410 E$= "":N= 0:B= 0:F= 0:I= 0
2420 PRINT :V= V+ 1:IF PW- DW- V< MW- 1THEN 2450
2430 IF MW= 1THEN RETURN
2440 FOR I= 1TO MW- 1:PRINT :NEXT :V= V+ MW- 1:RETURN
2450 IF V< PW- DW+ 1THEN FOR I= VTO PW- DW:PRINT :NEXT :V= PW- DW
2460 IF NW> 0THEN PRINT TAB( LW+ W/ 2);NW:NW= NW+ 1:V= V+ 1
2470 IF V< PWTHEN FOR I= VTO PW:PRINT :NEXT
2480 PRINT :V= 1:RETURN
2490 GOSUB 2980:PRINT "NOT A COMMAND":GOTO 160
2500 GOSUB 2980:PRINT "SYNTAX ERROR":GOTO 160
2510 GOSUB 2980:PRINT "ILLEGAL LINE NUMBER":GOTO 160
2520 GOSUB 2980:PRINT "EDITOR BUFFER FULL":GOTO 160
2530 GOSUB 2980:PRINT "PARAMETER VALUE ERROR":GOTO 160
2540 GOSUB 2980:PRINT "NOT ENOUGH SPACE TO INSERT":GOTO 2600
2550 GOSUB 2980:PRINT "THE DATA FILE IS EMPTY":GOTO 160
2560 GOSUB 2980:PRINT "TEXT COULD NOT BE FOUND":GOTO 2600
2570 GOSUB 2980:PRINT "FORMATTER COMMAND ERROR":GOTO 2600
2580 GOSUB 2980:PRINT "ILLEGAL VERTICAL SPACING":GOTO 2600
2590 GOSUB 2980:PRINT "ILLEGAL MARGIN VALUES":GOTO 2600
2600 IF M= 0THEN 2550
2610 GOSUB 2980:PRINT L(M);TAB( 8);L$(M):GOTO 160
2620 R= FW:FW= 0:GOSUB 2330:FW= R:S= ABS (S):IF S= 0THEN 1790
2630 J= PW- DW- V:K= S+ MW:IF K> JTHEN K= J
2640 FOR J= 1TO K:GOSUB 2420:NEXT :GOTO 1790
2650 R= FW:FW= 0:GOSUB 2330:FW= R:IF S< 0THEN S= 10
2660 IF S> WTHEN 2570
2670 FOR J= 1TO S:E$= B$+ E$:NEXT :F= F+ S:N= F:GOTO 1790
2680 S= ABS (S):IF (S> 0AND CW= 0)OR (S< 1AND CW= 1)OR (S> 0AND CW= 2)THEN 2570
2690 CW= S+ 1:IF CW= 1THEN 2720
2700 K= (W- LEN (E$))/ 2:IF K< = 0THEN 2720
2710 FOR J= 1TO K:E$= B$+ E$:F= F+ K:NEXT J
2720 R= FW:FW= 0:GOSUB 2330:FW= R:GOTO 1790
2730 IF S< 0THEN S= 10
2740 IF S> WTHEN 2570
2750 J= S- LEN (E$)- 1:IF J< 0THEN R= FW:FW= 0:GOSUB 2330:FW= R:J= S- 1
2760 IF J> 0THEN FOR K= 1TO J:E$= E$+ B$:NEXT :F= F+ J:N= F:IF I= 1THEN O= O+ 1
2770 GOTO 1790
2780 MW= ABS (S):VS= C:IF MW< 1THEN 2570
2790 GOTO 1790
2800 S= ABS (S):IF S< 1THEN 2570
2810 R= FW:FW= 0:GOSUB 2330:FW= R:FOR J= 1TO S
2820 GOSUB 2420:IF V> 1THEN 2820
2830 NEXT J:FW= R:GOTO 1790
2840 FW= ABS (S):IF FW> 1THEN 2570
2850 GOTO 1790
2860 IF S< 0THEN S= 6
2870 UW= S:VS= C:GOTO 1790
2880 IF S< 0THEN S= 4
2890 DW= S:VS= C:GOTO 1790
2900 IF S< 0THEN S= 0
2910 LW= S:W= RW- LW+ 1:HS= C:GOTO 1790
2920 IF S< 0THEN S= 62
2930 RW= S:W= RW- LW+ 1:HS= C:GOTO 1790
2940 IF S< 0THEN S= 60
2950 PW= S:VS= C:GOTO 1790
2960 NW= - S* (S> 0):GOTO 1790
2970 INPUT "WHAT IS THE MAXIMUM LINE WIDTH YOU WANT (64,80,96,132)? ";Q:POKE 33289,Q:GOTO 3020
2980 POKE 33289,64:POKE 33265,0:PLOT 6,2,15:RETURN
2990 INPUT "DO YOU NEED TO SEE THE DISK DIRECTORY? ";Q$:IF LEFT$ (Q$,1)= "N"THEN RETURN
3000 PLOT 27,4:PRINT "DIR":PLOT 27,27,6,2,15:RETURN
3010 PRINT "DISK FILE ERROR":GOTO 160
3020 PLOT 14,27,18,7,27,13:RETURN