10 MODE 3:MAR=0:A%=60:L1=0:@%=0
20 DIML$(A%+1)
30 L$=STRING$(64," "):L1$=L$:FORL=1TOA%:L$(L)=L$:NEXT:L$(A%+1)=STRING$(64,"*")
40 st=1:fin=18
50 ONERRORGOTO1370
60 VDU19,1,7,0,0,0
70 PROCtemplate:PROCdisplay(3,st,fin):PRINT TAB(30,22);"COMMAND ? ";
80 *FX21,0
90 Z=GET:PRINTCHR$(Z):IF Z>90 THEN Z=Z-32
100 IF Z=65 PROCamend
110 IF Z=67 PROCclear
120 IF Z=68 PROCdelete
130 IF Z=73 PROCinsert
140 IF Z=76 PROCload
150 IF Z=80 PROCprint
160 IF Z=83 PROCsave
170 IF Z=84 PROCtype
180 IF Z=86 PROCview
190 IF Z=88 PROCcat
200 GOTO 50
210 DEFPROCcat
220 *.
230 PRINT"PRESS 0/2 FOR DRIVE & CATALOGUE 0/2; SPACE TO RETURN ":PRINT
240 A$=GET$
250 IF A$="0" THEN *DR.0
260 IF A$="2" THEN *DR.2
270 IF A$="0" OR A$="2" THEN 220
280 ENDPROC
290 DEF PROCtype
300 IF L1<18 THEN st=1 ELSE st=L1-16
310 fin=st+17
320 PROCtemplate:PROCdisplay(3,st,fin)
330 PRINT TAB(20,22);"Type ZZZ to EXIT"'TAB(20);"End line with SPACE to prevent JUSTIFYING";
340 PRINT TAB(5,L1-st+4);:PROCinputline
350 IF RIGHT$(L$,3)="ZZZ" OR RIGHT$(L$,3)="zzz" THEN ENDPROC
360 IF L1>=A% VDU7:ENDPROC
370 L1=L1+1:L$(L1)=L$
380 GOTO 300
390 ENDPROC
400 DEFPROCtemplate
410 CLS:PRINT" W O R D P R + For information Load WPINFO"
420 PRINTSTRING$(79,"=")
430 RESTORE
440 FORN=3TO20
450 READW$
460 PRINT TAB(69,N)"| "W$;
470 NEXT
480 DATAf1 Sscrpt,f2 Italic,f3 U/line,f4 Expand,f5 Comp,f6 Bold,f7 NLQ,
490 DATAA Amend,C Clear,D Delete,I Insert,L Load,P Print,S Save,T Type,V View,X Cat
500 PRINTTAB(0,21);STRING$(79,"=")
510 ENDPROC
520 DEFPROCdisplay(tab,st,fin)
530 FOR Q=st TO fin
540 PRINTTAB(0,tab+Q-st);Q;TAB(3,VPOS);"* ";L$(Q);
550 NEXT
560 ENDPROC
570 DEFPROCclear
580 VDU7,19,1,10,0,0,0
590 INPUT TAB(27,23);"Are you SURE ? "Z$:Z$=LEFT$(Z$,1)
600 IF Z$<>"Y" AND Z$<>"y" GOTO 620
610 FOR L=1 TO A%:L$(L)="":NEXT L:L1=0
620 ENDPROC
630 DEF PROCdelete
640 VDU19,1,1,0,0,0
650 INPUT TAB(25,23);"Line number ? "L
660 IF L<1 OR L>L1 VDU7:GOTO 720
670 IF L=L1 GOTO 690
680 FOR Q=L TO L1-1:L$(Q)=L$(Q+1):NEXT Q
690 L$(L1)="":L1=L1-1
700 IF L>8 THEN st=L-8 ELSE st=1
710 IF st8 THEN st=L-8 ELSE st=1
790 IF stL1 VDU7:GOTO 980
880 IF L<8 THEN st=1:tab=11-L
890 IF L>=8 THEN st=L-7:tab=3
900 fin=L
910 PROCtemplate:PROCdisplay(tab,st,fin)
920 st=L+1:IF st8 THEN st=L-8 ELSE st=1
970 IF st7 PRINT TAB(61,23);" ";:VDU7:GOTO 1000
1020 X=OPENOUT F$
1030 PRINT#X,L1
1040 FOR L=1 TO L1:PRINT#X,L$(L):NEXT L
1050 PTR#X=4400
1060 CLOSE#X
1070 ENDPROC
1080 DEF PROCload
1090 INPUT TAB(28,23);"FILENAME ? "F$:F$=LEFT$(F$,7)
1100 X=OPENIN F$
1110 IF X=0 VDU7:INPUT TAB(20,24);"ERROR *** File NOT FOUND. Press RETURN"Z1$:GOTO 1160
1120 FOR L=1 TO A%:L$(L)="":NEXT L
1130 INPUT#X,L1
1140 FOR L=1 TO L1:INPUT#X,L$(L):NEXT L
1150 CLOSE#X
1160 st=1:fin=18
1170 ENDPROC
1180 DEF PROCprint
1190 INPUT TAB(0,22);"Just RETURN gives immediate printout - 1 Copy; Left Margin 0; Not Justified."SPC(35)"How many Copies ? "C1
1200 PRINTTAB(0,22);SPC(150)
1210 IFC1=0 C1=1:M=0:MAR=0:GOTO1270
1220 INPUT TAB(28,22);"Left Margin ? "MAR
1230 INPUT TAB(28,23);"Right Justified (Y/N) ? "Z$
1240 M=0:IF Z$<>"Y" AND Z$<>"y" GOTO 1270
1250 FOR L=1 TO L1:IF LEN(L$(L))>M M=LEN(L$(L))
1260 NEXT L
1270 VDU2
1280 FOR C=1 TO C1
1290 IF L1=0 GOTO 1340
1300 FOR L=1 TO L1
1310 L$=L$(L):IF M>0 PROCjustify
1320 PRINT SPC(MAR);L$
1330 NEXT L
1340 IF L1A% VDU7:st=1
1440 IF st0 THEN L$=LEFT$(L$,LEN(L$)-1):GOTO 1540
1520 IF LEN(L$)>=64 THEN VDU7:GOTO 1480
1530 L$=L$+X$
1540 PRINTX$;
1550 GOTO1480
1560 DEF PROCjustify
1570 X$=RIGHT$(L$,1):IF X$=" " GOTO 1700
1580 F=0:N=0
1590 FOR X=1 TO LEN(L$):L9=ASC(MID$(L$,X,1))
1600 IF L9<230 N=N+1
1610 NEXTX
1620 L1$="":X1$=""
1630 FOR X=1 TO LEN(L$)
1640 X$=MID$(L$,X,1)
1650 IF ASC(X$)=234 X$=CHR$(233)
1660 IF X$=" " AND X1$<>" " AND N60 VDU7:MAR=0:GOTO50
1730 ENDPROC