Easily create documents like letters, document spreadsheets and other programs with full insert, delete, move, and print text.
Content
Source Code
1 REM E£RND7 FAST )5 ;SGN \' ?\ ' GOSUB %KTAN 5\~~ 67RND6\~~RNDTAN
10 REM DOCUMENT PROCESSOR
11 REM VU-WRITE / 2C.01 / 3069
15 REM PROPRIETARY TO:
16 REM MANAGEMENT SERVICES CO.
100 REM ** DISPLAY **
150 LET Z1=L3
160 LET Z2=VAL "16"
170 LET Z3=A
180 IF L2<VAL "29" THEN LET Z3=L+B
200 IF D$(Z1)=S$( TO L2) AND Z1<>L3 THEN GOTO 250
210 IF L2<29 THEN PRINT AT Z2,0;Z1;" ";
220 PRINT AT Z2,Z3;D$(Z1);
230 LET Z2=Z2-1
250 IF Z2<0 OR F=1 THEN RETURN
260 LET Z1=Z1-1
290 IF Z1 THEN GOTO 200
300 FOR Z=Z2 TO 0 STEP -1
310 PRINT AT Z,0;S$;
320 NEXT Z
390 RETURN
500 REM ** TEXT **
550 CLS
560 IF NOT L3 THEN GOTO VAL "600"
570 LET F=A
575 GOSUB VAL "100"
600 PRINT AT VAL "18",A;R$;"--LINE";S$( TO VAL "28");"ENTER LINE NO.: (1<=";L1;",M,E)"," ";R$( TO L);S$( TO VAL "31"-L)
605 LET F=A
610 INPUT Q$
615 IF Q$="" THEN GOTO VAL "650"
620 IF Q$(B)<>"M" THEN GOTO VAL "625"
621 LET F=VAL "2"
622 LET Q$=Q$(VAL "2" TO )
625 IF NOT LEN Q$ OR LEN Q$>L THEN GOTO VAL "610"
626 IF Q$(B)="E" THEN GOTO VAL "1220"
630 LET Q=A
632 FOR Z=B TO LEN Q$
634 IF Q$(Z)<"0" OR Q$(Z)>"9" THEN LET Q=B
636 NEXT Z
638 IF NOT Q THEN IF VAL Q$>=B AND VAL Q$<=L1 THEN GOTO VAL "640"
639 GOTO VAL "610"
640 LET L3=VAL Q$
645 GOTO VAL "680"
650 IF L3=L1 THEN GOTO VAL "610"
655 IF NOT F THEN LET F=B
660 IF L3 AND F<VAL "3" THEN IF D$(L3)<>S$( TO L2) THEN GOTO VAL "670"
665 GOTO VAL "675"
670 RAND USR VAL "16514"
675 LET L3=L3+B
680 IF F=VAL "3" THEN GOTO VAL "800"
685 GOSUB VAL "100"
690 PRINT AT VAL "19",VAL "5";L3
692 IF F<VAL "2" THEN GOTO VAL "700"
694 PRINT AT VAL "19",A;"MOVE"," TO ";
696 LET F=VAL "3"
698 LET L4=L3
699 GOTO VAL "610"
700 PRINT TAB VAL "10";":";S$( TO VAL "20"),TAB B;R$( TO L2);S$( TO VAL "30"-L2);AT VAL "21",T(B);"+";AT VAL "21",T(B+B);"+"
720 SLOW
730 INPUT Q$
740 FAST
750 IF Q$="" THEN GOTO VAL "600"
760 LET D$(L3)=Q$
770 LET F=B
780 GOSUB VAL "100"
790 GOTO VAL "600"
800 LET Z1=B
810 LET Z2=L1-L4+B
820 IF L3>L4 THEN LET Z2=L1-L3+B
830 PRINT L3,TAB VAL "6";"QTY TO MOVE: (0<=";Z2;")";S$;AT VAL "21",A;R$( TO L)
840 INPUT Q
842 IF Q<A OR Q>Z2 THEN GOTO VAL "840"
844 IF NOT Q THEN GOTO VAL "600"
850 LET Q=Q-B
860 IF L3<=L4 THEN GOTO VAL "870"
862 LET L3=L3+Q
864 LET L4=L4+Q
866 LET Q=-Q
868 LET Z1=-Z1
870 FOR Z=A TO Q STEP Z1
875 LET D$(L3+Z)=D$(L4+Z)
880 NEXT Z
890 IF L3<=L4 THEN LET L3=L3+Q
895 GOTO VAL "780"
900 REM ** TITLE **
910 CLS
920 PRINT "OPTION: TITLE";AT VAL "11",A;"TITLE: ";T$;AT VAL "21",B;R$( TO 24)
930 INPUT Q$
940 IF Q$="" THEN GOTO VAL "1220"
950 LET T$=Q$
990 GOTO VAL "1220"
\n1000 REM ** MENU **
\n1010 RAND USR VAL "16530"
\n1015 FAST
\n1020 CLS
\n1025 PRINT TAB VAL "11";"""VU-WRITE""",TAB VAL "7";"DOCUMENT PROCESSOR",TAB B;R$,,TAB VAL "11";"1. FILE",,TAB VAL "11";"2. WRITE",,TAB VAL "11";"3. LPRINT ",,TAB VAL "11";"4. SAVE ",,,,TAB VAL "6";"ENTER OPTION: (1<=4)",,TAB B;R$,TAB VAL "10";"** STATUS **",,," SAVED: ";X$," TITLE: ";T$;" LINES: ";L1,"LENGTH: ";L2," TAB 1: ";T(B)," TAB 2: ";T(B+B)
\n1030 PAUSE P
\n1050 LET Q$=INKEY$
\n1060 IF Q$<"1" OR Q$>"4" THEN GOTO VAL "1030"
\n1080 CLS
\n1090 GOTO VAL Q$*VAL "100"+C
\n1100 REM ** FILE **
\n1110 IF NOT L1 THEN GOTO VAL "1140"
\n1115 PRINT "OPTION: SET FILE";AT VAL "8",VAL "6";"%C%A%U%T%I%O%N: THIS OPTION",,TAB VAL "3";"WILL CLEAR AND REDEFINE THE",,TAB VAL "5";"TEXT FILE. PRESS %E%N%T%E%R",,TAB VAL "10";" TO CONTINUE."
\n1120 PAUSE VAL "60"
\n1130 IF INKEY$<>CHR$ VAL "118" THEN GOTO C
\n1140 CLS
\n1145 PRINT "OPTION: SET FILE";AT VAL "11",VAL "11";"(1<=30)";AT VAL "10",VAL "4";"ENTER RECORD LENGTH: ";
\n1150 INPUT Q
\n1152 IF Q<B OR Q>VAL "30" THEN GOTO VAL "1150"
\n1154 PRINT Q
\n1156 POKE VAL "16507",Q
\n1160 PRINT AT VAL "21",VAL "7";"CORRECT? (%END-Y-N)"
\n1162 PAUSE P
\n1164 IF INKEY$="Y" THEN GOTO VAL "1170"
\n1166 IF INKEY$="N" THEN GOTO VAL "1140"
\n1168 GOTO C
\n1170 CLEAR
\n1171 GOSUB VAL "1180"
\n1172 LET L3=A
\n1173 LET L2=PEEK VAL "16507"
\n1174 LET L1=INT (VAL "11144"/L2)
\n1175 LET L=LEN STR$ L1
\n1176 DIM D$(L1,L2)
\n1179 GOTO C
\n1180 LET A=VAL "0"
\n1181 LET B=VAL "1"
\n1182 LET C=VAL "1000"
\n1183 LET P=VAL "40000"
\n1184 LET R$="------------------------------"
\n1190 DIM S$(VAL "32")
\n1191 DIM T(VAL "2")
\n1192 DIM T$(VAL "24")
\n1193 DIM X$(VAL "8")
\n1199 RETURN
\n1200 REM ** TAB **
\n1210 IF NOT L1 THEN GOTO C
\n1220 CLS
\n1225 PRINT TAB VAL "11";"""VU-WRITE""",TAB VAL "7";"DOCUMENT PROCESSOR",TAB B;R$,,TAB VAL "12";"1. TABS",,TAB VAL "12";"2. TITLE",,TAB VAL "12";"3. TEXT",,,,TAB VAL "6";"ENTER OPTION: (1<=3)",,TAB B;R$
\n1230 PAUSE P
\n1240 IF INKEY$="3" THEN GOTO VAL "500"
\n1242 IF INKEY$="2" THEN GOTO VAL "900"
\n1244 IF INKEY$<>"1" THEN GOTO C
\n1250 CLS
\n1255 PRINT "OPTION: SET TABS";AT VAL "10",VAL "2";"ENTER TAB POSITIONS (0<=";L2;")",,TAB VAL "5";"TAB 1:"," TAB 2:"
\n1260 FOR Z=B TO B+B
\n1265 PRINT AT VAL "12",Z*VAL "12";"%<"
\n1270 INPUT T(Z)
\n1272 IF T(Z)<A OR T(Z)>L2 THEN GOTO VAL "1262"
\n1274 PRINT AT VAL "12",Z*VAL "12";T(Z)
\n1278 NEXT Z
\n1280 PRINT AT VAL "21",VAL "9";"CORRECT? (Y-N)"
\n1285 PAUSE P
\n1290 IF INKEY$<>"N" THEN GOTO VAL "1220"
\n1295 GOTO VAL "1250"
\n1300 REM ** LPRINT **
\n1310 IF NOT L1 THEN GOTO C
\n1320 PRINT "OPTION: LPRINT ";AT VAL "11",VAL "7";"OK TO PRINT? (N-Y)"
\n1330 PAUSE P
\n1340 IF INKEY$<>"Y" THEN GOTO C
\n1350 LPRINT X$,S$,T$,,,,,
\n1360 FOR Z=B TO L1
\n1362 IF D$(Z)=S$( TO L2) THEN GOTO VAL "1390"
\n1364 IF D$(Z,B)="/" THEN GOTO VAL "1380"
\n1370 LPRINT TAB VAL "30"-L2;D$(Z)
\n1375 GOTO VAL "1390"
\n1380 LPRINT
\n1390 NEXT Z
\n1395 GOTO C
\n1400 REM ** SAVE **
\n1410 PRINT "OPTION: SAVE ";AT VAL "6",B;"ENTER PGM NAME: (";X$;",END)"
\n1412 INPUT Q$
\n1414 IF Q$="END" THEN GOTO C
\n1416 IF Q$<>"" THEN LET X$=Q$
\n1420 PRINT AT VAL "6",A;S$,TAB VAL "7";"PGM NAME: ";X$,,,,TAB VAL "5";"PRESS %E%N%T%E%R WHEN READY",,TAB VAL "8";" OR %END TO ABORT."
\n1422 PAUSE P
\n1424 IF INKEY$<>CHR$ VAL "118" THEN GOTO C
\n1430 SAVE X$
\n1440 GOTO C
\n1450 REM ** INIT **
\n1460 GOSUB VAL "1180"
\n1470 LET L1=A
\n1480 LET L2=A
\n1490 GOTO VAL "1400"