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