With File 1, support for mail merging letters.
Content
Source Code
10 LET q=23670: LET r=23671: RESTORE : FOR j=60000 TO 60013: READ k: POKE j,k: NEXT j: GO TO 1000 11 DATA 1,0,0,33,0,0,84,93,33,0,0,237,176,201 20 PRINT b$( TO y-x): LET x=y+1 21 IF x1=22 AND p=1 THEN COPY : CLS : LET x1=0 22 IF x1=22 AND p=0 THEN INPUT c$: CLS : LET x1=0 23 LET x1=x1+1: LET x4=x4+1: RETURN 30 RANDOMIZE v1: POKE 60001,PEEK q: POKE 60002,PEEK r: RANDOMIZE v2: POKE 60004,PEEK q: POKE 60005,PEEK r: RANDOMIZE v3: POKE 60009,PEEK q: POKE 60010,PEEK r: RANDOMIZE USR 60000: RETURN 70 IF LEN z$>10 THEN LET b$=" " 71 IF LEN z$<>10 THEN LET z$=z$+" ": GO TO 71 72 INPUT "Key C if OK ";b$: RETURN 1000 CLS : PRINT TAB 10;"MERGE 1" 1010 PRINT ''"Type the letter name ": INPUT z$: PRINT ''z$: GO SUB 70: IF b$<>"c" OR z$="" THEN GO TO 1 1020 PRINT ''"Start the tape": LOAD z$CODE : CLS 1030 LET c1=PEEK 37998+256*PEEK 37999: POKE 37999+c1,143: IF c1>4500 THEN PRINT "Letter too long": PAUSE 250: GO TO 1 1040 LET p=(1 AND IN 251=58)+(0 AND IN 251=126) 1060 LET x3=80: IF p=1 THEN PRINT "Printer ON. How many lines/page?": INPUT x3 1070 LET v1=c1: LET v2=61000: LET v3=38000: GO SUB 30 1100 PRINT "Type the file name ": INPUT z$: PRINT ''z$: GO SUB 70: IF b$<>"c" OR z$="" THEN GO TO 1070 1110 PRINT ''"Start the tape": LOAD z$CODE : CLS 1120 LET c5=PEEK 37998+256*PEEK 37999: LET a=PEEK 37997 1130 LET z=38000 1140 CLS : PRINT FLASH 1;"Building the next letter": DIM b(a+1): IF PEEK z=143 THEN GO TO 5000 1150 LET b(1)=z: FOR j=1 TO a 1160 IF PEEK z=131 THEN LET b(j+1)=z+1: GO TO 1180 1170 LET z=z+1: GO TO 1160 1180 LET z=z+1: NEXT j 1190 PRINT "Fields found" 1200 LET w=61000: LET x=32500 1210 IF PEEK w=94 THEN GO TO 2000 1220 POKE x,PEEK w: LET x=x+1: LET w=w+1: IF w=61000+c1 THEN CLS : GO SUB 3000: LET w=61000: LET z=z+1: GO TO 1140 1240 GO TO 1210 2000 LET w=w+1: LET b$="" 2010 IF PEEK w=94 OR PEEK w=44 THEN GO TO 2030 2020 LET b$=b$+CHR$ PEEK w: LET w=w+1: GO TO 2010 2030 LET f=VAL b$: FOR j=b(f) TO b(f+1)-2: POKE x,PEEK j: LET x=x+1: NEXT j 2040 IF PEEK w=94 THEN LET w=w+1: LET x=x-1: GO TO 1210 2050 GO TO 2000 3000 LET x=32500 3010 LET x1=1: LET x2=x1: LET x4=x1 3020 LET y=31 3030 LET f=PEEK x: IF f=144 THEN GO TO 3050 3035 IF f=42 THEN GO TO 4000 3040 IF f>127 THEN LET x=x+1: IF f<>131 THEN GO TO 3200 3050 IF INKEY$="z" THEN GO TO 1 3060 LET f=0: LET b$="": FOR j=x TO x+y: LET b$=b$+CHR$ PEEK j: IF (PEEK j>127 AND PEEK j<>144) AND f=0 THEN LET f=j 3070 NEXT j: LET y=j: IF f>0 THEN LET y=f 3080 LET f=0: FOR j=x TO y: IF PEEK j=32 THEN LET f=1: LET j=y 3090 NEXT j: IF f=0 THEN GO TO 3110 3100 IF PEEK y<>32 AND PEEK y<128 THEN LET y=y-1: GO TO 3100 3110 GO SUB 20: IF PEEK y>127 THEN LET x=x-1: 3120 GO SUB 3400: GO TO 3020 3200 IF f<>139 THEN GO TO 3300 3210 LET k=x3-x4: IF k<3 THEN FOR j=1 TO k: PRINT : GO SUB 21: GO SUB 3400: NEXT j: GO TO 3230 3220 REM PRINT : GO SUB 21: GO SUB 3400: PRINT : GO SUB 21: GO SUB 3400 3230 PRINT TAB 5;: LET y=26: GO TO 3030 3300 IF f<>134 THEN GO TO 3430 3310 LET k=x3-x4: PRINT : GO SUB 21: FOR j=1 TO k: PRINT : GO SUB 21: NEXT j: GO SUB 3410 3320 GO TO 3020 3400 IF x4<x3 OR p=0 THEN RETURN 3410 FOR j=1 TO 5: PRINT : GO SUB 21: IF j=3 THEN PRINT TAB 15;x2: LET x2=x2+1: GO SUB 21 3420 NEXT j: LET x4=1: RETURN 3430 IF p=0 THEN FOR j=1 TO 5: PRINT : NEXT j 3440 IF p=1 THEN COPY 3450 LET z=z+1: GO TO 1140 5000 CLS : PRINT AT 9,9;"End of list"'''"Key C for another copy": INPUT b$: IF b$="c" THEN GO TO 1120 5999 STOP 6000 SAVE "Merge 1" LINE 1