Tips & Tricks zum C 16 und Plus/4
Das gute Basic des C 16 erlaubt mit nur sechs Programmzeilen eine verblüffende 3D-Grafik. Darüber hinaus bringen wir ein paar neue PEEKs & POKEs und einen Artikel über den User-Port des Plus/4.
Zu Beginn ein paar allgemeine Informationen: — Die meisten C 128-Grafik-Listings (Rubrik »Tips & Tricks zum C 128«), die in reinem Basic geschrieben sind, lassen sich auch auf dem C 16 und Plus/4 verwenden. Lediglich die Befehle zum Einstellen der Bildschirmfarben und die »SCNCLR«-Funktion müssen angepaßt werden. Die herrlichen Grafik-Demos aus der Ausgabe 1/86 der 64'er lassen sich zum Beispiel durch genannte Änderungen für den C 16 und Plus/4 verwenden.
— Für diejenigen, die es noch nicht wissen sollten: Beim Zeitschriftenhändler liegt unser Sonderheft 8/86 mit dem Thema »C 16, Plus/4« für Sie bereit! Für die Datasetten-Besitzer gibt es alle Programme dieses Sonderheftes auch auf Kassette zu kaufen. 5
— Unsere C 16-Kiste schreit immer noch nach Tips & Tricks-Futter! Da wir eine Zeitschrift zum Mitmachen sind, sind wir auch auf Ihre Beiträge angewiesen, um diese Rubrik weiter auszubauen. Vergessen Sie nicht: Es geht weniger darum, daß Sie einen brandheißen, bahnbrechenden Trick entdeckt haben. Vielmehr legen wir Wert auf eine leicht verständliche Beschreibung Ihres Beitrages. Sie helfen vielen C 16-Einsteigern sehr mit Tips, kurzen Unterprogrammen'oder Grafik-Listings, die vielleicht für Sie als selbstverständlich gelten. Und: Jeder veröffentlichte Beitrag wird natürlich angemessen honoriert.
(tr)Tolle 3D-Grafik
Mit wenigen Programmzeilen (siehe Listing 1) läßt sich eine erstaunliche Grafik erzeugen. Etwas experimentieren mit den einzelnen Zahlenwerten lohnt sich. In Zeile 1 wird die Funktion eingesetzt. Durchschnittliche Zeichengeschwindigkeit zirka vier Minuten. Maximaldauer bei sehr komplizierten Funktionen bis zirka 12 Minuten. Einige Beispielfunktionen: DEFFNA(Z)=30%C0S(7*%Z/15)
(Georg Polivka/tr)DEFFNA(Z)=30*COS(π*Z/15)
DEFFNA(Z)=-COS(π*Z/90)*TAN(π*Z/320+1)+1
DEFFNA(Z)=X (guter Effekt!)
DEFFNA(Z)=INT(Z)-110.
1 color0,1:color4,1:color1,2,5:graphic1,1:deffna(z)=30*cos(~*z/15) 2 g=160:k=150:forx=-100to0:l=-60:h=5*int(sqr(10000-x*x)/5) 3 fory=hto-hstep-5:z=25+fna(sqr(x*x+y*y))-.6*y 4 ifz>lthenl=z:draw1,g+x,k-z:draw1,g-x,k-z 5 nexty,x 6 getkeye$:graphic0
Peeks & Pokes
Ich habe für den C 16 einige PEEKS und POKES ausgetüftelt:
| POKE 1343,0 | Schaltet die Tastatur aus |
| POKE 1343,10 | Schaltet die Tastatur wieder ein (natürlich nur vom Programm aus) |
| POKE 1345,X | Verlangsamt die Repeat-Funktion |
| PEEK (151) | Anzahl der offenen Dateien |
| POKE 788,11 | Absturz-POKE |
| PEEK (1339) | Zeichenfarbe |
| schwarz | = 80 | rot | = 82 |
| purpur | = 84 | blau | = 86 |
| orange | = 88 | gelb/grün | = 90 |
| blau/grün | = 92 | dunkelblau | = 94 |
| weiß | = 81 | zyan | = 83 |
| grün | = 85 | gelb | = 87 |
| braun | = 89 | rosa | = 91 |
| hellblau | = 93 |
Beispiel:
10 Color 1,3,5
20 PRINTPEEK (1339)
ergibt 82
(Ingo Krüger/tr)Der User-Port des Plus/4
Im Plus/4 wird ein 6529 Single Port Chip verwendet, der sich in Aufbau und Anwendung doch etwas vom 6522 des C 64 unterscheidet. Beim 6529 fehlt das Datenrichtungsregister und die Handshake-Leitungen CB1 und CB2. Jede Leitung kann als Aus- und Eingang gleichzeitig verwendet werden.
Programmierung:
POKE 64784, byte: Jede binäre 0 in diesem Byte schaltet den entsprechenden Ausgang auf 0 V (- 6 mA), eine 1 legt ihn (durch einen passiven Pull-Up-Widerstand) auf 5 V (600 uA), wobei die jeweils angegebenen Ströme fließen dürfen. PEEK (64784:) liefert ein Bitmuster, das den tatsächlichen Pegeln an den Ports entspricht. Bei Verwendung einer Portleitung als Ausgang könnte ein zusätzlicher Pull-Up-Widerstand von 1 bis 4,7 kQ nützlich sein, um auch im High-Pegel ausreichende Ströme zu erhalten. Bei Verwendung als Eingang sollte mindestens 1 mA geliefert werden, damit die Leitung sicher auf 0V gezogen werden kann.
Die technischen Angaben stammen von Commodore Österreich. Da sich die Pinbelegung vom C 64 unterscheidet, habe ich nachfolgend eine Vergleichstabelle zusammengestellt. Hier nun die unterschiedliche Pinbelegung.
(H. Haberfellner/tr)User-Port
| PIN | PLUS/4 | VC 20 | C 64 |
|---|---|---|---|
| 1 | GND | GND | GND |
| 2 | +5 V | +5 V | +5 V |
| 3 | Reset | Reset | Reset |
| 4 | P 2 | Joy 0 | CNT 1 |
| 5 | P 3 | Joy 1 | SP 1 |
| 6 | P 4 | Joy 2 | CNT 2 |
| 7 | P 5 | Lightpen | SP 2 |
| 8 | R*C | Cass.Sw. | PC 2 |
| 9 | ATN | ATN | ATN |
| 10 | 9 V AC | 9 V AC | 9 V AC |
| 11 | 9 V AC | 9 V AC | 9 V AC |
| 12 | GND | GND | GND |
| A | GND | GND | GND |
| B | P 0 | CB 1 | Flag 2 |
| C | S IN | PB 0 | PB 0 |
| D | RTS | PB 1 | PB 1 |
| E | DTR | PB 2 | PB 2 |
| F | P 7 (RI) | PB 3 | PB 3 |
| H | DCD | PB 4 | PB 4 |
| J | P 6 | PB 5 | PB 5 |
| K | P 1 (CTS) | PB 6 | PB 6 |
| L | DSR | PB 7 | PB 7 |
| M | S OUT | CB 2 | PA 2 |
| N | GND | GND | GND |
Tip zu INPUT
Durch Eingabe dieses kleinen Assemblerprogrammes mit dem Monitor des C 16 kann die Input-Anweisung verbessert werden. Gesperrt werden nun die Tasten <ESC>, <CLR/HOME>, <CRSR DOWN>, <CRSR UP> und <CTRL>
a 0400 bit $81
a 0402 bmi $0407
a 0404 jmp $db7a
a 0407 ldx #$04
a 0409 cmp $0418,x
a 040c beq $0418
a 040e dex
a 040f bne $0409
a 0411 lda #$04
a 0413 bit $0543
a 0416 beq $0404
a 0418 rts
Nach der Eingabe der beiden folgenden Zeilen ist die verbesserte INPUT-Anweisung aktiviert.
>0419 34 39 2b 28
>0545 00 04
(Daniel Neukomm/tr)