How the C128 was incompatible… with the C128

After my articles on the “inner space” of the C64 models and the MAX Machine, I thought it would be a good idea to take a closer look at the C128s and see how the 3 different models (C128, C128D and C128DCR) are similar, or rather quite different from each other.  Digging deeper into the components and the history behind these 3 models, I remembered that compatibility back in the 80s was nowhere near as what we expect it to be today, but surely no-one back then expected the C128 not to be compatible… with itself.
Why was this?  Read on!

Not long after Commodore released its C128, they decided to market the C128D (predominantly in Europe), which basically was the C128, but with separate keyboard and a built-in 1571 disk drive.  The C128D surely had a more professional look, but on the inside, it was exactly the same as the regular C128, as it had the same mainboard.
Below you can see the mainboard of the C128 and C128D with the main components marked and explained.

C128 – Click on the image for a high-res version

C128D – Click on the image for a high-res version

1. CIA – I/O for the user port (just above) and the serial port.
2. Free socket for your own ROMs
3. 16 Kbyte ROM: C128 Kernal and 40/80 character editor
4. RGB section, with on the left the 80 character video controller 8563 and on the right (bottom) 16 Kbyte 8-bit video RAM for the 8563.
5. Composite section, with on the right, the VIC 8564 (which is almost identical to the C64 VIC)
6. SID 6581 (as in the C64)
7. The MMU
8. Operating System and Basic ROM for the C64 modus, 16 Kbyte ROM
9. 16 Kbyte ROM C128 Basic (2/2)
10. 16 Kbyte ROM C128 Basic (1/2)
11. 128 Kbyte RAM (16x 8 Kbyte 8-bit RAM)
12. 2 Kbyte 8-bit CMOS RAM, the color RAM for the VIC 8564
13. PLA 8721
14. CPU 8502
15. CPU Z80
16. CIA – for the keyboard and joystick/control ports
17. ASCII character set

The built-in 1571 in the C128D was similar to its external counterpart, with a similar mainboard and components.

1571 disk drive – Click on the image for a high-res version

I. CIA 65C22, programmable I/O for the controller functions
II. CPU 6502 for the 1571 disk drive
III. 2 Kbyte 8-bit RAM, the “floppy RAM”
IV. The DOS-ROM (v3.0) for the 1571
V. CIA 65C22, programmable I/O for the serial bus
VI. CIA 6526
VII. 251828 Controller
VIII. WD1710 Controller, needed for reading CP/M disks

Commodore then went on to release, this time world-wide, the C128DCR (where CR stands for “Cost Reduced”) and this becomes clear when you look at the inside… the two mainboards (the C128 and 1571) are merged into one, and the plastic case (which featured a carrying handle and storage space for the keyboard – although it is not clear to me why you would want to use it in this “portable” fashion) was replaced by a metal shell.

Shortly after the introduction of the DCR, reports started to come in that software which ran just fine on the C128 and C128D was performing badly on the DCR.  Putting the two mainboards on one and replacing the ROMs had its toll…
Programs that relied on the ROM routines of mainly the 1571 suddenly found themselves amidst different routines, which of course caused them to fail.
The built-in 1571 came equipped with DOS v3.1, whereas the traditional external 1571 and the built-in model in the C128D had v3.0 (you could verify this new DOS version by going into the monitor (C128 mode) with “F8” and then entering “@,UJ”.  This gave back the message “73,CBM DOS V3.1 1571,00,00”).
The new DOS caused several routines to be “shifted” by a couple of bytes.  A program that used to jump to $877C (control of the LED) now found itself in the middle of a different routine.
So would switching back to the old DOS be an option then?  Sadly no, as the components from the 1571 mainboard were now integrated into the C128 mainboard and drastically changed.
For instance, the 2 controllers (The WD1710 and the 251828) together with the CIA 6526 (the VI, VII and VIII on the image above) were now integrated along a new concept (see IX, X, XI below), making for a completely different usage as neither a timer, nor real-time clock, nor programmalble port were now available due to the missing 6526.
The new C128DCR was also a bit of a burden for manufacturers of hardware expansions as they had to account for the new configurations.  For instance, in the C128 and C128D, whereas the Operating System and Basic ROM for the C64 modus (indicated with 8) and the C128 Kernal and 40/80 character editor (indicated with 3) were separate 16 Kbyte ROMs, they now found themselves together in a new 32 Kbyte ROM (indicated with 8a).
The C128DCR also came with a replacement for the videocontroller: the newer 8568 (indicated as 4a), replacing the 8563 (indicated as 4).  Although practically identical they were not pin-compatible, so care had to be taken if you wanted to replace this chip with a new one.
On the upside, it now had 64 Kbyte of video RAM, whereas the 8563 only had 16 Kbyte to play with.

Taking a further closer look at the mainboard of the C128DCR, we can clearly see the different components.
Below you’ll see the mainboard of the DCR with the components that are also to be found on to the C128D and 1571 marked as above.  The modified components are numbered as above but have an “a”.

C128DCR – Click on the image for a high-res version

4a. RGB section, with on the left the new 80 character video controller 8568 and on the right 64 Kbyte 8-bit video RAM for the 8568.
6a. SID 6580
8a. Operating System and Basic ROM for the C64 modus, together with the C128 Kernal and 40/80 character editor in a 32 Kbytes ROM (C64 in the lower 16 Kbytes, the C128 in the upper 16 Kbytes), hence merging the previous 16 Kbytes ROM (indicated 8 and 3)
9a. C128 Basic in a 32 Kbyte ROM, merging the previous 2 chips (indicated 9 and 10)
11a. 128 Kbyte RAM (in 4 chips)
IVa. The new DOS-ROM (v3.1) for the 1571
IX, X, XI Completely reworked configuration replacing the old VI, VII, VIII

So, having taken a closer look at the mainboards and components of the C128 models and the implications that the new models brought, one gets a better understanding of the many challenges software and hardware manufacturers had to face back in the 80s whilst developing new products for the vast array of different systems that were on the market.
Something we now take for granted like compatibility between systems, surely was more “science fiction” back then…

Share This Post


4 Responses to How the C128 was incompatible… with the C128

  1. Pingback: A graphics booster for the C128 | A Commodore Geek's Blog

  2. Wow, good writeup, I actually had no idea what happened after I leftin so far as the D model. The original C128D WAS a regular C128 with an extra reset switch stuffed to reset the 1571, etc, and it was SUPPOSED to release at the exact same time as the regular C128. The effort we put into trying to release two models at the exact same time actually endangered the core C128 effort, for example the hole in the PCB for the D model caused an extra 72 hours of manual PCB routing. A straight through three shifts times three days, I slept in the lab the entire time in my Army issued sleeping bag and air mattress against the computer-room cold and told the guy’s to tap me on my foot to wake me up.

    The D was a simple and sensible thing as originally envisioned, leave it to the post-Tramiel brain-dead management to screw up something already done at great cost and not a little bit of trauma.

    Bil Herd –

  3. Wow! Great story, as always, Bil! Always good to have more of an understanding of how these old machines were actually engineered.

    It would seem that your hard work did, in fact, result in the original 128D–just that it was only released overseas. And then they decided to do to the 128D what they did to the C64C/G with the short board (even using the same new SID and VIC-II). It makes sense.

    They just should have been more careful with the ROM JMP locations, although it sounds like it was at least mostly just the DOS ROM that shifted locations.

  4. Ma non erano prevedibili i problemi di slittamento delle routine utilizzando il DOS-ROM (v3.1) per il 1571DCR ?
    L’unico vantaggio che riconosco al DOS-ROM 3.1 è l’accesso leggermente più veloce ai dischi formattati per il 1541 .

    Comunque io ricordo anche che se volevi mettere la ROM CBM aggiornata *originale* 3.1 (p/n 310.654-05)
    continuava ad essere visualizzata come
    versione 3.0 quando richiesto.
    Per informazione, la DOS-ROM 3.1 utilizzata negli Stati Uniti per il C128DCR (case metallico) è indicata con p/number CBM 318047-01.

    Comunque le due ROM dei drive 1571 e 1571DCR non dovrebbero essere usate in modo intercambiabile , appunto per le differenze che le caratterizzano…. e che caratterizzano anche quelle progettuali della scheda madre del C128DCR.

    Bell’articolo, Complimenti!!

Leave a Reply

Your email address will not be published. Required fields are marked *