10 DIM PROG$(182),LN$(55):PT=ADR(PROG$):LX=ADR(LN$):C0=0:C1=1:C2=2:COLR=710:C7=7:C3=3›20 FOR X=C1 TO 182:READ N:PROG$(X,X)=CHR$(N):NEXT X:FOR X=C1 TO 55:READ N:LN$(X,X)=CHR$(N):NEXT X›60 GRAPHICS C0:SIZ=FRE(C0)-256:LW=37:C4=4:C23=23›70 DIM A$(LW),W$(LW),BL$(LW),T$(LW),B$(SIZ):B$="":OPEN #C1,C4,C0,"K:":MAXLIN=INT(SIZ/LW)›80 XCURS=85:YCURS=84:LINES=C1:BL$(C1)=" ":BL$(LW)=" ":BL$(C2)=BL$›90 CONSOL=53279:KEY=764›100 ? "}":POKE 16,112:POKE 53774,112:A$=""›110 POKE COLR,128:X=10:GOSUB 430›120 CLOSE #C2:CLOSE #C3:CLOSE #C7›130 ? "’ÍÁÉΠÍÅÎÕ’ "›140 ? "ü± Disk DIR ü"›150 ? "ü²Edit Text ü"›160 ? "ü³Load File ü"›170 ? "ü´Merge Fileü"›180 ? "üµSave Text ü"›190 ? "ü¶Print Textü"›200 ? "ü·Kill File ü"›210 ? "ü¸ Quit ü"›220 ? "Š’’’’’’’’’’’ˆ"›230 MN=-C1:MX=8:GOSUB 280:A=X:ON A GOTO 810,1300,2320,2450,2480,2870,1250,3570›240 FOR W=15 TO C0 STEP -C1/C2:SOUND C0,60,10,W:NEXT W:RETURN ›250 ? "Try Again Please"›260 FOR W=C1 TO 25:SOUND C0,100,10,8›270 SOUND C0,140,10,8:NEXT W:SOUND C0,C0,C0,C0:RETURN ›280 TRAP 320:POKE 82,C4:? :? "";:GET #C1,X:IF X=155 THEN X=49›290 X=X-48:IF XMX THEN 320›300 ? X:POKE 82,C2:IF MN":? "(ÒÔÎ ONLY=";MN;") ";:INPUT T$:IF LEN(T$)=C0 THEN X=MN:? X:GOTO 380›370 X=INT(VAL(T$))›380 IF X>=MN AND X<=MX THEN RETURN ›390 ? X;"¼ Out of range (";MN;"-";MX;" only).":GOSUB 250:GOTO 350›400 ? "Bad input char(s)"›410 ? "#'s only, ";MN;"-";MX;" valid."›420 GOSUB 250:GOTO 350›430 POKE 702,64:POKE 694,C0:? "}ü ÍÁÔÔªÅÄÉÔ Òåö® ±²®° ü":? :? A$›440 ? "Ãõòòåîô Ìéîåó½";LINES*(LEN(B$)>=LW)›450 ? " Æòåå Ìéîåó ½ ";MAXLIN-LINES+(LEN(B$) ";:GET #C1,X›480 IF X=89 THEN ? "Ùåó":X=C1:RETURN ›490 IF X=78 THEN ? "Îï ":X=C0:RETURN ›500 ? "Âáä Ëåù":GOSUB 250:GOTO 470›510 A$="":CNT=C0›520 ? "<ÅÓà To Abort>":? "Type text & press ÒÔÎ:"›530 Y=PEEK(YCURS):IF Y>=22 THEN ? "} ËÅÅРÔÒÙÉÎÇ":GOTO 510›540 X=PEEK(XCURS):FOR I=C1 TO LN:? "-";:NEXT I:POSITION X,Y:? "-";›550 TRAP 550:GET #C1,X:IF X=27 THEN POP :POP :A$="Áâïòôåä":GOTO 110›560 IF X<>126 THEN 590›570 CNT=CNT-C1:IF CNT122 OR X=96 THEN GOSUB 260:GOTO 550›610 ? CHR$(X);:CNT=CNT+C1:A$(CNT,CNT)=CHR$(X)›620 IF CNT<=LN THEN 640›630 ? :? "ý ÔÏÏ ÌÏÎÇ¡":GOSUB 260:GOTO 510›640 IF CNT>LN-C4 THEN GOSUB 240›650 GOTO 550›660 L1=A-C2›670 X=C2:GOSUB 430›680 ? " ÄÒÉÖÅ £  ";:MX=C4:GOSUB 280:DRV=X›690 ? :? " ÆÉÌÅÎÁÍÅ  to ";›700 ON L1 GOTO 710,720,730,740›710 ? " ÌÏÁÄ ":? "":GOTO 750›720 ? " ÍÅÒÇÅ ":GOTO 750›730 ? " ÓÁÖÅ  text TO":GOTO 750›740 ? " ÄÅÌÅÔÅ "›750 ? "(press ÒÔÎ only for ÄÉÒ)"›760 LN=12:GOSUB 510:IF LN>C0 THEN 780›770 A=C0:GOSUB 1010:GOTO 670›780 T$="D":T$(C2)=STR$(DRV):T$(C3)=":":T$(C4)=A$›790 TRAP 800:OPEN #C2,L2,C0,T$:? :? "Working...":RETURN ›800 CLOSE #C2:A$="ýɯϠÅòòïò ":A$(LEN(A$)+C1)=STR$(PEEK(195)):POP :GOTO 110›810 A$="":POKE COLR,144›820 X=12:GOSUB 430›830 ? "’ÄÉÓË ÄÉÒ’ "›840 ? "ü± List DIRü"›850 ? "ü²PRINT DIRü"›860 ? "ü³ Load DIRü"›870 ? "ü´Merge DIRü"›880 ? "üµGoTo Mainü"›890 ? "Š’’’’’’’’’’ˆ"›900 MN=-C1:MX=5:GOSUB 280:A=X:ON A GOTO 910,980,920,960,100›910 A=C0:GOSUB 990:GOTO 100›920 A=C1:? "Load Disk DIR into buffer."›930 ? "<ÏÌÄ ÔÅØÔ will be ÌÏÓÔ>":? "Are you ÓÕÒÅ ";:GOSUB 470›940 IF NOT X THEN A$="ÁÂÏÒÔÅÄ":GOTO 820›950 LINES=C0:B$="":GOSUB 990:GOTO 820›960 A=C1:? "Merge ÄÉÒ into text buffer."›970 GOSUB 990:A$="ÄÏÎÅ":GOTO 820›980 A=C0:C=C1:GOSUB 1000:A$="ÐÒÉÎÔ ÄÏÎÅ":GOTO 820›990 C=C0›1000 ? "ÄÉÒ of ÄÒÉÖÅ £ ±­´ ?":MX=C4:GOSUB 280:DRV=X›1010 T$="D":T$(C2)=STR$(DRV):T$(C3)=":*.*"›1020 IF (A OR C) THEN ? :? " ÔÉÔÌÅ  for this DIR ":LN=LW:GOSUB 510:W$=A$:IF LN=LW THEN 1040›1030 W$(LEN(W$)+C1)=BL$(LEN(W$)+C1)›1040 ? :TRAP 800:CLOSE #C2:OPEN #C2,6,C0,T$:IF C THEN OPEN #C3,8,C0,"P:":? #C3;"A"›1050 T$=BL$:TRAP 1180:X=C1:IF C THEN ? #C3;W$:? #C3›1060 IF A THEN A$=W$:Y=C1:GOSUB 1160:A$=BL$:GOSUB 1160›1070 TRAP 1180:INPUT #C2,A$:X=-X:Y=C0›1080 IF A$(C4,5)=" F" THEN A$(17,18)=" ":GOTO 1100›1090 A$=A$(C3):W$=A$(9):A$(9,9)=".":A$(10)=W$:A$(17,18)=" ":IF XMAXLIN THEN POP :GOTO 1240›1170 B=LW*(LINES-C1)+C1:B$(B,B+LW-C1)=A$:RETURN ›1180 TRAP 800:IF C THEN ? #C3:? #C3:? #C3›1190 CLOSE #C2:CLOSE #C3:IF PEEK(195)<>136 THEN GOTO 800›1200 IF NOT A THEN GOTO 1230›1210 IF X";:GET #C1,A:? :RETURN ›1240 LINES=LINES-C1:A$="ýIncomp. Load, ÂÕÆÆ full":RETURN ›1250 A$="Kill File":A=6›1260 L2=C4:GOSUB 660:CLOSE #C2›1270 ? "Äåìåôå Æéìå ";T$:? "Are you ÓÕÒÅ ";:GOSUB 470›1280 IF NOT X THEN A$="ÑÕÉÔ":GOTO 110›1290 XIO 33,#C2,C0,C0,T$:A$=T$:A$(LEN(A$)+C1)=" ÄÅÌÅÔÅÄ":GOTO 110›1300 A$="":POKE COLR,130›1310 X=C2:GOSUB 430›1320 ? "ÒÅÁÄ ËÅÙÓ":? " ÏÐÔÉÏΠ>& Scroll Up 1 Pg"›1330 ? " ÓÅÌÅÃÔ >& Scroll Dn 1 Pg"›1340 ? "  ÓÔÁÒÔ >& Exit to EDIT Menu":POKE 82,13:? ›1350 ? " ÅÄÉÔ ÔÅØÔ "›1360 ? "±GoTo Startü"›1370 ? "²GoTo End ü"›1380 ? "³GoTo LINE ü"›1390 ? "´Delete Lnsü"›1400 ? "µInsert Lnsü"›1410 ? "¶Empty BUFFü"›1420 ? "·GoTo Main ü"›1430 ? "Š’’’’’’’’’’ˆ"›1440 MN=-C1:MX=C7:GOSUB 280:A=X:ON A GOTO 1450,1460,1500,1530,1630,2250,110›1450 LI=C1:GOTO 1720›1460 LI=LINES:IF LIBL$ THEN 1490›1480 LI=LI-C1:IF LI>C1 THEN 1470›1490 GOTO 1720›1500 X=C2:GOSUB 430›1510 ? "Go To Ìéîå £":MX=LINES:GOSUB 340:LI=X›1520 GOTO 1720›1530 IF LEN(B$) ";L1;" - ";L2:? "Are you  ÓÕÒÅ  ";:GOSUB 470›1570 IF X THEN 1590›1580 A$="Áâïòôåä":GOTO 1310›1590 IF L2=LINES THEN B$(LW*(L1-C1)+C1)="":GOTO 1610›1600 B$(LW*(L1-C1)+C1)=B$(LW*(L2-C1)+LW+C1)›1610 LINES=LINES-C1-(L2-L1)›1620 A$="Äåìåôåä ÌÎÓ>":A$(LEN(A$)+C1)=STR$(L1):A$(LEN(A$)+C1)="-":A$(LEN(A$)+C1)=STR$(L2):GOTO 1310›1630 ? "}Éîóåòô LINE(S)":IF LEN(B$)LINES THEN LE=LINES›1730 ? "}";›1740 IF LEN(B$)";:POKE 752,C0›1810 LOCATE C2,C0,A:POSITION C2,C0›1820 ? CHR$(A);CHR$(30);:X=C2:Y=C0›1830 IF F=C1 THEN ? "";›1840 TRAP 1840:IF PEEK(KEY)<>255 THEN GET #C1,A:GOTO 1890›1850 IF PEEK(CONSOL)=C7 THEN 1840›1860 IF PEEK(CONSOL)<>6 AND LINES157 THEN 1940›1920 X=PEEK(XCURS):Y=PEEK(YCURS):POKE 752,C1›1930 POSITION C2,22:? CHR$(156);:POKE 752,C0:POSITION X,Y›1940 ? CHR$(A);:IF (A=31 OR A=30) AND PEEK(XCURS)>38 THEN ? CHR$(A);:GOTO 1840›1950 IF (A=28 OR A=29) AND PEEK(YCURS)=C23 THEN ? CHR$(A);:GOTO 1840›1960 IF PEEK(YCURS)=Y AND A<>156 THEN 2020›1970 Y=PEEK(YCURS):X=PEEK(XCURS):POKE 752,C1›1980 IF A=156 THEN POSITION C2,22:? CHR$(157);:GOTO 2010›1990 IF Y=C23 AND A=155 THEN Y=22:F=C1:POKE YCURS,22:GOTO 2070›2000 POSITION C2,C23:? "LINE # ";LI+Y;" ";›2010 POKE 752,C0:LOCATE X,Y,A:POSITION X,Y:? CHR$(A);CHR$(30);›2020 X=PEEK(XCURS):IF X<=38 THEN 2060›2030 IF Y=22 THEN F=C1:GOTO 2070›2040 IF Y<22 THEN Y=Y+C1:? CHR$(155);:GOTO 2060›2050 LOCATE C2,Y,A:? CHR$(A);CHR$(30);›2060 GOTO 1840›2070 X=PEEK(XCURS):Y=PEEK(YCURS):POKE 752,C1›2080 POSITION 15,C23:? "READING PAGE ";:LOCATE X,Y,A›2090 COLOR A:PLOT X,Y:GOSUB 240›2100 FOR Y1=C0 TO Y:BB=LW*(LI-C1+Y1)+C1›2110 POSITION C1,Y1›2120 POKE 842,13:INPUT A$:POKE 842,12›2130 IF LEN(A$)=LW THEN 2150›2140 A$(LEN(A$)+C1)=BL$(LEN(A$)+C1)›2150 B$(BB,BB+LW-C1)=A$:NEXT Y1›2160 LI=LI+Y:IF LI>LINES THEN LINES=LI›2170 IF F=C1 THEN LI=LI-C1:GOTO 1720›2180 IF F<>C2 THEN 2210›2190 LI=LE+C1:IF LI>LINES THEN LI=LINES-C1›2200 GOTO 1720›2210 IF F<>C3 THEN 2240›2220 LI=LI-C23:IF LIMAXLIN THEN GOTO 2440›2380 B$(LW*(LINES-C1)+C1,LW*(LINES-C1)+LW)=A$›2390 GOTO 2350›2400 CLOSE #C2›2410 IF PEEK(195)=136 THEN 2430›2420 GOTO 800›2430 A$="ÅÎÄ­ÆÉÌÅ":GOTO 110›2440 CLOSE #C2:A$="ýÂÕÆÆ Æõì쬠Æéìå ôïï ÂÉÇ":LINES=MAXLIN:GOTO 110›2450 POKE COLR,178:A$="ÍÅÒÇÅ ÆÉÌÅ"›2460 L2=C4:GOSUB 660›2470 GOTO 2340›2480 IF LEN(B$)>=LW THEN 2500›2490 A$="ÂÕÆÆ Åíðôù":GOTO 110›2500 A$=""›2510 CLOSE #2:POKE COLR,32:X=8:GOSUB 430›2520 ? "’’ ÓÁÖÅ ÍÅÎÕ ’’ "›2530 ? "± As Text File ü"›2540 ? "²As PRINT Stmntsü"›2550 ? "³As DATA Stmnts ü"›2560 ? "´ Main Menu ü"›2570 ? "Š’’’’’’’’’’’’’’’ˆ"›2580 MN=-C1:MX=C4:GOSUB 280:A=X›2590 IF A=C4 THEN GOTO 100›2600 ? "Äåìåôå ÁÌÌ blank lines from buffer":? "During SAVE ";:GOSUB 470:DB=X›2610 ON A GOTO 2680,2620,2650›2620 ? "File # for PRINT statements":? "(i.e. 6 for '? #6;')"›2630 ? ""›2640 MX=C7:GOSUB 330:F=X:GOTO 2660›2650 ? "Write DATA Statements"›2660 ? "Starting Ìéîå £ ";:MX=32767-LINES:GOSUB 330:SL=X›2670 MX=INT((32767-SL)/LINES):? "Line Éîãòåíåîô ";:GOSUB 340:INC=X›2680 Q=A:A$="ÓÁÖÅ ÆÉÌÅ":A=5:L2=8:GOSUB 660:A=Q›2690 FOR I=C1 TO LINES›2700 B=LW*(I-C1)+C1:IF B$(B,B+LW-C1)=BL$ AND DB THEN GOTO 2840›2710 IF A=C1 THEN 2780›2720 ? #C2;SL;:SL=SL+INC›2730 ON A-C1 GOTO 2740,2770›2740 ? #C2;" ? ";:IF NOT F THEN 2760›2750 ? #C2;"#";F;";";›2760 ? #C2;CHR$(34);:GOTO 2780›2770 ? #C2;" DATA ";›2780 A$=B$(B,B+LW-C1)›2790 EL=USR(LX,ADR(A$),LW)›2800 IF EL=C0 THEN GOTO 2820›2810 ? #C2;A$(C1,EL);›2820 IF A=C2 THEN ? #C2;CHR$(34);›2830 ? #C2›2840 NEXT I›2850 A$="Äïîå":IF A>C1 THEN A$(LEN(A$)+C1)=" Ìáóô Ìéîå £ >":A$(LEN(A$)+C1)=STR$(SL)›2860 CLOSE #C2:GOTO 2510›2870 IF LEN(B$)"›3110 TRAP 800:GET #C1,X:IF X=155 THEN 3130›3120 IF X=27 THEN A$="Ðòéîô Áâïòôåä":GOTO 110›3130 TRAP 2420:CLOSE #C7›3140 PG=C1:LPC=LPG-12›3150 OPEN #C7,8,C0,"P:":? #C7;"A";CHR$(SP);"O";›3160 IF A>C1 THEN 3270›3170 DNS=ASC("K"):GOSUB 3460›3180 FOR I=C1 TO LINES›3190 B=LW*(I-C1):A$=B$(B+C1,B+LW):IF A$=BL$ THEN ? #7:GOTO 3240›3200 IF NOT (CR) THEN 3230›3210 A=USR(LX,ADR(A$),LW):A=INT((LW-A)/C2):IF A=C0 THEN 3230›3220 T$=A$:A$=BL$:A$(A)=T$(C1,LW-A)›3230 GOSUB 3500:? #C7›3240 CNT=CNT-C1:IF NOT (CNT) THEN GOSUB 3550›3250 NEXT I›3260 ? #C7:CLOSE #C7:A$="ÐÒÉÎÔ ÄÏÎÅ":GOTO 2870›3270 DNS=ASC("L"):GOSUB 3460›3280 I=C1›3290 FOR J=C1 TO A›3300 IF J=C1 THEN GOSUB 3560›3310 B=LW*(I-C1)+LPC*(J-C1)*LW+C1›3320 IF J>C1 THEN A$="| ":GOSUB 3510›3330 IF B>=LEN(B$) AND J=A THEN 3400›3340 IF B>=LEN(B$) THEN A$=BL$:GOTO 3380›3350 A$=B$(B,B+LW-C1):IF NOT (CR) THEN 3380›3360 X=USR(LX,ADR(A$),LW):X=INT((LW-X)/2):IF X<=C1 THEN 3380›3370 T$=A$:A$=BL$:A$(X)=T$:A$(LW+C1)=""›3380 IF A$=BL$ AND J=A THEN 3400›3390 GOSUB 3510›3400 NEXT J›3410 ? #C7:CNT=CNT-C1:IF CNT THEN 3440›3420 I=I+(A-C1)*LPC:IF I>LINES THEN 3440›3430 GOSUB 3550›3440 I=I+C1:IF I>LINES THEN 3260›3450 GOTO 3290›3460 T$=STR$(PG):PG=PG+C1›3470 ? #7:GOSUB 3560:X=LEN(W$):GOSUB 3540:X=USR(PT,ADR(W$),LEN(W$)):X=LEN(T$):GOSUB 3540›3480 X=USR(PT,ADR(T$),LEN(T$)):? #C7:FOR X=C1 TO 5:? #C7:NEXT X:CNT=LPC:RETURN ›3490 FOR X=C1 TO C4:? #C7:NEXT X:GOTO 3460›3500 GOSUB 3560›3510 X=LEN(A$):GOSUB 3540:X=USR(PT,ADR(A$),LEN(A$))›3520 IF PEEK(KEY)<>255 THEN GET #C1,X:IF X=27 THEN POP :CLOSE #C7:GOTO 3120›3530 RETURN ›3540 X=X*8:HI=INT(X/256):LO=X-256*HI:? #C7;CHR$(27);CHR$(DNS);CHR$(LO);CHR$(HI);:RETURN ›3550 FOR X=C1 TO C2+(SP=8):? #C7:NEXT X:? #C7;"A":? #C7;"A";CHR$(SP);:GOSUB 3490:RETURN ›3560 X=LM:GOSUB 3540:X=USR(PT,ADR(BL$),LM):RETURN ›3570 ? "}End Edit  ÎÏ×  ";:GOSUB 240:GOSUB 470›3580 IF NOT X THEN A$="":GOTO 110›3590 GRAPHICS C0:CLR :END ›4000 DATA 104,240,10,201,2,240,7,170,104,104,202,208,251,96,104,133,213,104,133,212›4010 DATA 104,104,133,216,160,0,177,212,230,212,208,2,230,213,160,0,132,217,201,128›4020 DATA 144,4,41,127,198,217,170,133,218,224,96,176,11,169,64,224,32,144,2,169›4030 DATA 224,24,101,218,133,214,169,0,133,215,162,3,6,214,38,215,202,208,249,24›4040 DATA 173,244,2,101,215,133,215,160,0,240,2,208,187,162,0,177,214,230,214,208›4050 DATA 2,230,215,69,217,149,228,232,224,8,208,239,162,0,22,228,42,232,224,8›4060 DATA 208,248,153,220,0,200,192,8,208,238,162,0,181,220,201,155,208,4,169,151›4070 DATA 149,220,232,224,8,208,241,162,112,169,11,157,66,3,169,220,157,68,3,169›4080 DATA 0,157,69,3,169,0,157,73,3,169,8,157,72,3,32,86,228,198,216,208›4090 DATA 166,96›4100 DATA 104,240,10,201,2,240,15,170,104,104,202,208,251,169,0,133,212,169,1,133›4110 DATA 213,96,104,133,215,104,133,214,104,104,168,136,177,214,201,32,208,9,136,208›4120 DATA 247,177,214,201,32,240,1,200,132,212,169,0,133,213,96›