Listing of file='TXTEDT.BAS;01' on disk='vmedia/ncc_17-sector.ccvf'
5 REM BILL KOCH'S
10 PLOT 12:PRINT TAB( 20)"BASIC WORD PROCESSOR"
20 REM 80 MICROCOMPUTING, MAY 1980
30 CLEAR 1500:NL= 120:DIM A$(NL),X$(3),S(20),T(20)
35 FILE "T",4150
40 B$= CHR$ (11):F$= "#":N$= "Y":PN$= "N":P1$= "Y"
50 S$= " ":H$= S$:LA= - 1:P= 1:FP= 1:PL= 25:LL= 55:LM= 10:U= 32
55 ST$= " ":FOR I= 1TO 3:ST$= ST$+ ST$:NEXT I
57 FOR I= 1TO 4:CR$= CR$+ CHR$ (13):NEXT
58 GOTO 1320
60 L= LA:IT= 0:R= 0:A$= "":PRINT :PRINT "COMMAND ";:GOSUB 2200
70 AA= A- 64:IF AA = < 0GOTO 80
75 ON AAGOTO 90,480,510,760,790,1220,80,1320,1350,1390,1510,4200,1580,80,80,1640,80,1750,4000,80,80,1830,80,1970
80 PRINT "** ENTRY ERROR **":GOTO 60
90 PLOT 12:D= 0:N$= "Y":IF LA< 0THEN L= 0:GOTO 130
100 IF NL= LA+ 1THEN 210
104 IF L> FL+ 12THEN B= L- 12: GOTO 110
106 B= FL
110 FOR I= BTO L:X= LEN (A$(I)):D= D+ INT ((X+ 4)/ 64- .01)
120 GOSUB 1910:NEXT I:L= L+ 1
130 C= (L- FL+ D)* 64:IF C> 1920THEN C= 1920:PRINT :PRINT
140 GOSUB 2000:PRINT F$+ RIGHT$ (" "+ STR$ (L),2)+ " ";:I= L:GOSUB 3100
145 P= LEN (A$(L))+ 1:C= C+ P+ 4:K= L+ 1
150 GOSUB 2200
155 IF A> 64 AND A< 91 THEN A= A+ U:GOTO 200:REM ADJ UPPER/LOWER
160 IF A> 96 AND A< 123 THEN A= A- U:PLOT 26,20,A,18:GOTO 200
161 IF (A> 31AND A< 65)OR (A> 90AND A< 96)THEN GOTO 200
162 ON A- 7GOTO ,410,310,,,170,,,,,,,,,,,380,410,,,330,,,460
165 GOTO 190
170 A= ASC (S$):GOTO 210
190 IF A< > 96 GOTO 200
193 IF LA< LTHEN LA= L
195 GOTO 60
200 A$(L)= A$(L)+ CHR$ (A)
205 IF P> LLGOTO 210
206 P= P+ 1:C= C+ 1:IF P= LL- 5THEN PLOT 6,75,3,59,Y,96,6,2,26,26,26,26,26,26
207 GOTO 150
210 IF R< > 0GOTO 60
215 IF NL< = KTHEN PRINT :PRINT " FILE FULL":LA= NL- 1:GOTO 60
220 IF LEN (A$(K))< > 0THEN L= K:GOSUB 1360
230 IF K> LATHEN LA= K
240 IF S$= CHR$ (A)GOTO 280
250 FOR M= LL+ 1TO 2STEP - 1:A$= MID$ (A$(L),M,1):IF A$< > S$THEN NEXT M:GOTO 280
260 A$(K)= RIGHT$ (A$(L),LL- M+ 1):A$(L)= LEFT$ (A$(L),M- 1)
265 X= LL- M+ 1
270 C= C- LL+ M- 1:GOSUB 2000:PRINT RIGHT$ (ST$,LL- M+ 2);:L= K:GOTO 130
280 A$(L)= LEFT$ (A$(L),LL):L= K:GOTO 130
290 IF A> 64AND A< 91THEN A$= CHR$ (20)+ CHR$ (A)+ CHR$ (18):P= P+ 2:RETURN
295 IF A> 96AND A< 123THEN A= A- U
300 A$= CHR$ (A):RETURN
310 IF P> LLGOTO 210:REM DELETE
320 GOSUB 2000:PRINT CHR$ (94);:A$(L)= A$(L)+ CHR$ (4):A$= S$:GOTO 210
330 IF P> LLGOTO 210:REM S-D
340 C= (L- FL+ D)* 64:IF C> 900THEN C= 900
350 GOSUB 1180:A= 13:GOTO 162
380 IF P= 1GOTO 150:REM S-L
390 A$(L)= "":P= 1:C= (L- FL+ D)* 64+ 4:IF C> 900THEN C= 900
400 GOSUB 2000:PRINT B$;:GOTO 150
410 IF P> LL- 6GOTO 150:REM R
420 A$(L)= A$(L)+ LEFT$ (ST$,5):C= C+ 5:P= P+ 5:GOTO 150
430 IF P> LLGOTO 210:REM S-R
440 C= (L- FL+ D)* 64+ 4:IF C> 900THEN C= 900
450 GOSUB 1200:P= 1:A$= S$:GOTO 210
460 IF P> LLGOTO 210:REM CL
470 GOSUB 2000:PRINT CHR$ (93);:A$(L)= A$(L)+ CHR$ (5):A$= S$:GOTO 210
480 PLOT 12:PRINT "DELETING BLANK LINES":FOR J= LATO 0STEP - 1:REM BLANK
490 IF A$(J)= ""THEN FOR I= JTO LA:A$(I)= A$(I+ 1):NEXT I:A$(LA)= "":LA= LA- 1
500 NEXT J:IF R= 1THEN RETURN
505 GOTO 1830
510 PRINT :INPUT "FIRST LINE TO COMPILE ";F:IF F< 0THEN F= 0:REM COMPILE
520 INPUT "LAST LINE TO COMPILE ";Z:IF Z> LATHEN Z= LA
530 IF F> = Z GOTO 80
535 PLOT 12:PRINT "COMPILING":FOR L= FTO Z- 1:K= L+ 1
540 X= LEN (A$(L)):X$= "":IF X< 2GOTO 620
545 IF X< = LLGOTO 600
550 FOR I= XTO 1STEP - 1:A$= MID$ (A$(L),I,1)
560 IF A$< > S$THEN X$= A$+ X$:NEXT I:GOTO 600
565 IF X$= ""THEN NEXT I
570 A= ASC (RIGHT$ (X$,1)):IF A= 33OR A= 46OR A= 58OR A= 63THEN X$= X$+ " "
580 A$(L)= LEFT$ (A$(L),I- 1):IF LEN (A$(K))= 0THEN A$(K)= X$:GOTO 540
590 A$(K)= X$+ S$+ A$(K):GOTO 540
600 X= LEN (A$(L)):IF X< 2GOTO 620
605 FOR I= XTO 2STEP - 1
610 IF RIGHT$ (A$(L),1)= S$THEN A$(L)= LEFT$ (A$(L),I- 1):NEXT I
620 NEXT L:FOR L= FTO Z- 1:K= L+ 1
630 X= LEN (A$(L)):Y= LEN (A$(K)):X$= "":IF X= 0OR Y= 0GOTO 750
640 A= ASC (RIGHT$ (A$(L),1))
650 IF A= 33OR A= 46OR A= 58OR A= 63THEN A$(L)= A$(L)+ " ":X= X+ 2
660 FOR I= 1TO Y:A$= MID$ (A$(K),I,1)
670 IF A$< > S$THEN X$= X$+ A$:NEXT I
675 IF X$= ""THEN NEXT I
680 IF LL- X< IGOTO 710
690 Y= Y- I:IF Y< 0THEN Y= 0
700 A$(L)= A$(L)+ S$+ X$:IF Y= 0THEN A$(K)= "":GOTO 630
705 A$(K)= RIGHT$ (A$(K),Y):GOTO 630
710 X= LEN (A$(L)):IF X< 2GOTO 730
715 FOR I= XTO 2STEP - 1
720 IF RIGHT$ (A$(L),1)= S$THEN A$(L)= LEFT$ (A$(L),I- 1):NEXT I
730 IF Y< 2GOTO 750
735 FOR I= YTO 2STEP - 1
740 IF LEFT$ (A$(K),1)= S$THEN A$(K)= RIGHT$ (A$(K),I- 1):NEXT I
750 NEXT L:X= LEN (A$(Z)):GOTO 900
760 INPUT "FIRST LINE TO DELETE ";F:IF F< 0THEN F= 0:REM DELETE
770 INPUT "LAST LINE TO DELETE ";Z:IF Z> LATHEN Z= LA
780 IF F> ZGOTO 80
785 FOR I= FTO Z:A$(I)= "":NEXT I:GOTO 1830
790 PRINT :INPUT "EDIT LINE ";L:IF L< 0OR L> LAOR A$(L)= ""GOTO 80:REM EDIT
800 C= 4+ 64:P= 1:X$(0)= A$(L):N$= "Y"
810 PLOT 12:I= L:GOSUB 1910:N= 1:Q$= ""
820 GOSUB 910:IF A> 47AND A< 58THEN Q$= Q$+ A$:N= VAL (Q$):GOTO 820
830 M= 0:IF A= 26THEN Y= - 1:GOSUB 940:GOSUB 2000
835 IF A= UTHEN Y= 1:GOSUB 940:GOSUB 2000
840 IF A= 65THEN A$(L)= X$(0):GOTO 800:REM A
850 IF LEN (A$(L))> = LLGOTO 870
860 IF A= 25THEN GOSUB 1200
865 IF A= 28THEN GOSUB 1180
870 IF A> 66THEN ON A- 66GOSUB 960,1000,790,1960,1960,1020,1030,,,800
880 IF A= 83THEN GOSUB 1120
884 IF A= 88THEN GOSUB 1170
890 IF M= 1THEN N= 1:Q$= "":GOTO 820
895 IF R= 0GOTO 810
897 C= 320:GOSUB 2000
900 IF LL< XTHEN PRINT "LINE ";L;" HAS ";X;" CHARACTERS":GOTO 60
905 GOTO 1830
910 POKE 33278,0:A$= ""
920 A= PEEK (33278):IF A= 0 GOTO 920
930 A$= CHR$ (A):IF A= 13 OR A= 96 THEN R= 1
935 RETURN
940 M= 1:FOR I= 1TO N:P= P+ Y:IF P> XTHEN P= X:RETURN
950 IF P< 1THEN P= 1:RETURN
955 C= C+ Y:NEXT I:RETURN
960 Q= P:D= C:X$(1)= "":PLOT 26, 22
965 GOSUB 910:IF R= 1 GOTO 980
970 GOSUB 3200:X$(1)= X$(1)+ A$
975 P= P+ 1:C= C+ 1:IF P< = X GOTO 965
977 IF P< = LL THEN X= X+ 1:GOTO 965
980 IF 0= LEN (X$(1)) GOTO 990
985 P= P- 1:GOSUB 1100:A$(L)= L$+ X$(1)+ R$
990 P= Q:C= D:PLOT 18:RETURN
1000 IF P+ N- 1> XTHEN N= X- P+ 1:REM D
1010 Q= P:P= P+ N- 1:GOSUB 1100:A$(L)= L$+ R$:P= Q:R= 0:RETURN
1020 Q= P:X= P:GOSUB 1100:A$(L)= L$+ S$:C= C- 64:P= P+ 1:GOSUB 2000:REM H
1025 PRINT LEFT$ (ST$,LL- Q):C= C+ 1:GOSUB 2000:GOTO 960
1030 X$(1)= "":X$(2)= "":REM INSERT
1035 Q= P:P= P- 1:GOSUB 1100
1040 FOR ZZ= 1TO LEN (R$):AA= ASC (MID$ (R$,ZZ,1))
1045 IF AA> 64AND AA< 91THEN A$= CHR$ (20)+ CHR$ (AA)+ CHR$ (18):GOTO 1060
1050 IF AA> 96AND AA< 123THEN AA= AA- U
1055 A$= CHR$ (AA)
1060 X$(2)= X$(2)+ A$:NEXT ZZ
1065 P= Q:GOSUB 2000
1070 GOSUB 910:IF R= 1GOTO 1090
1075 GOSUB 3200:X$(1)= X$(1)+ A$:P= P+ 1:C= C+ 1
1080 IF LL= X+ LEN (X$(1))THEN PLOT 10,10,13:PRINT "MAX LINE LENGTH ":GOTO 1090
1085 PRINT X$(2):GOSUB 2000:GOTO 1070
1090 A$(L)= L$+ X$(1)+ R$:R= 0:RETURN
1100 L$= "":IF P< 2THEN RETURN
1105 L$= LEFT$ (A$(L),Q- 1)
1110 R$= "":IF P> = XTHEN RETURN
1115 R$= RIGHT$ (A$(L),X- P):RETURN
1120 GOSUB 910:F= 0:M= 1:REM S
1130 FOR J= PTO X
1135 IF MID$ (X$(0),J,1)= A$ THEN F= F+ 1:IF F= N GOTO 1160
1140 NEXT J
1150 PRINT "COULD ONLY FIND ";F;" OF THE ";N;" ";A$;"'S SEARCHING FOR!":RETURN
1160 C= C+ J:GOSUB 2000:RETURN
1170 A$(L)= A$(L)+ S$:P= X+ 1:C= P+ 4:GOTO 960:REM X
1180 FOR Q= 1TO LEN (A$(L)):IF MID$ (A$(L),Q,1)= S$THEN NEXT Q
1182 A$(L)= RIGHT$ (A$(L),LEN (A$(L))- (Q- 1))
1184 IF RIGHT$ (A$(L),1)= CHR$ (5)THEN A$(L)= LEFT$ (A$(L),LEN (A$(L))- 1)
1186 A$(L)= LEFT$ (ST$,(LL- LEN (A$(L)))/ 2)+ A$(L)+ CHR$ (5):REM S-D
1190 GOSUB 2000:GOSUB 1910:RETURN
1200 A$(L)= LEFT$ (ST$,LL- LEN (A$(L)))+ A$(L):REM S-R
1210 GOSUB 2000:PRINT B$;A$(L);:RETURN
1220 PLOT 12:PRINT "LINE LENGTH = ";LL,:FM= LL:GOSUB 1313:LL= FM:REM FORMAT
1230 PRINT "LINE SPACES = ";S,:FM= S:GOSUB 1313:S= FM
1240 PRINT "LINE # = '";N$;"'",:FM$= N$:GOSUB 1315:N$= FM$
1250 PRINT "FIRST LINE = ";FL,:FM= FL:GOSUB 1313:FL= FM
1260 PRINT "LEFT MARGIN = ";LM,:FM= LM:GOSUB 1313:LM= FM
1270 PRINT "PAGE LENGTH = ";PL,:FM= PL:GOSUB 1313:PL= FM
1280 PRINT "PAGE # = '";PN$;"'",:FM$= PN$:GOSUB 1315:PN$= FM$
1290 PRINT "FIRST PAGE = ";FP,:FM= FP:GOSUB 1313:FP= FM
1300 PRINT "PAGE 1 # = '";P1$;"'",:FM$= P1$:GOSUB 1315:P1$= FM$
1310 PRINT "HEADING = '";H$;"'":FM$= H$:GOSUB 1318:H$= FM$:H= LEN (H$)
1311 IF LL< H+ 7 THEN PRINT "HEADER TOO LONG - BY ";H+ 7- LL;" CHARACTERS!":GOTO 1310
1312 GOTO 60
1313 INPUT "OK? ";AN$:IF AN$= "N" THEN INPUT "NEW ";FM
1314 RETURN
1315 INPUT "OK? ";AN$:IF AN$< > "N" THEN RETURN
1316 IF FM$= "Y"THEN FM$= "N":RETURN
1317 IF FM$= "N"THEN FM$= "Y":RETURN
1318 INPUT "OK? ";AN$:IF AN$< > "N"THEN RETURN
1319 INPUT "NEW HEADING? ";FM$:RETURN
1320 PLOT 12:PRINT "LEGAL COMMANDS ARE:":REM HELP
1330 PRINT "A ADD","B BLANK","C COMPILE","D DELETE","E EDIT","F FORMAT","H HELP"
1335 PRINT "I INSERT","J JUSTIFY","K KILL","L LOAD","M MOVE","P PRINT","R REPLACE"
1337 PRINT "S SAVE","V VIDEO","X EXIT"
1340 PRINT "KEY 'SHIFT-@' (NULL) TO RETURN FROM A,E,I,R TO COMMAND MODE":GOTO 60
1350 INPUT "INSERT AT LINE ";L:IF L< 0OR L> LAGOTO 80:REM INSERT
1355 FL= L- 2:IF FL< 2THEN FL= 0
1360 IF NL= LA+ 1THEN PRINT "FILE FULL":GOTO 60
1365 IF R= 1GOTO 60
1370 FOR I= LATO LSTEP - 1:A$(I+ 1)= A$(I):NEXT I
1380 A$(L)= "":LA= LA+ 1:L= L- 1:IF IT= 1 THEN RETURN
1385 IT= 1:GOTO 90
1390 PLOT 12:PRINT "JUSTIFYING":FOR L= 0TO LA:X= LEN (A$(L)):REM JUSTIFY
1400 IF X< 2GOTO 1500
1405 FOR I= XTO 2STEP - 1:A= ASC (RIGHT$ (A$(L),1))
1410 IF A= UTHEN A$(L)= LEFT$ (A$(L),I- 1):X= X- 1:NEXT I
1420 IF X> = LLOR A= 4OR A= 5THEN 1500
1425 J= 0:K= 1:FOR I= 1TO X
1430 IF MID$ (A$(L),I,1)< > S$THEN K= 0:GOTO 1440
1435 IF K= 0THEN K= 1:S(J)= I:J= J+ 1
1440 NEXT I:IF J= 0GOTO 1500
1450 K= INT (J* RND (1)):IF INT (J/ 2)= J/ 2OR J= 1THEN N= 1:GOTO 1460
1455 N= 2
1460 FOR I= 1TO LL- X:T(K)= T(K)+ 1:K= K+ N:IF K> J- 1THEN K= K- J
1470 NEXT I:FOR I= J- 1TO 0STEP - 1:A$= LEFT$ (ST$,T(I)):T(I)= 0
1480 A$(L)= LEFT$ (A$(L),S(I))+ A$+ RIGHT$ (A$(L),LEN (A$(L))- S(I))
1490 NEXT I
1500 NEXT L:GOTO 1830
1510 PLOT 12:INPUT "*** REALLY KILL? (Y/N) ";A$:IF A$= "Y"THEN RUN :REM KILL
1515 GOTO 60
1580 INPUT "FIRST LINE TO MOVE? ";F:IF F< 0THEN F= 0:REM MOVE
1590 INPUT "LAST LINE TO MOVE? ";Z:IF Z> LATHEN Z= LA
1600 IF F> ZGOTO 80
1605 INPUT "FIRST NEW LINE? ";N:FOR I= FTO Z
1610 IF LEN (A$(N))> 0THEN PRINT "LINE ";N;" NOT EMPTY":PRINT :PRINT "LINE ";F;" TO ";N- 1;" MOVED!":GOTO 60
1620 A$(N)= A$(I):A$(I)= "":N= N+ 1:IF N> LATHEN LA= N
1630 NEXT I:GOTO 1830
1640 PLOT 27,18,4:PN= FP:M= FL:POKE 33289,LM+ LL+ 10
1650 PLOT 12:PRINT "PRINTING"
1660 PLOT 27,13
1670 IF PN$< > "Y"OR (P1$= "N" AND PN= 1) GOTO 1700
1690 PRINT LEFT$ (ST$,LM);H$;LEFT$ (ST$,LL+ LM- 7- LEN (H$));"Page";RIGHT$ (" "+ STR$ (PN),3):PRINT
1700 FOR P= MTO M+ PL- 1:IF P> LA GOTO 1740
1710 M= M+ 1:IF S> 0 THEN PRINT LEFT$ (CR$,S)
1720 PRINT LEFT$ (ST$,LM);:IF N$= "Y" THEN PRINT F$+ RIGHT$ (" "+ STR$ (P),2)+ " ";
1725 IF LEN (A$(P))= 0THEN PRINT :GOTO 1735
1730 PRINT A$(P):IF ASC (RIGHT$ (A$(P),1))= 4 THEN PRINT CHR$ (12)
1735 NEXT P
1740 IF P> LA THEN PRINT LEFT$ (CR$,5): POKE 33265,0: GOTO 60
1745 PN= PN+ 1:PRINT CHR$ (12):GOTO 1670
1750 INPUT "REPLACE LINE # ";L:IF L< 0OR L> LA GOTO 80:REM REPLACE LINE
1755 FL= L- 2:IF FL< 2THEN FL= 0
1760 R= 1:A$(L)= "":L= L- 1:GOTO 90
1830 PRINT "TEXT HAS ";LA;" LINES!",:INPUT "START LINE? (DEFAULT = 0) ";Q:REM VIDEO DISPLAY
1834 PLOT 12,6,2:PN= FP- 1
1835 FOR M= QTO LASTEP PL:PN= PN+ 1
1840 IF P1$= "N"AND PN= 1GOTO 1860
1850 IF PN$= "Y"THEN PRINT H$;LEFT$ (ST$,LL- LEN (H$)- 7);"PAGE ";PN:PRINT
1860 FOR I= MTO M+ PL- 1:IF I> LAGOTO 1890
1870 IF S= 0GOTO 1880
1875 FOR ZZ= 1TO S:PRINT CHR$ (10):NEXT ZZ
1880 GOSUB 1910
1890 NEXT I:A$= "":IF I< = LA THEN INPUT "PRESS ENTER ";AN$:IF AN$< > "0"THEN M= LA
1900 NEXT M:L= LA:GOTO 60
1910 X= LEN (A$(I)):IF X< > 0THEN A= ASC (RIGHT$ (A$(I),1)) :GOTO 1920
1915 A= 0
1920 IF N$= "Y"THEN PRINT F$+ RIGHT$ (" "+ STR$ (I),2)+ " ";
1930 GOSUB 3100
1939 IF A= 4THEN PRINT CHR$ (94);
1940 IF A= 5THEN PRINT CHR$ (93);
1945 IF A= UTHEN PRINT CHR$ (95);
1950 IF N$< > "Y"OR Y< > 60THEN PRINT
1960 RETURN
1970 PLOT 12:INPUT "REALLY EXIT? (Y/N) ";AN$:IF AN$< > "Y"GOTO 60
1980 PLOT 12:PRINT "END OF WORD PROCESSOR":END
2000 Y= INT (C/ 64):XX= C- Y* 64:PLOT 3,XX,Y:RETURN
2200 POKE 33278,0:REM GET KEYBOARD
2210 A= PEEK (33278):IF A= 0GOTO 2210
2220 IF A= 26AND P> 0THEN PLOT 32,26:P= P- 1:A$(L)= LEFT$ (A$(L),P- 1):C= C- 1:GOTO 2200
2230 RETURN
3100 IF LEN (A$(I))= 0 GOTO 3150
3105 FOR ZZ= 1TO LEN (A$(I))
3110 AA= ASC (MID$ (A$(I),ZZ,1))
3120 IF AA> 64 AND AA< 91 THEN PLOT 20:GOTO 3140
3130 IF AA> 96 AND AA< 123 THEN AA= AA- U
3140 PRINT CHR$ (AA);:PLOT 18:NEXT ZZ
3150 RETURN
3200 IF A> 64 AND A< 91 THEN A= A+ U:GOTO 3220:REM ADJ UPPER/LOWER
3210 IF A> 96 AND A< 123 THEN A= A- U:PLOT 26,20,A,18:GOTO 3220
3220 A$= CHR$ (A):RETURN
4000 PLOT 12
4005 INPUT "NAME OF FILE (MAX 6 CHARACTERS) ";A$:REM SAVE
4010 IF 6< LEN (A$) THEN PRINT "FILE NAME TOO LONG..MAX 6 CHARACTERS":GOTO 4005
4015 PRINT :INPUT "IS THIS A NEW FILE? Y/N ";AN$
4020 IF 6< LEN (A$) THEN PRINT "FILE NAME TOO LONG..MAX 6 CHARACTERS":GOTO 4005
4030 IF AN$= "Y" THEN PRINT "CREATING NEW FILE ":FILE "N",A$,60,128,8:PLOT 3,64,0
4040 PLOT 28,11:PRINT "OPENING FILE!"
4050 FILE "R",1,A$,2
4060 PLOT 28,11:PRINT "SAVING TEXT ":PLOT 3,64,0
4070 PUT 1;RC,L,H,LA,LL,S,N$[1],FL,LM,PL,PN$[1],FP,P1$[1]
4080 PUT 1;H$[H]
4082 L= 0:X$= "":RC= 0
4084 FOR I= 0TO LA
4088 X$= X$+ A$(I)+ CHR$ (13)
4090 L= LEN (X$)
4092 IF 128< L GOTO 4098
4094 IF L= 128 THEN PUT 1;X$[128]:RC= RC+ 1:L= 0:X$= "":NEXT I:GOTO 4106
4096 IF I= LATHEN PUT 1;X$[L]:RC= RC+ 1:GOTO 4106
4097 NEXT I:GOTO 4106
4098 L$= LEFT$ (X$,128)
4100 R$= RIGHT$ (X$,L- 128)
4102 PUT 1;L$[128]:RC= RC+ 1
4104 L= LEN (R$):X$= R$:L$= "":R$= "":GOTO 4096
4106 PUT 1,1;RC,L
4110 FILE "C",1
4120 PLOT 28,11:PRINT "FILE CLOSED - TEXT SAVED IN ";A$;""
4130 PRINT "REMOVE DISC!!":GOTO 60
4150 FILE "E",F,ER,LN
4160 IF ER= 2 OR ER= 14 THEN PRINT "INCORRECT FILE NAME! ":IF AA= 19GOTO 4000
4170 IF ER= 2OR ER= 14GOTO 4205
4175 PRINT "FILE ERROR ER = ";ER,"LN = ";LN;""
4180 GOTO 60
4200 PLOT 12
4205 INPUT "NAME OF TEXT FILE? ";A$:REM LOAD FILE
4210 PRINT :PRINT "OPENING FILE"
4220 FILE "R",1,A$,2
4230 PLOT 28,11:PRINT "LOADING TEXT ":PLOT 3,64,0
4240 GET 1;RC,D,H,LA,LL,S,N$[1],FL,LM,PL,PN$[1],FP,P1$[1]
4250 GET 1;H$[H]
4260 L= 0:A$(L)= "":Z= 0:J= 128
4262 FOR I= 1TO RC
4264 GET 1;X$[J]:Q= 1
4265 FOR P= 1TO J
4266 A= ASC (MID$ (X$,P,1))
4267 IF P= JAND A< > 13THEN P= P+ 1:GOTO 4271
4270 IF A< > 13GOTO 4274
4271 A$(L)= A$(L)+ MID$ (X$,Q,P- Q)
4272 IF P= J+ 1GOTO 4274
4273 L= L+ 1:Q= P+ 1:A$(L)= ""
4274 NEXT P:IF I= RC- 1THEN J= D
4275 NEXT I
4280 FILE "C",1
4290 PLOT 28,11:PRINT "FILE CLOSED..TEXT LOADED ":GOTO 60