Chris Nystrom’s TEXT EDITOR 2000 version 2.2 merged with with SETYPE by Ron Ruegg.
Content
Image Gallery
Source Code
1 REM TEXT EDITOR 2000 version 2.2 by C.Nystrom 1985 with SETYPE by RRRuegg all public domain.
2 REM Meld by M Quintero 1985
10 REM \''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\'' EDITOR
20 LET d1=0
25 LET a=1
30 GO SUB 9600
35 LET x1=0
40 LET x2=0
45 LET s=1
50 PRINT AT x1,x2;t$(s)
55 LET a$=INKEY$
60 IF a$="" THEN GO TO 55
65 IF a$=CHR$ 4 THEN GO TO 320
70 IF a$=CHR$ 5 THEN GO TO 350
75 IF a$=CHR$ 8 THEN GO TO 125
80 IF a$=CHR$ 9 THEN GO TO 275
85 IF a$=CHR$ 10 THEN GO TO 170
90 IF a$=CHR$ 11 THEN GO TO 220
95 IF a$=CHR$ 13 THEN GO TO 380
100 IF a$=CHR$ 226 THEN GO TO 720
105 IF s$<>"b" AND s$<>"B" THEN GO TO 55
110 LET t$(s)=a$
115 GO TO 275
120 REM \''\''\''\''\''\''\''\''\''\''\''\'' Cursor Left
125 PRINT AT x1,x2;t$(s)
130 IF s=1 THEN GO TO 50
135 IF x2>0 THEN GO TO 150
140 LET s=s+32
145 LET x2=32
150 LET x2=x2-1
155 LET s=s-1
160 GO TO 50
165 REM \''\''\''\''\''\''\''\''\''\''\'' Cursor Down
170 PRINT AT x1,x2;t$(s)
175 IF s+32>LEN t$ THEN GO TO 50
180 IF x1<21 THEN GO TO 200
185 LET a=b+1
190 GO SUB 9600
195 LET x1=-1
200 LET x1=x1+1
205 LET s=s+32
210 GO TO 50
215 REM \''\''\''\''\''\''\''\''\''\'' Cursor Up
220 PRINT AT x1,x2;t$(s)
225 IF s<32 THEN GO TO 50
230 IF x1>0 THEN GO TO 255
235 LET a=a-704
240 IF a<1 THEN LET a=1
245 GO SUB 9600
250 LET x1=22
255 LET x1=x1-1
260 LET s=s-32
265 GO TO 50
270 REM \''\''\''\''\''\''\''\''\''\'' Cursor Right
275 PRINT AT x1,x2;t$(s)
280 IF s=LEN t$ THEN GO TO 50
285 IF x2<31 THEN GO TO 300
290 LET s=s-32
295 LET x2=x2-32
300 LET x2=x2+1
305 LET s=s+1
310 GO TO 50
315 REM \''\''\''\''\''\''\''\''\''\''\''\'' Page Down
320 IF s+704>LEN t$ THEN GO TO 50
325 LET a=b+1
330 GO SUB 9600
335 LET s=s+704
340 GO TO 50
345 REM \''\''\''\''\''\''\''\''\''\''\''\'' Page Up
350 IF s-704<1 THEN GO TO 50
355 LET a=a-704
360 GO SUB 9600
365 LET s=s-704
370 GO TO 50
375 REM \''\''\''\''\''\''\''\''\''\''\''\''\''\'' Enter
380 IF s$="B" OR s$="b" THEN GO TO 720
385 PRINT AT x1,x2; INVERSE 1; "*"
390 IF d1>0 THEN GO TO 410
395 LET d1=s
400 IF s$<>"4" THEN RETURN
405 GO TO 280
410 IF s<d1 THEN GO TO 630
415 LET d2=s
420 RETURN
710 REM \''\''\''\''\''\''\''\''\''\''\'' MAIN MENU
720 CLS
730 PRINT AT 3,8;"Text Editor 2000"
735 PRINT AT 7,8;"0 - Input Text"
740 PRINT AT 8,8;"1 - Save Text"
745 PRINT AT 9,8;"2 - Load Text"
750 PRINT AT 10,8;"3 - Insert Text"
755 PRINT AT 11,8;"4 - Delete Text"
760 PRINT AT 12,8;"5 - Justify Text"
765 PRINT AT 13,8;"6 - Search and Replace"
770 PRINT AT 14,8;"7 - Text Output"
775 PRINT AT 15,8;"8 - Clear Text"
780 PRINT AT 16,8;"9 - Quick Note"
785 PRINT AT 17,8;"A - Center Text"
790 PRINT AT 18,8;"B - Type Over"
795 PRINT AT 19,8;"C - Change Colors"
800 GO SUB 9100
805 PRINT #1;AT 1,11;"Selection?"
810 BEEP .1,10
815 PAUSE 0
820 LET s$=INKEY$
825 IF s$="z" OR s$="Z" THEN COPY
830 CLS
835 IF s$="w" OR s$="W" THEN GO TO 4500
840 IF s$="a" OR s$="A" THEN GO TO 5500
845 IF s$="b" OR s$="B" THEN GO TO 3500
850 IF s$="c" OR s$="C" THEN GO TO 8500
855 IF s$="s" OR s$="S" THEN GO TO 9940
860 IF s$<CHR$ 48 OR s$>CHR$ 58 THEN GO TO 720
870 BEEP .08,5
880 IF s$="0" THEN GO TO 900
890 GO TO VAL s$*1000
895 REM \''\''\''\''\''\''\''\''\''\''\''\'' INPUT TEXT
900 IF LEN t$>11040 THEN GO TO 1500
905 LET b$=""
910 IF LEN t$<64 THEN GO TO 920
915 LET b$=t$(LEN t$-63 TO LEN t$)
920 INPUT AT 21,0;"------------------------------- INPUT TEXT";AT 0,0;(b$); LINE a$
925 IF a$="" THEN GO TO 800
930 IF t$=" " THEN GO TO 965
935 GO SUB 9200
940 LET d1=LEN u$+1
945 GO SUB 9300
950 LET t$(d1 TO d1+LEN a$-1)=a$
955 DIM u$(1)
960 GO TO 985
965 LET d=INT (LEN a$/32-.01)+1
970 DIM t$(d*32)
975 LET t$=a$
985 BEEP .1,7
990 GO TO 900
995 REM \''\''\''\''\''\''\''\''\''\''\''\''\'' SAVE TEXT
1000 INPUT "-------------------------------- Name of Text: ";n$
1010 IF n$=CHR$ 226 OR n$="" THEN GO TO 800
1020 IF LEN n$>10 THEN LET n$=n$( TO 10)
1030 GO SUB 9100
1040 PRINT #1;AT 1,5;"SAVING AS: ";n$
1050 SAVE n$ DATA t$()
1060 BEEP .1,10
1070 GO SUB 9100
1080 PRINT #1;AT 1,7;"VERIFY SAVE Y/N)"; FLASH 1;"?"
1090 PAUSE 0
1100 LET a$=INKEY$
1110 IF a$="N" OR a$="n" THEN GO TO 1150
1120 GO SUB 9100
1130 PRINT #1;AT 1,5;"VERIFYING : ";n$
1140 VERIFY n$ DATA t$()
1150 BEEP .1,7
1160 GO TO 800
1490 REM \''\''\''\''\''\''\''\''\''\''\''\''\''\'' Full File
1500 PRINT AT 7,9;"TEXT FILE FULL"
1510 PRINT AT 9,10;"SAVE TO TAPE"
1520 GO TO 800
1990 REM \''\''\''\''\''\''\''\''\''\''\''\''\'' LOAD TEXT
2000 INPUT "------------------------------ Name of Text; ";n$
2010 IF n$=CHR$ 226 THEN GO TO 800
2020 IF LEN n$>10 THEN LET n$=n$( TO 10)
2030 GO SUB 9100
2040 PRINT #1;AT 1,0;" LOADING: ";n$
2050 DIM t$(1)
2060 LOAD n$ DATA t$()
2070 BEEP .1,7
2080 GO TO 800
2990 REM \''\''\''\''\''\''\''\''\''\''\'' INSERT TEXT
3000 LET b$="INSERT TEXT"
3010 GO SUB 20
3020 CLS
3030 GO SUB 9100
3040 PRINT #1;AT 1,2;"TEXT NEED TO BE LOADED (Y/N)";"?"
3050 PAUSE 0
3060 LET a$=INKEY$
3070 IF a$="Y" OR a$="y" THEN GO TO 3200
3080 INPUT AT 21,0;"------------------------------ INSERT TEXT";AT 0,0; LINE a$
3100 IF a$="" THEN GO TO 800
3110 GO SUB 9200
3120 GO SUB 9300
3130 LET t$(d1 TO d1+LEN a$-1)=a$
3140 GO SUB 9500
3150 GO TO 7030
3190 REM \''\''\''\''\''\''\''\''\''\''\''\'' Load Insert
3200 INPUT "------------------------------- Name of Text: ";n$
3210 IF n$=CHR$ 226 THEN GO TO 800
3220 IF LEN n$>10 THEN LET n$=n$( TO 10)
3230 GO SUB 9100
3240 PRINT #1;AT 1,6;"LOADING: ";n$
3250 LOAD n$ DATA v$()
3260 BEEP .1,10
3270 LET d=INT (LEN v$/32-.01)+1
3280 GO SUB 9210
3290 GO SUB 9300
3300 GO SUB 9400
3310 LET n=d1-1+LEN v$
3320 GO SUB 9510
3330 GO TO 7030
3490 REM \''\''\''\''\''\''\''\''\''\''\''\''\'' TYPE OVER
3500 LET b$="TYPE OVER"
3510 GO TO 25
3990 REM \''\''\''\''\''\''\''\''\''\'' DELETE TEXT
4000 LET b$="DELETE TEXT"
4010 GO SUB 20
4020 CLS
4030 IF d1=1 AND d2=LEN t$ THEN GO TO 8050
4040 LET d=-(INT ((d2-d1+1)/32))
4050 GO SUB 9210
4060 GO SUB 9300
4070 LET n=d1-1
4075 LET d=d1
4080 LET d1=d2+1
4090 GO SUB 9510
4100 GO SUB 9100
4105 LET d1=d
4110 PRINT #1;AT 1,0;" INSERT AT SAME PLACE (Y/N) ";"?"
4120 PAUSE 0
4130 LET a$=INKEY$
4140 CLS
4150 IF a$="Y" OR a$="y" THEN GO TO 3030
4160 DIM u$(1)
4170 GO TO 7030
4490 REM \''\''\''\''\''\''\''\''\''\''\'' Change Width
4500 INPUT "------------------------------- NUMBER OF COLUMNS:";w
4510 GO TO 800
4990 REM \''\''\''\''\''\''\''\''\''\''\'' JUSTIFICATION
5000 IF t$="" THEN RETURN
5010 FOR i=1 TO INT (LEN t$/w-.01)
5020 IF t$(i*w)<>" " THEN GO TO 5190
5030 IF t$(i*w+1)=" " THEN GO TO 5190
5040 FOR j=0 TO 10
5050 IF t$(i*w-j)<>" " THEN GO TO 5080
5060 NEXT j
5070 GO TO 5190
5080 LET d=2
5090 FOR j=3 TO w
5100 IF t$((i-1)*w+j)<>" " THEN GO TO 5160
5110 FOR k=0 TO w-j-1
5120 LET t$(i*w-k)=t$(i*w-k-1)
5130 NEXT k
5140 IF t$(i*w)<>" " THEN GO TO 5190
5150 LET j=j+d
5160 NEXT j
5170 LET d=d+1
5180 GO TO 5090
5190 IF PEEK 23689=2 THEN CLS
5200 PRINT t$((i-1)*w+1 TO i*w)
5210 NEXT i
5220 IF PEEK 23689=2 THEN CLS
5230 PRINT t$((i-1)*w+1 TO )
5240 BEEP .1,7
5250 GO TO 800
5490 REM \''\''\''\''\''\''\''\''\''CENTER TEXT
5500 LET b$="CENTER TEXT"
5510 GO SUB 20
5520 CLS
5530 LET s1=0
5540 FOR i=d1 TO d1+w-1
5550 IF t$(i)<>" " THEN GO TO 5590
5560 LET s1=s1+1
5570 NEXT i
5590 IF s1=w THEN GO TO 800
5600 LET s2=0
5610 FOR i=d1+w-1 TO d1 STEP -1
5620 IF t$(i)<>" " THEN GO TO 5650
5630 LET s2=s2+1
5640 NEXT i
5650 IF s1=s2 THEN GO TO 800
5660 LET s2=w-s2-1
5670 LET b$=t$(d1+s1 TO d1+s2)
5680 FOR i=d1 TO d1+w-1
5690 LET t$(i)=" "
5700 NEXT i
5710 LET s=(w/2)-(LEN b$/2)
5720 LET t$(d1+s TO d1+s+LEN b$)=b$
5730 GO TO 7030
5990 REM \''\''\''\''\'' SEARCH AND REPLACE
6000 INPUT AT 21,0;"-------------------------------- INPUT FIRST STRING";AT 0,0; LINE b$
6010 IF b$="" THEN GO TO 800
6020 INPUT AT 21,0;"-------------------------------- INPUT SECOND STRING";AT 0,0; LINE a$
6030 LET d=0
6040 LET s2=0
6050 GO SUB 6500
6060 IF d=1 THEN GO TO 6200
6070 LET d=INT ((LEN a$-LEN b$)/32-.01)+1
6080 GO SUB 9210
6090 LET d1=s2
6100 GO SUB 9300
6110 LET t$(d1 TO d1+LEN a$-1)=a$
6120 LET n=d1-1+LEN a$
6130 LET d1=d1+LEN b$
6140 GO SUB 9510
6150 GO TO 6050
6200 IF PEEK 23688=2 AND PEEK 23689=3 THEN CLS
6210 PRINT t$(s2 TO )
6220 BEEP .1,7
6230 GO TO 800
6490 REM \''\''\''\''\''\''\''\''\''\''\''\''\''\'' SEARCH
6500 LET s2=s2+1
6510 IF s2=1 THEN GO TO 6540
6520 IF PEEK 23688=2 AND PEEK 23689=3 THEN CLS
6530 PRINT t$(s2-1);
6540 IF s2+LEN b$-1>LEN t$ THEN GO TO 6570
6550 IF t$(s2 TO s2+LEN b$-1)=b$ THEN RETURN
6560 GO TO 6500
6570 LET d=1
6580 RETURN
6990 REM \''\''\''\''\''\''\''\''\''\''\'' TEXT OUTPUT
7000 GO SUB 9100
7005 PRINT #1;AT 1,5;"TO THE PRINTER Y/N)";"?"
7010 PAUSE 0
7015 LET a$=INKEY$
7020 CLS
7025 IF a$="Y" OR a$="y" THEN GO TO 7100
7030 FOR i=1 TO LEN t$ STEP 704
7035 CLS
7040 IF i+703<=LEN t$ THEN GO TO 7055
7045 PRINT t$(i TO )
7050 GO TO 800
7055 PRINT t$(i TO i+703)
7060 GO SUB 9100
7065 PRINT #1;AT 1,8;"NEXT PAGE (Y/N)";"?"
7070 PAUSE 0
7075 LET a$=INKEY$
7080 BEEP .1,7
7085 IF a$="N" OR a$="n" THEN GO TO 800
7090 NEXT i
7095 GO TO 800
7100 GO SUB 9100
7110 PRINT #1;AT 1,7;"DOUBLE SPACE (Y/N)";"?"
7120 LET ds=0
7130 PAUSE 0
7140 LET a$=INKEY$
7150 IF a$="Y" OR a$="y" THEN LET ds=1
7160 GO SUB 9100
7170 PRINT #1;AT 1,7;"DOUBLE WIDTH (Y/N)";"?"
7180 PAUSE 0
7190 LET a$=INKEY$
7195 CLS
7200 IF a$="Y" OR a$="y" THEN GO TO 7600
7210 GO SUB 9100
7220 PRINT #1;AT 1,4;"ARE THERE SCREENS (Y/N)";"?"
7230 PAUSE 0
7240 LET a$=INKEY$
7245 CLS
7250 IF a$="Y" OR a$="y" THEN GO TO 7330
7260 IF w<>32 OR ds=1 THEN GO TO 7290
7270 PRINT #3;t$
7275 BEEP .1,7
7280 GO TO 800
7290 LET s1=1
7300 LET s2=LEN t$
7305 GO SUB 7500
7310 BEEP .1,7
7315 GO TO 800
7320 REM \''\''\''\''\''\''\''\''\'' SCREEN$ Output
7330 LET b$="SCR$"
7340 LET s2=0
7350 LET d=0
7355 LET s1=s2
7360 IF s1=0 THEN LET s1=1
7365 GO SUB 6500
7370 IF d=1 THEN LET s2=LEN t$
7375 IF d<>1 THEN LET s2=s2-1
7377 IF s2<=0 THEN GO TO 7400
7380 IF w=32 AND ds=0 THEN LPRINT t$(s1 TO s2)
7390 IF w<>32 OR ds=1 THEN GO SUB 7500
7400 IF d=1 THEN GO TO 7310
7405 GO SUB 9100
7410 PRINT #1;AT 1,8;"START THE TAPE"
7430 LOAD ""SCREEN$
7450 PRINT #1;AT 1,7;"STOP THE TAPE"
7460 COPY
7470 CLS
7480 LET s2=s2+5
7490 GO TO 7355
7495 REM \''\''\''\''\''\''\''\''\'' Measured Output
7500 IF s1+w-1>=s2 THEN GO TO 7550
7505 OUT 127,15: OUT 127,27: OUT 127,87: OUT 127,1
7510 LPRINT t$(s1 TO s1+w-1)
7520 IF ds=1 THEN LPRINT
7530 LET s1=s1+w
7540 GO TO 7500
7550 LPRINT t$(s1 TO s2)
7560 IF ds=1 THEN LPRINT
7570 RETURN
7590 REM \''\''\''\''\''\''\''\''\''\'' Double Width
7600 LET f=0
7610 LET s1=1
7620 IF s1+w-1=LEN t$ THEN GO TO 7680
7630 LPRINT t$(s1 TO s1+w-1)
7640 IF ds=1 THEN LPRINT
7650 LET s1=s1+(w*2)
7660 IF s1>LEN t$ THEN GO TO 7700
7670 GO TO 7620
7680 LPRINT t$(s1 TO LEN t$)
7690 IF ds=1 THEN LPRINT
7700 IF f=1 THEN GO TO 7310
7710 LET f=1
7720 LPRINT
7730 LPRINT
7740 LET s1=w+1
7750 GO TO 7620
7990 REM \''\''\''\''\''\''\''\''\''\''\''\'' CLEAR TEXT
8000 PRINT #1;AT 0,0;"--------------------------------"
8010 PRINT #1;AT 1,6;"ARE YOU SURE (Y/N)"; "?"
8020 PAUSE 0
8030 LET a$=INKEY$
8040 IF a$<>"Y" AND a$<>"y" THEN GO TO 800
8050 DIM t$(1)
8060 PRINT AT 9,10;"TEXT CLEARED"
8070 GO TO 800
8490 REM \''\''\''\''\''\''\''\''\'' CHANGE COLORS
8500 GO SUB 9100
8560 PRINT #1;AT 1,5;"PAPER COLOR (0-7)";"?"
8570 PAUSE 0
8580 LET b$=INKEY$
8590 IF b$<CHR$ 48 OR b$>CHR$ 56 THEN GO TO 8550
8600 BORDER VAL a$: PAPER VAL b$: INK 9: CLS
8610 BEEP .1,7
8620 GO TO 800
8990 REM \''\''\''\''\''\''\''\''\''\''\''\'' QUICK NOTE
9000 INPUT AT 21,0;"-------------------------------- QUICK NOTE";AT 0,0; LINE a$
9010 IF a$="" THEN GO TO 800
9020 PRINT #3;a$
9030 BEEP .1,7
9040 GO TO 9000
9090 REM \''\''\''\''\''\''\''\''\''\''\''\''\''\'' CLS BOTTOM
9100 PRINT #1;AT 0,0;"--------------------------------"
9110 PRINT #1;AT 1,0;" "
9120 RETURN
9190 REM \''\''\''\''\''\''\''\''\''\''\''\''\''\'' CLEAR t$
9200 LET d=INT (LEN a$/32-.01)+1
9210 DIM u$(LEN t$)
9220 FOR i=1 TO LEN u$ STEP 704
9230 IF i+703>LEN u$ THEN GO TO 9260
9240 LET u$(i TO i+703)=t$(i TO i+703)
9250 GO TO 9270
9260 LET u$(i TO )=t$(i TO )
9270 NEXT i
9280 DIM t$(LEN u$+d*32)
9290 RETURN
9295 REM \''\''\''\''\''\''\''\''\''\''\'' ADD TEXT #1
9300 FOR i=1 TO d1-1 STEP 704
9310 IF i+703>d1-1 THEN GO TO 9340
9320 LET t$(i TO i+703)=u$(i TO i+703)
9330 GO TO 9350
9340 LET t$(i TO d1-1)=u$(i TO d1-1)
9350 NEXT i
9360 RETURN
9390 REM \''\''\''\''\''\''\''\'' ADD TEXT #2
9400 FOR i=i TO LEN v$ STEP 704
9410 IF i+703>LEN v$ THEN GO TO 9440
9420 LET t$(i+d1-1 TO i+d1+702)=v$(i TO i+703)
9430 GO TO 9450
9440 LET t$(i+d1-1 TO d1-1+LEN v$)=v$(i TO )
9450 NEXT i
9460 RETURN
9490 REM \''\''\''\''\''\''\''\''\''\'' ADD TEXT #3
9500 LET n=d1-1+LEN a$
9510 FOR i=1 TO LEN u$-d1 STEP 704
9520 IF i+703>LEN u$-d1 THEN GO TO 9550
9530 LET t$(i+n TO i+n+703)=u$(i+d1-1 TO i+d1-1+703)
9540 GO TO 9560
9550 LET t$(i+n TO )=u$(i+d1-1 TO )
9560 NEXT i
9570 DIM u$(1)
9580 RETURN
9590 REM \''\''\''\''\''\''\''\''\''PRINT SCREEN
9600 CLS
9605 GO SUB 9100
9610 PRINT #1;AT 1,16-(LEN b$/2) ;b$
9620 LET b=a+703
9630 IF b>LEN t$ THEN LET b=LEN t$
9640 PRINT t$(a TO b)
9650 RETURN
9820 REM \''\''\''\''\''\''\''\''\''\''\''\'' START HERE
9830 BEEP .5,10
9840 BORDER 0: PAPER 0: INK 9: CLS
9850 PRINT AT 3,12;"Textype"
9875 DIM t$(1)
9880 LET w=32
9890 POKE 23609,5
9920 GO TO 735
9930 REM \''\''\''\''\''\''\''\''\'' SAVE PROGRAM
9940 CLEAR
9950 SAVE "Textype" LINE 9830
9960 BEEP .1,7
9970 VERIFY "Textype"
9980 BEEP .1,7
9990 STOP
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.