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