Word processor written in BASIC.
Appears on
Source Code
1 REM "word pro" 2 REM submittedto LIST by Peter Hoffmann 3 REM to end letter or document type a .(period) at beginning of next line 4 REM type GOTO 8030 to get back to Print/Justify/Continue menu 5 DIM w$(300,32): DIM b$(32) 10 CLS : PRINT TAB 10;"TS2068-word pro";AT 5,0;"T=LOAD TEXT FROM TAPE"''"K=ENTER TEXT FROM KEYBOARD" 15 IF INKEY$="k" OR INKEY$="K" THEN GO TO 100 20 IF INKEY$="t" OR INKEY$="T" THEN GO TO 7000 25 GO TO 15 100 LET x=0 150 CLS 200 FOR j=0 TO 19 210 FOR l=0 TO 31 300 PRINT AT j,l; FLASH 1; OVER 1;CHR$ 32 310 PAUSE 0: LET i$=INKEY$ 320 IF i$=CHR$ 8 AND l<>0 THEN LET l=l-2: GO TO 500 330 IF i$=CHR$ 8 AND j<>0 THEN PRINT AT j,0;w$(x*20+j+1,1): LET j=j-1: LET l=30: GO TO 500 340 IF i$=CHR$ 9 AND l<>31 THEN GO TO 500 350 IF i$=CHR$ 9 AND j<>19 THEN PRINT AT j,31;CHR$ (CODE (w$(x*20+j+1,32))+19*(w$(x*20+j+1,32)=CHR$ 13)): LET j=j+1: LET l=1: GO TO 500 360 IF l=0 AND i$="." THEN LET l=31: LET j=19: GO TO 540 370 IF i$=CHR$ 12 AND 1<>0 THEN LET w$(x*20+j+1,l)=CHR$ 32: LET l=l-2: GO TO 500 380 IF i$=CHR$ 12 AND j<>0 THEN PRINT AT j,0;w$(x*20+j+1): LET j=j-1: LET l=31: LET w$(x*20+j+1,l)=CHR$ 32: LET l=l-2: GO TO 500 390 IF i$=CHR$ 13 THEN LET l=31: GO TO 410 400 IF i$<CHR$ 32 THEN GO TO 310 410 IF l=31 AND i$<>CHR$ 32 AND i$<>CHR$ 13 THEN LET i$=CHR$ 45 420 BEEP .01,20+20*(i$=CHR$ 32) 430 LET w$(x*20+j+1,l+1)=i$ 500 PRINT AT j,0;w$(x*20+j+1) 510 IF w$(x*20+j+1,32)=CHR$ 13 THEN PRINT AT j,31;CHR$ 32 520 IF l=26 THEN BEEP .5,50 530 IF l>25 AND (i$=CHR$ 32 OR i$=CHR$ 45) THEN LET l=32 540 NEXT l: BEEP .5,20 600 NEXT j 1000 PRINT AT 21,0;"P=PRINT:J=JUSTIFY:C=CONT" 1010 IF INKEY$="c" OR INKEY$="C" THEN GO TO 1100 1020 IF INKEY$="P" OR INKEY$="p" THEN GO TO 1050 1030 IF INKEY$="J" OR INKEY$="j" THEN GO SUB 5000: GO TO 1000 1040 GO TO 1010 1050 PRINT AT 21,0;b$: COPY : GO TO 1000 1100 CLS : PRINT "M=More Text:S=Save" 1110 IF INKEY$="M" OR INKEY$="m" THEN GO TO 1200 1120 IF INKEY$="S" OR INKEY$="s" THEN GO TO 8000 1130 GO TO 1110 1200 IF x=14 THEN PRINT AT 21,0;"No More room:Choose Save option": PAUSE 0: GO TO 1100 1210 LET x=x+1: GO TO 150 5000 PRINT AT 21,0;b$ 5005 FOR j=x*20+1 TO x*20+20 5010 LET a$=w$(j) 5015 IF a$(32)<>CHR$ 32 THEN GO TO 5200 5020 LET s=0: FOR l=32 TO 1 STEP -1 5025 IF a$(l)<>CHR$ 32 THEN GO TO 5035 5030 LET s=s+1: NEXT l: IF s=32 THEN GO TO 5200 5035 LET d=2 5040 FOR l=2 TO 32 5045 IF a$(l)<>CHR$ 32 THEN GO TO 5090 5050 FOR k=32 TO l+1 STEP -1: LET a$(k)=a$(k-1): NEXT k 5055 LET l=l+d 5060 IF a$(32)<>CHR$ 32 THEN GO TO 5100 5090 NEXT l 5100 PRINT AT j-x*20-1,0;a$ 5150 IF a$(32)=CHR$ 32 THEN LET d=d+1: GO TO 5040 5170 LET w$(j)=a$ 5200 NEXT j 5300 RETURN 7000 INPUT "Filename?";n$ 7005 IF n$="" THEN GO TO 7000 7010 PRINT AT 15,0;"LOAD TAPE";n$ 7015 LOAD n$ DATA w$() 7020 LET x=0 7025 FOR j=x+1 TO x+20: LPRINT w$(j): NEXT j 7030 LET x=x+20: IF x=300 THEN GO TO 7055 7035 CLS : PRINT "Press S to stop"''"or any other key to continue" 7040 PAUSE 0 7045 IF INKEY$="s" OR INKEY$="S" THEN GO TO 7055 7050 GO TO 7025 7055 CLS : PRINT "TEXT COMPLETE"''"PRESS R TO REPEAT"''"OR X TO STOP" 7060 IF INKEY$="R" OR INKEY$="r" THEN GO TO 7020 7065 IF INKEY$="X" OR INKEY$="x" THEN GO TO 9999 7070 GO TO 7060 8000 INPUT "Filename?";n$ 8010 IF n$="" THEN GO TO 8000 8020 IF LEN n$>10 THEN LET n$=n$( TO 10) 8030 PRINT "Saving as: ";n$ 8040 SAVE n$ DATA w$() 8050 GO TO 9999 9000 CLEAR : SAVE "WP" LINE 0 9999 STOP