Mainboards

Für den C128 sind insgesamt drei Mainboards bekannt. Das ist damit im Vergleich zum PET oder C64 noch überschaubar.

  1. Das erste Mainboard ist vom Original-C128. Es nutzt ursprünglich nur 16 KByte ROMs, kann aber auch auf 32 KByte ROMs umgebaut werden. (Vorsicht beim BASIC-ROM, spezielle Version beachten!)
  2. Bei dem folgenden Mainboard C128CR wurden einige kostensparenden Änderungen vorgenommen. Daher werden nun ausschließlich 32 KByte ROMs verwendet. Dieses Mainboard ist eher selten.
  3. Der nächste Schritt war die Interation der 1571(CR) auf dem Mainboard C128DCR. Zuvor gab es zwar auch schon Geräte mit Diskettenlaufwerk (C128D), hier wurde aber immer eine zusätziche Platine huckepack eingebaut.
PCB ASSY Fabrication Artwork Schaltplan mit 1571 Bezeichnung
310379 ? 310381 310378 Nein C128
250783 355120 ? ? Nein C128CR
250477-01 ? ? 252451 Ja C128DCR

ROMs

Entsprechend dem verwendeten Mainboard gibt es verschiedene ROM-Sätze.

  1. Als 16 KB-Version in ROMs (23128) oder EPROMs (27128) oder
  2. als 32 KB-Version in ROMs (23256) oder EPROMs (27256).

Diese ROM-Sätze liegen auch jeweils in verschiedenen Revisionen vor, da bekannte Fehler nach und nach korrigiert worden sind. Für das Kernal und den Zeichensatz gibt es national angepaßte Versionen, um den landessprachspezifischen Besonderheiten beim Tastaturlayout und der Zeichendarstellung zu genügen. Dabei ist der Zeichensatz für beide Versionen identisch und nur 8 KBytes groß. Hier befinden sich zwei Zeichensätze, ursprünglich der originale Zeichensatz des C64 (901225-01) gefolgt von einen für den C128 angepaßten Zeichensatz. Bei den nationalen Zeichensätzen wurde auf die Trennung zwischen C64- und C128-Modus verzichtet. Der zweite Zeichensatz ist damit auch für den C64 als nationaler Zeichensatz verfügbar.

ROMs im C128(D) - 16 KB ROM-Satz

Artikelnummer Adressbereich ROM-Größe Position ROM-Nummer Beschreibung
318018 $4000-$7FFF (C128) 16 KBytes U33 ROM 2 BASIC 7.0 (C128 Low)
318019 $8000-$BFFF (C128) 16 KBytes U34 ROM 3 BASIC 7.0 (C128 High) und Monitor
318020 $C000-$FFFF (C128) 16 KBytes U35 ROM 4 Editor (C128), CP/M und Kernal (C128)
251913 $A000-$BFFF (C64) und
$E000-$FFFF (C64)
16 KBytes U32 ROM 1 BASIC 2.0 (C64), Editor (C64) und Kernal (C64)
390059 - 8 KBytes U18 - Zeichensatz (erste Hälfte C64 mit 901225-01, zweite Hälfte C128)
- $8000-$FFFF (C128) bis zu 32 KBytes U36 - Funktions-ROM, normalerweise frei

ROMs im C128(D)CR - 32 KB ROM-Satz

Artikelnummer Vergleich Adressbereich ROM-Größe Position ROM-Nummer Beschreibung
318022 318018 und
318019
$4000-$BFFF (C128) 32 KBytes U34 ROM 2/3 BASIC 7.0 (C128) und Monitor
318023 251913 und
318020
$A000-$BFFF (C64) und
$E000-$FFFF (C64),
$C000-$FFFF (C128)
32 KBytes U32 ROM 1/4 BASIC 2.0 (C64), Editor (C64) und Kernal (C64)
Editor (C128), CP/M und Kernal (C128)
- - $8000-$FFFF (C128) bis zu 32 KBytes U36 - Funktions-ROM, normalerweise frei
390059 - - 8 KBytes U18 - Zeichensatz (erste Hälfte C64 mit 901225-01, zweite Hälfte C128)

Obwohl das Board C128 für den Einsatz des 16 KB ROM-Satz ausgelegt ist, kann es auch für die Verwendung von 32 KB ROMs umkonfiguriert werden. Dann können in U32 und U34 zwei 32 KBytes ROMs gesteckt werden. Die Steckplätze U33 und U35 bleiben dann frei. Eine Kompatibilität zum späteren C128(D)CR ist aber nur eingeschränkt vorhanden.

Das Kernal-ROM (U32, auch in nationaler Version) kann nach dem Schließen von J6 uneingeschränkt übernommen werden.

Im Basic-ROM (U34) muß nach dem Schließen von J4 im Gegensatz zum C128(D)CR jedoch erst das Basic High ($8000-$BFFF) und dann das Basic Low ($4000-$7FFF) stehen. Dafür gibt es auch ein gesondertes EPROM (27256) mit der Artikelnummer 390393-01. Dieses ist anstelle des 318022 zu verwenden.

Ferner muß dann auch noch die PLA mit der 128/256 Brücke passend konfiguriert werden.

Basic Low
16 KB für C128
($4000-$7FFF)
Basic High
16 KB für C128
($8000-$BFFF)
Basic
32 KB für C128
($4000-$BFFF)
Basic
32 KB für C128(D)CR
($4000-$BFFF)
Signatur Low
$4000-$7FFB
($7FFC/D)
Prüfbyte Low
($7FFF)
Signatur High
$8000-$BFFB
($BFFC/D)
Prüfbyte High
($BFFF)
Basic Revision
($7FFE und $BFFE)
Beschreibung
318018-02 318019-02 - 318022-01 - $4C - $3A 0 Erste veröffentlichte Version
318018-03 318019-03
Prüfsumme: $9780
390393-01 252343-03 $5CAC $D2 $E266 $8A 1 Zwischenversion
318018-04
Prüfsumme: $9A40
318019-04
Prüfsumme: $6F80
- 318022-02
Prüfsumme: $09C0
$8DEF $61 $CDC8 $C5 1r Letzte veröffentlichte Version
Kernal
16 KB
($C000-$FFFF)
Kernal mit C64-ROM
32 KB
($C000-$FFFF)
Signatur
($C000-$CFF7 und $E000-$FFFF)
($CFFC/D)
Prüfbyte
($CFFF)
Kernal Revision
($CFFE und $FF80)
Beschreibung
318020-03 318023-01 - $C3 0 Erste veröffentlichte Version
318020-04 252343-04 $AB16 $BC 1 Zwischenversion
318020-05
Prüfsumme: $EEC4
318023-02
Prüfsumme: $F324
$8F76 $3C 1r Zweite veröffentlichte Version
318020-06
Prüfsumme: $DFC4
318023-03
Prüfsumme: $E424
$8C3E $3B 2 Letzte veröffentlichte Version

Nationale ROMs

Beim C128 wurden von Anfang an nationale Versionen berücksichtigt. Dazu wurden Anpassungen im C128 Kernal gemacht und ein neuer nationaler Zeichensatz hinzugefügt. Der nationale Zeichensatz ersetzt den C128-Zeichensatz bei der US-amerikanischen Version. Das führt auch dazu, daß die Umschaltungen verschieden sind. Dazu ist der Jumper J7 zuständig.

Bei den nationalen Versionen für Skandinavien (Dänemark, Norwegen, Schweden und Finnland) wurde auch der C64 Kernal geändert. Dies betraf ausschließlich die geänderte Tastaturbelegung. Hier sind bei dem 16 KB ROM-Satz also drei geänderte ROMs vorhanden, beim 32 KB ROM-Satz nur zwei.

Nationale ROMs im C128(D) - 16 KB ROM-Satz

Artikelnummer Landeskennung
($CFF9)
Länder Position Beschreibung
315078 00 Deutschland (DE) und
Österreich (AT)
U35 Editor DIN, CP/M und Kernal DIN
315079 - Deutschland (DE) und
Österreich (AT)
U18 Zeichensatz DIN
325166 02 Frankreich (FR) und
Belgien (BE)
U35 Editor F/B, CP/M und Kernal F/B
325167 - Italien (IT),
Frankreich (FR) und
Belgien (BE)
U18 Zeichensatz I/F/B
325168 06 Italien (IT) U35 Editor IT, CP/M und Kernal IT
325169 - Italien (IT) U18 Zeichensatz IT (nie veröffentlicht, siehe 325167)
325170 08 Spanien (ES) U35 Editor ES, CP/M und Kernal ES
325171 - Spanien (ES) U18 Zeichensatz ES
325172 03 Schweiz (CH) U35 Editor CH, CP/M und Kernal CH
325173 - Schweiz (CH) U18 Zeichensatz CH
325174 07 Dänemark (DK) U35 Editor DK, CP/M und Kernal DK
325175 - Dänemark (DK) U18 Zeichensatz DK
325176 - Dänemark (DK) U32 C64 Basic und Kernal DK
325177 05 Norwegen (NO) U35 Editor N, CP/M und Kernal N
325178 - Norwegen (NO) U18 Zeichensatz N
325179 - Norwegen (NO) U32 C64 Basic und Kernal N
325180 04 Schweden (SW) und
Finnland (FI)
U35 Editor SW/FI, CP/M und Kernal SW/FI
325181 - Schweden (SW) und
Finnland (FI)
U18 Zeichensatz SW/FI
325182 - Schweden (SW) und
Finnland (FI)
U32 C64 Basic und Kernal SW/FI

Nationale ROMs im C128(D)CR - 32 KB ROM-Satz

Artikelnummer Landeskennung
($CFF9)
Länder
318077 00 Deutschland (DE) und
Österreich (AT)
318078 02 Frankreich (FR) und
Belgien (BE)
318079 06 Italien (IT)
318080 08 Spanien (ES)
318081 03 Schweiz (CH)
318082 07 Dänemark (DK)
318083 05 Norwegen (NO)
318084 04 Schweden (SW) und
Finnland (FI)
Artikelnummer Sprachen Prüfsumme mit Übertrag
nur nationaler Teil
(4096 Bytes)
($CFF9)
Signatur
nur nationaler Teil
(4096 Bytes)
($CFFA/B)
nationaler Teil basiert auf
315079 Deutsch $FF $91F3 324242-01 (8296)
325167 Italienisch,
französisch und
belgisch
$11 $03DC  
325171 Spanisch $CF $7405  
325173 Schweizerisch $11 $AE22  
325175 Dänisch $FF $FD02  
325178 Norwegisch $11 $3D99  
325181 Finnisch und
schwedisch
$08 $BC5B 325018-02
901225-01 (C64)

Prüfsummen und -bytes

Bei den ROMs für den C128 kommen mehrere Verfahren zum Einsatz. Erst einmal wären da die Prüfsummen, die auf den EPROMs aufgedruckt sind. Diese sind die unteren 16 Bit einer fortlaufenden Addition aller Datenbytes des betreffenden EPROMs. Eine Überprüfung aus dem System heraus ist beim Kernal nicht möglich!

Eine Prüfung der ROMs beim Start des Systems erfolgt auch auf diese Art der Prüfsumme. Dabei ist aber zu berücksichtigen, daß im Kernal der CP/M-Teil ($D000-$DFFF) nicht vom 8502 adressierbar ist und daher bei der Bildung dieser Prüfsumme nicht berücksichtigt wird. Außerdem liefern die Adressen $FFF0 bis $FFF4 die Register der MMU (mit den Werten $00, $3F, $7F, $01 und $41) und nicht des ROMs. Bei dieser Prüfung wird nur ein Byte (8 Bit) als Prüfsumme berechnet. Evtl. Überträge werden verworfen. Dieses Byte muß mit dem höherwertigem Byte der Startadresse des ROMs ($40, $80 oder $C0) übereinstimmen. Um das zu erreichen existiert in jedem ROM (außer dem Zeichensatz) ein Prüfbyte (siehe obige Tabelle) das entsprechend ermittelt wird.

Für die Bildung der Prüfsumme (auch nur 8 Bit) des Zeichensatz kommt ein vom PET bekanntes Verfahren zum Einsatz. Hier wird der Übertrag mit berücksichtigt und gesondert aufsummiert. Alternativ kann diese Prüfsumme auch aus der kompletten Prüfsumme (mind. 32 Bit) durch Aufsummieren der einzelnen Bytes gebildet werden. Diese Prüfsumme wird wie auch die Signatur weder zum Begin noch später im Betrieb geprüft. Sie steht aber Testprogramme zur Verfügung.

Signaturen

Die Signaturen wurden erst mit der Revision 1 eingeführt. Alle Signaturen (Basic-, Kernal und Zeichensatz-ROMs) werden nach dem gleichen Algorithmus berechnet, welcher auch schon bei der 1571 angewandt wurde. Jedoch erfolgt die Berechnung hier ohne den dortigen Längen- und Überlauffehler. Die bei der Berechnung zu berücksichtigenden Bereiche unterscheiden sich jedoch und sind wie folgt:

  • beim Basic-ROM (immer low und high getrennt getrachtet) werden alle Bytes bis auf die letzten vier Bytes am Ende ($4000-$7FFB und $8000-$BFFB, jeweils nur 16380 Bytes),
  • beim Kernal-ROM werden alle Bytes bis auf sieben Bytes in der Mitte ($C000-$CFF8 und $D000-$FFFF (?), daher nur 16377 Bytes) und
  • beim Zeichensatz-ROM werden alle Bytes des nationalen Zeichensatz (nur 2048 Bytes) berücksichtigt.

Eine richtige genormte CRC-Berechnung (wie später bei der 1581) kommt hier nicht zur Anwendung. Die Signatur wird wie folgt berechnet:

  1. Setze die Signatur auf 0,
  2. duchlaufe alle zu berücksichtigenden Datenbytes,
  3. durchlaufe alle Bits des Datenbytes,
  4. bilde das neue Bit 0 für die Signatur (siehe 5.) aus dem Bit 0 des Datenbytes exklusiv verodert mit den jetzigen Bits 15, 12, 8 und 6 der Signatur,
  5. schiebe die Signatur um ein Bit nach links (nehme das neue Bit 0 von 4.) und
  6. schiebe auch das Datenbyte um ein Bit nach rechts.