Compucolor.org – Virtual Media

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