Products: Textwriter 1000
Developer(s): Robert Schimke
Date: 1983
Type: Cassette
Platform(s): TS 1000
Word processor. Capabilities include insert/delete, text compression/realignment and buffer memory for saving portions of text to use elsewhere.
Content
Source Code
10 LET LL=-1
20 DIM M$(1)
30 LET Z$=""
35 LET Y=1
40 LET W=0
42 SLOW
45 CLS
47 LET X=1
50 PRINT AT 3,8;"%T%E%X%T%W%R%I%T%E%R% %1%0%0%0";AT 5,15-LEN T$/2;T$
55 PRINT ,,"%M%E%N%U",,,,"1) DISPLAY CURRENT TEXT FILE","2) START NEW FILE","3) SAVE FILE",,,,"%P%R%I%N%T",,,,"4) SINGLE SPACE",,"5) DOUBLE SPACE"
60 INPUT LN
70 CLS
80 IF LN=2 THEN GOTO 115
85 IF LN=3 THEN GOTO 3000
95 PRINT AT 18,0;"ENTER START LINE","LAST TEXT ON ";M;"(";Z;")"
97 INPUT LB
100 LET W=LB-1
102 IF LN=1 THEN GOTO 112
104 PRINT AT 18,6;"FINAL"
106 INPUT LE
110 GOTO 5500
112 FAST
113 CLS
114 GOTO 610
115 PAUSE 120
117 LET M=0
118 PRINT AT 20,0;"ENTER LINES REQUIRED"
119 INPUT Z
120 DIM B$(Z,32)
122 CLS
125 FAST
130 GOSUB 920
135 DIM E(5)
137 LET ST=0
140 FAST
145 PRINT AT X,Y-1;CHR$ (CODE B$(W+X,Y)+128)
160 PAUSE 50000
170 LET A$=INKEY$
175 IF Y=33 THEN GOTO 500
180 IF CODE A$>63 THEN GOTO 310
185 IF W+X>M THEN LET M=W+X
190 LET B$(W+X,Y)=A$
200 PRINT AT X,Y-1;B$(W+X,Y)
210 LET Y=Y+1
211 IF Y=33 THEN GOTO 970
215 GOTO 145
230 IF CODE A$=121 THEN GOSUB 800
240 LET Y=1
250 IF CODE A$=112 THEN LET X=X-2
251 IF W+X=Z THEN GOTO 145
252 LET X=X+1
270 IF X>21 THEN GOTO 1020
280 IF X<1 AND W>0 THEN GOTO 1000
285 IF X>21 THEN LET X=21
287 IF X<1 THEN LET X=1
290 GOTO 145
310 LET A=CODE A$
315 IF A=117 THEN GOTO 1500
320 IF A<114 THEN GOTO 900
330 IF A=118 THEN GOTO 420
340 IF A=115 THEN GOTO 200
345 IF A=229 THEN GOTO 700
350 IF A=227 THEN GOTO 42
355 IF A=121 AND E(1)>1 THEN GOTO 4062
360 IF A=121 THEN GOTO 230
365 IF A=224 THEN GOTO 4000
370 GOSUB 800
375 IF A=119 THEN GOSUB 940
380 LET Y=Y-1
390 IF Y<1 THEN LET X=X-1
400 IF Y<1 THEN LET Y=32
410 GOTO 280
420 GOSUB 940
440 GOTO 210
500 IF CODE A$>63 THEN GOTO 525
510 LET Z$=Z$+A$
515 IF X<21 THEN PRINT AT X+1,0;Z$
520 GOTO 160
525 IF Z$="" THEN GOTO 240
528 LET T=W+X
530 LET D$=B$(T)
540 LET Y=Y-1
550 IF D$(Y)=" " THEN GOTO 565
560 GOTO 540
565 LET YY=LEN (D$(Y+1 TO )+Z$)+2
570 IF T=Z THEN GOTO 610
575 LET B$(T+1, TO YY)=D$(Y+1 TO )+Z$
580 LET B$(T,Y TO )=""
590 LET Y=YY
592 LET Z$=""
593 PRINT AT X,0;B$(T)
595 IF X=21 THEN GOTO 1020
600 PRINT B$(T+1)
605 GOTO 252
610 LET O=21
613 IF W+O>Z THEN GOSUB 760
617 LET R=1
618 IF A=117 AND W+O<>Z THEN LET R=X
619 GOSUB 920
620 PRINT AT R,0;
621 IF A<>118 AND A<>121 THEN SLOW
622 FOR J=R TO O
625 PRINT B$(W+J)
630 NEXT J
660 GOTO 140
700 IF W+22>Z THEN GOTO 160
710 LET W=W+21
720 LET X=1
730 GOTO 610
760 CLS
770 LET O=Z-W
780 RETURN
800 PRINT AT X,Y-1;B$(W+X,Y)
810 RETURN
900 GOSUB 800
910 GOTO 250
920 PRINT AT 0,29;" "
922 PRINT AT 0,0;"%T%Y%P%E% %M%O%D%E LINE ";W+1;" "
925 IF LL<>-1 THEN PRINT AT 0,19;"M:";D;"-";F
930 RETURN
940 PRINT AT X,Y-1;" "
950 LET B$(W+X,Y)=" "
960 RETURN
970 IF CODE A$=118 OR CODE A$=115 THEN GOTO 230
980 GOTO 160
\n1000 LET W=W-10
\n1006 IF W<0 THEN LET W=0
\n1008 LET X=10
\n1010 GOTO 610
\n1020 IF W>Z-21 THEN GOTO 140
\n1025 LET W=W+10
\n1030 LET X=12
\n1050 GOTO 610
\n1500 PRINT AT 0,0;"%E%D%I%T%:%E%N%T%E%R% %A%C%*%/%A%L%*%/%D%L%*%/%C%/%M%M%*%/%M%P% "
\n1520 LET Q=Y
\n1525 LET T=W+X
\n1530 INPUT C$
\n1540 IF C$="" THEN GOTO 610
\n1545 IF C$="MP" THEN GOTO 2890
\n1550 IF C$="C" THEN GOTO 2000
\n1555 LET C=1
\n1560 IF LEN C$>2 THEN LET C=VAL C$(3 TO )
\n1570 IF C$( TO 2)="AL" THEN GOTO 2300
\n1575 IF C$(1)="A" THEN GOTO 2520
\n1580 IF C$(1)="D" THEN GOTO 2450
\n1590 GOTO 2800
\n2000 FOR L=Y TO 32
\n2010 IF CODE B$(T,L)>0 THEN GOTO 2030
\n2020 NEXT L
\n2030 LET B$(T,Y TO )=B$(T,L TO )
\n2040 FOR N=L-Y TO 31
\n2050 IF CODE B$(T,32-N)>0 THEN GOTO 2070
\n2060 NEXT N
\n2065 GOTO 2080
\n2070 IF B$(T,32-N)="-" THEN LET N=N+2
\n2080 LET T=T+1
\n2085 IF T>Z THEN GOTO 2210
\n2090 IF B$(T,1)=" " THEN GOTO 2210
\n2100 FOR Y=N TO 1 STEP -1
\n2110 IF CODE B$(T,Y)=0 THEN GOTO 2150
\n2120 NEXT Y
\n2130 GOTO 2210
\n2150 IF N=32 THEN LET N=33
\n2160 LET B$(T-1,34-N TO )=B$(T, TO Y-1)
\n2170 LET L=Y+1
\n2180 LET Y=1
\n2190 GOTO 2030
\n2210 LET Y=Q
\n2220 IF C$(1)="A" THEN GOTO 2580
\n2230 GOTO 610
\n2250 LET C=LL+1
\n2300 IF Z-M<C THEN GOTO 1500
\n2305 FOR J=M TO T STEP -1
\n2310 LET B$(J+C)=B$(J)
\n2320 NEXT J
\n2330 FOR J=T TO T+C-1
\n2340 LET B$(J)=""
\n2345 NEXT J
\n2350 LET M=M+C
\n2355 IF C$(2)="L" THEN GOSUB 2400
\n2360 IF C$="MP" THEN GOTO 2898
\n2370 IF C$(2)<>"L" THEN GOTO 2610
\n2380 GOTO 610
\n2400 LET B$(T, TO Y-1)=B$(T+C, TO Y-1)
\n2410 LET B$(T+C, TO Y-1)=""
\n2420 RETURN
\n2450 IF T+C>M+1 THEN LET C=M+1-T
\n2455 FOR K=T TO M-C
\n2480 LET B$(K)=B$(K+C)
\n2490 NEXT K
\n2495 FOR K=K TO M
\n2500 LET B$(K)=""
\n2505 NEXT K
\n2508 LET M=M-C
\n2510 GOTO 610
\n2520 LET P=C
\n2525 LET B=0
\n2540 IF P>33-Y THEN LET P=33-Y
\n2550 FOR J=33-P TO 32
\n2560 IF B$(T,J)<>" " THEN GOTO 2700
\n2570 NEXT J
\n2580 LET T=W+X
\n2583 IF B>0 THEN LET B$(T,Y+P TO )=B$(T,Y TO B-1)
\n2584 IF B>0 THEN GOTO 2590
\n2585 LET B$(T,Y+P TO )=B$(T,Y TO 32-P)
\n2590 LET B$(T,Y TO Y+P-1)=""
\n2600 GOTO 610
\n2610 FOR B=33-P TO Y STEP -1
\n2620 IF B$(T-1,B)=" " THEN GOTO 2640
\n2630 NEXT B
\n2640 LET B$(T)=B$(T-1,B+1 TO )
\n2645 LET L=Y
\n2650 GOTO 2040
\n2700 LET T=T+1
\n2710 LET C=1
\n2720 GOTO 2305
\n2800 LET LL=C-1
\n2820 DIM M$(C,32)
\n2825 LET D=T
\n2827 IF LL<50 THEN SLOW
\n2828 IF T+LL>Z THEN LET LL=Z-T
\n2830 FOR J=0 TO LL
\n2840 LET M$(J+1)=B$(T+J)
\n2850 IF T+J-W<22 THEN PRINT AT T+J-W,0;CHR$ (CODE B$(T+J,1)+128)
\n2870 NEXT J
\n2872 LET F=T+LL
\n2875 FAST
\n2878 PRINT AT R,0;
\n2880 GOTO 610
\n2890 IF T+LL>Z THEN LET LL=Z-T
\n2895 IF T<=M THEN GOTO 2250
\n2898 FOR J=0 TO LL
\n2900 LET B$(T+J)=M$(J+1)
\n2920 NEXT J
\n2925 IF T+LL>M THEN LET M=T+LL
\n2930 GOTO 610
\n3000 CLS
\n3010 PRINT AT 10,5;"ENTER TITLE TO RECORD"
\n3015 INPUT T$
\n3018 CLS
\n3020 SAVE T$
\n3030 GOTO 30
\n4000 IF Y=1 THEN GOTO 135
\n4005 LET ST=ST+1
\n4010 IF ST>5 THEN GOTO 4040
\n4020 LET E(ST)=Y
\n4030 GOTO 145
\n4040 PRINT AT 0,19;"%5% %T%A%B%S% %M%A%X"
\n4045 PAUSE 60
\n4050 GOSUB 920
\n4055 GOTO 160
\n4062 GOSUB 800
\n4065 FOR J=1 TO 6
\n4070 IF J=6 THEN GOTO 230
\n4080 IF Y<E(J) THEN GOTO 5000
\n4090 NEXT J
\n5000 LET Y=E(J)
\n5010 GOTO 145
\n5500 FAST
\n5510 LET LF=1
\n5520 IF LN=5 THEN LET LF=2
\n5530 LET LC=0
\n5540 FOR I=LB TO LE
\n5550 LPRINT B$(I)
\n5560 IF LN=5 THEN LPRINT
\n5570 LET LC=LC+LF
\n5580 IF LC=74 THEN GOSUB 5610
\n5590 NEXT I
\n5600 GOTO 42
\n5610 LPRINT ,,,,
\n5620 LET LC=0
\n5630 RETURN