home *** CD-ROM | disk | FTP | other *** search
/ Profi Club / Profi_Club_2_1992_-_de.d64 / grafik-demo (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  7KB  |  219 lines

  1. 10 rem grafik-demo =================c64
  2. 20 rem written by a. mittelmeyer
  3. 30 rem ================================
  4. 130 vb=3
  5. 140 gb=8
  6. 150 vr=7
  7. 151 rem -------------------------------
  8. 155 vf=1
  9. 160 gosub180:gosub200:goto1150
  10. 180 vh=64*vb+4*vr:gh=64*vb+4*gb
  11. 190 va=256*vh:ga=256*gh:return
  12. 200 fori=828to1004
  13. 201 reada:pokei,a:next:return
  14. 202 data120,072,165,001,041,252,133,001
  15. 203 data104,096,072,165,001,009,003,133
  16. 204 data001,088,104,096,032,060,003,160
  17. 205 data000,145,251,200,208,251,230,252
  18. 206 data202,208,246,240,229,160,000,032
  19. 207 data207,255,176,222,032,060,003,145
  20. 208 data251,032,070,003,200,208,240,230
  21. 209 data252,202,208,235,240,204,160,000
  22. 210 data032,060,003,177,251,032,070,003
  23. 211 data032,210,255,200,208,242,230,252
  24. 212 data202,208,237,096,032,253,174,032
  25. 213 data235,183,138,032,060,003,160,000
  26. 214 data145,020,076,070,003,032,253,174
  27. 215 data032,138,173,032,247,183,032,060
  28. 216 data003,160,000,177,020,032,070,003
  29. 217 data168,032,162,179,032,253,174,032
  30. 218 data139,176,133,073,132,074,165,014
  31. 219 data076,194,169,032,253,174,032,235
  32. 220 data183,169,000,056,106,202,016,252
  33. 221 data160,000,076,060,003,032,199,003
  34. 222 data017,020,145,020,076,070,003,032
  35. 223 data199,003,073,255,049,020,076,222
  36. 224 data003
  37. 420 rem ---- grafik an ----
  38. 430 poke56576,peek(56576)and252or(3-vb)
  39. 440 poke53272,16*vr+gb
  40. 450 poke53265,peek(53265)or32:return
  41. 470 rem ---- grafik aus ----
  42. 480 poke56576,peek(56576)and252or3
  43. 490 poke53272,21
  44. 500 poke53265,peek(53265)and223:return
  45. 520 rem ---- farbe klaeren ----
  46. 530 poke780,16*vf+hf:poke781,4
  47. 540 poke251,0:poke252,vh:sys848:return
  48. 550 rem ---- bild loeschen ----
  49. 560 poke780,0:poke781,32
  50. 570 poke251,0:poke252,gh:sys848:return
  51. 580 rem ---- grafik laden ----
  52. 590 open8,8,8,fi$+",p,r":poke781,8
  53. 600 sys65478:geta$:geta$:poke251,0
  54. 610 iffg=0then630
  55. 620 poke252,vh:poke781,4:sys865
  56. 630 poke252,gh:poke781,32:sys865
  57. 640 sys65484:close8:return
  58. 645 rem ---- grafik saven ----
  59. 650 open8,8,8,fi$+",p,w":poke781,8
  60. 660 sys65481:printchr$(0);:poke251,0
  61. 670 iffg=0thenprint" ";:goto700
  62. 680 printchr$(28);:poke252,vh:poke781,4
  63. 690 sys890
  64. 700 poke252,gh:poke781,32:sys890:goto640
  65. 710 rem ---- speicherzugriff ----
  66. 720 rem i=sys912,a,i:rem pokea,i
  67. 730 rem sys929,a,i:rem i=peek(a)
  68. 750 rem ---- pixel setzen ----
  69. 760 sn=int(x/8):zn=int(y/8)
  70. 770 iffa=1thensys912,40*zn+sn+va,16*vf+hf
  71. 780 ad=312*zn+y+8*sn+ga
  72. 790 iflo=0thensys985,ad,xand7:return
  73. 800 sys995,ad,xand7:return
  74. 810 rem ---- linie ----
  75. 820 ifabs(y2-y1)>abs(x2-x1)then860
  76. 830 m=(y2-y1)/(x2-x1)
  77. 840 forx=x1tox2stepsgn(x2-x1)
  78. 850 y=int(y1+(x-x1)*m+.5):gosub760:next:return
  79. 860 m=(x2-x1)/(y2-y1)
  80. 870 fory=y1toy2stepsgn(y2-y1)
  81. 871 x=int(x1+(y-y1)*m+.5):gosub760:next:return
  82. 875 rem ---- rechteck ----
  83. 880 a=y2:y2=y1:gosub820:y2=a
  84. 890 a=x2:x2=x1:gosub820:x2=a
  85. 900 a=y1:y1=y2:gosub820:y1=a
  86. 910 a=x1:x1=x2:gosub820:x1=a:return
  87. 920 rem ---- kreis ----
  88. 930 xe=int(r/sqr(2)+.5)
  89. 940 forkx=0toxe:ky=int(sqr(r*r-kx*kx)+.5)
  90. 950 gosub970:kx=-kx:gosub970:ky=-ky
  91. 960 gosub970:kx=-kx:gosub970:next:return
  92. 970 x=xm+kx:y=ym+ky:gosub760
  93. 980 x=xm+ky:y=ym+kx:goto760
  94. 990 rem ---- cursor setzen ----
  95. 1000 zz=40*(yand248)+(xand504)+ga:return
  96. 1010 xm=160:ym=100:r=50:gosub930
  97. 1020 gosub1000
  98. 1030 poke56334,peek(56334)and254
  99. 1040 poke1,peek(1)and251
  100. 1050 forj=1tolen(tx$)
  101. 1060 iffa=1thensys912,(zz-ga)/8+va,16*vf+hf
  102. 1070 printchr$(19)mid$(tx$,j,1);
  103. 1080 ad=peek(1024)*8+1024*gz+53248
  104. 1090 fori=0to7:sys912,zz+i,peek(ad+i)
  105. 1100 next:zz=zz+8:next
  106. 1110 poke1,peek(1)or4
  107. 1115 poke56334,peek(56334)or1:return
  108. 1120 rem ====================
  109. 1130 rem  hauptprogramm
  110. 1140 rem ====================
  111. 1150 gosub530:gosub560:gosub430
  112. 1160 x=80:y=8
  113. 1170 tx$="g r a f i k d e m o":gosub1020
  114. 1180 x=40:y=32:tx$="die farbe kann global fuer den":gosub1020
  115. 1190 y=40:tx$="gesamten bildschirm festgelegt":gosub1020
  116. 1200 y=48:tx$="werden":gosub1020
  117. 1210 y=64:x=40:tx$="hintergrundfarbe hf":gosub1020
  118. 1220 forhf=15to0step-1:gosub530:foraa=0to500:next:next:hf=0
  119. 1230 y=72:tx$="vordergrundfarbe vf":gosub1020
  120. 1240 forvf=0to15:gosub530:foraa=0to500:next:next:vf=1:gosub530
  121. 1250 y=88:tx$="aber auch fuer einzelne zeichen":gosub1020
  122. 1260 y=96:tx$="gibt es eigene farben, im":gosub1020
  123. 1270 y=104:tx$="grafikmodus gar eine eigene":gosub1020
  124. 1280 y=112:tx$="hintergrundfarbe":gosub1020
  125. 1290 tx$="[209]":fa=1:x=32:y=128:gosub1000
  126. 1300 forhf=0to15:vf=15-hf:gosub1030:zz=zz+8:next
  127. 1310 y=144:tx$="weiter mit taste":hf=0:vf=7:gosub1020:gosub9000
  128. 1320 vf=1:fa=0:gosub530:gosub560
  129. 1330 x=0:y=8:tx$="soeben sahen sie schnelles":gosub1020
  130. 1340 y=16:tx$="bildschirmloeschen":gosub1020
  131. 1350 y=32:x=0:tx$="waehrend im textmodus nur jeweils ein   ":gosub1020
  132. 1360 tx$="einziger zeichensatz auf dem bildschirm ":gosub1030
  133. 1370 tx$="verwendung finden kann, gibt es im      ":gosub1030
  134. 1380 tx$="grafik-modus keinerlei einschraenkungen.":gosub1030
  135. 1390 y=80:tx$="gross/grafik: zxasqw/[218][216][193][211][209][215]":gosub1020
  136. 1400 y=88:tx$="invers      : ":gosub1020:tx$="zxasqw/[218][216][193][211][209][215]":gz=1:gosub1030
  137. 1410 gz=0:y=96:tx$="klein/gross : ":gosub1020:tx$="zxasqw/[218][216][193][211][209][215]":gz=2:gosub1030
  138. 1420 gz=0:y=104:tx$="invers      : ":gosub1020:tx$="zxasqw/[218][216][193][211][209][215]":gz=3:gosub1030
  139. 1430 gz=2:vf=7:fa=1:y=120:tx$="[215]eiter mit [212]aste":gosub1020:gosub9000
  140. 1440 fa=0:vf=1:gosub530:gosub560
  141. 1450 y=8:tx$="[197]ine [199]rafik besteht natuerlich nicht nur":gosub1020
  142. 1460 tx$="aus [194]uchstaben. [197]s gibt:":gosub1030
  143. 1470 x=16:y=40:tx$="[208]unkte":gosub1020
  144. 1480 foraa=0to40
  145. 1490 x=int(rnd(1)*40):y=int(rnd(2)*40)
  146. 1500 x=20+x:y=68+y:gosub760:next
  147. 1510 x=96:y=40:tx$="[204]inien":gosub1020
  148. 1520 x1=120:y1=68:x2=x1:y2=108:gosub820
  149. 1530 x1=100:x2=140:y1=88:y2=y1:gosub820
  150. 1540 y1=108:y2=68:gosub820
  151. 1550 y1=68:y2=108:gosub820
  152. 1560 x=160:y=40:tx$="[210]echtecke":gosub1020
  153. 1570 x1=180:y1=68:x2=220:y2=108
  154. 1580 forj=1to4:gosub880:x1=x1+5:y1=y1+5:x2=x2-5:y2=y2-5:next
  155. 1590 x=260:y=40:tx$="[203]reise":gosub1020
  156. 1600 xm=280:ym=88:forr=5to20step5
  157. 1610 gosub930:next
  158. 1620 fa=1:vf=7:x=20:y=150:tx$="[215]eiter mit [212]aste":gosub1020
  159. 1630 gosub9000:vf=1:fa=0:gosub530:gosub560
  160. 1640 x=0:y=8:tx$="[205]it der [208]unkt-[198]unktion lassen sich auch ":gosub1020
  161. 1650 tx$="beliebige [198]iguren erzeugen.":gosub1030
  162. 1660 x=100:y=32:tx$="[211]inusfunktion":gosub1020
  163. 1670 x1=2:y1=60:x2=2:y2=160:gosub820
  164. 1680 y=110:ad=39*(yand248)+y+ga
  165. 1690 fori=adtoad+312step8
  166. 1700 sys912,i,255:next
  167. 1710 forkx=0to315:ky=sin(kx/50)
  168. 1720 x=2+kx:y=110-int(50*ky+.5):gosub760:next
  169. 1730 x=0:y=180:tx$="[215]eiter mit [212]aste":gosub1020:gosub9000:vf=0
  170. 1731 gosub1740:goto1830
  171. 1735 rem ---- abblendung ----
  172. 1740 a=16*vf+hf:lo=va:lu=va+24*40
  173. 1750 ro=va+39:ru=lu+39
  174. 1760 forj=1to12:fori=lotoro:sys912,i,a
  175. 1770 next:fori=ro+40torustep40:sys912,i,a
  176. 1780 next:fori=ru-1tolustep-1:sys912,i,a
  177. 1790 next:fori=lu-40tolo+40step-40:sys912,i,a
  178. 1800 next:lo=lo+41:ro=ro+39:lu=lu-39
  179. 1810 ru=ru-41:next
  180. 1820 fori=lotoro:sys912,i,a:next:return
  181. 1821 rem --------------------
  182. 1830 tx$="                ":gosub1020
  183. 1831 printchr$(147)"":gosub480:printchr$(14);
  184. 1835 printchr$(147)"":gosub480:printchr$(14);
  185. 1840 print"[193]uf- und [193]bblendungen sind moeglich":print:print"[215]eiter mit [212]aste"
  186. 1850 gosub9000:gosub430:vf=1
  187. 1851 gosub1860:goto1950
  188. 1855 rem ---- aufblendung ----
  189. 1860 a=16*vf+hf:lo=va+12*41:lu=lo
  190. 1870 ro=va+13*39:ru=ro
  191. 1880 fori=rotolostep-1:sys912,i,a:next
  192. 1890 forj=1to12:lo=lo-41:ro=ro-39
  193. 1900 lu=lu+39:ru=ru+41
  194. 1910 fori=lo+1toro:sys912,i,a:next
  195. 1920 fori=ro+40torustep40:sys912,i,a:next
  196. 1930 fori=ru-1tolustep-1:sys912,i,a:next
  197. 1940 fori=lu-40tolostep-40:sys912,i,a:next:next:return
  198. 1945 rem ---------------------
  199. 1950 vb=1:gosub180:poke56,vh:clr
  200. 1960 vb=1:gb=8:vr=7:gosub180
  201. 1970 vf=0:gosub530
  202. 1980 fi$="hires-bild 1":gosub590
  203. 1990 vb=3:gosub180:gosub1740
  204. 2000 vb=1:gosub180:vf=1
  205. 2010 gosub430:gosub1860
  206. 2020 vb=3:gosub180:vf=0:gosub530
  207. 2030 fi$="hires-bild 2":gosub590
  208. 2031 vb=1:gosub180:gosub1740
  209. 2040 vb=3:gosub180:gosub430
  210. 2050 vf=1:hf=0:gosub1860
  211. 2060 x=0:y=199:tx$="[215]eiter mit [212]aste":gz=2:gosub1020:gosub9000
  212. 2070 printchr$(147)"";:gosub480
  213. 2080 printchr$(14)"[196]urch [215]echseln der [199]rafikbereiche"
  214. 2090 print"kann eine richtige [194]ildershow"
  215. 2100 print"aufgebaut werden."
  216. 2110 end
  217. 9000 geta$:ifa$=""then9000
  218. 9001 return
  219.