10 REM **** EDITOR.TOLP 64 **** 12 : 20 DIMLI(32,2) 25 U$="":O$="[145]":R$="":L$="[157]":F7$="[136]":F1$="[133]":Q=ASC("#"):AB$="_":P=160 27 E$=CHR$(13):PRINTCHR$(14)CHR$(8):BE=20000:BH=INT(BE/256):BL=BE-BH*256 30 POKE53280,11:POKE53281,12:POKE646,11 33 PRINT"[147] PROGRAMMED BY [212]HOMAS [211]CHLOEGL [146]" 34 PRINT""TAB(7)"[144]----- EDITOR.TOLP 64[144] -----[151]" 35 PRINTTAB(8)"[1] DESIGNING A CHARACTER" 37 PRINTTAB(8)"[2] LOOK AT A CHARACTER" 40 PRINTTAB(8)"[3] LOADING A FONT" 42 PRINTTAB(8)"[4] SAVING A FONT" 45 GETKK$:IFVAL(KK$)>4ORVAL(KK$)=0THEN45 47 ONVAL(KK$)GOTO60,5000,7000,6000 52 : 53 REM *** BUILDING THE SCREEN *** 60 GOSUB4200 90 X=0:Y=0:S=ASC("+"):X1=-1:POKE1827,Q 97 : 98 REM *** MAIN-BRANCH *** 100 XL=X:YL=Y:GOSUB2000:ONFLGOTO200,300,400,500,25 197 : 198 REM *** MOVE THE CURSOR *** 200 U=XL:V=YL:GOSUB3000:POKEAD,S:U=X:V=Y:GOSUB3000:S=PEEK(AD) 205 IFS=160THENPOKEAD,Q+128:GOTO220 210 POKEAD,Q 220 GOTO100 297 : 298 REM ** STORE THE POINT AND DRAW ** 299 REM ** IF IT'S NECESSARY A LINE ** 300 IFX=15ANDY=15THEN380 302 PRINTZA;" [145][145]" 305 IFZA=0THEN310 307 IFLI(ZA-1,0)=XANDLI(ZA-1,1)=YTHEN380 310 LI(ZA,0)=X:LI(ZA,1)=Y:GOSUB3500:IFFZ=1THEN500 320 IFX1=-1THENX1=X:Y1=Y:U=X:V=Y:GOSUB3000:POKEAD,Q+128:S=P 330 X2=X:Y2=Y:GOSUB4000:X1=X2:Y1=Y2:GOTO100 380 PRINT" NOT POSSIBLE![145][145]":GOTO100 397 : 398 REM *** START A NEW LINE *** 400 IFX1=-1THEN100 405 PRINTZA;" [145][145]" 410 X1=-1:GOSUB3500:GOTO100 497 : 498 REM *** STORE THE CHARACTER *** 500 U=X:V=Y:GOSUB3000:POKEAD,S:AA=0 505 IFCO$=CHR$(34)THENCO$=CO$+CHR$(34) 510 PRINT"[147][144]CHARACTER: ","'"CO$"' "CO;ASC(CO$)"[151]" 520 FORI=0TO15:GOSUB600:NEXT:POKE198,0:WAIT198,1:PRINT"[147]" 530 FORI=16TO31:GOSUB600:NEXT 540 POKE198,0:WAIT198,1:IFAA>0THENRETURN 550 CO=ASC(CO$):CO=CO+1:CO$=CHR$(CO):GOSUB1517 560 GOSUB4210:GOTO90 600 LI(I,2)=LI(I,0)*16+LI(I,1):PRINTI,LI(I,0),LI(I,1),LI(I,2) 610 POKEBE+CO*32+I,LI(I,2):RETURN 798 : 799 REM *** ERASE THE LI-ARRAY *** 800 FORI=0TO32:LI(I,0)=15:LI(I,1)=15:LI(I,2)=255:NEXT:RETURN 997 : 998 : 999 REM *** SUBROUTINES *** 1000 PRINT"  0123456789012345 [146]":RETURN 1010 PRINTTAB(3)"[144]++++++++++++++++[151]":RETURN 1498 : 1499 REM *** GETTING THE CHARACTER *** 1500 INPUT"[144] CHARACTER: C OR ASC";CO$ 1505 IFCO$="_"THENGOSUB1800:GOTO1500 1510 IFLEN(CO$)>1THENCO=VAL(CO$):CO$=CHR$(CO):GOTO1517 1515 IFCO$=""THEN1500 1517 CO=ASC(CO$):IFCO<33OR(CO>93ANDCO<160)THEN1500 1520 CO=CO-33:IFCO>159THENCO=CO-99 1530 IFCO>86THEN1500 1580 RETURN 1800 PRINT"":FORI=33TO93:CO$=CHR$(I):GOSUB1517:PRINT,CO,ASC(CO$),CO$:NEXT 1810 FORI=ASC("[193]")TOASC("[218]"):CO$=CHR$(I):GOSUB1517:PRINT,CO,ASC(CO$),CO$:NEXT 1880 RETURN 1997 : 1998 REM *** GETTING A KEY *** 2000 GETK$:IFK$=U$ORK$=O$ORK$=R$ORK$=L$ORK$=F7$ORK$=F1$ORK$=E$ORK$=AB$THEN2008 2005 GOTO2000 2008 FL=1 2010 IFK$=U$THENY=Y-1:IFY=-1THENY=15 2020 IFK$=O$THENY=Y+1:IFY=16THENY= 0 2030 IFK$=L$THENX=X-1:IFX=-1THENX=15 2040 IFK$=R$THENX=X+1:IFX=16THENX= 0 2050 IFK$=F1$THENFL=2 2060 IFK$=F7$THENFL=3 2070 IFK$=E$THENFL=4 2080 IFK$=AB$THENFL=5 2090 RETURN 2997 : 2998 REM * TRANSFORM U,V TO AN ADRESS * 3000 AD=1024+(20-V)*40+U+3 3010 RETURN 3500 IFZA<29THENZA=ZA+1:FZ=0:RETURN 3510 FZ=1:RETURN 3997 : 3998 REM ** DRAW FROM X1,Y1 TO X2,Y2 ** 4000 XX=X1:YY=Y1 4005 DX=INT(ABS(X1-X2)):DY=INT(ABS(Y1-Y2)) 4010 S1=SGN(X2-X1):S2=SGN(Y2-Y1) 4020 T=0:IFDX3ANDI<>11THENGOSUB1010:GOTO4230 4227 PRINTTAB(3)"[144]----------------[151]" 4230 POKE1843-I*40,A:POKE1826-I*40,A:NEXT 4240 GOSUB1000:GOSUB800:POKE55514,11:POKE1242,160 4250 RETURN 4400 PRINT""TAB(22)"[F1] SET A POINT" 4410 PRINTTAB(22)"[F7] START A NEW" 4420 PRINTTAB(29)"LINE" 4430 PRINTTAB(22)"[CR] STORE" 4440 PRINTTAB(22)"[_] EXIT" 4450 RETURN 4500 PRINT""TAB(22)"[F1] PREVIOUS" 4505 PRINTTAB(29)"CHARACTER" 4510 PRINTTAB(22)"[F7] NEXT" 4515 PRINTTAB(29)"CHARACTER" 4520 PRINTTAB(22)"[CR] DATA" 4530 PRINTTAB(22)"[_] EXIT" 4540 RETURN 4998 REM *** SHOWING A CHARACTER *** 5000 GOSUB1500 5005 GOSUB4210:LU=0:IU=0:Q=32 5010 FORJ=0TO31:IN=PEEK(BE+CO*32+J) 5020 X=INT(IN/16):Y=IN-X*16 5030 LI(J,0)=X:LI(J,1)=Y:LI(J,2)=IN 5040 IFIN=255THENIU=IU+1:LU=0 5050 IFIU=2THENJ=31:GOTO5100 5060 IFIN=255THEN5100 5070 IU=0:LU=LU+1:IFLU=1THENX2=X:Y2=Y:GOTO5100 5080 X1=X2:Y1=Y2:X2=X:Y2=Y 5090 GOSUB4000 5100 NEXTJ:POKE198,0 5110 GETK$:IFK$<>F7$ANDK$<>F1$ANDK$<>AB$ANDK$<>E$THEN5110 5115 IFK$=F1$THENCO=CO-1:IFCO<0THENCO=0 5120 IFK$=F7$THENCO=CO+1:IFCO>86THENCO=86 5125 IFCO>60THENCO$=CHR$(CO+132) 5127 IFCO<61THENCO$=CHR$(CO+33) 5130 IFK$=AB$THEN25 5140 IFK$=E$THENAA=1:GOSUB505:GOTO5110 5150 GOTO5005 5998 : 5999 REM *** SAVE A FONT *** 6000 GOSUB8000:IFFO$="_"THEN25 6005 FO$="@0:"+FO$ 6010 GOSUB8200:GOSUB8300:SYS19021 6020 GOTO25 6998 : 6999 REM *** LOAD A FONT *** 7000 GOSUB8000:IFFO$="_"THEN25 7010 GOSUB8200:GOSUB8300:SYS19000 7020 GOTO25 7998 : 7999 REM *** GET A FONTNAME *** 8000 INPUT"[144] NAME OF THE FONT:";FO$ 8040 RETURN 8198 : 8199 REM ** WRITE FO$ TO 19800/$4D58 ** 8200 FORI=1TOLEN(FO$):POKE19800+I-1,ASC(MID$(FO$,I,1)):NEXT 8210 RETURN 8298 : 8299 REM *** LOAD THE ASS-ROUTINE *** 8300 I=0:RESTORE 8310 READIN:IFIN>=0THENPOKE19000+I,IN:I=I+1:GOTO8310 8320 POKE251,BL:POKE252,BH:POKE19008,LEN(FO$):POKE19027,LEN(FO$):RETURN 8500 DATA162,8,160,1,32,186,255,169,0,162,88,160,77,32,189,255 8510 DATA169,0,76,213,255,162,8,32,186,255,169,0,162,88,160,77,32,189 8520 DATA255,169,251,162,0,160,89,76,216,255,-1