home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh9x / sh94a.d64 / editor.tolp (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  5KB  |  186 lines

  1. 10 REM ****  EDITOR.TOLP 64  ****
  2. 12 :
  3. 20 DIMLI(32,2)
  4. 25 U$="":O$="[145]":R$="":L$="[157]":F7$="[136]":F1$="[133]":Q=ASC("#"):AB$="_":P=160
  5. 27 E$=CHR$(13):PRINTCHR$(14)CHR$(8):BE=20000:BH=INT(BE/256):BL=BE-BH*256
  6. 30 POKE53280,11:POKE53281,12:POKE646,11
  7. 33 PRINT"[147]     PROGRAMMED BY [212]HOMAS [211]CHLOEGL      [146]"
  8. 34 PRINT""TAB(7)"[144]----- EDITOR.TOLP 64[144] -----[151]"
  9. 35 PRINTTAB(8)"[1] DESIGNING A CHARACTER"
  10. 37 PRINTTAB(8)"[2] LOOK AT A CHARACTER"
  11. 40 PRINTTAB(8)"[3] LOADING A FONT"
  12. 42 PRINTTAB(8)"[4] SAVING A FONT"
  13. 45 GETKK$:IFVAL(KK$)>4ORVAL(KK$)=0THEN45
  14. 47 ONVAL(KK$)GOTO60,5000,7000,6000
  15. 52 :
  16. 53 REM *** BUILDING THE SCREEN ***
  17. 60 GOSUB4200
  18. 90 X=0:Y=0:S=ASC("+"):X1=-1:POKE1827,Q
  19. 97 :
  20. 98 REM *** MAIN-BRANCH ***
  21. 100 XL=X:YL=Y:GOSUB2000:ONFLGOTO200,300,400,500,25
  22. 197 :
  23. 198 REM *** MOVE THE CURSOR ***
  24. 200 U=XL:V=YL:GOSUB3000:POKEAD,S:U=X:V=Y:GOSUB3000:S=PEEK(AD)
  25. 205 IFS=160THENPOKEAD,Q+128:GOTO220
  26. 210 POKEAD,Q
  27. 220 GOTO100
  28. 297 :
  29. 298 REM ** STORE THE POINT AND DRAW **
  30. 299 REM ** IF IT'S NECESSARY A LINE **
  31. 300 IFX=15ANDY=15THEN380
  32. 302 PRINTZA;"                 [145][145]"
  33. 305 IFZA=0THEN310
  34. 307 IFLI(ZA-1,0)=XANDLI(ZA-1,1)=YTHEN380
  35. 310 LI(ZA,0)=X:LI(ZA,1)=Y:GOSUB3500:IFFZ=1THEN500
  36. 320 IFX1=-1THENX1=X:Y1=Y:U=X:V=Y:GOSUB3000:POKEAD,Q+128:S=P
  37. 330 X2=X:Y2=Y:GOSUB4000:X1=X2:Y1=Y2:GOTO100
  38. 380 PRINT"   NOT POSSIBLE![145][145]":GOTO100
  39. 397 :
  40. 398 REM *** START A NEW LINE ***
  41. 400 IFX1=-1THEN100
  42. 405 PRINTZA;"                 [145][145]"
  43. 410 X1=-1:GOSUB3500:GOTO100
  44. 497 :
  45. 498 REM *** STORE THE CHARACTER ***
  46. 500 U=X:V=Y:GOSUB3000:POKEAD,S:AA=0
  47. 505 IFCO$=CHR$(34)THENCO$=CO$+CHR$(34)
  48. 510 PRINT"[147][144]CHARACTER:  ","'"CO$"'   "CO;ASC(CO$)"[151]"
  49. 520 FORI=0TO15:GOSUB600:NEXT:POKE198,0:WAIT198,1:PRINT"[147]"
  50. 530 FORI=16TO31:GOSUB600:NEXT
  51. 540 POKE198,0:WAIT198,1:IFAA>0THENRETURN
  52. 550 CO=ASC(CO$):CO=CO+1:CO$=CHR$(CO):GOSUB1517
  53. 560 GOSUB4210:GOTO90
  54. 600 LI(I,2)=LI(I,0)*16+LI(I,1):PRINTI,LI(I,0),LI(I,1),LI(I,2)
  55. 610 POKEBE+CO*32+I,LI(I,2):RETURN
  56. 798 :
  57. 799 REM *** ERASE THE LI-ARRAY ***
  58. 800 FORI=0TO32:LI(I,0)=15:LI(I,1)=15:LI(I,2)=255:NEXT:RETURN
  59. 997 :
  60. 998 :
  61. 999 REM *** SUBROUTINES ***
  62. 1000 PRINT"   0123456789012345 [146]":RETURN
  63. 1010 PRINTTAB(3)"[144]++++++++++++++++[151]":RETURN
  64. 1498 :
  65. 1499 REM *** GETTING THE CHARACTER ***
  66. 1500 INPUT"[144]        CHARACTER: C OR ASC";CO$
  67. 1505 IFCO$="_"THENGOSUB1800:GOTO1500
  68. 1510 IFLEN(CO$)>1THENCO=VAL(CO$):CO$=CHR$(CO):GOTO1517
  69. 1515 IFCO$=""THEN1500
  70. 1517 CO=ASC(CO$):IFCO<33OR(CO>93ANDCO<160)THEN1500
  71. 1520 CO=CO-33:IFCO>159THENCO=CO-99
  72. 1530 IFCO>86THEN1500
  73. 1580 RETURN
  74. 1800 PRINT"":FORI=33TO93:CO$=CHR$(I):GOSUB1517:PRINT,CO,ASC(CO$),CO$:NEXT
  75. 1810 FORI=ASC("[193]")TOASC("[218]"):CO$=CHR$(I):GOSUB1517:PRINT,CO,ASC(CO$),CO$:NEXT
  76. 1880 RETURN
  77. 1997 :
  78. 1998 REM *** GETTING A KEY ***
  79. 2000 GETK$:IFK$=U$ORK$=O$ORK$=R$ORK$=L$ORK$=F7$ORK$=F1$ORK$=E$ORK$=AB$THEN2008
  80. 2005 GOTO2000
  81. 2008 FL=1
  82. 2010 IFK$=U$THENY=Y-1:IFY=-1THENY=15
  83. 2020 IFK$=O$THENY=Y+1:IFY=16THENY= 0
  84. 2030 IFK$=L$THENX=X-1:IFX=-1THENX=15
  85. 2040 IFK$=R$THENX=X+1:IFX=16THENX= 0
  86. 2050 IFK$=F1$THENFL=2
  87. 2060 IFK$=F7$THENFL=3
  88. 2070 IFK$=E$THENFL=4
  89. 2080 IFK$=AB$THENFL=5
  90. 2090 RETURN
  91. 2997 :
  92. 2998 REM * TRANSFORM U,V TO AN ADRESS *
  93. 3000 AD=1024+(20-V)*40+U+3
  94. 3010 RETURN
  95. 3500 IFZA<29THENZA=ZA+1:FZ=0:RETURN
  96. 3510 FZ=1:RETURN
  97. 3997 :
  98. 3998 REM ** DRAW FROM X1,Y1 TO X2,Y2 **
  99. 4000 XX=X1:YY=Y1
  100. 4005 DX=INT(ABS(X1-X2)):DY=INT(ABS(Y1-Y2))
  101. 4010 S1=SGN(X2-X1):S2=SGN(Y2-Y1)
  102. 4020 T=0:IFDX<DYTHENDD=DX:DX=DY:DY=DD:T=1
  103. 4030 I1=2*DY:I2=2*DX:D=I1-DX
  104. 4040 FORI=1TODX:U=XX:V=YY:GOSUB3000:POKEAD,P
  105. 4050 IFD<0THEN4090
  106. 4060 IFT=1THENXX=XX+S1:GOTO4080
  107. 4070 YY=YY+S2
  108. 4080 D=D-I2
  109. 4090 IFT=1THENYY=YY+S2:GOTO4110
  110. 4100 XX=XX+S1
  111. 4110 D=D+I1:NEXTI
  112. 4120 U=XX:V=YY:GOSUB3000:POKEAD,Q+128:S=P:RETURN
  113. 4200 GOSUB1500
  114. 4210 PRINT"[151][147]        ----- EDITOR.TOLP 64 -----      [146]":ZA=0
  115. 4212 IFCO$=CHR$(34)THENCO$=CO$+CHR$(34)
  116. 4214 PRINT"[144]    CHARACTER:  ","'"CO$"'   ",CO;ASC(CO$)"[151]"
  117. 4215 IFKK$="1"THENGOSUB4400:GOTO4222
  118. 4220 GOSUB4500
  119. 4222 GOSUB1000:FORI=15TO0STEP-1:A=(I/10-INT(I/10))*10+176
  120. 4225 IFI<>3ANDI<>11THENGOSUB1010:GOTO4230
  121. 4227 PRINTTAB(3)"[144]----------------[151]"
  122. 4230 POKE1843-I*40,A:POKE1826-I*40,A:NEXT
  123. 4240 GOSUB1000:GOSUB800:POKE55514,11:POKE1242,160
  124. 4250 RETURN
  125. 4400 PRINT""TAB(22)"[F1] SET A POINT"
  126. 4410 PRINTTAB(22)"[F7] START A NEW"
  127. 4420 PRINTTAB(29)"LINE"
  128. 4430 PRINTTAB(22)"[CR] STORE"
  129. 4440 PRINTTAB(22)"[_]  EXIT"
  130. 4450 RETURN
  131. 4500 PRINT""TAB(22)"[F1] PREVIOUS"
  132. 4505 PRINTTAB(29)"CHARACTER"
  133. 4510 PRINTTAB(22)"[F7] NEXT"
  134. 4515 PRINTTAB(29)"CHARACTER"
  135. 4520 PRINTTAB(22)"[CR] DATA"
  136. 4530 PRINTTAB(22)"[_]  EXIT"
  137. 4540 RETURN
  138. 4998 REM *** SHOWING A CHARACTER ***
  139. 5000 GOSUB1500
  140. 5005 GOSUB4210:LU=0:IU=0:Q=32
  141. 5010 FORJ=0TO31:IN=PEEK(BE+CO*32+J)
  142. 5020 X=INT(IN/16):Y=IN-X*16
  143. 5030 LI(J,0)=X:LI(J,1)=Y:LI(J,2)=IN
  144. 5040 IFIN=255THENIU=IU+1:LU=0
  145. 5050 IFIU=2THENJ=31:GOTO5100
  146. 5060 IFIN=255THEN5100
  147. 5070 IU=0:LU=LU+1:IFLU=1THENX2=X:Y2=Y:GOTO5100
  148. 5080 X1=X2:Y1=Y2:X2=X:Y2=Y
  149. 5090 GOSUB4000
  150. 5100 NEXTJ:POKE198,0
  151. 5110 GETK$:IFK$<>F7$ANDK$<>F1$ANDK$<>AB$ANDK$<>E$THEN5110
  152. 5115 IFK$=F1$THENCO=CO-1:IFCO<0THENCO=0
  153. 5120 IFK$=F7$THENCO=CO+1:IFCO>86THENCO=86
  154. 5125 IFCO>60THENCO$=CHR$(CO+132)
  155. 5127 IFCO<61THENCO$=CHR$(CO+33)
  156. 5130 IFK$=AB$THEN25
  157. 5140 IFK$=E$THENAA=1:GOSUB505:GOTO5110
  158. 5150 GOTO5005
  159. 5998 :
  160. 5999 REM *** SAVE A FONT ***
  161. 6000 GOSUB8000:IFFO$="_"THEN25
  162. 6005 FO$="@0:"+FO$
  163. 6010 GOSUB8200:GOSUB8300:SYS19021
  164. 6020 GOTO25
  165. 6998 :
  166. 6999 REM *** LOAD A FONT ***
  167. 7000 GOSUB8000:IFFO$="_"THEN25
  168. 7010 GOSUB8200:GOSUB8300:SYS19000
  169. 7020 GOTO25
  170. 7998 :
  171. 7999 REM *** GET A FONTNAME  ***
  172. 8000 INPUT"[144]        NAME OF THE FONT:";FO$
  173. 8040 RETURN
  174. 8198 :
  175. 8199 REM ** WRITE FO$ TO 19800/$4D58 **
  176. 8200 FORI=1TOLEN(FO$):POKE19800+I-1,ASC(MID$(FO$,I,1)):NEXT
  177. 8210 RETURN
  178. 8298 :
  179. 8299 REM *** LOAD THE ASS-ROUTINE ***
  180. 8300 I=0:RESTORE
  181. 8310 READIN:IFIN>=0THENPOKE19000+I,IN:I=I+1:GOTO8310
  182. 8320 POKE251,BL:POKE252,BH:POKE19008,LEN(FO$):POKE19027,LEN(FO$):RETURN
  183. 8500 DATA162,8,160,1,32,186,255,169,0,162,88,160,77,32,189,255
  184. 8510 DATA169,0,76,213,255,162,8,32,186,255,169,0,162,88,160,77,32,189
  185. 8520 DATA255,169,251,162,0,160,89,76,216,255,-1
  186.