Mainboards
Für den C128 sind insgesamt drei Mainboards bekannt. Das ist damit im Vergleich zum PET oder C64 noch überschaubar.
- 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!)
- Bei dem folgenden Mainboard C128CR wurden einige kostensparenden Änderungen vorgenommen. Daher werden nun ausschließlich 32 KByte ROMs verwendet. Dieses Mainboard ist eher selten.
- 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.
- Als 16 KB-Version in ROMs (23128) oder EPROMs (27128) oder
- 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:
- Setze die Signatur auf 0,
- duchlaufe alle zu berücksichtigenden Datenbytes,
- durchlaufe alle Bits des Datenbytes,
- 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,
- schiebe die Signatur um ein Bit nach links (nehme das neue Bit 0 von 4.) und
- schiebe auch das Datenbyte um ein Bit nach rechts.