home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh9x
/
sh94a.d64
/
editor.tolp
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
5KB
|
186 lines
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:IFDX<DYTHENDD=DX:DX=DY:DY=DD:T=1
4030 I1=2*DY:I2=2*DX:D=I1-DX
4040 FORI=1TODX:U=XX:V=YY:GOSUB3000:POKEAD,P
4050 IFD<0THEN4090
4060 IFT=1THENXX=XX+S1:GOTO4080
4070 YY=YY+S2
4080 D=D-I2
4090 IFT=1THENYY=YY+S2:GOTO4110
4100 XX=XX+S1
4110 D=D+I1:NEXTI
4120 U=XX:V=YY:GOSUB3000:POKEAD,Q+128:S=P:RETURN
4200 GOSUB1500
4210 PRINT"[151][147] ----- EDITOR.TOLP 64 ----- [146]":ZA=0
4212 IFCO$=CHR$(34)THENCO$=CO$+CHR$(34)
4214 PRINT"[144] CHARACTER: ","'"CO$"' ",CO;ASC(CO$)"[151]"
4215 IFKK$="1"THENGOSUB4400:GOTO4222
4220 GOSUB4500
4222 GOSUB1000:FORI=15TO0STEP-1:A=(I/10-INT(I/10))*10+176
4225 IFI<>3ANDI<>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