Das C64-Profihandbuch

Aus C64-Wiki
Wechseln zu: Navigation, Suche


Das C64-Profihandbuch
Cover/Buchdeckel
Sprache deutsch
Autor(en) Hans-Lorenz Schneider, Werner Eberl
Verlag Markt & Technik
Jahr 1985
ISBN ISBN 3-89090-110-7
Neupreis 52,- DM (47,80 sFr; 405,60 öS)
Datenträger -
Seitenzahl 413
letzte Auflage 1
Genre Profi, Programmieren, Hardware
Information




Vorwort[Bearbeiten]

In diesem Buch haben wir für Sie wichtige und nützliche Informationen über den Commodore 64 zusammengetragen. Der Begriff 'Profi' ist einerseits in seinem ursprünglichen Sinn zu verstehen (professionelle Anwendungen), es ist aber auch an die Leser gerichtet, die fast alle allgemeinen Fähigkeiten an ihrem Commodore 64 ausgereizt haben. Einiges aus dem Inhalt wird sicherlich bekannt sein, aber unsere Absicht war die Zusammenstellung eines Nachschlagewerkes. Das Buch soll eine umfassende Information über Ihren Rechner auf höherer Ebene darstellen.

Das umfangreiche Stichwortverzeichnis soll Ihnen die Handhabung des vorliegenden Buches als Nachschlagewerk erleichtern, obwohl die Themata nicht lexikographisch behandelt, sondern in logische Gruppen untergliedert sind.

Abschließend sei noch zu erwähnen, dass die Programme mittels des - aus der Zeitschrift 64er bekannten - Checksummers ausgedruckt wurden, um Ihnen die Arbeit zu erleichtern. Eine Beschreibung und das Listing des Checksummers finden Sie im Anhang.

Buchrückseite[Bearbeiten]

In diesem Buch sind alle wichtigen und nützlichen Informationen für professionelle Anwendungen mit dem Commodore 64 zusammengetragen. Nicht nur für Profis, auch für Anwender, die mehr über ihren 64er erfahren wollen, ist dieses Buch eine Hilfe.

Das erste Kapitel beschäftigt sich mit allgemeinen Algorithmen, die nicht nur speziell für den 64er angewendet werden können, sondern auch auf andere Rechner übertragbar sind.

Im zweiten Kapitel sind einige Utilities (getrennt nach BASIC- und Maschinenprogrammen) aufgeführt. Da sich BASIC-Erweiterungen im Commodore 64 ohne Hardwareänderungen sehr leicht durchführen lassen, wurden die im zweiten Teil vorgestellten Maschinenprogramme auch als BASIC-Erweiterung ausgebaut. Besonders nützlich für den Profi sind die erweiterten PEEK- und POKE-Funktionen.

Das dritte Kapitel widmet sich den sechs Verbindungen des Rechners nach außen hin zu, und im vierten Kapitel sind einige nützliche Tips und Tricks aufgezählt, die von einzelnen PEEKs und POKEs über SYS-Aufrufe bis hin zu kurzen Programmen reichen. Das letzte Kapitel stellt die Internas des Commodore 64 in tabellarischer Form sowie in einigen Abbildungen zusammen. Besonders wird hier auf den Speicher und die Registerverteilung (VIC, SID, CIA) eingegangen, aber auch die im ROM implementierten Routinen werden angesprochen. Im Buch befindet sich auch eine ausführliche Fehlerbeschreibung, sowohl der Fehler des Rechners als auch der Floppy. Neben dem Literatur- und einem umfangreichen Stichwortverzeichnis finden Sie im Anhang zwei Übersichten zur Übernahme der vorgestellten BASIC-Erweiterungen in Ihrem Rechner (Hex-Listing, BASIC-Loader).

Inhaltsverzeichnis[Bearbeiten]

Vorwort                                                     5
Einleitung                                                  7
Inhaltsverzeichnis                                          9

1.       Allgemeine Routinen - nicht nur für den C64       15
1.1      Variablendefinitionen                             17
1.2      Menütechniken                                     24

1.3      Sortierverfahren                                  27
1.3.1    Maxsort / Minsort                                 28
1.3.2    Heap-Sort    (Prinzip)                            29
1.3.3    Quicksort                                         30
1.3.4    Andere Sortierverfahren                           34

1.4      Selektieren                                       35
1.5      Mischverfahren                                    42

1.6      Rund ums Datum                                    49
1.6.1    Plausibilitätsprüfung                             49
1.6.2    Datum platzsparend speichern                      51
1.6.3    Nach Datum sortieren                              52
1.6.4    Selektieren durch Vergleich                       53

1.7      Boolsche Operatoren                               54
1.8      Führende Nullen anfügen                           57
1.9      Eliminieren anhängender Leerzeichen               58
1.10     Kaufmännische Zahldarstellung                     58
1.11     Runden                                            60
1.12     Präfix-Suche                                      60
1.13     Speicherplatz einsparen                           63
1.14     Rechenzeit verkürzen                              65
1.15     Index-Funktion                                    67
1.16     Zahlkonvertierungen                               67

2.       Utilities                                         75

2.1      Basic-Utilities                                   77
2.1.1    Joystick-Steuerung                                78
2.1.2    Paddles-Steuerung                                 83
2.1.3    Cursor-Positionierung                             86

2.1.4    Parameterübergabe zwischen Programmen             87
2.1.4.1  Übergabe durch Overlay                            87
2.1.4.2  Kaltstart                                         88
2.1.4.3  Übergabe über Bildschirm                          89
2.1.4.4  Übergabe über freien RAM-Bereich                  91
2.1.4.5  Übergabe über temporäre Dateien                   91

2.1.5    Data-Anweisungen generieren                       92
2.1.6    Disk-Status bestimmen                             93
2.1.7    Eingebaute Uhr                                    94
2.1.8    Zufallsgenerator                                  95
2.1.9    Zeichensatz ändern                                99
2.1.10   Sprite-Editor                                    100

2.2      Maschinenroutinen                                105 

2.2.1    Basic-Erweiterungen                              108
2.2.1.1  Symbol Vereinbarungen und Wortreservierungen     108
2.2.1.2  Initialisierung                                  110
2.2.1.3  Der AUS-Befehl                                   112
2.2.1.4  Dekodierung von Befehlen                         113
2.2.1.5  Dekodierung von Funktionen                       116
2.2.1.6  Interrupt-Manager                                118
2.2.1.7  Übersicht der neuen Befehle                      120
2.2.1.8  Parameterübergabe                                121

2.2.2    Zahlkonvertierungen                              127
2.2.2.1  Integer nach Fließkomma                          127
2.2.2.2  Fließkomma nach Integer                          128
2.2.2.3  Signed-Integer nach Fließkomma                   128
2.2.2.4  Fließkomma nach Signed-Integer                   129
2.2.2.5  Dezimalstring nach Fließkomma                    129
2.2.2.6  Fließkomma nach Dezimalstring                    130
2.2.2.7  Hexadezimal nach Integer                         130
2.2.2.8  Binär nach Integer                               131
2.2.2.9  Integer nach Hexadezimal                         133
2.2.2.10 Integer nach Binär                               134
2.2.2.11 Rahmenprogramm zur Nutzung der Zahlkonv.         134

2.2.3    Erweiterte PEEK- und POKE-Funktionen             137
2.2.3.1  PEEK in RAM unter ROM (REEK) und Z.gen.(CHEEK)   137
2.2.3.2  16-Bit-PEEK (DEEK)                               139
2.2.3.3  16-Bit-POKE (DOKE)                               140
2.2.3.4  16-Bit-PEEK  in RAM unter ROM (DREEK)            141 
2.2.3.5  POKE in RAM unter I/O (ROKE)                     142

2.2.4    Zeichengenerator  in RAM kopieren                143
2.2.5    Austausch von RAM-Bereichen (SWAP)               144
2.2.6    Laden ohne Veränderung der Basic-Zeiger          147
2.2.7    Speichern von RAM-Bereichen                      148
2.2.8    Index-Funktion                                   150

2.2.9    Floppy-Routinen                                  152
2.2.9.1  Hilfsroutinen                                    153
2.2.9.2  Disk-Status lesen                                157
2.2.9.3  Programmzeile lesen                              158
2.2.9.4  Textzeile lesen                                  160
2.2.9.5  Directory / Programmdatei anzeigen (VIEW)        161

2.2.10   Integer-Division                                 163

2.2.11   Zeitbehandlung mit der CIA                       164
2.2.11.1 Pause mit Timer                                  164
2.2.11.2 Uhrzeit setzen                                   165
2.2.11.3 Uhrzeit lesen                                    168
2.2.12   Key-Click                                        170
2.2.13   Grafikbefehle                                    172
2.2.13.1 Grafik einschalten                               175
2.2.13.2 Grafik ausschalten                               178
2.2.13.3 Punkt setzen                                     179
2.2.13.4 Textzeichen in Grafik                            185
2.2.14   Funktionstasten programmieren                    187
2.2.15   Komfortable Tonerzeugung                         195

3.      Ports                                             203
3.1     Userport                                          206
3.2     Controlport                                       209
3.3     Expansionsport                                    210
3.4     Serialport                                        212
3.5     Audio-Video-Port                                  215
3.6     Kassettenport                                     216

4.      In der Kürze liegt die Würze - Tips und Tricks    217
4.1     Diverse PEEK's,  POKE's und SYS-Aufrufe           219
4.2     Programmaustausch mit anderen Commodore-Rechnern  236

5.      Tabellen und Diagramme                            239
5.1     Speicher und Register                             241
5.1.1   Zeropage und weitere wichtige Adressen            241
5.1.2   Speicheraufteilung                                247
5.1.3   VIC-Register,  Sprites und Grafikspeicher         255
5.1.4   Sound-Register (SID)                              260
5.1.4.1 Registerübersicht                                 260
5.1.4.2 Frequenztabelle                                   262
5.1.5   CIA-Register (Complex Interface Adapter)          265
5.1.5.1 Adressenübersicht                                 265
5.1.5.2 Registerbeschreibung                              267
5.1.6   Zeichensatz (Bildschirmcodes)                     273

5.2     ROM-Routinen                                      299
5.2.1   KERNAL-Routinen                                   299
5.2.2   KERNAL-Vektoren                                   305
5.2.3   Basic-Routinen                                    306
5.2.4   Basic-Vektoren                                    317
5.2.5   Variablenzeiger                                   321

5.3     Prozessor-Befehle                                 324
5.3.1   Alphabetische Übersicht                           324
5.3.2   Numerische Übersicht                              326

5.4     Hex-Dez-Tabelle                                   330
5.5     ASCII-  und CHR$-Codes                            331
5.6     Steuerzeichen auf Drucker                         334
5.7     Tastaturmatrix                                    335
5.8     Prioritäten der Operatoren                        336
5.9     Statusübersicht                                   337
5.10    Gerätenummern und Sekundäradressen                338

5.11    Fehlermeldungen                                   340
5.11.1  Basic-Fehlermeldungen (Rechner)                   340
5.11.2  Fehlermeldungen von der Floppy                    352

Anhang                                                    361
Anhang 1: Literaturverzeichnis                            363
Anhang 2: Vergleichsoperatoren                            364
Anhang 3: Basic-Loader der Erweiterungen                  365
Anhang 4: Hex-Listing der Basic-Erweiterungen             385
Anhang 5: Interpretercodes und Abkürzungen                395
Anhang 6: Stichwortverzeichnis                            396
Anhang 7: Checksummer                                     411

Leseprobe[Bearbeiten]

(Seite 95; Kapitel "2.1.8 Zufallsgenerator")

Die Basic-Funktion RND arbeitet je nach Vorzeichen des Argumentes unterschiedlich.

Für negative Argumente ist der Wert nicht zufällig, sondern eine Funktion des Arguments.

Für positive Argumente wird der neue Zufallswert aus dem alten durch einen einfachen Algorithmus gebildet. Das Setzen des Startwertes kann durch einen Aufruf der RND-Funktionen mit negativen Argumenten erfolgen.

Das Argument 0 bewirkt, daß die Zufallszahl anhängt von dem momentanen Stand des Timers A im CIA1 und dem Stand der Uhr (Sekunden und 1/10 Sekunden) und diesem CIA. Es ist einzusehen, daß weder für den Argument 0 noch für positive Argumente eine optimale Verteilung der Zufallswerte vorliegen kann. Eine etwas besseren Verlauf erhält man, wenn man das Rauschregister des SID verwendet. Das folgende kleine Programm ergibt zufällige Werte zwischen 0 und 255

100 SI=54272      : REM BASISADRESSE SID            <216>
110 POKE SI+24,128 : REM STIMME 3 STILL             <203>
120 POKE SI+18,128 : REM STIMME 3 RAUSCH            <022>
130 POKE SI+15,255 : REM FREQUENZ ST. 3             <206>
200 PRINT PEEK(SI+27) : REM ZUFALLSWERT             <079>
210 GOTO 200          : REM ENDLOSSCHLEIFE          <190>

Meinung[Bearbeiten]

Werner: "Sicher eins der besseren Bücher für den C64."

Weblinks[Bearbeiten]