Running CP/M on the Commodore 64!


CP/M cartridge retail box

Back in 1983 there was this great idea of expanding the Commodore 64 with the then popular (but declining) base of serious business software from the CP/M side of the world by creating a cartridge with a z80 processor inside, and a special port of the CP/M operating system that would take over the C64 letting you run real programs like Fortran, Cobol and the far better (and updated) Microsoft Basic v5!

However as always the major failing of CP/M was the massively different and incompatible diskettes of every platform.  The Commodore 64, lacking in RS-232 ports, and it’s incredibly incompatible 1541 drive rendered it nearly impossible for the average home user to transfer any programs in the specially formatted CP/M diskettes for the cartridge.  Not being able to read a standard 1541 diskette would prove to be it’s undoing.

While messing around in Vice, I saw that this cartridge is emulated now!  A quick search led me to where I was able to then locate the needed cpm.d64.gz, and I was booted up into CP/M and of course that hit the first snag which is of course, where is the software?

Well another search brought me to the package ‘ctools‘ which I quickly built on the Linux subsystem for Windows (I had to add -fpermissive to get it compile..), and now I could take that CP/M diskette delete the contents, and for the heck of it insert in Zork.. Of course where to find Zork along with other CP/M software?  The zip can be located on, even fun things like Microsoft BASIC v5.21 (Interpreter), along with the manual.

CP/M only recognized a single drive, so you have to swap diskettes (Such a typical Commodore 64 experience), and here we go!

via Vice

Naturally the Commodore 64’s 40 column mode is… terrible.

However even back in 1984, a fine program aptly called sets up the Commodore 64 in high resolution graphics mode, and emulates an 80 column mode.  Even better, the magic for the most part happens on the 6502 side, meaning it doesn’t take away from the precious memory on the CP/M side.

Zork 1 under CP/M / Soft80

Its worth noting that although Infocom games are dreadfully slow on the Commodore 64, playing under CP/M is also dreadfully slow, taking some 10-15 seconds to complete a command.

At least under emulation there is the warp mode.  And what took an hour to put together would have been months no doubt in the 1980’s ending in the CP/M cartridge going into a drawer to never be seen again.

A Z80 on a cart is pretty interesting.  It would have been interesting if other CPUs had made their way, a 68000 would have been interesting to have bridge the 8 bit world out, or even if Commodore had tried to put an 8088 onto that card, as early PC’s were nowhere near the 640kb hard disk wielding monsters they would become much later.  Naturally one could only dream of the power of an 80386 or the once vaunted NS32016

8 thoughts on “Running CP/M on the Commodore 64!”

  1. I added that feature several years ago iirc.

    Anyways, an interesting fact might be that the c128 cp/m can read/write c64 cp/m disks, and c128 cp/m has a program that can copy files from cbm dos disks.

    Another interesting fact might be that the flash-8 cp/m emulator (z80 emulation on a 8Mhz 65816) uses the same bios and disk format as that cartridge, and is actually slightly faster than the cartridge.

    1. Thanks for your incredible work! While I’m not trying to be all that negative about it, it’s really cool to be able to play with a module that I didn’t know existed, let alone would have been nice at the time.. Especially to run far more capable versions of MS Basic. Although I guess by then getting a Commodore 128 would have been easier my parents were VERY against getting a new computer, but expanding the C64 was seen as okay…

      I also just found out about the SFX Sound Expander cartridge as well. I can’t help but wonder if this stuff was marketed out in Europe where things like the 1541 were seen as too expensive, but they may have found a market in North America.

  2. CPU upgrade boards were common in the Commodore world. PET had the SuperPET with the 6809 and third party Z-80 and 68000 addons. The CBM-II machine had a 8088 board. DTACK Grounded devoted several issues in 1983 doing a market analysis of modifying their 68000 card to work with the VIC-20 which probably would apply to the C64. Basically, won’t sell and can’t be cheap costing about $600.

    Sizes of the 8088 and 68000 cards suggest that shrinking them down to fit in a cartridge would not be possible until about 1990. Plus adding power to the cartridge to handle the larger power demands including the extra memory would kill the advantages of the cartridge design. Not much point in having a 68000 with 64k of RAM.

    1. I’ve only heard of the SuperCPU for the C64 which was way past it’s useful lifespan, although by then it was people holding out on GEOS who didn’t want to do WYSIWYG on Windows 3.0 (which to be fair was really crap with it’s bitmap fonts), until the release of Windows 3.1 that killed everything out there.

      I would have imagined a 68000 backend C64 would have been on a much better footing than the Sinclair QL. I’ll have to check out that DTACK Grounded article set. It’s just a shame that back in the day I don’t recall ever hearing of it. I guess I was on the wrong BBS’s Of course just buying an Amiga, or Atari ST would have been easier, just sadly not an option for me at the time.

  3. Very cool that you discovered this Neozeed.
    Marco, Thanks for adding this feature to VICE (also I didn’t know about the c128 being able to read/write the c64 CP/M disks, will have to try this out).

    I still have my Commodore CP/M cartridge since 1984 or 1985. My father purchased it at a clearance thinking he could use it to run Kaypro software. Unfortunately the 1541 wouldn’t read the disks and it was terribly slow, so it got stashed back in the box.
    After discovering this website a few years ago:
    I dug the CP/M cartridge out and played with it a bit. There’s a small BASIC program you can type in (shown close to the bottom of that site I mentioned above) that let’s you patch the CP/M 2.2 to support two 1541s.
    Anyhow, thanks for bringing back the memories again!

    1. Ha! that certainly explains why the config programme didn’t work for the second drive!

      I was also kind of surprised that Microsoft Basic when loaded up only has about 15kb free. I need to go digging around for the memory map display tool thing. It seems that the more I try to use this thing, the less of a power house it turns out to be.

      Oh be sure to post back how using the C128 to manipulate C64 CP/M diskettes goes! No doubt someone will also care somewhere..

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.