Digital Archeology

Setting the Record Straight on 2.7 and 2.30 CDTV ROMs

Setting the Record Straight on 2.7 and 2.30 CDTV ROMs

The publically available versions 2.7 and 2.30 CDTV OS ROMs/Extended ROMs, are often used to upgrade CDTV players. While they do work in a CDTV player, there are some minor incompatibilities CDTV owners need to be aware of.

So, first here’s the TL;DR for everyone with a 30 second attention span: the 2.7 and 2.30 ROMs were not produced for the CDTV player, but for the A570 CD-ROM addon. Because of hardware differences between a CDTV player and an A570, some of the resident modules in these ROMs don’t work as they are supposed to when put in a CDTV player. Specifically, 1) some of the CDTV memory card functionality is broken (cardmark.device is missing), 2) writes to the CDTV player’s internal bookmark memory use the wrong type of write routines, and 3) you’ll get a red boot screen if there’s no floppy drive connected to the CDTV player. Every single publically available 2.7 and 2.30 ROM out there, whether advertised as being for CDTV or not, is just the A570 ROM or a slightly modified version thereof. Even the modified 2.30 ROM from Cloanto which fixes the red boot screen issue still suffers from the first two problems, which, to my knowledge, have not been diagnosed before.1

Should you worry if you’re using these ROMs? No, I’m pretty sure it’s safe to use them. They will not damage your CDTV player. If you don’t care about the missing CDTV memory card compatibility and the imperceptibly slower writes to bookmark memory you can keep using these ROMs. I didn’t write this article to scare anyone, but to raise awareness of this issue. While I suspect most CDTV owners will gladly accept this trade off in order to gain Kickstart 2+ compatibility, there are those of us who care about preserving and using CDTV players as they originally were, with all their functionality intact, regardless of whether such functionality is often used or not (like cardmarks e.g.). It should be made clear that these ROMs have compatibility issues, however minor they are. I hope this article also contributes to setting the record straight from a historical perspective that neither of these two ROM versions were made for CDTV. The 2.7 version especially is often incorrectly considered to be made for CDTV. This is probably based on the fact that the 2.7 ROM does not have an A690ID resident module and that it lacks the red boot screen issue. However, it too suffers from the bookmark and cardmark related issues outlined above.

Now, if you’re interested in the technical details behind the afforementioned incompatibilities and possible solutions, read on! 🙂

ROM Versions

There are 3 major versions of ROMs we can identify for the CDTV platform:2

  • 1.x: ROM versions for the classic CDTV player (model CD1000)
  • 2.x: ROM versions for the A570/A690 CD-ROM drive addon
  • 3.x: ROM versions for the unreleased CDTV-CR (model CD500)

Every CDTV OS ROM that is currently available online was originally only intended to be used with the devices as described in the table above. However, because the CD1000 player and the A570/A690 are very similar devices, it is possible to use the 2.7 and 2.30 ROMs on a CD1000 and have an almost fully working system. However, the 3.x ROMs will only work with the CD500, because its hardware is radically different from the CD1000 and the A570/A690.

Now that we have the ROM versions cleared up, let’s look at the first incompatibility issue of the 2.7/2.30 ROMs: the missing cardmark.device support. But to understand that, we need a little primer on bookmarks and cardmarks!

Bookmarks and Cardmarks

The CDTV platform has the notion of so called bookmarks. Because you can’t save anything to CD-ROM, an alternate way of storing snippets of data (like save games, user preferences, etc) was needed. These snippets of data are called bookmarks in the CDTV OS and their functionality is stored in the bookmark.device module of the CDTV OS ROMs. Very few titles used this functionality, but there will always be at least one bookmark there, and that is the CDTV Preferences bookmark. All the changes you make in the CDTV Preferences screen (language, screen saver timer, interlacing, etc.) are saved as a bookmark.

The CDTV Preferences screen – these settings are saved in bookmark memory

Bookmarks on the CD1000 are stored in bookmark memory at $DC8000, which is a region of address space that is mapped to 16K of SRAM present on the CD1000’s motherboard. This SRAM is line-backed, so that even when you turn the CDTV player off, the SRAM is still powered and bookmarks are preserved3

The CD1000 also supports front-loading memory cards (models CD1401 and CD1405) as potential carriers of bookmarks. These memory cards contain battery-backed SRAM, which is mapped to memory address $E00000 in the CD1000’s address space. To differentiate between bookmarks on the internal SRAM and bookmarks on memory cards, bookmarks on memory cards are called cardmarks and are exposed through cardmark.device. The data format of cardmarks is 100% identical to bookmarks. In fact, cardmark.device shares the same code as bookmark.device. It only points to a different base memory address for its cardmark store. This is why cardmark.device does not appear as a separate resident module in the ROM, it is created automatically by bookmark.device whenever it detects a memory card that has been formatted for cardmark use.

The CD-1401 64K memory card for the CDTV player

So what about the A570 CD-ROM drive addon, then? Well, the A570 is not just a CD-ROM drive for the A500. It also implements the CDTV OS and as such needs to support bookmark functionality. Bookmarks on the A570 are stored at the same memory address as on the CD1000 ($DC8000), however this region is mapped to EEPROM memory instead of SRAM. That’s why the A570 will retain its bookmarks even when disconnected from power.

Then there’s also the A690, which didn’t come with EEPROM but with SRAM, just like the CD1000. However, its SRAM was not line-backed, but battery-backed by a battery on the motherboard. Confused? Here’s a diagram I put together that will hopefully illustrate the various constellations of devices, OS ROM versions and memory types.

Diagram of bookmark memory stores on the CDTV platform

Looking at the diagram above it should become apparent why the bookmark.device modules in both the 2.7 and 2.30 ROMs do not support a cardmark.device. The A570 does not support any memory cards. It only has bookmark memory. As a consequence, if you install these ROMs in a CD1000 it becomes impossible to create, read, update or delete cardmarks on the memory card.

EEPROM Writes

The second issue, which does not lead to loss of functionality, but is additional proof that the 2.7 and 2.30 ROMs were released for the A570 and not the CD1000, lies again in the bookmark.device driver, specifically the bookmark write routines. As you can see from the diagram above, the A570’s bookmarks are stored on EEPROM. Because EEPROM is very different from SRAM or DRAM, the code that writes to bookmark memory in the 2.7 and 2.30 ROMs is different:

  • EEPROM writes need to be word-size (16-bits), so the write routines have been altered to accomodate this.
  • EEPROM is a lot slower to write to than SRAM, so after each write, bookmark.device waits for the write to actually complete by going into a wait loop, constantly checking the address that was just written to, until it matches the value that should have been written.

2.0 CDTV OS ROM

Recently a version 2.0 CDTV OS ROM was “discovered” over on the CDTV users group on Facebook. This ROM version seems to have originally shipped with the A690 prototype CD-ROM drive addon. It was previously not widely known, but has now finally been dumped and preserved thanks to efforts of members of the group.

The 2.0 CDTV OS ROM boot screen

From examining this ROM, there are already a few interesting details I have found about it:

  • The writes to bookmark memory use “normal” code, just like the 1.0 ROM, because the A690 has SRAM for its bookmarks store, just like the CD1000.
  • cardmark.device functionality is still intact! I suspect Commodore only removed this in later builds of the CDTV OS, when they needed to rewrite more of bookmark.device to accomodate the switch from SRAM to EEPROM in the A570.
  • Unfortunately, it also suffers from the red boot screen when no floppy drive is connected.
  • It seems compatible with Kickstart 2. I haven’t done any extended testing, but the boot screen comes up, titles load and Intuition has the 2.x look.
  • It is incompatible with Kickstart 3 (the CD1000 fails to fully startup and goes into a crash loop).
  • It carries the A690ID resident module, just like the 2.30 ROM.

So even though the 2.0 ROM is a lot more compatible with the CD1000 (it has none of the bookmark/cardmark issues), it still suffers from the red boot screen and does not seem to work with Kickstart 3.

The Options

So what are the options if you want to use Kickstart 2+ with your CD1000? Well, again, if you don’t care about the cardmark and bookmark incompatibilities, but do care about using unmodified Commodore ROMs, just use either the 2.7 or the 2.30 CDTV OS ROM version. If you use the 2.30 version make sure to connect a floppy drive to prevent the red boot screen error. If you don’t mind using modified ROMs there are modified versions of the 2.30 ROM that fix the red boot screen when no floppy drive is connected.

The red boot screen error when no disk drive is detected

If you like to “roll your own” ROMs using tools like Remus and ROMSplit you could even use the bookmark.device module from the 1.0 or 2.0 CDTV OS ROM4 and compile a custom CDTV OS ROM that works with every Kickstart version and fully supports memory cards.

If however you’re someone who likes to keep their CDTV as historically accurate as possible (I hear you, brother), you’re stuck with using the 1.0 CDTV OS ROM, which is incompatible with anything but Kickstart 1.3. But then again, if you fall into this category, you’re probably not very interested in using Kickstart 2+ anyway (although I am currently investigating options to add Kickstart 2+ compatibility to systems with 1.0 CDTV OS ROMs, stay tuned..).

My own unmodified CD1000 with memory cards

Personal note

As I stated earlier, I did not write this article to launch some sort of crusade against the use of A570 ROMs in a CDTV player. There are many legitimate reasons for doing so and I don’t think it will harm your CDTV player. The primary reason for this article’s existence is to put an end to the confusion and to set the historical record straight on the origin of these ROMs and, as a consequence, allow people who care about such things to make an informed decision on how or if to upgrade their CDTV player. I will make an effort to update this page in the future whenever new information comes to light.

The CD1000, with all its faults and shortcomings, is a fascinating piece of Commodore history and I absolutely love the machine. It has long been ignored and unloved, but I have noticed a definite upward trend in the past couple of years regarding its popularity and I believe the best years for this machine are yet to come. I will try to contribute to this trend using this website and some software projects I am working on. The more people that still use and enjoy these classic machines in the 21st century the better! 🙂

Footnotes

  1. I have reached out to Cloanto regarding this issue, and they have indicated they will update their notes on their Kickstart ROM versions page to include this new information.
  2. This table disregards beta and gamma ROM versions.
  3. It is not NVRAM though, as it is often referred to in Commodore’s Developer Reference materials. Disconnecting the CD1000 from power will result in losing all bookmark data.
  4. At this point the 2.0 CDTV OS ROM is not supported yet by Remus/ROMSplit, but support might be added in a future version. The 1.0 CDTV OS ROM is supported, though.