Commodore 128 intern
Commodore 128 intern | |||
---|---|---|---|
Sprache | deutsch | ||
Autor(en) | Klaus Gerits, Jörg Schieb, Frank Thrun | ||
Verlag | Data Becker | ||
Jahr | 1985 | ||
ISBN | ISBN 3-89011-098-3 | ||
Neupreis | DM 69,- | ||
Datenträger | |||
Seitenzahl | 507 | ||
letzte Auflage | |||
Genre | Programmieren / Hardware | ||
Information | Mehrere Auflagen erschienen |
Buchrückseite[Bearbeiten | Quelltext bearbeiten]
DAS STEHT DRIN: Ein Standardwerk zum Commodore 128, das für jeden nützlich ist, der tiefer in den Commodore 128 hineinblicken will. Mit ausführlich kommentiertem ROM-Listing des Betriebssystems, Grafik und Soundbausteinen, den Prozessoren und Peripherieanschlüssen. Ein Buch, das für den professionellen Programmierer sehr schnell unentbehrlich wird.
Aus dem Inhalt:
- Der VIC-Chip
- Registerbelegung
- Betriebsarten
- Zeichendarstellung und Grafik
- Ein- und Ausgabesteuerung
- Die ClAs im Commodore 128
- Der serielle IEC-Bus des Commodore 128
- Der Sound-Chip SID
- Der 8563 VDC-Chip
- Pinbelegung
- Nutzung der VDC-Register
- Das Memory-Management, die MMU
- Assemblerprogrammierung
- Kernalroutinen
- Die CPU - 8502
- Das Z-80-ROM
- BASIC-Tokens
- Sprite-Programmierung
- Betriebssystem und Monitorlisting
- Die Hardware
und vieles mehr
UND GESCHRIEBEN HABEN DIESES BUCH:
Engagierte Mitarbeiter des DATA BECKER Teams. Frank
Thrun ist Programmierer in der Softwareabteilung, Klaus
Gerits ist Leiter der Entwicklungsabteilung und Jörg
Schieb ist erfahrener Maschinenspracheprogrammierer.
Alle drei haben sich bereits einen Namen als Fachbuchautoren
gemacht.
Inhaltsverzeichnis[Bearbeiten | Quelltext bearbeiten]
Kapitel 1: Grundsätzliches zum C - 1 2 8 .. ......... 1 1.1 Einführung zum Commodore-128 ............. ....... 1 1.2 Der DATASETTEN-Anschluß .......................... 3 1.3 Der U s e r - P o r t ............................ 4 1.4 Die RS-232-Schnitstelle .......................... 8 1.4.1 Programmierung Baud-Raten ...................... 12 1.4.2 Die Status-Abfrage ............................. 13 1.5 Cartridge-Port ................................... 14 Kapitel 2: Der VIC-Chip .............................. 17 2.1 Registerbelegung des VIC-Chip ........ ........... 20 2.2 Die Betriebsarten des VIC ........................ 25 2.3 Sprites .......................................... 25 2.3.1 Adresse der Sprites ............................ 27 2.3.2 Einschalten der Sprites ........................ 28 2.3.3 Farbe der Sprites .............................. 29 2.3.4 Die Position d e r Sprites .................... 30 2.3.5 Vergrößern ..................................... 31 2.3.6 Hintergrund .................................... 31 2.3.7 Kollision: Sprite-Sprite ....................... 33 2.3.8 Kollision: Sprite-Hintergrund .................. 34 2.3.9 Multi-Color-Sprites ............................ 34 2.3.10 Interrupt durch den VIC - Chip ................ 37 2.3.10.1 Der DATAFANT ................................ 39 2.4 Normale Zeichendarstellung ....................... 41 2.4.1 Verschieben des Video-RAMs ..................... 42 2.4.2 Verschieben des Zeichengenerators .............. 43 2.4.3 Das F a r b - R A M ............................ 44 2.5 Programmierung von Farbe und Grafik .............. 45 2.5.1 Der HI-RES-Modus ............................... 46 2.5.2 Der MULTI-COLOR-Modus .......................... 55 2.5.3 Der MULTI-COLOR-Modus (Text) ................... 57 2.5.4 Der EXTENDED-COLOR-Modus ....................... 58 2.6 Soft-Scrolling (Smooth-Scrolling) ................ 58 Kapitel 3: Ein- und Ausgabesteurung .................. 61 3.1 Allgemeines über den CIA 6526 .................... 61 3.1.1 Pin-Belegung des 40-poligen Gehäuses ........... 61 3.2 Registerbeschreibung der CIA ..................... 62 3.3 E/A-Ports ........................................ 66 3.4 Die Timer ........................................ 67 3.5 Die Echtzeituhr .................................. 68 3.5.1 Echtzeit in BASIC .............................. 69 3.6 Die CIAs im Commodore 128 ........................ 71 3.7 Der Joystick ..................................... 73 3.8 Der serielle IEC-Bus des C-128 ................... 74 3.8.1 Schneller und langsamer Modus .................. 75 3.8.2 Die Geräteadressen ............................. 77 3.8.3 Die Sekundäradressen ........................... 78 3.8.4 Die Systemvariable ST .......................... 79 Kapitel 4: Der Sound-Chip SID ........................ 81 4.1 Der Sound-Controller 6581 ........................ 81 4.1.1 Allgemeines zum SID ............................ 81 4.1.2 Pin-Belegung des 28-poligen Gehäuses ........... 83 4.1.3 Registerbeschreibung des SID ................... 85 4.1.4 Der Analog/Digitalwandler ...................... 88 4.1.4.1 Die Handhabung des A/D-Wandlers .............. 89 4.1.4.2 Die Verwendung von Paddles ................... 90 4.1.5 Programmierung des SID ......................... 92 4.2 Die Filter ....................................... 97 4.3 Synchronisation und Ring-Modulation .............. 99 Kapitel 5: Der 8563 VDC-Chip ......................... 101 5.1 Allgemeines über den VDC-Chip .................... 101 5.2 Die Pinbelegung .................................. 103 5.3 Die Register des VDC-Chips ....................... 104 5.4 Allgemeines zu den VDC-Registern ................. 109 5.4.1 Der Zeichensatz ................................ 118 5.4.2 Das Attribut ................................... 119 5.5 Die Nutzung der VDC-Register ..................... 121 5.5.1 Smooth-Scrolling ............................... 122 5.5.2 Blockweises Kopieren ........................... 124 5.5.3 Vorder- und Hintergrundfarbe ................... 125 5.5.4 Der Cursor-Modus ............................... 125 5.5.5 Die Zeichenlänge und -breite ................... 127 5.5.6 Mehr als 25 Zeilen auf dem Bildschirm .......... 127 5.5.7 Die HI-RES-GRAFIK .............................. 135 Kapitel 6: Das Memory-Management - Die MMU ........... 145 6.1 Einführung in die MMU ............................ 145 6.2 Das Konfigurationsregister ....................... 147 6.2.1 Die Präkonfigurationsregister .................. 149 6.3 Das Mode-Configuration-Register .................. 149 6.4 Das RAM-Configuration-Register ................... 151 6.5 Die Seitenzeiger ................................. 153 6.6 Das Versions-Register ............................ 157 Kapitel 7: Die Assembler-Programmierung .............. 159 7.1 Einführung in die Assembler-Programmierung ....... 159 7.2 Die CPU - die 8502 ............................... 159 7.3 Die Kernal - Routinen und wie man sie nutzt ...... 160 7.3.1 FETCH, STASH und CMPARE ........................ 160 7.3.1.1 FETCH ........................................ 161 7.3.1.2 STASH ........................................ 162 7.3.1.3 CMPARE ....................................... 163 7.3.2 GETCFG ......................................... 163 7.3.3 JSRFAR und JMPFAR .............................. 164 7.4 Die wichtigsten Kernal-Routinen .................. 168 7.4.1 Kernal-Routinen mit Vektoren ab $FF4D .......... 168 7.5 Tips und Tricks .................................. 199 7.5.1 STOP-Taste sperren ............................. 199 7.5.2 STOP-RESTORE-Kombination sperren ............... 200 7.5.3 Der IRQ-Vektor ................................. 201 7.5.4 Ausschalten des BASIC-Interrupts ............... 202 7.5.5 Positionieren des Cursors ...................... 203 7.6 Die Z-80 ......................................... 205 7.6.1 Das Z-8O-ROM ................................... 208 7.7 Boot-Sektor und Boot-Routine ..................... 213 Kapitel 8: Das ROM-Listing ........................... 217 8.1 Das ROM-Listing .................................. 218 8.2 Die Zeropage ..................................... 413 8.3 Alphabetische Aufstellung der Kernal-Routinen .... 435 8.4 Die Token-Tabelle ................................ 443 8.5 Die Zeichensätze ................................. 446 8.6 Die Tastaturmatrix ............................... 459 8.7 Die verschiedenen Rechner-Modi ................... 462 8.7.1 Die verschiedenen Einschalt-Modi................ 466 Kapitel 9: Die Hardware .............................. 469 Kapitel 10: Anhang ................................... 493
Leseprobe[Bearbeiten | Quelltext bearbeiten]
(1. Auflage - Seite 205: Kapitel "Kapitel 7: Die Assembler-Programmierung"; Unterkapitel "7.6 Die Z80")
7.6 Die Z80
Wie Sie ja bereits wissen, ist in Ihrem C128 eine Z80 B
eingebaut. Was die meisten Z80Fans interessieren dürfte, ist
die Frage, wie man diesen Prozessor eingeschaltet bekommt.
Nun, diese Frage ist schnell beantwortet: Im Bit 0 des Mode-
ConfigurationRegister kann man den Prozessor auswählen, der
momentan arbeiten soll. Ist dieses Bit 0 gesetzt, so ist die
Z80 aktiviert. Ein gesetztes Bit bedeutet, daß die 8502
arbeitet. Schaltet man aber die Z-80 über diesen Mechanismus
ein, so kehrt der Rechner aus diesem Modus nie mehr zurück.
Im Commodore 128 befindet sich ein ROM-Baustein, der 4 KBytes Z-80-Code beinhaltet. Nach dem Einschalten oder einem RESET wird dieser Z-80-Code ausgeführt, die Z-80 wird also eingeschaltet. Dieser ROM-Bereich liegt physikalisch ab $D000, wird aber für die Z-80 nach $0000 runtergespiegelt. Nach einem RESET beginnt die Z-80 ihre Arbeit an Adresse $0000. Dieser ROM-Baustein kann softwaremäßig nicht ausgelesen werden.
Unter Kapitel 7.6.1 finden Sie den ersten Teil dieses ROM disassembliert und mit Kommentaren versehen. Auf eine vollständige Auflistung verzichten wir hier. Zu beachten ist, daß diese 4 KBytes eigentlich nichts mit CP/M selbst zu tun haben, sondern lediglich dem Booten von CP/M dienen.
Nachdem die Konfiguration ($3E) ausgewählt wurde, wird abgefragt, ob sich eine Cartridge (/GAME oder /EXROM-Leitung gesetzt) im Expansion-Port befindet. Ist dies der Fall, so wird die Kontrolle an diese Cartridges übergeben. Zuvor wird noch der 64er-Modus eingeschaltet sowie die 8502 aktiviert.
Befindet sich keine Cartridge im Expansion-Port, so wird die Commodore-Taste abgefragt. Dies ist auch eine recht interessante Sache: Wenn Sie beim Einschalten oder beim System- Reset die Commodore-Taste niedergedrückt halten, so wird direkt in den 64er-Modus gesprungen, ohne daß ein BOOTING-Versuch gemacht wird und ohne daß Sie GO 64 eingeben müßten.