Progress has been made on the text editor that will be shipped on the first model of the people’s permacomputer.
Please follow the code development here:
https://codeberg.org/vidak/peoples
Also, have a look at an earlier, historical editor from which this one was inspired, “VIC EDITYPE”:
http://www.vic20listings.freeolamail.com/book_computevic2.html
Forum thread here:

https://basiclang.solarpunk.au/d/4-the-peoples-permacomputer-project/15
Current Code:
1 REM PEOPLE'S PERMACOMPUTER EDITOR.
2 REM INSPIRED BY VIC EDITYPE (1983).
3 REM
4 REM DESIGNED FOR THE ARDUINO MEGA 2560.
5 REM WRITTEN IN STEFAN'S BASIC.
6 REM
7 REM PUBLIC DOMAIN DEDICATION.
8 REM
9 REM
10 SET 22, "Apple1"
20 DIM T$(48,24)
30 FOR I=1 TO 24 : T$()(I)="" : NEXT I
40 DIM SCRATCH$(48)
50 NL=1
60 BKSP=8
70 CR=13
80 LF=10
499 REM FALL INTO HERE
500 REM MENU
510 PRINT:PRINT "N=NEW E=EDIT P=PRINT S=SAVE Q=QUIT"
520 INPUT ">"; M$
530 IF M$="N" GOTO 1000
540 IF M$="E" GOTO 2000
550 IF M$="P" GOTO 3000
555 IF M$="S" GOTO 3500
560 IF M$="Q" GOTO 9000
570 GOTO 500
1000 REM COMPOSE MODE
1001 INPUT "TYPE FILE NAME";V$
1002 PUT 27 : PUT 91 : PUT 50 : PUT 74:REM CLEAR SCREEN
1003 PRINT "COMPOSE MODE"
1005 IF NL>24 PRINT "LINE LIMIT" : GOTO 500
1010 PRINT ">";T$()(NL);
1020 GET C$
1030 IF C$="" THEN GOTO 1020
1040 IF C$="@" THEN GOTO 500
1050 IF C$=CHR$(BKSP) AND LEN(T$()(NL))=0 THEN GOTO 1020
1060 IF C$=CHR$(BKSP) THEN GOTO 1600
1070 IF C$=CHR$(CR) OR C$=CHR$(LF) THEN GOTO 1500
1080 IF ASC(C$)<32 GOTO 1020
1090 PUT C$
1100 T$()(NL)=T$()(NL)+C$
1120 C$=""
1130 IF LEN(T$()(NL))<48 THEN 1020
1199 REM FALL INTO HERE
1200 REM WORD WRAP (IF LINE HITS 48)
1210 S=LEN(T$()(NL))
1220 IF RIGHT$(T$()(NL),1)=" " THEN GOTO 1250
1230 SCRATCH$=T$()(NL+1)
1232 T$()(NL+1)=RIGHT$(T$()(NL),1)+SCRATCH$
1240 T$()(NL)=LEFT$(T$()(NL),S-1)
1245 S=S-1:GOTO 1220
1250 REM MEMORY CHECKS
1260 IF T$()(NL)="" THEN T$()(NL)=" "
1270 IF SIZE<600 THEN PRINT "MEMORY LOW":PRINT
1280 IF SIZE<500 THEN PRINT "MEMORY CRITICAL":GOTO 500
1290 NL=NL+1
1295 PRINT:PRINT ">";T$()(NL-1);
1300 PRINT:PRINT ">";T$()(NL);
1310 GOTO 1020
1500 REM NEWLINE
1505 PUT CR : PUT LF
1510 NL=NL+1
1520 IF NL>24 THEN PRINT "BUFFER FULL" : GOTO 500
1530 GOTO 1010
1600 REM BACKSPACE (CURRENT LINE ONLY)
1610 L=LEN(T$()(NL))
1615 IF L<1 GOTO 1020
1620 IF L=1 THEN T$()(NL)="":GOTO 1640
1625 SCRATCH$=LEFT$(T$()(NL),L-1)
1630 T$()(NL)=SCRATCH$
1640 PUT 8 : PUT 32 : PUT 8
1650 GOTO 1020



Leave a Reply