Einleitung Anschluß und Inbetriebnahme Jetzt geht es endlich los Die Tastatur Laden und Speichern von Programmen Der PRINT-Befehl und das Rechnen mit dem COMMODORE 64 Grundlagen des Programmierens in BASIC GOTO Tips zum Edieren eines Programms Variable IF ... THEN FOR ...
Seite 4
Sprite-Grafik Was sind SPRITES Die Konstruktion von Sprites Binärarithmetik Musik mit dem COMMODORE 64 Die Struktur eines Musikprogramms Beispielprogramm Wichtige Klangeinstellungen Klangeffekte Fortgeschrittenes Programmieren READ und DATA Mittelwerte Indizierte Variable; Eindimensionale Felder Dimensionierung Würfelspiel Zweidimensionale Felder...
Seite 5
Werte für Musik Noten Speicherbelegung des COMMODORE 64 Bildschirm-Steuerzeichen Hochauflösende Grafik auf COMMODORE 64 PRINT FRE(0) Belegung der Funktionstasten Laden eines C-64 Programmes in ein CBM-Gerät (3, 4, 8000er) Abfrage der Drehregler und Steuerknüppel Stichwortverzeichnis COMMODORE 64 BASIC Kurzbeschreibung 3 Umschlagseite...
Computer vertraut zu werden. Weiterhin lernen Sie auf einfache, abwechslungsreiche Weise, eigene Programme zu schreiben. Für alle Besitzer eines COMMODORE 64, die sich nicht gleich ins Programmieren stürzen wollen, haben wir diejenigen Informationen gleich zu Anfang zusammengefaßt, die Sie brauchen, um fertige Programme zu benutzen.
Seite 8
Gerät ordnungsgemäß registriert werden kann. Und nun: Viel Spaß mit Ihrem COMMODORE 64. Ein Hinweis: Während dieses Handbuch produziert wird, werden weltweit Programme für den COMMODORE 64 entwickelt. Fragen Sie ab und zu mal bei Ihrem Händler nach, was es Neues gibt. viii...
DER ANSCHLUSS DES COMMODORE 64 Im folgenden wird beschrieben, wie Sie den COMMODORE 64 an ein Fernsehgerät, einen Verstärker oder einen Monitor anschließen können. Überprüfen Sie zuerst den Inhalt der Verpackung, in der der COMMODORE 64 geliefert wurde. Außer dieser Betriebsanleitung sollte die Packung folgendes enthalten: 1.
Seite 11
7. Serieller Ausgang. Zum Anschluß eines Druckers oder eines Disketten-Einzellaufwerks. 8. Recorder-Anschluß. Anschlußmöglichkeit für die Datasette zur Speicherung von Programmen oder Daten. 9. User Port. Frei programmierbarer Ein/Ausgang Anschlußmöglichkeit für Steckmodule wie z. B.: RS-232-Schnittstelle.
Das Schema für den Anschluß an das Fernsehgerät können Sie der Abbildung unten entnehmen. 1. Verwendung des UHF-Antenneneingangs Verbinden Sie mit Hilfe des beiliegenden Fernsehkabels den TV- Anschluß (Nr. 5) auf der Rückseite des COMMODORE 64 mit dem UHF-Antenneneingang Ihres Fernsehgerätes.
Seite 13
Das beste Bild erzielen Sie über einen Farb-Monitor. Verwenden Sie hierzu ein Videokabel, das an der einen Seite einen 5-poligen Diodenstecker (DIN 41524) für die Buchse 6 Ihres COMMODORE 64 hat, auf der anderen Seite einen Videostecker (DIN 45322) für Ihren Monitor.
Seite 14
Zum Empfang normaler Fernseh-Sendungen müssen Sie das Video- Kabel in der Regel entfernen. 3. Netzanschluß Verbinden Sie Ihr Netzgerät mit dem Commodore 64 (Buchse 1) und mit einem 220 V / 50 Hz-Netzanschluß. 4. Weitere Anschlüsse Da der COMMODORE 64 das Tonsignal in Hi-Fi-Qualität liefert, bietet es sich an, dieses Signal durch einen hochwertigen Verstärker zu...
Seite 15
Wie Sie vielleicht wissen, können Sie als Peripherie z. B. noch das Diskettenlaufwerk ("Floppy Disk") VC 1541 oder den Drucker VC 1525 anschließen. Ein solches komplettes System kann etwa wie folgt aussehen.
Seite 16
64K RAM SYSTEM 38911 BASIC BYTES FREE READY. Der blinkende Cursor zeigt, daß der COMMODORE 64 auf Ihre Eingabe wartet. 3. Wenn die Senderfeineinstellung Ihres Fernsehgeräts von Hand erfolgt, so müssen Sie selbst eine Einstellung suchen, die ein optimal scharfes Bild ergibt. Wenn Ihr Gerät eine Automatik besitzt, nimmt es Ihnen diese Arbeit ab.
Seite 17
FEHLERSUCHE SYMPTOM URSACHE MASSNAHME Rote Indikatorlampe am Computer nicht eingeschaltet Schalter auf der rechten Seite Computer brennt nicht des Computers muß in der Stellung "ON" sein Keine Verbindung zum Netz Überprüfen Sie Netzstecker, Gerätestecker gegebenenfalls auch Steckdose Sicherung defekt Bitten Sie Ihren Fachhändler die Sicherung auszutauschen Keine Bildschirmanzeige Falscher...
DER "CURSOR" Das helle blinkende Quadrat unter der READY-Meldung wird als CURSOR bezeichnet. Es zeigt die Position an, in der ein von der Tastatur eingegebener Buchstabe auf dem Bildschirm erscheint. Geben Sie einen Text ein und beobachten Sie, wie der Cursor sich über den Bildschirm bewegt und jeweils durch die von Ihnen eingegebenen Zeichen ersetzt wird.
Seite 19
Erzeugen Sie auf diese Weise ein Farbmuster auf dem Bildschirm und regeln Sie die Farb- und Helligkeitskontrollen Ihres Fernsehgerätes oder Monitors so ein, daß Sie möglichst kräftige reine Farben erhalten, die mit den Bezeichnungen auf den Farbtasten Ihres COMMODORE 64 übereinstimmen.
Seite 20
Ihr Bildschirm sollte etwa wie folgt aussehen: **** COMMODORE 64 BASIC V2 **** 64K RAM SYSTEM 38911 BASIC BYTES FREE READY. TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTT TTTTTTTTTTTTT Ihr System ist nun korrekt eingestellt. Die folgenden Kapitel geben Ihnen nun eine Einführung in die Programmiersprache BASIC.
DIE TASTATUR Nehmen Sie sich nun ein paar Minuten Zeit, um mit der Tastatur vertraut zu werden, da sie das wichtigste Instrument zur Eingabe von Informationen in den COMMODORE 64 darstellt. großen ganzen stimmt Tastatur einer Schreibmaschine überein. gibt jedoch einige zusätzliche...
Seite 23
Edieren Jeder macht mal einen Fehler, und der COMMODORE 64 berücksichtigt das. Er hat eine Reihe von Tastenfunktionen die Ihnen das Korrigieren sehr erleichtern. <CRSR> Sie erinnern sich noch, wir haben das blinkende Rechteck, das angibt, wo wir uns gerade auf dem Bildschirm befinden, CURSOR genannt. Die <CRSR>-Tasten (abgeleitet von CuRSoR) geben uns die Möglichkeit,...
Seite 24
<RESTORE> (Abgeleitet von RESTORE = wiederherstellen) Drücken Sie die <RESTORE>-Taste zusammen mit der <RUN/STOP>- Taste, so können Sie Ihren Computer in den "Ausgangszustand" zurückbringen. Was damit gemeint ist, wird später näher erläutert. Die Funktionstasten Die Funktionstasten auf der rechten Seite der Tastatur können im Rahmen eines Programms frei mit Bedeutungen belegt werden.
STOPpen. Zusammen mit der <SHIFT>-Taste wird ein Programm vom Band geladen (und gestartet). <C=> Die "COMMODORE"-Taste Die Taste <C=> mit dem COMMODORE-Symbol hat eine ganze Reihe von Funktionen. Als erstes können Sie mit ihrer Hilfe die linksstehenden Zeichen auf den Vorderseiten der Tasten erreichen (die rechtsstehenden mit der <SHIFT>-Taste).
VOR DEM EINSTECKEN DER MODULE STETS COMPUTER AUSSCHALTEN!!! Wenn Sie diesen Ratschlag nicht befolgen, können Ihre Module beschädigt werden. Schalten Sie nun Ihren COMMODORE 64 ein und starten Sie das Programm mit dem in der Anleitung angegebenen Befehl oder der jeweiligen Starttaste.
Seite 27
Computer wieder mit: FOUND (PROGRAMMNAME). Auf Drücken der <C=>-Taste hin wird das Programm in den Speicher des COMMODORE 64 geladen. Sie können den Ladevorgang jedoch jederzeit durch Drücken der <RUN/STOP>-Taste unterbrechen. 3. DISKETTE: Öffnen Sie das Laufwerk, orientieren Sie die Diskette so, daß...
Seite 28
LOAD "PROGRAMMNAME" Wenn Sie sich nicht mehr an den Namen des Programms erinnern können, so tippen Sie nur LOAD ein und drücken die <RETURN>-Taste. In diesem Fall wird einfach das erste Programm auf dem Band geladen. Der Computer meldet sich dann mit: PRESS PLAY ON TAPE Wenn Sie nun dieser Aufforderung folgen und die PLAY-Taste der Datasette drücken, so verschwinden Schrift und Cursor vom Bildschirm...
SEARCHING FOR PROGRAMMNAME LOADING READY. Bem.: Wenn Sie ein Programm in den Speicher des Computers laden, so wird die gesamte Information, die vorher darin enthalten war, gelöscht. Überprüfen Sie daher, ob Sie das Programm, an dem Sie gearbeitet haben, abgespeichert haben, bevor Sie das neue laden. DAS SPEICHERN VON PROGRAMMEN AUF BAND Wenn Sie ein Programm geschrieben haben und Sie wollen es auf Kassette abspeichern, so tippen Sie ein (wobei PROGRAMMNAME für...
Computer darüber, daß Sie Ihr Programm auf Diskette abspeichern wollen. Nach Drücken <RETURN>-Taste meldet sich COMMODORE 64 wieder mit: SAVING PROGRAMMNAME READY. DER PRINT-BEFEHL UND DAS RECHNEN MIT DEM COMMODORE 64 Da Sie nun wissen, wie man ein Programm abspeichert, wollen wir darangehen eins zu schreiben.
Seite 31
Der COMMODORE 64 erkennt den Befehl als solchen aber erst nach dem Drücken der <RETURN>-Taste, und er führt ihn dann auch erst aus, d. h. er schreibt COMMODORE 64 auf den Bildschirm. Wenn der Computer sich mit ?SYNTAX ERROR meldet, so haben Sie etwas falsch gemacht;...
Seite 32
Addition: Die Addition wird mit Hilfe des (+)-Zeichens ausgeführt. In unserem Beispiel wurde die Rechnung 12 + 12 ausgeführt. Denken Sie daran, daß der Computer erst nach dem Drücken der <RETURN>-Taste Ihren Befehl ausführen kann. Subtraktion Zum Subtrahieren verwendet man das normale (-)-Zeichen. PRINT 12 - 9 <RETURN>...
Seite 33
? 3 + 5 - 7 + 2 Dieses ? ersetzt das Wort PRINT Bis jetzt haben wir nur kleine Zahlen und einfache Beispiele verwendet; aber der COMMODORE 64 kann wesentlich mehr. Nehmen Sie die nächste Aufgabe als Beispiel und addieren Sie eine Reihe großer...
Seite 34
Wenn Sie sich die Zeit nehmen und das Beispiel von Hand durchrechnen, kommen Sie zu einem anderen Ergebnis. Woher kommt das? Die Rechengenauigkeit Ihres COMMODORE 64 ist zwar groß, aber dennoch begrenzt. Er rechnet mit zehn Stellen, von denen er jedoch nur neun anzeigt.
Seite 35
20 + 8 / 2 Je nach Vorgehensweise kommt man auf 14 oder 24. Ihr COMMODORE 64 bekommt 24 heraus. Der Grund dafür ist, daß er die Division vor der Addition durchführt. Hier ist eine Rangfolge der Rechenoperation; die weiter...
(= 9). Setzen Sie nun die Summe 5 + 2 in Klammern: ? 35 / (5 + 2) Nun hat der COMMODORE 64 als erstes die Rechenoperation in der Klammer ausgeführt (= 7) und 35 durch das Ergebnis dividiert (= 5).
Seite 37
über eine Zeile. Überzählige Zeichen "schiebt" er in die nächste Zeile. Der Grund liegt darin, daß der Bildschirm des COMMODORE 64 so organisiert ist, daß jede Zeile aus 4 Abschnitten à 10 Zeichen besteht. Das Komma entspricht einem Tabulator, der jeweils an den Anfang des nächsten Abschnittes springt, auch wenn dieser sich in der nächsten...
Nach dem Drücken der <RETURN>-Taste wurden die in dieser Zeile enthaltenen Befehle dann vom Computer ausgeführt. Diese Art mit dem COMMODORE 64 zu rechnen nennt man den DIREKT-Modus. Aber unser Computer kann mehr! Er kann eine große Zahl von Befehlszeilen nacheinander ausführen;...
Seite 41
Programm geht dann in die Zeile 20 und erhält dort den Befehl, in die Zeile10 zurückzugehen. Damit fängt das Spiel von vorne an, und Ihr COMMODORE 64 wird nicht aufhören, seinen Namen auf den Bildschirm zu drucken, bis Sie ihn mit der <RUN/STOP>-Taste unterbrechen.
Ändern Sie nun die Zeile 10 Ihres Programms so ab, daß sie der nachstehenden Zeile entspricht. Beachten Sie, daß am Ende der Zeile ein Semikolon (;) steht. 10 PRINT"COMMODORE "; Starten Sie nun das Programm; nach dem Unterbrechen des Programms mit der <RUN/STOP>-Taste muß der Bildschirm etwa so aussehen, wie...
VARIABLE Einer der wichtigsten Begriffe in allen Programmiersprachen ist der der Variablen. Er ist deshalb wichtig, ihre Eigenschaften und Möglichkeiten kennenzulernen. COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE COMMODORE...
Seite 44
einer Variablen eine ganze Zahl, einen Dezimalbruch oder auch einen Satz zuordnen. Steht hinter dem Namen der Variablen ein %, so handelt es sich um einen Variablentyp, der nur ganze Zahlen repräsentieren kann (auch Integer-Variable genannt). Zulässige Integer-Variablennamen sind etwa die folgenden: Steht hinter einem Variablennamen ein $, so handelt es sich um eine sogenannte "Stringvariable".
Seite 45
10 X% = 15 20 X = 23.5 30 X$ = "DIE SUMME VON X% + X = " 40 PRINT "X% = "; X%, "X = ";X 50 PRINT X$; X% + X Wenn Sie alles richtig gemacht haben, so sollte nach Beendigung des Programms folgendes auf dem Bildschirm stehen: X% = 23.5...
Seite 46
Wenn dies zutrifft, so wird der hinter THEN stehende Befehl ausgeführt. Sollte die hinter IF stehende Bedingung nicht mehr wahr sein, so führt der COMMODORE 64 den Befehl in der nächsten Zeile aus. Eine ganze Reihe von Bedingungen können im Zusammenhang mit IF ...
10 ZR = 0 > 20 ?"COMMODORE 64" 30 ZR = ZR + 1 < 40 IF ZR < 5 THEN 20 ↓ 50 END Wir haben in unserem Beispielprogramm eine sogenannte "Schleife" konstruiert, die jedoch nur so lange durchlaufen wird, wie die Bedingung, die zwischen IF und THEN steht, erfüllt ist.
Seite 48
Sie erhalten den gleichen Bildschirmausdruck wie im letzten Kapitel, aber das Programm ist kürzer geworden. In Zeile 10 wird ZR = 1 gesetzt. Zeile 20 bewirkt wieder das Ausdrucken unseres Textes, und in Zeile 30 wird der Wert von ZR um 1 erhöht. Der Ausdruck "NEXT"...
KAPITEL WEITERE BASIC-BEFEHLE • Einleitung • Bewegung auf dem Bildschirm - geschachtelte Schleifen • INPUT • • Die Random-Funktion • Zahlenratespiel • Würfeln • Zufallsmuster - die CHR$ - und die ASC-Funktion...
Anfänger einfallen lassen. Diese Beispiele werden Ihnen einen Eindruck davon vermitteln, welche faszinierenden Grafik- und Tonmöglichkeiten in Ihrem COMMODORE 64 stecken. Für diejenigen, die gar nicht genug kriegen können, haben wir im Anhang M noch eine Liste von BASIC- Lehrbüchern zusammengestellt.
BEWEGUNG AUF DEM BILDSCHIRM Wir wollen nun noch einmal das üben, was wir bis jetzt gelernt haben, und noch einige neue Methoden dazu lernen. Nehmen Sie sich Mut und tippen Sie das nachstehende Programm ein. Das Bemerkenswerte an diesem Programm ist, daß der PRINT-Befehl zur Steuerung des Cursors benutzt wird.
Seite 52
10 REM SPRINGENDER BALL HFFFF > 20 PRINT "{CLEAR}" 25 FOR X = 1 TO 10 : PRINT "{DOWN}" : NEXT G HFF > 30 FOR BL = 1 TO 40 40 PRINT" O{LEFT}";: REM O = SHIFT Q G G H >...
30 PRINT 40 GOTO 10 ? COMMODORE 64 Ihre Eingabe SIE GABEN EIN: COMMODORE 64 Antwort des Computers An der Stelle, wo Sie einen INPUT programmiert haben, hält das Programm an, und ein Fragezeichen signalisiert, daß der Computer eine Eingabe von der Tastatur erwartet. Geben Sie nun irgend eine Folge von Zeichen ein und drücken die <RETURN>-Taste, so druckt der Computer...
Seite 54
nicht länger als 38 Zeichen sein. Das Format (d. h. soviel wie Schreibweise) der INPUT-Anweisung ist: INPUT "KOMMENTAR"; Variable Dabei kann die Variable eine Stringvariable oder eine numerische Variable sein. Wenn Sie auf den Kommentar verzichten wollen, brauchen Sie nur einzugeben: INPUT VARIABLE Bem.: Um aus diesem Programm "auszusteigen", müssen Sie...
Wenn das Programm richtig eingetippt wurde, so fragt es ab, welche Umrechnung gewünscht wird, verlangt dann Eingabe entsprechenden Temperaturwertes und rechnet um. Die Umrechnungsformeln können in jedem Grundlehrbuch der Physik nachgelesen werden; ihre Umsetzung in ein BASIC-Programm ist sehr einfach. Nachdem die Umrechnung erfolgt ist und der entsprechende Wert ausgedruckt wurde, kehrt das Programm wieder in die Zeile 10 zurück und wartet auf ein neue Eingabe.
40 IF A$<>"F" THEN 20 45 : DIE ERZEUGUNG VON ZUFALLSZAHLEN Ihr COMMODORE 64 enthält eine große Zahl eingebauter Funktionen. Sie können diese Funktionen im Rahmen von BASIC-Programmen wie Unterprogramme benutzen. Dazu brauchen Sie nur die gewünschte Funktion mit ihrem Namen aufzurufen.
Seite 57
Nach Beendigung des Programms sollte der Bildschirm etwa wie folgt aussehen: .125879587 .258874559 .598762589 .145587988 .598526982 .225698774 .369854725 .158798789 .587412365 .265879589 Sie haben andere Zahlen? Nun, kein Wunder, die Zahlen sollen ja auch zufällig sein. Lassen Sie das Programm ein paar mal laufen und vergewissern Sie sich, daß...
Seite 58
Nun liegen die Zahlen etwa für ein Würfelspiel im richtigen Bereich, aber die Nachkommastellen stören noch. Aber auch für diesen Fall haben wir eine eingebaute Funktion in unserem COMMODORE 64: 20 PRINT INT(6*RND(1)), Die INT-Funktion (abgeleitet von INTeger = ganze Zahl) schneidet die Nachkommastellen einer Dezimalzahl ab.
ZAHLENRATESPIEL Nachdem wir uns so lange mit dem Erklären der Zufallszahlen aufgehalten haben, wollen wir endlich auch eine Anwendung bringen. Das folgende Programm zeigt nicht nur eine sinnvolle Anwendung der RND-Funktion, sondern bringt auch einige neue Programmiertricks. Die Zufallszahl, die in diesem Programm verwendet wird, wurde der Variablen NM zugeordnet.
Anzahl der Fehlversuche zu ermitteln, die ja nach Auffinden der "richtigen" Zahl vom Computer zusammen mit dem Text "TOLL SIE HABEN DIE ZAHL ERRATEN" ausgegeben wird. Nun können Sie mit einem neuen Spiel beginnen, in dem der COMMODORE 64 natürlich eine neue Zufallszahl vorgibt. PROGRAMMIERTIPS: In den Zeilen 40 und 50 wurden mehrere Befehle durch Doppelpunkte getrennt.
ZUFALLSGRAFIKEN Daß man auch Grafiken auf Zufallszahlen aufbauen kann, sehen Sie an folgendem kleinen Programm: 10 PRINT "{CLEAR}" 20 PRINT CHR$(205.5 + RND(1)); 30 GOTO 20 Das Wichtigste in diesem Programm steht in der Zeile 20, die die CHR$- Funktion enthält. Je nachdem welche Zahl zwischen 0 und 255 Sie in Klammern hinter den Funktionsnamen setzen, erhalten Sie jeweils ein anderes Zeichen.
Seite 62
Wenden wir nun die Formel 205.5 + RND(1) an, so werden Zahlen zwischen 205.5 und 206.5 erzeugt. Die Wahrscheinlichkeiten dafür, daß eine Zahl größer oder kleiner als 206 ist, sind gleich groß. Da die CHR$- Funktion die Nachkommastellen ignoriert, werden also die Zeichen mit den Codes 205 und 206 mit gleicher Häufigkeit ausgedruckt.
KAPITEL FORTGESCHRITTENE GRAFIK- UND FARB- PROGRAMMIERUNG • Farbe und Grafik • Farbgebung mit PRINT-Befehlen • Farb-CHR$-Codes • PEEK und POKE • Weitere Ballspiele...
Standardfarben des Bildschirms (hellblaue Schrift auf dunkelblauem Hintergrund mit hellblauem Rand) beschränkt. Nun wollen wir Ihnen zeigen, wie Sie diese Farben ändern können und wie Sie die vielen Grafiksymbole Ihres COMMODORE 64 einsetzen können. FARBGEBUNG MIT PRINT-BEFEHLEN Wenn Sie den Farbjustagetest in Kapitel 1 gemacht haben, so können...
Seite 65
Tippen Sie nun NEW ein und machen folgendes Experiment: Nach dem Zeilenanfang 10 PRINT" drücken Sie zusammen die <CTRL>- und die <1>-Taste. Lassen Sie dann die Tasten los und drücken die <S>- Taste. Nun drücken Sie die <CTRL>-Taste zusammen mit der <2>-Taste und dann die <P>-Taste allein.
Bem.: Nach Beendigung eines Programms, in dem Sie die Farbsteuerung angewandt haben, bleibt der Computer in dem Modus, den Sie als letztes eingeschaltet hatten. Sie kommen in den Normalmodus (hellblau, dunkelblau) zurück, wenn Sie <RUN/STOP> <RESTORE> drücken. FARB-CHR$-CODES Wie Sie dem Anhang F (Liste der CHR$-Codes) entnehmen können, haben die Farben (aber auch z.
Seite 67
80 PRINTCHR$(144);: GOTO 10 90 PRINTCHR$(156);: GOTO 10 100 PRINTCHR$(158);: GOTO 10 110 PRINTCHR$(159);: GOTO 10 120 PRINTCHR$(129);: GOTO 10 130 PRINTCHR$(149);: GOTO 10 140 PRINTCHR$(150);: GOTO 10 150 PRINTCHR$(151);: GOTO 10 160 PRINTCHR$(152);: GOTO 10 170 PRINTCHR$(153);: GOTO 10 180 PRINTCHR$(154);: GOTO 10 190 PRINTCHR$(155);: GOTO 10 Nach dem Eintippen der Zeilen 1 bis 40 sollte Ihr Bildschirm wie folgt...
In derselben Weise, wie man sich die Variablen als "Schachteln" vorstellen kann, in die Information "eingefüllt" werden kann, so kann man sich auch vorstellen, daß die Speicherplätze des COMMODORE 64 solchen "Schachteln" entsprechen. Der Inhalt einiger Speicherplätze hat nun ganz bestimmte Bedeutungen. So gibt es Speicher, wo der Computer "nachschaut", welche Bildschirm- oder Rahmenfarbe eingeschaltet ist,...
Seite 69
ändern, Objekte auf dem Bildschirm erscheinen und sich bewegen lassen und sogar Töne erzeugen und zu Musikstücken zusammensetzen. Schreibt man Werte direkt in den Computerspeicher, so geschieht das mit Hilfe des POKE-Befehls. Man sagt deshalb auch, man "poked" einen Wert in eine Speicherstelle. Man kann Speicherstellen etwa auf folgende Art darstellen 53280 53281...
Seite 70
10 FOR BA = 0 TO 15 20 FOR BO = 0 TO 15 30 POKE 53280,BA 40 POKE 53281,BO 50 FOR X = 1 TO 500 : NEXT X 60 NEXT BO: NEXT BA Zwei Schleifen werden ineinander geschachtelt, um alle Kombinationen zu erfassen.
Aber wie es Speicherplätze im COMMODORE 64 gibt, die die Bildschirmfarben bestimmen, so gibt es auch Speicherplätze, die den verschiedenen Bildschirmpositionen zugeordnet sind. DER BILDSCHIRMSPEICHER Da der Bildschirm unseres Computers aus 25 Zeilen a 40 Zeichen besteht, können wir 1000 Zeichen auf ihm unterbringen und brauchen natürlich genauso viele Speicherplätze, die Informationen darüber...
PRINT-Befehl zu benutzen; Sie haben direkt einen Wert in den Bildschirmspeicher geschrieben. Der Ball der erschien war hellblau. Es gibt jedoch einen Speicher in Ihrem COMMODORE 64, wo Sie durch Ändern der Speicherinhalte die Farben von einzelnen Zeichen auf dem Bildschirm bestimmen können.
Spalte 55335 ↓ 55296 → 55336 55376 55416 55456 55496 55536 55576 55616 55656 55696 55736 Zeile 55776 55816 55856 55896 55936 55976 56016 56056 56096 56136 56176 56216 56256 ↑ 56295 Die Farbcodes liegen zwischen 0 und 15 und entsprechen denen, die wir benutzt haben, um die Farbe von Hintergrund und Rahmen zu ändern (siehe S.
Seite 74
70 POKE 1024+X+40*Y,32 80 X = X+DX 90 IF X = 0 OR X = 39 THEN DX = -DX 100 Y = Y+DY 110 IF Y = 0 OR Y = 24 THEN DY = -DY 120 GOTO 50 In Zeile 10 wird der Bildschirm gelöscht;...
All diesen Vorteilen stehen nur relativ geringe Schwierigkeiten beim Programmieren gegenüber. Zugegeben, Sie müssen noch einiges darüber lernen, wie der COMMODORE 64 arbeitet und wie er Zahlen intern verarbeitet. Aber schließlich ist das doch ganz interessant und auch gar nicht so schwierig; und wenn Sie alle Beispiele sorgfältig durcharbeiten, so werden Sie bald mit selbstkonstruierten SPRITES die verblüffendsten Kunststücke anstellen.
Grafik-Baustein COMMODORE 64, dem VIC (Video Interface Chip), unterstützt. Die Arbeit, die das Konstruieren der Sprites, das Kontrollieren ihrer Bewegungen und Positionen und die Farbgebung macht, wird zum größten Teil von diesem Chip übernommen. Der Bereich, in dem die Sprites generiert werden, besteht aus 46...
Seite 78
3 mal hintereinander die Zahlenreihe 128, 64, 32, 16, 8, 4, 2, 1. Die Zeilen des Feldes numerieren Sie von 1 bis 21 durch. Legen Sie sich nun für jede Zeile drei Wertetabellen an, wie sie auf der Seite 71 dargestellt sind. Tabelle 1 entspricht den ersten 8 Positionen einer Zeile in Ihrer Sprite-Darstellung, und die Tabellen 2 und 3 entsprechen den Positionen 9-16 bzw.
Seite 79
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ Die dritte Tabelle der ersten Reihe enthält wieder lauter Nullen, die Summe ist also auch 0. Die 1. Reihe unseres Sprites wird also durch die Zahlen 0, 127, 0 beschrieben. Um sie leicht in einem Programm verwerten zu können, schreiben wir sie als sogenannte DATA-Zeile: DATA 0, 127, 0 Als weiteres Beispiel die Daten der zweiten Reihe unseres Sprites:...
Seite 80
Hier stehen die Informationen für Q 200 DATA 0,127,0,1,255,192,3,255,224,3,231,224 210 DATA 7,217,240,7,223,240,7,217,240,3,231,224 220 DATA 3,255,224,3,255,224,2,255,160,1,127,64 230 DATA 1,62,64,0,156,128,0,156,128,0,73,0,0,73,0 240 DATA 0,62,0,0,62,0,0,62,0,0,28,0 Wenn Sie alles richtig eingetippt haben, fliegt ein Ballon ruhig über den Himmel. Um das Programm zu verstehen, müssen Sie wissen, welche Speicher- stellen (auch Register genannt) welche Funktionen kontrollieren.
Seite 81
Sie müssen außerdem wissen, in welchem 64er Block die Daten eines bestimmten Sprites abgespeichert sind. Diese Daten stehen in den 8 Registern direkt hinter dem Bildschirmspeicher. 2040 2047 ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ SPRITE Nun wollen wir Schritt für Schritt durchgehen, wie wir unsere Sprites auf den Bildschirm bringen und verschieben können.
Seite 82
28 FOR N = 8 TO 62: READ Q: POKE 832+N,Q: NEXT Durch diese Schleife werden 63 Bytes Daten in den 13. Block (1 Block = 64 Bytes) des Speichers eingelesen, der bei der Adresse 832 (= 13*64) beginnt. 30 FOR X = 0 TO 200...
Seite 83
Der Ballon ist jetzt in X- und Y-Richtung doppelt so groß wie vorher. Der Grund dafür ist, daß die Zahl 4 (für Sprite Nr. 2) in die Register 23 und 29 geschrieben wurde. Es ist wichtig zu berücksichtigen, daß die linke obere Ecke des Sprites beim Vergrößerungsvorgang an ihrem Platz bleibt.
Seite 84
NOCH EINIGE BEMERKUNGEN ZU SPRITES Mit Hilfe derselben Kodierungen (0-15) wie bei den Zeichenfarben (siehe Kapitel 5 oder Anhang G) können Sie die Sprites in 16 verschiedenen Farben darstellen. Wenn Sie z. B. dem Sprite Nr. 1 die Farbe grün geben wollen, so müssen Sie folgenden Befehl eintippen: POKE V+40,13 (mit V = 53248).
BITS nicht gesetzt, so kann es auf folgende Weise dargestellt werden: Dieses BYTE hat den Wert 0. Sind alle BITS gesetzt, so erhält man: Dieses BYTE hat den Wert 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255.
REGISTER Ein REGISTER entspricht einer speziellen Adresse im Computer; in ihr kann ein BYTE, d. h. maximal der Wert abgespeichert werden. Durch Änderung Registerinhalte können Computerfunktionen gesteuert werden. Im Zusammenhang mit den Sprites haben wir z. B. Register kennengelernt, deren Änderung dazu führt, daß Objekte auf dem Bildschirm erscheinen oder ihre Größe in x- bzw.
Seite 87
HILFSPROGRAMM: Umwandlung von Binärzahlen in Dezimalzahlen Das folgende Programm wandelt von Ihnen eingegebene Binärzahlen in Dezimalzahlen um: 5 REM BINAER NACH DEZIMAL WANDLUNG 10 INPUT "EINGABE 8-BIT BINAERZAHL :";A$ 12 IF LEN(A$) <> 8 THEN PRINT "8 BITS BITTE ..." : GOTO 10 15 TL = 0 : C = 0 20 FOR X = 8 TO 1 STEP -1 : C = C + 1 30 TL = TL + VAL(MID$(A$,C,1))*2↑(X-1)
KAPITEL MUSIK MIT DEM COMMODORE 64 • Die Struktur eines Musikprogramms • Beispiel für ein Musikprogramm • Wichtige Klangeinstellungen • Klangeffekte...
Eigenschaften werden Sie daher mit Ihrem Programm auch beeinflussen wollen. Ihr COMMODORE 64 besitzt zu diesem Zweck wieder einen eigens konstruierten elektronischen Baustein, den SID (Sound Interface Device). Im SID ist eine Reihe von Speicherplätzen für die Parameter enthalten, die das gewünschte Klangbild zu synthetisieren gestatten.
Seite 91
(Tastverhältnis, Hi-Byte) Nun noch das Faszinierendste: der Anschlag, der Verlauf eines Tones. Ihr COMMODORE 64 läßt jeden Ton zunächst auf die im Register 24 ein- gestellte Lautstärke ansteigen und dann wieder etwas abschwellen, die nun erreichte Lautstärke bleibt erhalten, solange Sie den Ton einge- schaltet lassen;...
Programm erzeugt wird. MELODIEN MIT DEM COMMODORE 64 Sie brauchen kein Musiker zu sein, um mit dem COMMODORE 64 Melodien zu erzeugen. Hier ist ein Beispielprogramm, an dem gezeigt wird, wie man das macht. Wir benutzen wieder nur eine Stimme von den dreien, die uns zur Verfügung stehen.
Seite 93
10 REM TONLEITER Programmname 20 SI=54272:FL=SI:FH=SI+1: Definition der Registeradressen W=SI+4:A=SI+5:H=SI+6: L=SI+24 30 POKE L,15 Volle Lautstärke 40 POKE A,9 Anschlag 50 READ X:READ Y Hi-Byte und Lo-Byte der Frequenz aus den Data-Zeilen 130, 140 lesen 60 IF Y=-1 THEN POKE W,0:END Wenn das Programm die - 1 am Ende findet, soll es abschalten 70 POKE FH,X:POKE FL,Y...
WICHTIGE KLANGEINSTELLUNGEN 1. Lautstärke - Die Wahl der Lautstärke gilt für alle 3 Tongeneratoren des COMMODORE 64. Das in Frage kommende Register hat die Adresse 54296; Sie erhalten die maximale Lautstärke, wenn Sie in dieses Register eine 15 poken: POKE L,15 oder POKE 54296,15...
Durch POKE 54277,66 stellen Sie den Anschlag auf einen mittleren Wert (64=4*16) und das Abschwellen auf einen kleinen Wert (2), der Wert 66 ergibt sich dann als Summe von 64 und 2. Am besten erkennen Sie die Zusammensetzung, wenn Sie statt POKE 54277,66 schreiben: POKE A,4*16+2 (wobei natürlich die Registeradresse A vorher...
Seite 96
50 POKE L,15 Lautstärke 60 POKE A,1*16+5 Anschlag und Abschwellen 70 POKE H,0*16+0 Halten und Ausklingen 80 POKE TH,8:POKE TL,0 Tastverhältnis 90 POKE FH,14:POKE FL,162 Frequenz 100 POKE W,17 Wellenform, Generator einschalten 110 FORT=1TO200:NEXT Tondauer 120 POKE W,0 Generator abschalten 130 GOTO40 Alles von vorn Wir benutzen die Stimme 1 zur Erzeugung eines Tones mit kurzer...
Zuordnung dieser Werte zu den Notennamen können Sie der Tabelle in Anhang P entnehmen. Da den Stimmen unterschiedliche Adressen zugeordnet sind (siehe folgende Tabelle), können Sie die drei Stimmen Ihres COMMODORE 64 unabhängig voneinander programmieren und auf diese Weise z.B. dreistimmige Musikstücke erstellen.
Werte eintragen, die Sie mit Hilfe der Notentabelle im Anhang P ermitteln können. Dabei können Sie Ihre Melodie so lang wählen, wie Speicherplatz in Ihrem COMMODORE 64 verfügbar ist, Sie müssen nur dafür sorgen, daß die letzte Programmzeile den Ausdruck DATA-1,-1,-1 enthält.
Die hier besprochenen Programmbeispiele können Sie in direkter, oder in abgeänderter Form in eigene BASIC-Programme einbauen. Sie sollen Sie Experimentieren anregen Ihnen zeigen, welche Klangmöglichkeiten in Ihrem COMMODORE 64 stecken. 10 REM PUPPE 20 SI=54272:FL=SI:FH=SI+1:TL=SI+2:TH=SI+3:W=SI+4:A=SI+5:H=SI+6:L=SI+24 30 POKEL,15:POKETH,15:POKETL,15:POKEA,0*16+0:POKEH,15*16 40 POKEW,65 50 FOR X=250TO0STEP-2:POKEFH,40:POKEFL,X:NEXT 60 FOR X=150TO0STEP-4:POKEFH,40:POKEFL,X:NEXT...
READ UND DATA Sie haben zwei Methoden kennengelernt, mit denen man einen Zahlenwert einer Variablen zuordnen kann; durch eine direkte Zuweisung im Programm (z. B. A=2) oder mit einer INPUT-Anweisung. Bei manchen Anwendungen, insbesondere wenn es sich um die Verarbeitung größerer Zahlenmengen handelt, sind jedoch beide Methoden nicht praktikabel.
Seite 103
Folgendes Format muß bei den DATA-Anweisungen eingehalten werden: 40 DATA 1,34,10.5,16,234.56 ↑ ↑ Die einzelnen Daten hinter der letzen werden durch Komma Zahl kein Komma getrennt Die DATA-Anweisungen können ganze Zahlen, Dezimalbrüche oder Zahlen in wissenschaftlicher Notation enthalten, jedoch keine Variablen oder arithmetischen Operationen.
Wenn Sie die in DATA-Anweisungen gespeicherten Werte in einem Programm mehrfach verwenden wollen, so müssen Sie den Zeiger wieder auf das erste Element zurücksetzen. Dies geschieht mit Hilfe des RESTORE-Befehls. Ergänzen Sie das Programm auf Seite 95 durch die Zeile 50 GOTO 10 Sie werden die Fehlermeldung OUT OF DATA ERROR erhalten, da nach dem ersten Durchlauf des Programms der DATA-Zeiger auf den letzten...
Seite 105
In Zeile 5 werden Schleifenzähler CT und die Zahlensumme T gleich 0 gesetzt. In Zeile 10 werden die Daten gelesen und in Zeile 20 werden sie überprüft ob es sich dabei um eine Marke ("flag") handelt; in unserem Fall wird die Marke durch eine "- 1" dargestellt. Wenn es sich um gültige Daten handelt, so werden sie aufaddiert (Zeile 30) und der Zähler wird um 1 erhöht (Zeile 25).
INDIZIERTE VARIABLEN Wir haben bis jetzt nur einfache Variablen der Form A, XY, K1, C$ etc. benutzt. Der Variablenname bestand immer aus einem Buchstaben, oder aus der Kombination eines Buchstabens mit einem zweiten, bzw. mit einer Ziffer. Die Anzahl der Variablennamen, die Sie auf diese Weise erzeugen können, dürfte in den meisten Fällen ausreichen, aber die Handhabung solcher Variablen in einem Programm ist manchmal recht umständlich.
Seite 107
Bem.: Indizierte numerische Variable enthalten den Wert 0, wenn ihnen kein anderer Wert zugewiesen wurde. Es gibt jedoch auch die Möglichkeit, Stringvariablen zu indizieren (z. B. B$(2)); solche Variablen enthalten, wenn ihnen kein String zugewiesen wurde "nichts". Eine Solche Gruppe indizierter Variablen nennt man ein FELD (oder auch TABELLE).
Man hätte dieses Programmierproblem sicher eleganter lösen können, aber hier soll ja illustriert werden, wie die indizierten Variablen angewendet werden können. In Zeile 10 wird gefragt, wieviele Zahlen eingegeben werden sollen. Die zugeordnete Variable X gibt an, wie oft die Schleife durchlaufen werden muß, in der die zu verarbeitenden Werte eingegeben und der indizierten Variablen B(A) zugeordnet werden.
Mehrere Dimensionierungen können in folgender Weise zusammengefaßt werden: 10 DIM C(29),D(58),E(48) SIMULATION EINES WÜRFELSPIELS Komplizierte Programme können durch Verwendung von indizierten Variablen knapp und einfach geschrieben werden. Im nächsten Programm wird eine indizierte Variable verwendet, um zu registrieren, wie oft eine bestimmte Zahl gewürfelt wird. 1 REM WUERFEL SIMULATION 2 PRINT CHR$(147) 10 INPUT "WIEVIELE WUERFE ";X...
Untenstehend haben wir ein Programm abgedruckt, welches das gleiche leistet; jedoch ohne indizierte Variablen zu verwenden. Sie brauchen es nicht abzutippen, aber beachten Sie, um wieviel länger es gegenüber dem vorhergehenden Programm ausgefallen ist. 10 INPUT "WIEVIELE WUERFE ";X 20 FOR L=1 TO X 30 R=INT(6*RND(1))+1 40 IFR=1THENF1=F1+1:NEXT 41 IFR=2THENF2=F2+1:NEXT...
Seite 111
Hierbei geben die Indices an, in welcher Spalte und welcher Zeile dieser Tabelle das betreffende Element steht. A(3,4)=255 G JFFF SPALTE JFFFFF ZEILE Wir können uns also vorstellen, daß die 255 in der dritten Zeile und der vierten Spalte unserer Tabelle steht. Wie die eindimensionalen, müssen auch die mehrdimensionalen Felder dimensioniert werden.
Seite 112
Das Kernstück des Programms ist ein Feld aus 4 mal 3 Elementen. In diesen Elementen werden die Antworten gezählt. Aus Gründen der Übersichtlichkeit haben wir dabei die Elemente A(0,0) bis A(0,4) nicht benutzt. Im Klartext: Wenn auf die Frage 1 die Antwort "JA" gegeben wurde, so wird A(1,1) um 1 vergrößert - Zeile 1, da es sich um Frage 1 handelt und Spalte 1, da die Antwort "JA"...
Seite 114
EINLEITUNG Nachdem Sie nun mit Ihrem COMMODORE 64 enger vertraut sind, sollen Sie wissen, daß unsere Unterstützung hier nicht endet. Sie werden es vielleicht nicht wissen, aber COMMODORE ist bereits seit 23 Jahren im Geschäft. In den 70er Jahren stellten wir den ersten eigenständigen Personalcomputer vor, PERSONAL ELECTRONIC TRANSACTOR.
Seite 115
Traktorführungen und andere wenig teure Verbrauchsmaterialien. • Interface Steckkarten – Eine Anzahl spezieller Steckkarten wird für den COMMODORE 64 zur Verfügung stehen, so daß unterschiedliche Standardgeräte wie Drucker, Modems, Controller, Meßgeräte und andere Instrumente angeschlossen werden können. Mit einer speziellen IEEE-488 Steckkarte kann der COMMODORE 64 sämtliche CBM Peripherie-Geräte benutzen, einschließlich der Disks und...
Seite 116
Musik zu erzeugen. AUSBILDUNG • Der COMMODORE 64 ist ein Tutor, der nie müde wird und Ihnen immer seine volle Aufmerksamkeit schenkt. Neben den vielen CBM- Ausbildungsprogrammen wird der COMMODORE 64 über zusätzliche Sprachen des Erziehungsbereichs wie etwa PILOT, LOGO und...
Seite 117
ANHANG B FORTGESCHRITTENE KASSETTEN OPERATION Neben Kopien Ihrer Programme speichert der COMMODORE 64 auf Magnetband die Werte und Variablen und andere Arten von Daten in einer Anordnung, die FILE genannt wird. Sie können so mehr Information speichern, als der Computer auf einmal in seinem Hauptspeicher unterbringen kann.
Seite 118
Um wieder an die Daten heranzukommen, spulen Sie das Band zurück und probieren einmal das: 10 PRINT "READ-TAPE-PROGRAM" 20 OPEN 1,1,0,"DATEN FILE" 30 PRINT "FILE OPEN" 40 PRINT 50 INPUT#1,A$ 60 PRINT A$ 70 IF A$ = "STOP" THEN CLOSE 1 : END 80 GOTO 40 Wieder muß...
Seite 119
Programmierung von Computern und das dabei benutzte Vokabular zu geben. In diesem Anhang finden Sie nun eine vollständige Liste aller Regeln (der Syntax) des COMMODORE 64 BASIC, zusammen mit kurzen Beschreibungen. Probieren Sie die Kommandos einfach aus. Sie können Ihrem Computer keinen dauerhaften Schaden zufügen, wenn Sie Programme eintippen;...
Seite 120
(wieviele Dimensionen das Array hat). A(7), BZ%(11), A$(50), PT(20,20) Bemerkung: Es gibt drei Variablennamen, die der COMMODORE 64 selbst benutzt und die Sie nicht definieren dürfen: ST, Tl und TI$. ST ist die Statusvariable und erhält ihren Wert entsprechend einer zuvor ausgeführten Ein- oder Ausgabe-Operation.
Seite 121
Multiplikation Division ↑ Exponentiation (hoch) Werden in einer Zeile mehrere arithmetische Operatoren verwendet, dann gilt für die Reihenfolge der Berechnung die in der Mathematik übliche "Punkt vor Strich"-Regel. Das heißt, zuerst wird die Exponentiation ausgeführt, dann werden Multiplikationen und Divisionen vor der Addition und Subtraktion berechnet.
Seite 122
Zahl oder numerische Variable folgen, die als Gerätenummer interpretiert wird und die angibt, von welchem Gerät das Programm zu laden ist. Wird keine Gerätenummer angegeben, nimmt der COMMODORE 64 Gerät #1 an, die Kassetteneinheit. Das andere, gewöhnlich mit dem LOAD-Kommando angegebene Gerät ist das Diskettenlaufwerk, Gerät LOAD liest das nächste Programm von der Kassette...
Seite 123
Nach der Gerätenummer kann, durch ein Komma getrennt, eine zweite Zahl folgen und zwar eine 0 oder eine 1. Ist diese zweite Nummer eine 1, dann wird der COMMODORE 64 eine Marke für Band-Ende hinter Ihr Programm schreiben. Das signalisiert dem Computer, daß nach einem LOAD nur bis zu dieser Stelle gesucht werden soll.
Seite 124
Dies stellt sicher, daß das Programm bei SAVE korrekt weggespeichert wurde und währenddessen kein Fehler auf dem Band oder der Diskette auftrat. VERIFY ohne weitere Angabe läßt den COMMODORE 64 mit dem nächsten Programm auf dem Band vergleichen, unabhängig von dessen Namen.
Seite 125
Dieser Befehl löscht alle Variablen im Speicher, läßt aber das Programm selbst intakt. CLR wird automatisch ausgeführt, wenn RUN befohlen wird. CMD sendet Ausgaben, die normalerweise auf den Bildschirm gehen würden (z. B. PRINT oder LIST, aber nicht POKE auf den Bildschirm), stattdessen an ein anderes Gerät.
Seite 126
dem der Funktionsname folgt. Nach dem Namen wird in Klammern ein numerische Variable angegeben. Danach kommt ein Gleichheitszeichen und dann die aktuelle Formel, mit der Variablen am richtigen Platz. Die Funktion kann nun aufgerufen werden, indem für die Variable jeder beliebige Wert oder eine andere Variable eingesetzt wird.
Seite 127
Während des Programmlaufs wird zur Laufvariable der als Schrittweite gegebene Wert addiert oder subtrahiert. Wird kein STEP angegeben, bedeutet dies Schrittweite = 1. Zähleranfang und Zählerende stellen die Grenzwerte für die Laufvariable dar. 10 FOR L = 1 TO 10 STEP .1 20 PRINT L 30 NEXT L Die Schrittweite kann auch negativ angegeben werden.
Programmzeilen nicht mehrfach eintippen, sondern kann sie durch GOSUB bei Bedarf "aufrufen". 20 GOSUB 800 GOTO oder GO TO Das Programm springt in die nach GOTO angegebene Zeile und fährt dort mit der Arbeit fort. Kommt die nach GOTO angegebene Zeilennummer nicht im Programm vor, stoppt das Programm mit einer Fehlermeldung.
Seite 129
INPUT# INPUT# ist ähnlich wie INPUT, übernimmt die Daten aber von einem vorher mit OPEN geöffneten File. LET leitet eine Zuweisung ein, wird aber kaum jemals in Programmen benutzt, da seine Angabe wahlfrei ist. Der Variablenname, dem das Ergebnis einer Rechnung zugewiesen werden soll, steht links vom Gleichheitszeichen, die Formel steht rechts.
Seite 130
OPEN Mit dem OPEN Befehl kann der COMMODORE 64 Daten mit Geräten wie dem Kassettenrecorder oder Diskettenlaufwerk, einem Drucker oder sogar dem Bildschirm austauschen. Auf das Schlüsselwort OPEN folgt eine Nummer (0-255), die logische Filenummer, auf die sich alle nachfolgenden Befehle beziehen. Gewöhnlich folgt der ersten Nummer eine zweite, die Gerätenummer.
Seite 131
PRINT PRINT ist wohl der erste Befehl, den ein Neuling zu gebrauchen lernt. Einige Variationen sollten dabei beachtet werden. Nach PRINT können stehen: Textstrings in Anführungszeichen Variablennamen Funktionen Satzzeichen Satzzeichen dienen der Formatierung der Daten auf dem Bildschirm. Das Komma unterteilt den Bildschirm in vier Spalten, wogegen das Semikolon jeden Zwischenraum unterdrückt.
Seite 132
REM (Remark, Bemerkung) Nach REM steht eine Bemerkung für irgend jemanden, der das Programmlisting lesen wird. Sie könnte zum Beispiel einen Programm- abschnitt erklären oder zusätzliche Informationen beinhalten. Hinter REM kann ein beliebiger Text stehen. Es hat auf ein Programm keinerlei Wirkung, außer daß...
Auf WAIT folgt eine Speicheradresse (X) und bis zu zwei Variablen. Das Format ist: WAIT X,Y,Z Der Inhalt der angegebenen Adresse wird zuerst EXCLUSIV OR verknüpft mit dem dritten Wert Z (falls dieser angegeben ist), und dann wird mit dem zweiten Wert ein logisches AND ausgeführt. Ist das Resultat 0, prüft das Programm den Inhalt dieser Adresse erneut.
Seite 134
bedeutet, daß negative Zahlen dem Betrag nach größer werden. (INT( – 2.1) = – 3) LOG(X) Ergibt den natürlichen Logarithmus von X zur Basis e (siehe EXP(X)). Zur Umwandlung in den Zehnerlogarithmus wird durch LOG(10) dividiert. PEEK(X) Ergibt den Inhalt der Speicheradresse X, mit X im Bereich 0-65535. Das Ergebnis ist eine ganze Zahl im Bereich 0-255.
Seite 135
übergeben, das selbst einen anderen Wert an das BASIC-Programm zurückgibt. Weitere Einzelheiten dieser Funktion Programmierung in Maschinensprache finden Sie im COMMODORE 64 Programmierhandbuch. STRING FUNKTIONEN ASC(X$) Ergibt den ASCII-Code des ersten Zeichens von X$. CHR$(X) Dies ist die Umkehrfunktion zu ASC(X$) und ergibt das Zeichen, dessen ASCII-Code X ist.
MID$(X$,S,X) Ergibt einen String, der X Zeichen von X$ enthält, beginnend mit dem S- ten Zeichen. RIGHT$(X$, X) Ergibt die rechten X Zeichen von X$. STR$(X) Ergibt einen String, der mit der durch PRINT ausgegebenen Version von X identisch ist. VAL(X$) Diese Funktion wandelt X$ in eine Zahl um und ist im Wesentlichen die Umkehrfunktion von STR$(X).
Seite 137
SPC(X) Diese Funktion wird in PRINT Befehlen benutzt, um X Zeichen zu überspringen. TAB(X) TAB wird ebenfalls mit PRINT benutzt. Das nächste Zeichen wird in Spalte X gedruckt. (Wird vom Drucker wie SPC(X) behandelt.)
Seite 138
Damit Sie beim Eintippen Ihrer Programme und Direktkommandos Zeit sparen können, dürfen Sie die meisten Schlüsselwörter im BASIC des COMMODORE 64 abkürzen. Die Abkürzung für PRINT ist das Fragezeichen. Die Abkürzungen für andere Schlüsselwörter werden gebildet, indem man die ersten ein oder zwei Zeichen eintippt und das nächste Zeichen des Wortes mit SHIFT eingibt.
Seite 139
Befehl Abkürzung wird Befehl Abkürzung wird angezeigt als angezeigt als P <SHIFT> E S <SHIFT> P PEEK SPC( P <SHIFT> O S <SHIFT> Q POKE PRINT STEP ST <SHIFT> E PRINT# P <SHIFT> R STOP S <SHIFT> T R <SHIFT> E ST <SHIFT>...
Seite 140
ANHANG E BILDSCHIRM CODES Die folgende Tabelle listet alle in den Zeichensätzen des COMMODORE 64 vorkommenden Zeichen auf. Sie zeigt, welche Zahl in den Bildschirmspeicher (Adressen 1024-2023) gePOKEd werden muß, um ein bestimmtes Zeichen zu erhalten. Sie zeigt umgekehrt, welches Zeichen einer aus dem Bildschirmspeicher gePEEKten Zahl entspricht.
Seite 142
Satz 1 Satz 2 Poke Satz 1 Satz 2 Poke Satz 1 Satz 2 Poke <SPACE> Die Codes 128 - 255 ergeben die invers dargestellten Zeichen der Codes 0 - 127. An den freien Stellen in Spalte 2 stimmen die beiden Sätze überein.
Seite 143
ANHANG F ASCII UND CHR$ CODES Dieser Anhang zeigt für alle x, welches Zeichen auf dem Bildschirm erscheint, wenn Sie PRINT CHR$(x) senden. Umgekehrt können Sie auch das Ergebnis für PRINT ASC("x") entnehmen, wobei "x" der zugehörigen gedrückten Taste entspricht. Dies ist besonders nützlich, um das in einem GET Statement empfangene Zeichen zu ermitteln, zwischen Groß- Kleinschrift...
Seite 145
Zeichen CHR$ Zeichen CHR$ Zeichen CHR$ Zeichen CHR$ Codes 192 - 223 wie Codes 96 - 127 Codes 224 - 254 wie Codes 160 - 190 Code wie Code...
Seite 146
ANHANG G ADRESSBEREICHE VON BILDSCHIRM- UND FARBSPEICHER Die folgenden Tabellen und Diagramme zeigen, welche Adressen die auf dem Bildschirm dargestellten Zeichen und deren individuelle Farben kontrollieren, sowie die Farbcodes. BILDSCHIRM SPEICHER TABELLE Spalte 1063 ↓ 1024 → 1064 1104 1144 1184 1224 1264...
Seite 147
Um ein Zeichen in einer bestimmten Farbe darzustellen, sind die folgenden Werte in die entsprechende Adresse des Farbspeichers zu POKEn: SCHWARZ ORANGE WEISS BRAUN HELLROT TÜRKIS GRAU 1 VIOLETT GRAU 2 GRÜN HELLGRÜN BLAU HELLBLAU GELB GRAU 3 Um zum Beispiel die Farbe des Zeichens in der linken oberen Ecke des Bildschirms nach rot zu ändern, geben Sie ein: POKE 55296,2 FARB SPEICHER TABELLE Spalte...
Seite 148
ANHANG H ABGELEITETE MATHEMATISCHE FUNKTIONEN Funktionen, die in Commodore 64 Basic nicht vordefiniert sind, können mit Hilfe der folgenden Formeln berechnet werden: FUNKTION BERECHNUNG BASIC SEKANS SEC(X) = 1/COS(X) COSEKANS CSC(X) = 1/SIN(X) COTANGENS COT(X) = 1/TAN(X) ARCUSSINUS ARSIN(X) = ATN(X/SQR(1–X↑2)) ARCUCOSINUS ARCOS(X) = –ATN(X/SQR(1–X↑2))+π/2...
ANHANG I STECKERBELEGUNG DER EIN-/AUSGABE ANSCHLÜSSE Dieser Anhang soll Ihnen zeigen, wie welches Gerät wo an den COMMODORE 64 angeschlossen werden kann. 1) Steuereingänge für Spiele 4) Serielle E/A (Disk/Drucker) 2) Modul-Steckplatz 5) Kassette 3) Audio/Video 6) User Port Control Port 1 Signal Bem.
Seite 150
Modul-Steckplatz Signal Signal -DMA- -ROML- CA10 -I/O 2- CA11 -EXROM- CA12 -GAME- CA13 -I/O 1- CA14 Dot Clock CA15 ∅ 2 CR/-W- -IRQ- -NMI- -RESET- -ROMH- Audio/Video Signal Signal LUMINANCE CROMINANZ O. BELEGUNG AUDIO OUT O. BELEGUNG VIDEO OUT AUDIO IN Serielle E/A Signal SERIAL -SRQIN-...
Seite 151
Cassette Signal CASSETTE MOTOR CASSETTE READ CASSETTE WRITE CASSETTE SENSE User Port Signal Bem. MAX. 100mA -RESET- CNT1 CNT2 -PC2- SER. ATN IN 9 VAC MAX. 100mA 9 VAC MAX. 100mA -FLAG2-...
Seite 152
ANHANG J PROGRAMME, DIE SIE AUSPROBIEREN SOLLTEN Wir haben hier für Sie einige Programme aufgelistet, die Sie auf Ihrem Commodore 64 zur Übung eingeben können. Sie zeigen Ihnen Unterhaltendes aber auch Nützliches. 100 PRINT"{CLEAR}{DOWN}{REVERSE ON}{RIGHT*6}{SPACE*7}KODEKNACKER{SPACE*10}" 110 INPUT"{DOWN}SPIELANLEITUNG (J/N)";Z$:IFASC(Z$)=78THEN170 120 PRINT"{DOWN}DU MUSST DAS GEHEIME KODE-WORT FINDEN!"...
Seite 153
100 REM MICHAEL ROW THE BOAT ASHORE 110 SI=54272:W1=SI+4:W2=SI+11:W3=SI+18 120 F0(0)=3000:F0(1)=1508:F0(2)=6030 130 D0=180 140 HT=2^(1/12) :REM HALBTONSCHRITT 150 DEFFNH(F)=INT(F/256):REM HI-BYTE 160 DEFFNL(F)=F-256*FNH(F):REM LO-BYTE 170 FORK=0TO20:READX:POKESI+K,X:NEXT:REM KLANGEINSTELLUNGEN 180 READWA,WB,WC:REM WELLENFORMEN 190 DIMF(100,6) 200 PRINT"{CLEAR} STIMME 1 STIMME 2 STIMME 3 DAUER" 210 N=N+1:FOR K=0TO2:READF :REM NOTE AUSDATA 220 F=INT(F0(K)*HT^F+.5):HB=FNH(F):LB=FNL(F):PRINTHB;LB,:REM HI UND LO BYTE 230 F(N,2*K)=LB:F(N,2*K+1)=HB...
Seite 154
100 REM ALFABET 110 DIMA$(26) 120 Z$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 130 Z1$="12345678901234567890123456" 140 PRINT"{CLEAR}ZIEL DES SPIEL IST ES, EINE FOLGE VON" 150 PRINT"{DOWN}BUCHSTABEN ALFABETISCH ZU ORDNEN." 160 PRINT"{DOWN}DAZU DUERFEN SIE JEWEILS DEN ANFANG" 170 PRINT"{DOWN}DER FOLGE UMDREHEN. VIEL ERFOLG!" 180 PRINT"{DOWN*2}WIE LANG SOLL DIE FOLGE SEIN {DOWN}" 190 INPUT"MAXIMAL 26 ";S 200 IFS<1ORS>26THEN180 210 FORI=1TOS:A$(I)=MID$(Z$,I,1):NEXTI...
Seite 156
AUF COMMODORE 64 BASIC Besitzen Sie Programme, die in einer anderen BASIC-Version als COMMODORE BASIC geschrieben wurden, werden einige kleinere Anpassungen nötig sein, bevor sie auf dem COMMODORE 64 laufen können. Wir geben Ihnen nun einige Tips, die die Anpassung leichter machen.
Seite 157
COMMODORE 64 BASIC würde das zweite Gleichheitszeichen als logischen Operator interpretieren. Falls dann C=0 wäre, würde B= – 1. Schreiben Sie statt dessen zwei Befehle: 10 B=0 : C=0 Mehrfache Anweisungen Einige BASIC-Versionen benutzen den Schrägstrich rückwärts (\) um mehrere Statements in einer Zeile voneinander zu trennen. In COMMODORE 64 BASIC werden alle Anweisungen durch einen Doppelpunkt (:) voneinander getrennt.
ANHANG L FEHLERMELDUNGEN Dieser Anhang enthält eine vollständige Liste der Fehlermeldungen des COMMODORE 64 zusammen mit einer Beschreibung der Ursachen. BAD DATA Von einem File wurden String Daten gelesen, das Programm erwartete jedoch numerische Daten. BAD SUBSCRIPT Das Programm versuchte, ein Element eines Arrays anzusprechen, dessen Nummer außerhalb des in der DIM Anweisung...
Seite 159
GOSUB Befehl wurde vorher gegeben. STRING TOO LONG Ein String kann höchstens 255 Zeichen enthalten. SYNTAX Eine Anweisung kann vom Commodore 64 nicht erkannt werden. Sie haben eine Klammer vergessen oder zuviel angegeben, ein Schlüsselwort falsch eingetippt, usw.
Seite 160
Günter O. Hamann Deutscher Betriebswirte-Verlag GmbH BASIC in 100 Beispielen Klaus Menzel Teubner, Stuttgart MOS-Programmierhandbuch zum 6502 MOS-Technology Commodore Büromaschinen GmbH CBM-Computer Handbuch Osborn-Donahue te-wi Verlag GmbH, München 6502, Programmieren in Assembler Lance A. Leventhal te-wi Verlag GmbH, München Programmierung des 6502 Rodney Zaks Sybex-Verlag GmbH, Düsseldorf...
Diese Tabelle gibt Ihnen die Schlüsselzahlen, die Sie in Ihren Geräuschprogrammen benötigen, basierend auf den drei Stimmen des COMMODORE 64. Um eine Klangkontrolle von BASIC aus zu setzen, benötigen Sie Befehle von der Form POKE (Register), (Inhalt) (vgl. Beispiel unten).
Seite 164
Paß Paß 0 (stumm) ... 15 (laut) Zusätzlich besitzt der SID noch 4 Register, die nichts mit der Tonerzeugung zu tun haben, sondern aus denen der Mikroprozessor des COMMODORE 64 bestimmte Informationen lesen kann: REGISTER INHALT PADDLE X PADDLE Y OSZILLATOR 3 HÜLLKURVE 3...
Seite 165
Mit Hilfe dieser Einstellungen können Sie verschiedene Instrumente nachahmen: Instrument Wellenform Anschlag Halten Tastverhältnis Piano PuIs HI-0, LO-255 Flöte Dreieck Cembalo Sägezahn 33 Xylophon Dreieck Orgel Dreieck Akkordeon Dreieck Trompete Sägezahn 33 BEMERKUNG: Die Einstellungen für die Hüllkurve sollten immer gePOKEt werden bevor die Wellenform gePOKEt wird.
ANHANG P WERTE FÜR MUSIK-NOTEN In diesem Anhang finden Sie eine vollständige Liste der Noten und Werte, die in die Register FREQ Hl und FREQ LO des Klangchips gePOKEt werden müssen, um den gewünschten Ton zu erzeugen. NOTE OKTAVE DEZIMAL C –...
Seite 167
NOTE OKTAVE DEZIMAL G – 3 3338 G# – 3 3536 A – 3 3746 A# – 3 3969 H – 3 4205 C – 4 4455 C# – 4 4720 D – 4 5001 D# – 4 5298 E – 4 5613 F –...
Seite 169
Nummer der vorhergehenden Basic Zeile 003D – 003E 61 – 62 Zeiger auf Basic Statement für CONT 003F – 0040 63 – 64 Nummer der aktuellen DATA Zeile 0041 – 0042 65 – 66 Adresse des aktuellen DATA Elements 0043 – 0044 67 –...
Seite 170
0096 EOT von Kassette empfangen (Cassette Sync #) 0097 Speicher für Register 0098 Anzahl offener Files 0099 Eingabegerät (normal = 0) 009A Ausgabe (CMD) Gerät (normal = 3) 009B Paritätsbyte von Band 009C Flag für Byte empfangen 009D Ausgabe Kontrolle (80 = direkt, 00 = RUN) 009E Fehler vom Band / Zeichenpuffer...
Seite 171
RVS Flag für Bildschirm 00C8 Zeiger auf Zeilenende für Eingabe 00C9 – 00CA 201 – 202 Position des Eingabecursors (Zeile, Spalte) 00CB gedrückte Taste (64=keine Taste) 00CC Cursor an/aus (0=Cursor blinkt) 00CD Zähler für blinkenden Cursor 00CE Zeichen in Cursorposition...
Seite 172
0281 – 0282 641 – 642 Startadresse des RAM für Betriebssystem 0283 – 0284 642 – 644 Ende des RAM für Betriebssystem 0285 Flag für Zeitüberschreitung auf seriellem Bus 0286 aktueller Farbcode 0287 Farbe unter Cursor 0288 Bildschirmspeicher Adresse (Page) 0289 maximale Größe des Tastaturpuffers 028A...
Seite 173
0308 – 0309 776 – 777 neuen Basic Befehl ausführen 030A – 030B 778 – 779 arithmetisches Element holen 030C Speicher für 6502 .A Register 030D Speicher für 6502 .X Register 030E Speicher für 6502 .Y Register 030F Speicher für 6502 .P Register 0310 –...
Seite 174
ANHANG R BILDSCHIRM-STEUERZEICHEN Eingabe einer Anführungszeichen eingeschlossenen Zeichenkette (String) von der Tastatur befindet sich der Rechner im "Platzhalter-Modus", jeweils nach Eintippen eines Anführungszeichens ein- und ausgeschaltet wird. In dieser speziellen Betriebsart werden die Bildschirm-Steuerbefehle von der Tastatur, wie z.B. (Cursor Home), nicht ausgeführt, sondern als Steuerzeichen in die Zeichenkette eingefügt und gelangen erst beim Abruf des Strings durch einen PRINT-Befehl zur Ausführung.
Seite 175
INVERTIERTE DARSTELLUNG AUS ANHANG S HOCHAUFLÖSENDE GRAFIK AUF DEM C 64 Der Befehlssatz des C64 enthält keine Grafik-Befehle, der Rechner ist jedoch bereits für Grafik vorbereitet. Die maximale Auflösung von 200 x 320 Bildpunkten läßt sich dadurch erreichen, daß man einen bestimmten Speicherbereich mit dem Bitmuster belegt, das dem gewünschten...
Seite 176
Der erste Schritt zum Erzeugen einer Hi-Res-Grafik besteht darin, das Bit 3 in der Adresse 53272 zu setzen (Zeile 10 des Programms); dadurch wird bewirkt, daß der Speicherbereich ab 8192 für das "Bitmapping" benutzt wird. Um diesen Bereich auf den Bildschirm abzubilden, muß nun noch das Bit 5 in 53265 gesetzt werden (Zeile 20 des Programms), das den "Bit-map-mode"...
Die korrekte Anzahl freier Bytes erhält man, wenn man zu dem angezeigten Wert 65535 hinzuaddiert. ANHANG U BELEGUNG DER FUNKTIONSTASTEN Die Funktionstasten (f1 bis f8) entsprechen den ASCII-Codes 133 bis 140 (vergl. Liste der ASCII-Codes). Die Abfrage des Tastaturpuffers kann in etwa in Form einer GET-Schleife geschehen, wie im folgenden Programm gezeigt wird: 1 REM FUNKTIONSTASTEN...
Seite 178
ANHANG W ABFRAGE DER DREHREGLER UND STEUERKNÜPPEL Abfrage der Drehregler (Paddels): Sind die Drehregler in Port 1 eingesteckt, so werden die Werte, die den Stellungen der Potentiometer entsprechen, in die Adressen 54297 und 54298 eingelesen. Das Drücken der Feuerknöpfe wird in der Adresse 56321 registriert. Dort wird Bit 2 bzw.
Amtsblattverfügung Nr. 1046/1984 is eliminated of radio interference. The German Bundespost has been informed that this unit is on the market and has got the right to check on the mass production if the limits are kept. COMMODORE BUSINESS MACHINES LIMITED...
Seite 184
COMMODORE 64 BASIC, Kurz-Übersicht EINFACHE VARIABLEN EDIER- UND FORMATIERKOMMANDOS Name Bereich LIST listet das ganze Programm Real ±1.70141183E+38 LIST A-B listet die Programmzeilen von A bis B REM Kommentar alles was hinter REMark steht, beeinflußt ±2.93873588E–39 den Programmablauf nicht Integer ±32767...
Seite 185
Commodore GmbH Lyoner Straße 38 D-6000 Frankfurt/M. 71 Commodore AG Langenhagstraße 1 CH-4147 Aesch Commodore GmbH Kinskygasse 40-44 A-1232 Wien Nachdruck, auch auszugsweise, nur mit schriftlicher Genehmigung von COMMODORE. Artikel-Nr. 556400 Änderungen vorbehalten...