3D-Joystick-Grafik
ist ein Programm für den VC 20 mit mindestens 8 KByte Speichererweiterung, das es bei völliger Ausnutzung der Bildschirmauflösung des Computers erlaubt, selbst 3 D-Grafiken mit einfachsten Mitteln zu erstellen.


Es folgt eine kleine Anleitung zum Arbeiten mit der »Joystick-Grafik«.
- Computer einschalten
- Vorprogramm zur Speicherverschiebung eingeben:
POKE44,34:POKE8704,0: NEW - Adresse 37151 auf Inhalt überprüfen: Falls dieser nicht 126 ist, Computer kurz aus und wieder anschalten, da sonst die Joystickfunktion beeinträchtigt ist.
- Programm laden/starten
- Nach kurzer Pause erscheint das Menü. Es gibt folgende Möglichkeiten:
Zeichnen
Es erscheint eine kurze Beschreibung der Möglichkeiten während des Zeichenvorgangs.
f1 — Das Programm kehrt zum Menü zurück (damit ist das gerade Gezeichnete nicht verloren; es kann jederzeit durch »Wiederholen« zurückgerufen werden).
f3 + f5 — Mit diesen beiden Funktionstasten ist es möglich, eine Zeichenroutine zu erstellen und diese später an jeder beliebigen Stelle des Bildschirms abzurufen.
f3 — Drücken, gewünschte Routinezeichnen, wiederum f3 drücken. An jeder beliebigen Stelle mit f5 abrufen. Die Routine »verschwindet« bei Erstellung einer neuen oder bei Unterbrechung des Programmablaufs, nicht aber bei Rückkehr zum Menü.
Funktionstasten steuern
f7 — Durch Druck auf diese Funktionstaste wird ein durch Linien oder durch den Rand begrenzter Raum ausgefüllt. Diese Funktion arbeitet von links nach rechts. Man muß sich zum Ausfüllen eines Raumes also immer ganz links in diesen Raum stellen und dann f7 betätigen, um ihn ganz auszufüllen. Diese Prozedur sowie die der Routinenerstellung erfordert einige Übung, doch lassen sich später gute Effekte erzielen.
1 + 2 — Mit diesen Tasten ist die Geschwindigkeit des Zeichenpunktes zu variieren. Um schwierigere Figuren zu malen ist es ratsam, eine langsame Geschwindigkeit zu wählen, da dann eine größere Genauigkeit erzielt werden kann. Die Tasten sind nur bei Stillstand des Punktes zu betätigen.
Gezeichnet wird mit dem Joystick. Dabei ist unbedingt darauf zu achten, daß der Rand rechts und links (durch Striche markiert) nicht überschritten wird — sonst ist es möglich, daß das Maschinenprogramm versehentlich gelöscht wird. Der Feuerknopf dient zum An- und Ausschalten der Farbe. Auf diese Einstellung ist auch beim Ausfüllen zu achten. Soll eine bereits gezeichnete Linie wieder gelöscht werden, so ist sie einfach mit dem ausgeschalteten Punkt nachzuziehen. Nun ist die Zeichen- und Bildschirmfarbe einzugeben. Bei der Bildschirmfarbe ist die Farbtabelle aus dem VC-Handbuch heranzuziehen, bei der Zeichenfarbe gelten die auf den Farben stehenden Zahlen vermindert um eins. Jetzt wird der Bildschirm umgebaut, und der Spaß kann beginnen.
Wiederholen
Die Zeichen- und Bildschirmfarbe ist, wie oben beschrieben, festzulegen; daraufhin erscheint das eben Gezeichnete, und ebenfalls wieder der Zeichenpunkt in der oberen Hälfte des Bildschirms, so daß weiter gezeichnet werden kann. Damit ist es möglich, eine Zeichnung in beliebigen Farbkombinationen zu betrachten und währenddessen noch zu ändern. Der Bildschirminhalt geht auch bei Programmunterbrechung nicht verloren. Es kann einfach wieder mit RUN gestartet werden, und das Gezeichnete erscheint durch Druck auf die 2 wieder. Bei Wahl des Menüpunktes »Zeichnen« geht der alte Bildschirminhalt jedoch verloren.
Bild einspielen
Bei Druck auf die Taste 3 kann ein auf Band gespeichertes Bild in den Computer geladen werden:
- Band auf entsprechende Position bringen
- Farbkombination wählen
- »Play« drücken.
Bild aufnehmen
Natürlich kann ein eben gezeichnetes Bild auch auf Band gespeichert werden:
- Band auf leere Bandstelle spulen
- Die 4 drücken
- »Record« und »Play« drücken.
Leider dauert das Laden und Speichern der Dateien von beziehungsweise auf Kassette recht lange. Die entsprechenden Routinen können jedoch sehr einfach durch Ändern der Gerätenummer für ein Floppy-Disk-Laufwerk umgeschrieben werden.
(Philip Bethge)4608-5115 | Maschinenprogramm |
5120-8159 | Bildschirmaufbau/Speicherplatz für hochauflösende Grafik |
8200-8699 | Speicherplatz für Zeichenroutine (beliebig erweiterbar) |
8704- | Basicprogramm |
1 poke36879,25 3 rem******************* grafik **** by p.bethge **** 2330 e'foerde * 4 rem******************* vorprogramm **** poke44,34 **** poke8740,0:new * 5 print"{clr}{down}{down}{down}{down}{down}{down}{down}*********************** grafik ** by fidibus-software*"; 6 print"**********************" 9 print"{down}{down}{rght}{rght}{rght}{rght}-bitte warten-" 100 rem******************daten masch-pr.************************ 110 fort=0to137:reada:poke4608+t,a:nextt 120 data 169,16,141,0,144,169,46,141,1,144,169,0,141,2,144,169,21,141,3,144 122 data 169,0,133,253,169,16,133,254,160,0,162,0,165,240,157,0,148,138,145,253,24 123 data 152,105,19,168,201,190,208,10,160,0,230,253,165,253,201,19,240,4,232,76,32,18 124 data 96 130 data 169,0,133,253,169,20,133,254,162,12,160,0,169,0,145,253,136,208,249,202,240,7 131 data 160,0,230,254,76,76,18,169,205,141,5,144,169,19,141,2,144 133 data 169,255,133,253,169,19,133,254,160,160,169,128,145,253,136,208,249 134 data 169,63,133,253,169,31,133,254,160,160,169,1,145,253,136,208,249,96 150 fort=0to215:reada:poke4750+t,a:nextt 160 data 169,128,133,249,169,160,133,253,169,25,133,254,169,0,133,163 161 data 169,1,133,250,160,20 164 data 169,127,141,34,145,173,32,145,41,128,133,251,169,255,141,34,145 165 data 173,31,145,41,28,24,101,251,133,251,173,31,145,41,32,133,252 166 data 132,165,165,249,133,166,165,253,133,167,165,254,133,168 167 data 165,251,201,152,208,3,32,138,19,201,24,208,6,32,138,19,32,140,19 168 data 201,28,208,3,32,140,19,201,20,208,6,32,140,19,32,136,19,201,148,208,3 169 data 32,136,19,201,132,208,6,32,136,19,32,173,19,201,140,208,3,32,173,19 170 data 201,136,208,6,32,173,19,32,138,19 171 data 165,252,201,0,208,23,165,250,201,0,208,6,169,1,133,250,208,4,169,0,133,250 172 data 173,31,145,201,94,240,249 173 data 165,250,201,1,208,13,132,164,164,165,56,177,167,229,166,145,167,164,164 174 data 177,253,5,249,145,253 175 data 165,197,201,0,208,2,230,163,201,56,208,2,198,163,201,63,208,3,76,206,19,96 180 fort=0to69:reada:poke5000+t,a:nextt 190 data 200,96 191 data 136,96 192 data 165,249,201,1,240,3,70,249,96,169,128,133,249,165,253,201,96,48,2,230,254 193 data 201,224,208,2,230,254,24,105,160,133,253,96 194 data 165,249,201,128,240,3,6,249,96,169,1,133,249,165,253,201,160,16,2,198,254 195 data 201,0,208,2,198,254,56,233,160,133,253,96 200 fort=0to45:reada:poke5070+t,a:nextt 210 data 132,164,200,192,160,240,13,177,253,5,249,209,253,240,5,145,253,76,208,19 211 data 164,164,136,192,255,240,13,177,253,5,249,209,253,240,5,145,253,76,228,19 212 data 164,164,32,140,19,96 300 rem*******************basic-programm*** 305 poke36879,25 310 print"{clr}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}-grafik-" 320 print"{down}{down}{rght}{rght}1.zeichnen 2.wiederholen 3.bild einspielen" 321 print"{rght}{rght}4.bild aufnehmen" 330 geta$ 331 ifa$="1"then400 332 ifa$="2"then550 333 ifa$="3"then600 334 ifa$="4"then500 335 goto330 400 rem**zeichnen**** 410 print"{clr}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}-grafik-" 411 print"{down}{down}-{rvon}f1{rvof} zurueck{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}-{rvon}f3{rvof} routine erstellen{rght}-{rvon}f5{rvof} routine abfragen" 412 print"-{rvon}f7{rvof} ausfuellen{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}-zeichnen mit joystick-feuerknopf:'an/aus'" 413 print"-{rvon}1{rvof} langsamer{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}-{rvon}2{rvof} schneller" 414 print"-rand nicht ueber schreiten!" 415 input"{down}-zeichenfarbe 0{left}{left}{left}";a:poke240,a 416 input"-schirmfarbe 25{left}{left}{left}{left}";a 433 poke36879,a 434 sys(4608):sys(4672) 435 sys(4750) 440 sys(4772) 450 fort=0topeek(163):nextt 460 geta$ 461 ifa$="{f1}"then480 462 ifa$="{f3}"then700 463 ifa$="{f5}"then720 470 goto440 480 print"{clr}":poke36869,192:poke36867,46:poke36866,22:poke36864,12:poke36865,38 481 goto300 500 rem**bild aufn.** 501 print"{down}{down}" 510 open1,1,1,"bild" 520 fort=5120to8159 521 b=peek(t) 522 print#1,b 523 nextt 524 close1 525 goto300 550 rem**wiederhol*** 551 input"{down}{down}-zeichenfarbe 0{left}{left}{left}";a:poke240,a 552 input"-schirmfarbe 25{left}{left}{left}{left}";a 553 poke36879,a 560 sys(4608):poke36869,205:poke36866,19:goto435 600 rem**bild einsp.* 610 input"{down}{down}-zeichenfarbe 0{left}{left}{left}";a:poke240,a 611 input"-schirmfarbe 25{left}{left}{left}{left}";a 620 open1,1,0,"bild" 630 poke36879,a:sys(4608):sys(4672) 631 fort=5120to8159 632 input#1,b 633 poket,b 634 nextt 635 close1 640 goto435 650 rem**sondermoegl* 700 rem 701 c=0 710 fort=0to499 711 sys(4772) 712 geta$:ifa$="{f3}"then440 713 ifpeek(251)=156then711 714 poke8200+t,peek(251):c=c+1 715 forr=0topeek(163):nextr 716 nextt 717 geta$:ifa$<>"{f3}"then717 718 poke8200+t,156:goto440 720 rem 730 fort=1toc 732 poke251,peek(8200+t) 733 sys(4806) 735 nextt 736 goto440 740 rem**ende******************