Jump to content

Program:Editype.bas

From Philosophical Research
Revision as of 04:42, 19 July 2025 by Vidak (talk | contribs) (Created page with "<syntaxhighlight lang="bbcbasic"> 42 PC=1:LC=1:F=0:PRINT CHR$(14): DIM A$(200):PRINT "{CLEAR}":POKE 650,128 51 M$="" 53 PRINT "{CLEAR} MODE SELECTION":PRINT:PRINT:PRINT"LP=LOAD AND PRINT":PRINT 55 PRINT "N=NEW":PRINT:PRINT"E=EDIT":PRINT:PRINT"P=PRINT" 58 PRINT:PRINT "S=SAVE":PRINT:PRINT "L=LOAD":PRINT:PRINT "C=CONTINUE" 60 PRINT:INPUT "SELECT MODE: "; M$ 61 IF M$="E" THEN 3010 62 IF M$="P" THEN 3800 63 IF M$="N" THEN 100 64 IF M$="L" THEN 5000 65 IF M$="S" THEN 6000 66...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
42 PC=1:LC=1:F=0:PRINT CHR$(14): DIM A$(200):PRINT "{CLEAR}":POKE 650,128
51 M$=""
53 PRINT "{CLEAR}   MODE SELECTION":PRINT:PRINT:PRINT"LP=LOAD AND PRINT":PRINT
55 PRINT "N=NEW":PRINT:PRINT"E=EDIT":PRINT:PRINT"P=PRINT"
58 PRINT:PRINT "S=SAVE":PRINT:PRINT "L=LOAD":PRINT:PRINT "C=CONTINUE"
60 PRINT:INPUT "SELECT MODE: "; M$
61 IF M$="E" THEN 3010
62 IF M$="P" THEN 3800
63 IF M$="N" THEN 100
64 IF M$="L" THEN 5000
65 IF M$="S" THEN 6000
66 IF M$="LP" THEN 3800
67 IF M$="C" THEN FOR B=1 TO K-1:PRINT A$(B):NEXT B PRINT A$(K);:GOTO 120
68 GOTO 51
100 FOR A=1 TO 200:A$(A)="":NEXT A
103 INPUT "TYPE FILE NAME";V$
105 PRINT "{CLEAR}       NEW MODE":K=1
120 POKE 204,0:POKE 207,0:GET C$:IF C$="" THEN 120:POKE 204:2
130 IF C$="{DOWN}" THEN 120
140 IF C$="{UP}" THEN 120
150 IF C$="{RIGHT}"  THEN 120
160 IF C$="{LEFT}"  THEN 120
170 IF C$="@" THEN 51
171 IF C$="{HOME}" THEN 120
172 IF C$="{CLEAR}" THEN 120
175 IF C$=CHR$(20) AND LEN(A$(K))=0 THEN 120
180 PRINT C$;    
190 IF C$=CHR$(13) THEN K=K+1:A$(K)=A$(K)+C$:GOTO 120
200 IF C$=CHR$(20) THEN A$(K)=LEFT$(A$(K),LEN(A$(K))-1):GOTO 120
210 A$(K)=A$(K)+C$:C$="":IF LEN(A$(K))<22 THEN 120
220 IF RIGHT$(A$(K),1)=CHR$(32) THEN 240
221 IF RIGHT$(A$(K),1)=CHR$(160) THEN 240
230 A$(K+1)=RIGHT$(A$(K),1)+A$(K+1):A$(K)=LEFT$(A$(K),LEN(A$(K))-1):GOTO 220
240 FOR U=1 TO 22-LEN(A$(K)):PRINT CHR$(20);:NEXT U
250 IF LEN(A$(K))<11 THEN PRINT,,
260 IF LEN(A$(K))>10 THEN PRINT,
264 IF A$(K)="" THEN A$(K)=" "
265 IF FRE(O)<600 THEN PRINT "{REV}MEMORY LOW{OFF}":PRINT
266 IF FRE(O)<500 THEN 51
270 K=K=1:PRINT A$(K);:GOTO 120
280 GOTO 51
3010 C4$="":C5$=""
3015 PRINT "{CLEAR}     EDIT MODE":Q=1
3025 PRINT:PRINT "F=FORWARD":PRINT "@=RETURN TO MENU":PRINT "C=CORRECT"
3016 PRINT "SELECTION? "
3030 GET W$:IF W$="" THEN 3030
3040 IF W$="F" THEN PRINT A$(Q):Q=Q+1:IF Q>199 THEN 51:GOTO 3030
3055 IF W$="@" THEN 51
3066 IF W$="C" THEN 3200
3061 GOTO 3030
3200 PRINT "ERROR:"
3210 FOR A=1 TO 80
3220     GET J$:IF J$="" THEN 3220
3225     IF J$="{UP}" THEN 3250
3226     IF J$=CHR$(20) THEN C4$=LEFT$(C4$,LEN(C4$)-1):GOTO 3235
3230     C4$=C$+J$
3235     PRINT J$
3240 NEXT A
3250 PRINT:PRINT "CORRECTION: "
3260 FOR A=1 TO 80
3270     GET J$:IF J$="" THEN 3270
3280     IF J$="{UP}" THEN 3310
3281     IF J$=CHR$(20) THEN C5$=LEFT$(C5$,LEN(C5$)-1):GOTO 3290
3285     C5$=C5$+J$
3290     PRINT J$;
3300 NEXT A
3310 PRINT "{CLEAR}   {REV}CORRECTING{OFF}"
3320 FOR A=1 TO 200
3325     FOR B=1 TO LEN (A$(A))
3327         O=LEN(C4$)
3329         IF MID$(A$(A),B,O)=C4$ THEN OO=LEN(A$(A))-B+1-LEN(C4$)
3330         IF MID$(A$(A),B,O)=C4$ THEN C6$=RIGHT$(A$(A),OO)
3340         IF MID$(A$(A),B,O)=C4$ THEN A$(A)=LEFT$(A$(A),B-1):GOTO 3344
3341         GOTO 3346
3344         A$(A)=A$(A)+C5$+C6$:C4$="":C5$=""
3345         PRINT "{CLEAR}":FOR H=1 TO A:PRINT A$(H):NEXT H:Q=H::GOTO 3025
3346     NEXT B
3347 NEXT A
3348 PRINT "{CLEAR}{RED}{REV}ERROR NOT FOUND{BLU}{OFF}":PRINT:GOTO 3025
3350 GOTO 3010
3800 PRINT:INPUT "NORMAL LINE LENGTH"; LA
3810 PRINT:INPUT "INSET LINE LENGTH"; LB
3903 PRINT "SINGLE OR DOUBLE      SPACE? S/D"
3904 INPUT SD$
3905 INPUT "LINE NUMBERING #"; SL
4000 T1$="":N=1:LL=LA
4002 OPEN 4,4
4003 T$="":T2$="":P$="":LC=1
4010 PRINT #4:PRINT #4:PRINT #4
4016 LC=3
4040 CLOSE 4,4
4050 IF A$(N)="" AND M$="LP" THEN 5002
4051 IF A$(N)="" THEN 4600
4059 T2$=A$(N)
4060 FOR A=1 TO LL-LEN(P$)
4061     T2$="" THEN 4094
4065     X$=LEFT$(T2$,1):T2$=RIGHT$(T2$,LEN(T2$)-1)
4075     IF X$="[" THEN LL=LB:GOTO 4060
4076     IF X$="]" THEN FL=1:GOTO 4060
4080     IF X$="{UP}" THEN 4200
4085     IF X$=CHR$(13) THEN 4660
4090     P$=P$+X$
4094     IF LEN(T2$)=0 THEN N=N+1:GOTO 4050
4095 NEXT A
4100 GOTO 4610
4200 FOR A=1 TO LA
4210     X$=LEFT$(T2$,1):T2$=RIGHT$(T2$,LEN(T2$)-1)
4211     IF LEN(T2$)=0 THEN N=N+1:T2$=A$(N)
4214     IF A$(N)="" AND LEN (T2$)=0 THEN P$=X$:GOTO 4660
4220     IF X$=CHR$(13) THEN 4300
4230     P$=P$+X$
4240 NEXT A
4300 IN=(80-LEN(P$))/2:GOTO 4670
4620 IF RIGHT$(P$,1)=CHR$(32) THEN 4660
4622 IF RIGHT$(P$,1)=CHR$(160) THEN 4660
4630 T1$=RIGHT$(P$,1)+T1$:P$=LEFT$(P$,LEN(P$)-1)
4640 NEXT A
4660 IF LEFT$(P$,1)=CHR$(32) THEN P$=RIGHT(P$,LEN(P$)-1)
4661 IF LEFT$(P$,1)=CHR$(160) THEN P$=RIGHT$(P$,LEN(P$)-1)
4662 PRINT P$
4665 IN=(80-LL)/2
4666 DE$=STR$(SL):IF FL=1 THEN OPEN 4,4
4667 IF FL=1 THEN PRINT #4,CHR$(17)DE$"."SPC(IN-LEN(DE$)-1)P$SPC(75-LEN(P$)-IN)DE$"."
4668 IF FL=1 THEN CLOSE 4:LC=LC+1:SL=SL+1:P$="":FL=0:P$=T1$:T1$="":GOTO 4680
4670 OPEN 4,4:PRINT #4,CHR$(17)SPC(IN)P$:CLOSE 4,4:P$="":P$=T1$:T1$="":LC=LC+1
4680 IF SD$="D" THEN OPEN 4,4:PRINT #4:CLOSE 4:LC=LC+1
4690 IF LC>60 THEN 7000
4700 IF X$=CHR$(13) THEN LL=LA
4701 IF A$(N)="" AND M$="LP" THEN P$=P$+X$:GOTO 5002
4705 IF A$(N) "" THEN 51
4710 GOTO 4060
5000 INPUT "TYPE FILE NAME"; V$
5002 FOR A=1 TO 200:A$(A)="":NEXT A
5005 PRINT "{CLEAR}      LOAD MODE"
5010 OPEN 1,1,0,V$
5015 PRINT "FILE OPEN, LOADING."
5020 FOR A=1 TO 200
5025     FOR B=1 TO 22
5030         GET #1,Z$
5031         A$(A)=A$(A)+Z$
5040         IF Z$="" THEN 5065
5042     NEXT B
5050 NEXT A
5065 CLOSE 1:N=1
5070 IF M$="LP" THEN N=1:GOTO 4050
5080 GOTO 51
6000 PRINT "{CLEAR}SAVE MODE"
6010 OPEN 1,1,1,V$
6030 FOR A=1 TO 200
6040     PRINT #1,A$(A);
6050     IF A$(A)="" THEN 6075
6060 NEXT A
6075 CLOSE 1
6080 GOTO 51
7000 OPEN 4,4
7001 FOR M=1 TO 66-LC
7002     PRINT #4
7003 NEXT M
7004 PRINT #4:PC=PC+1
7005 PRINT #4,CHR$(17)SPC(70)"PAGE "PC
7006 PRINT #4
7007 CLOSE 4
7008 LC=3
7009 GOTO 4060