CDTV OS 2.35: Technical and Legal Stuff

CDTV OS 2.35: Technical and Legal Stuff

CDTV OS 2.35 is an unofficial, custom update for CDTV, A570 and A690. In this article I will try to answer some questions that have been raised about the technical and legal aspects of CDTV OS 2.35.

Having worked on CDTV OS 2.35 mostly by myself (backed by a small group of trusted testers) for several months, it was hard for me to predict the type of response I would encounter when I publically announced the project last week (September 16th, 2021). Would anyone but a handful of hardcore CDTV users be interested? What if it becomes just a single blip on the retro computing radar, only to drown in the overwhelming amount of cool projects that get announced on an almost daily basis from all over the world? (What a time to be alive and in this hobby, btw.).

Any doubts I had about the usefulness of CDTV OS 2.35 quickly disappeared after I made the first public announcements on social media. As a matter of fact, I must admit I am even a bit surprised (in a positive way) by the number of reactions. It turned out quite a hectic day and if I haven’t replied your email, FBM, Reddit PM or forum PM yet, do get in touch with me again. I might have missed your remark or question.

One thing that I would like to address today is something that I only mentioned in passing on the CDTV OS 2.35 introductory page. Something that has raised questions in forums, social media and via private communications, and that is the legal situation of CDTV OS 2.35. But before I get to the legal stuff, I need to explain both my motivations and a bit about the technical side of things. Two subjects which I also have mostly shied away from in the introductory article, because that would have diluted the message of that page way too much.

Motivational

Money nor fame were any of the motivators that drove my work on this project. I already have a job and I’m really more in my element behind the curtains than in the spotlight as I am now. I’m moving out of my comfort zone by promoting CDTV OS 2.35 as much as I am, but I believe it increases the chances of this project becoming a success by reaching as many CDTV enthusiasts as possible and maybe even converting some new ones to the cause! I just have a soft spot for CDTV. It’s a beautiful machine, it’s an Amiga, and, in my opinion, an underexplored corner of Commodore’s legacy. It is also the system that seems to have gotten the least love, due to its perceived complexity…

I have always wanted to learn how to program the Amiga, both system programming and hardware programming, ever since I got my A500 in 1991 when I was a teenager. Made a couple of half assed attempts in the past, but without a specific project to work on, that went nowhere. I started taking apart the CDTV’s CD-ROM device driver (cdtv.device) and bookmark.device in 2019 for an unrelated project and learned a lot about how the system works and I picked up 68000 assembly and Amiga system programming as I went along.

At some point, somewhere in May 2021 to be more exact, it dawned on me that I was probably one of the very few people in the world that had A) the knowledge to fix many of the problems with the CDTV ROMs, B) the ability to reverse engineer binary ROM code back into source code and most importantly C) the desire and the opportunity to sacrifice the many man hours required to get the job done, while accepting the risk I might fail at the end of the road. Now that I am nearing the end of that road, safe in the knowledge that the hardest technical challenges have been met, I can look back and say that while it has been hard at times, it was a fantastic journey. I’ve learned *so much* in the past couple of months about CDTV, Amiga, CPU caching, the 68030 MMU, debugging techniques on real hardware and much more, and that’s a great feeling. I wanted to become proficient at Amiga programming since I was 16 and this project was the vehicle that finally got me there! It’s like a bucket list thing. Some people want to visit India, I wanted to do something like this.

The second reason for doing this project is the awareness that I’d be helping out fellow CDTV users. After almost 30 years with no major improvements to the system’s software, incompatibility with accelerators and annoying bugs, many CDTV fans have almost given up on the platform. Others already have. The CDTV community is relatively small compared to the greater Amiga community, but as is often the case with such things, it’s a passionate following (guilty as charged, btw).

And that ties neatly into my third motivation: the desire to keep the CDTV platform alive. I know it might come off a bit grand, but by making CDTV OS 2.35 I hope to bring some new life to CDTV. CDTV OS 2.35 should be a sign that the platform isn’t dead, but that it still has many years left and its future is looking brighter than ever.

Technical and legal

First of all, if it was not made already abundantly clear, CDTV OS 2.35 is not an official product by either Amiga Corporation or Hyperion. It is an unofficial product made by me, all by myself, in my basement, in a small town in the middle of the Netherlands, Europe, planet Earth. It is also not a ROM hack. (No hex editors were used or harmed during its development.) The things that needed fixing were of such complexity that it was simply unfeasible to implement by just directly patching the ROM binary. You need source code.

Unfortunately, the CDTV operating system is closed source and unavailable (and perhaps even partially lost), so the only way for me to do any sensible work on the CDTV system software was to reverse engineer those components (their technical name is “resident modules”) that I suspected needed fixing. Through this process I was able to recreate 68000 assembly source code, that I could then build into artifacts that were 100% identical to the original binaries. That was no easy feat. There’s a lot of manual labor involved. It requires dedication, perseverence and you need some finely tuned analytical skills to pull something like this off. You also really need to love the process itself. It is also highly addictive. Picture several smaller ink stains that slowly grow and start connecting. Every time two or more ink stains connect something falls into place. Another analogy might be that of a puzzle that slowly forms into the end result, only you don’t really have the photo on the box to go by!

Using this process I have recreated the source code to cdtv.device, cdfs.library, bookmark.device and the cdstrap resident modules, which can now be used to build new resident modules using modern computers and open source software (I am using vasm to build the binaries). This is much more preferrable in my opinion to trying to dust off the old C and assembler source from the early 90s, if it still exists in complete form, and trying to get that to build using ancient Amiga native assemblers and C compilers. I can now comfortably add debug code to try and fix bugs or add new features as I have done with CDTV OS 2.35.

Portions of my reverse engineered source code

So here’s the legal thing. Even though the source code that I recreated, the bugs that I fixed, and the new features that I added are my own work, both the source code and the binary artifact that I end up with (the ROM image) are still clearly a derivative of the original binary, and as such contain copyrighted work that is not mine. This means that I cannot distribute my custom ROM image (nor the source code for that matter) without the approval of the owner of said copyright, which I believe to be Amiga Corporation and/or Cloanto.

Yes, I am aware that there is an alternative and that is to separate what is truely my work (i.e. the changes I made) from the Amiga IP and distribute those separately. It would take the form of a patch that users could legally obtain from me for free, because I own the copyright, and then apply them to the original Commodore 2.30 CDTV OS ROM, which they will need to supply themselves, to obtain the 2.35 ROM image. However, as you can imagine, this is very far from the ideal method of distribution, because it makes it very hard for most people to obtain CDTV OS 2.35. That is why I really want to pursue some sort of agreement with Amiga Corporation, because it would make things so much easier for everyone.

In conclusion

I hope this clears up for everyone, both IP owner and users alike, why I made CDTV OS 2.35. IP owner can rest assured that it is not my intention to hurt the brand and I don’t want to make money off their IP. I am not even accepting donations, I don’t have a Patreon account and my YouTube channel is not monetized to prevent even the slightest hint that this is somehow for me to financially profit off of. I have paid all expenses (mostly hardware related) on this project out of my own pocket and these have run into the hundreds of euros already.

Users can rest assured that no matter what happens, whether I can come to an agreement with the IP owner or not, I will find some way to get CDTV OS 2.35 in your hands for free, legally. I did not spend months of my life slaving away at this thing to just to keep it for myself. Right now though, I think it is only fair to give the IP owner time to consider what they want, because at the time of writing CDTV OS 2.35 has not even entered beta testing yet and I don’t expect it to be release ready before the end of the year.

Thanks for making it this far and for listening to my ramblings. Please do get in touch with me if you have any questions or concerns (see the About page for my contact details). If anything worthwile regarding the release of CDTV OS 2.35 becomes known it will be announced on this website, the CDTV users Facebook group and various other channels.

UPDATE: I’ve been in contact with the IP owner. The contact was pleasant, but ongoing legal proceedings in the Amiga world are making an official release of my work problematic at this point in time. That is why I have released my work as a patch on GitHub.