home *** CD-ROM | disk | FTP | other *** search
/ Digital Talk 66 / Digital_Talk_66_2004-04-28_Digital_Talk_de_Side_B.d64 / hiresbilder01 (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  11KB  |  387 lines

  1. 2 qa=peek(821):onqagoto6,8:print"[147]"
  2. 3 printtab(11)"- hiresbilder 01 -"
  3. 4 print"[154] bitte warten -- dateien werden geladen"
  4. 5 poke821,1:load"tramysalon01",8,1
  5. 6 poke821,2:load"hiresgrafik03",8,1
  6. 8 print"[147]":poke53280,10:poke53281,11:poke646,7:gosub11:goto110
  7. 9 qp=27:open4,4:open5,4,6:cmd4:print#5,chr$(qp):close4:close5:end
  8. 11 q$="hiresbilder":qv$="01":qt$=q$+qv$:qd$="290304":return
  9. 12 gosub11:print"g-a 8/9?[145]":getq:on-(q<>8andq<>9)goto12:return
  10. 14 gosub94:pt$=e$+ta$+n5$+td$:goto95:rem -> pr prg-titel re/ob
  11. 18 gosub12:print"   g-a"q"[145]":open15,q,15,"s:"+qt$:close15:saveqt$,q:end
  12. 61 cy=int(c/100):cx=c-(cy*100)
  13. 62 poke211,cx:poke214,cy:sys58640:return
  14. 68 lc=int(l/100):ll=l-(lc*100)
  15. 69 forx=lctoll:poke781,x:sys59903:next:return
  16. 94 e$=chr$(27):ta$=chr$(16):n5$=chr$(1):td$=chr$(44):return
  17. 95 close4:open4,4:gosub11:rem --prg-titeldruck re/ob--
  18. 96 print#4,pt$"*** "qt$" *** "qd$:print"[147]titel -> "qt$
  19. 97 print"ausgedruckt - nochmals? <j/n>"
  20. 98 q4$="":getq4$:on-(q4$<>"j"andq4$<>"n")-2*(q4$="n")goto98,99:goto96
  21. 99 print#4:close4:end
  22. 100 rem ---programm-ablauf---
  23. 110 gosub9002:c=804:gosub61:rem titel
  24. 120 print"[155]bitte bitmap-bereich auswaehlen:"
  25. 122 printtab(12)"0[155]  = 57344-65343":printtab(12)"1[155]  = 24576-32575"
  26. 124 r$="":getr$:ifr$=""then124
  27. 126 br=val(r$):ifbr<0orbr>1then124
  28. 128 c=1705:gosub61:print"[155]der bereich [158]"br"[155] wurde gewaehlt"
  29. 130 rem basisadressen / umschaltwerte - bereich 0 bereits im programm
  30. 132 poke51151,br: rem bitmap bereichsnummer
  31. 134 rem poke51145,0:  bank 3 ab 49152 fuer bereich 0
  32. 136 poke51146,2:  rem bank 1 ab 16384 fuer bereich 1
  33. 138 rem poke51147,204:basis textspeicher f farben ab 52224 bereich 0
  34. 140 poke51148,68: rem basis textspeicher f farben ab 17408 bereich 1
  35. 142 rem poke51149,224:bitmap-basis ab 57344 bereich 0
  36. 144 poke51150,96: rem bitmap-basis ab 24576 bereich 1
  37. 146 sys50465,br:rem bitmapadressen setzen
  38. 148 gosub9102:on-(br=1)goto150
  39. 149 gosub9994:goto110
  40. 150 gosub9002
  41. 152 print"[155]z[155]eichnen / a[155]usgabe / h[155]ilfe / e[155]nde?"
  42. 153 r$="":getr$:ifr$=""then153
  43. 154 ifr$="z"then9222
  44. 155 ifr$="a"then202
  45. 156 ifr$="h"then159
  46. 157 ifr$="e"then292
  47. 158 goto150
  48. 159 hs=1:goto9802
  49. 160 rem ---grafik einschalten---
  50. 162 poke53280,fr:rem rahmenfarbe
  51. 164 sys50545,br:rem grafik ein
  52. 166 goto282
  53. 169 restore
  54. 170 rem ---grafik-farben festlegen---
  55. 172 gd=3:pt=0:rem h'grund / punkte
  56. 174 poke2,gd:poke781,pt:rem zw u x-reg
  57. 176 sys50507:rem quer in farbsubroutine
  58. 180 rem hr-bs bildpunkte auf 0 setzen
  59. 182 sys49402,24576,32575,0
  60. 199 goto500
  61. 200 rem ---ausgabe auf bs/disk---
  62. 202 l=824:gosub68:c=804:gosub61
  63. 203 print"[153]ausgabe auf bildschirm oder disk"
  64. 204 printtab(7)"[155]grafik erst laden?   <j[155]/n[155]>":ps=2
  65. 205 r$="":getr$:ifr$=""then205
  66. 206 ifr$="j"then228
  67. 207 ifr$="n"then212
  68. 208 goto205
  69. 212 printtab(5)"ausgabe auf b[155]ildschirm / d[155]isk?"
  70. 213 fr=peek(18408)
  71. 214 r$="":getr$:ifr$=""then214
  72. 216 ifr$="b"then162
  73. 217 ifr$="d"then9262
  74. 218 goto214
  75. 220 rem ---weitere abfrage---
  76. 222 gosub9242
  77. 224 ifr$="l"then228
  78. 226 ifr$="g"then342
  79. 228 gosub9302
  80. 230 ifen<>0then222
  81. 232 ifps>1then162
  82. 234 goto342
  83. 240 rem ---bild/grafik speichern---
  84. 242 rem ifps=0thengosub9112:goto150
  85. 244 fr=peek(53280):poke18408,fr:rem rahmen
  86. 246 ba=17408:be=18431:na=23552:kn=3:rem farbspeicher
  87. 248 sys49152,ba,be,na,kn:rem transferieren
  88. 250 rem ---speichervorgang---
  89. 252 gosub9202:rem dateiname?
  90. 258 printtab(7)"[153]daten  werden gespeichert![155]"
  91. 260 ba=23552:be=32576
  92. 262 poke646,peek(53281)
  93. 264 sys49489,pr$,ba,be
  94. 266 gosub9902:rem error-routine
  95. 268 ifen=63andr$="j"then258
  96. 270 goto150
  97. 280 rem ---grafik wieder aus---
  98. 282 r$="":getr$:ifr$=""then282
  99. 284 ifr$=" "then287
  100. 285 ifr$="s"then288
  101. 286 goto282
  102. 287 gosub992:goto150
  103. 288 gosub992:goto9262
  104. 290 rem ---prog-ablauf-ende---
  105. 292 goto9990
  106. 299 goto9994
  107. 300 rem ---subroutine zeichnen---
  108. 302 print"[153]bitte zunaechst farben festlegen"
  109. 304 printtab(8)"[155]rahmen      (0-15): "
  110. 305 printtab(8)"[155]hintergrund (0-15): "
  111. 306 printtab(8)"[155]punktfarbe  (0-15): "
  112. 310 c=1430:gosub61
  113. 312 gosub9212:rem input-routine
  114. 314 fr=gf:c=1429:iffr<10thenc=c+1
  115. 316 gosub61:print"[158]"fr
  116. 320 c=1630:gosub61
  117. 322 gosub9212
  118. 324 gd=gf:c=1629:ifgd<10thenc=c+1
  119. 326 gosub61:print"[158]"gd
  120. 330 c=1830:gosub61
  121. 332 gosub9212
  122. 334 pt=gf:c=1829:ifpt<10thenc=c+1
  123. 336 gosub61:print"[158]"pt
  124. 340 rem ---abfrage punkte/linien---
  125. 342 print"p[155]unkte bearbeiten / l[155]inien ziehen?"
  126. 344 r$="":getr$:ifr$=""then344
  127. 346 ifr$="p"then362
  128. 348 ifr$="l"thengosub9994
  129. 350 goto344
  130. 360 rem ---punkte setzen/loeschen---
  131. 362 poke53280,fr:sys50545,br:rem grafik ein
  132. 363 ifps>0then370
  133. 364 poke2,gd:poke781,pt:sys50507:rem farben gd+pt
  134. 366 sys49402,24576,32575,0:rem pkte auf 0 setzen
  135. 370 x=0:y=0:x1=0:y1=0:zs=80:rem konstanten
  136. 371 gosub482
  137. 372 poke56322,224:rem tastatur sperren
  138. 374 jt=peek(56320):rem js-port 2
  139. 376 poke56322,255:rem tastatur freigeben
  140. 380 ifjt=127then390
  141. 381 ifjt=126then402:rem >nord
  142. 382 ifjt=125then406:rem >sued
  143. 383 ifjt=123then412:rem >west
  144. 384 ifjt=122then422:rem >nordwest
  145. 385 ifjt=121then426:rem >suedwest
  146. 386 ifjt=119then416:rem >ost
  147. 387 ifjt=118then432:rem >nordost
  148. 388 ifjt=117then436:rem >suedost
  149. 389 ifjt=111then442:rem >pkt aendern
  150. 390 r$="":getr$:ifr$=" "then399
  151. 392 ifr$="s"then396
  152. 394 goto372
  153. 396 gosub992:goto9262:rem speichern?
  154. 399 gosub992:goto150:rem zurueck hm
  155. 400 rem ---koordinaten aendern---
  156. 402 y1=y1-1:ify1<0theny1=0:    rem>nord
  157. 404 goto452
  158. 406 y1=y1+1:ify1>199theny1=199:rem>sued
  159. 408 goto452
  160. 412 x1=x1-1:ifx1<0thenx1=0:    rem>west
  161. 414 goto452
  162. 416 x1=x1+1:ifx1>319thenx1=319:rem>ost
  163. 418 goto452
  164. 420 rem ---schraeg=cursor 10fach---
  165. 422 x1=x1-10:y1=y1-10:   rem>nordwest
  166. 423 ifx1<0thenx1=0
  167. 424 ify1<0theny1=0
  168. 425 goto452
  169. 426 x1=x1-10:y1=y1+10:   rem>suedwest
  170. 427 ifx1<0thenx1=0
  171. 428 ify1>199theny1=199
  172. 429 goto452
  173. 432 x1=x1+10:y1=y1-10:   rem>nordost
  174. 433 ifx1>319thenx1=319
  175. 434 ify1<0theny1=0
  176. 435 goto452
  177. 436 x1=x1+10:y1=y1+10:   rem>suedost
  178. 437 ifx1>319thenx1=319
  179. 438 ify1>199theny1=199
  180. 439 goto452
  181. 440 rem ---punkt setzen/loeschen---
  182. 442 gosub482
  183. 450 rem ---zustand herstellen---
  184. 452 gosub482
  185. 460 rem ---zeitschleife---
  186. 462 fori=0tozs:next
  187. 464 x=x1:y=y1
  188. 466 goto371
  189. 480 rem ---punkt invertieren---
  190. 482 zm=2:sys50625,x,y,zm
  191. 484 return
  192. 900 rem ***anzeige-subroutinen***
  193. 910 rem ---sr hintergrund---
  194. 912 f9=int(fb/256)
  195. 913 poke51171,fb-f9*256:poke51172,f9
  196. 914 v9=int(vh/256)
  197. 915 poke51168,v9:poke51169,vh-v9*256
  198. 916 poke51170,vv
  199. 917 fg=pt*16+gd:poke51175,fg
  200. 918 poke51173,peek(51171):poke51174,peek(51172)
  201. 920 rem ---datas in tabelle---
  202. 922 i=0:j=0
  203. 923 readd1,d2:ifd1=-1then927
  204. 924 poke51184+i,d1:poke51185+i,d2
  205. 926 i=i+2:j=j+1:goto923
  206. 927 poke51182,j:rem hgd-zeilenzahl
  207. 928 sys51243:rem ---hgd zeichnen---
  208. 929 return
  209. 950 rem ---sr linienausgabe---
  210. 952 goto956
  211. 954 xa=x0:ya=y0:goto960
  212. 956 readxa,ya:rem startwert
  213. 958 xa=xa+vh:ya=ya+vv
  214. 960 readxe,ye,l0:rem endwert
  215. 962 xe=xe+vh:ye=ye+vv
  216. 964 sys50688,xa,ya,xe,ye,zm
  217. 966 x0=xe:y0=ye
  218. 970 ifl0=-3then954:rem linie> weiter
  219. 972 ifl0=-2then956:rem linie> neu
  220. 974 ifl0=-1thenreturn
  221. 976 return:rem zur sicherheit
  222. 990 rem ---hr-grafik ausschalten---
  223. 992 r$="":poke198,0:sys50589
  224. 994 return:rem od.goto9100+dort return
  225. 9000 rem ---programm-titel---
  226. 9002 print"[147][158][176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
  227. 9004 print"[221] [153]hires-grafik-programm von kahate [158][221]"
  228. 9006 print"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]"
  229. 9008 return
  230. 9100 rem ---auf taste warten---
  231. 9102 l=2424:gosub68:c=2412:gosub61
  232. 9104 print"[158]weiter mit taste[145][145][145][145][155]"
  233. 9106 poke198,0:wait198,1
  234. 9108 poke198,0:l=2424:gosub68:return
  235. 9110 rem ---kein bild im speicher---
  236. 9112 l=2424:gosub68:c=2409:gosub61
  237. 9114 print"[158]kein bild im speicher![145][145][145][145][155]"
  238. 9116 goto9106
  239. 9120 rem ---blaettern---
  240. 9122 l=2424:gosub68:c=2405:gosub61
  241. 9124 print"z[152]urueck  h[152]auptmenue  v[152]orwaerts[145][145][145][145][155]"
  242. 9126 poke198,0:wait198,1
  243. 9128 l=2424:gosub68:return
  244. 9200 rem ---dateinamen erfragen---
  245. 9202 print"[155]bitte dateinamen eingeben:"
  246. 9204 print"       [197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][158][145][145]":print"       ";
  247. 9206 poke19,1:inputpr$:poke19,0:print
  248. 9208 return
  249. 9210 rem ---gesamtfarben erfragen---
  250. 9212 poke19,1:input"   [157][157][157]";gf$:poke19,0:print
  251. 9214 gf=val(gf$)
  252. 9216 ifgf<0orgf>15thengosub61:goto9212
  253. 9218 return
  254. 9220 rem ---bild vorhanden j/n---
  255. 9222 l=724:gosub68:c=802:gosub61
  256. 9224 print"[155]bild n[155]eu zeichnen / bild v[155]eraendern?"
  257. 9226 r$="":getr$:ifr$=""then9226
  258. 9228 ifr$="n"then9234
  259. 9230 ifr$="v"then9236
  260. 9232 goto9226
  261. 9234 ps=0:goto302
  262. 9236 ps=1:goto222
  263. 9240 rem ---bild geladen j/n---
  264. 9242 l=724:gosub68:c=805:gosub61
  265. 9244 print"[155]grafik  l[155]aden / schon g[155]eladen?"
  266. 9246 r$="":getr$:ifr$=""then9246
  267. 9248 ifr$="l"thenreturn
  268. 9250 ifr$="g"thenreturn
  269. 9252 goto9246
  270. 9260 rem ---grafik speichern j/n---
  271. 9262 l=724:gosub68:c=807:gosub61
  272. 9264 print"[155]grafik  speichern?   <j[155]/n[155])"
  273. 9266 r$="":getr$:ifr$=""then9266
  274. 9268 ifr$="j"then242
  275. 9270 ifr$="n"then150
  276. 9272 goto9266
  277. 9300 rem ---grafik laden---
  278. 9302 gosub9202:l=1124:gosub68
  279. 9304 l=1024:gosub68:c=1109:gosub61
  280. 9306 print"[153]daten werden geladen ![155]"
  281. 9308 ba=23552:rem gesamt-ladeadresse
  282. 9310 sys49676,pr$,ba:rem ladevorgang
  283. 9312 gosub9902
  284. 9314 ifen<>0then9328
  285. 9320 rem ---gfx aufbereiten---
  286. 9322 ba=23552:be=24575
  287. 9323 na=17408:kn=3:rem farbspeicher
  288. 9324 sys49152,ba,be,na,kn:rem transferieren
  289. 9326 fr=peek(18408):rem rahmenfarbe
  290. 9328 return
  291. 9800 rem ---hilfe-texte---
  292. 9802 ifhs<1thenhs=1
  293. 9803 ifhs>5thenhs=5
  294. 9804 onhsgoto9811,9821,9831,9841,9856
  295. 9809 gosub9994:goto150
  296. 9810 rem ---hilfe seite 1---
  297. 9811 gosub9002
  298. 9812 print"[155]das programm  wurde  weitestgehend"
  299. 9813 print"selbsterklaerend geschrieben."
  300. 9814 print"vor dem einschalten  eines grafik-"
  301. 9815 print"bildschirmes  sollten jedoch  alle"
  302. 9816 print"funktionen bekannt sein,  die auch"
  303. 9817 print"bei  eingeschalteter grafik  ueber"
  304. 9818 print"tasten ausgeloest werden koennen."
  305. 9819 goto9891
  306. 9820 rem ---hilfe seite 2---
  307. 9821 gosub9002
  308. 9822 print"[153]aus  der   eingeschalteten  grafik"
  309. 9823 print"fuehren wieder heraus:"
  310. 9824 print"[155]<[158]space[155]>  zurueck zum hauptmenue"
  311. 9825 print"[155]  <[158]s[155]>    zum menue 'speichern'"
  312. 9826 print"ein versehentlicher  druck auf die"
  313. 9827 print"taste <run/stop> bewirkt, dass der"
  314. 9828 print"computer  den eindruck erweckt, er"
  315. 9829 print"waere abgestuerzt,    [158]aber:   [155] -->":goto9891
  316. 9830 rem ---hilfe seite 3---
  317. 9831 gosub9002
  318. 9832 print"[155]im hintergrund laeuft das programm":print"ja weiter.  nur ";
  319. 9833 print"durch das gfx-bild":print"werden keine meldungen sichtbar."
  320. 9834 print"nach einem <return> und nach blin-":print"der eingabe  von ";
  321. 9835 print" [158]goto399[155] <return>":print"erscheint wieder das hauptmenue."
  322. 9836 print"aus  dem  hauptmenue  gelangt  man":print"ueber z[155]eichnen";
  323. 9837 print" (u.weitere angaben)":print"in den gfx-screen zum editieren."
  324. 9838 print"alle  64000 punkte  sind mit einem":print"[158]joystick in port";
  325. 9839 print" 2 [155]erreichbar. -->":goto9891
  326. 9840 rem ---hilfe seite 4---
  327. 9841 gosub9002
  328. 9842 print"[155]der erste  'angepeilte'  punkt des":print"gfx-bildschirms ";
  329. 9843 print"liegt links oben.":print"der punkt ist  bereits invertiert,"
  330. 9844 print"vergleichbar mit einem cursor.":print"der 'angepeilte' gra";
  331. 9845 print"fik-punkt kann":print"nun mit  dem  joystick  verschoben"
  332. 9846 print"werden  und zwar horizontal  sowie":print"auch  vertikal  je";
  333. 9847 print" um einen punkt."
  334. 9848 print"mit  <joystick diagonal> wird auch":print"der punkt  diago";
  335. 9849 print"nal verschoben und":print"zwar  jeweils um 10 punkte,  damit"
  336. 9850 print"bewegungen  ueber  den  bildschirm":print"etwas schneller ";
  337. 9851 print"moeglich sind. -->"
  338. 9852 goto9891
  339. 9855 rem ---hilfe seite 5---
  340. 9856 gosub9002
  341. 9857 print"[155]jeder druck auf die [158]feuertaste[155] des":print"joysticks ";
  342. 9858 print"bewirkt, dass der gerade"
  343. 9859 print"angefahrene punkt invertiert wird.":print"mit  der  [158]feuer";
  344. 9860 print"taste[155]  werden  also":print"einzelne  punkte  gesetzt und auch"
  345. 9861 print"bereits gesetzte gfx-punkte wieder":print"geloescht."
  346. 9862 print"[152](mit der feuertaste  werden kuenf-"
  347. 9863 print"tig auch  markierungs-punkte  fuer"
  348. 9864 print"linien  und  geometrische  figuren"
  349. 9865 print"gesetzt - aber erst in einer spae-"
  350. 9866 print"ter weitergefuehrten prog-version)"
  351. 9869 goto9891
  352. 9890 rem ---auswertung blaettern---
  353. 9891 gosub9122
  354. 9892 r$="":getr$:ifr$=""then9891
  355. 9893 ifr$="v"then9898
  356. 9894 ifr$="z"then9899
  357. 9895 ifr$="h"then150
  358. 9897 goto9892
  359. 9898 hs=hs+1:goto9802
  360. 9899 hs=hs-1:goto9802
  361. 9900 rem ---disk-error routine---
  362. 9902 close15:open15,8,15
  363. 9904 input#15,en,em$,et,es
  364. 9906 ifen=0then9936
  365. 9908 ifen=63then9921
  366. 9910 rem ---meldung ausgeben---
  367. 9912 printtab(9)"disk-fehler nr: "en
  368. 9914 printtab(9)" "em$" [146]"
  369. 9916 gosub9102
  370. 9918 goto9936
  371. 9920 rem ---datei ersetzen?---
  372. 9921 c=1907:gosub61
  373. 9922 print"[153]die datei [158]"pr$:printtab(7)"[153]existiert bereits!"
  374. 9923 printtab(7)"[155]ersetzen?   <j[155]/n[155]>"
  375. 9924 r$="":getr$:ifr$=""then9924
  376. 9925 ifr$="j"then9930
  377. 9926 ifr$="n"then9936
  378. 9927 goto9924
  379. 9930 print#15,"s:"+pr$
  380. 9932 l=1524:gosub68:c=1300:gosub61
  381. 9936 close15:return
  382. 9990 poke198,0:wait198,1
  383. 9992 poke198,0:print"[147]":end
  384. 9994 l=2424:gosub68:c=2406:gosub61
  385. 9995 print"  noch nicht programmiert!  [146][145][145][145][155]"
  386. 9996 fori=0to1500:next:goto9106:rem dort wait und return
  387.