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

15 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.

    • 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.

    • 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!

    • 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..

  4. This cartridge was made for one reason and one reason only: To settle a lawsuit.

    When the Commodore 64 was released, Commodore promised it would be “CP/M compatible.” That implied that it would be able to run the thousands of CP/M programs that were already out there. When that didn’t happen, there was a class action lawsuit. As part of the settlement, Commodore made this cartridge, which they did not promote because they never wanted to make it in the first place. That’s the other reason it is so rare.

    My grandmother asked me what I wanted for Christmas in 1985 and this was in the clearance section of the store we were in for $5 (and another $5 for the Commodore-published Nevada COBOL for the CP/M cartridge) and that’s what I got. Completely useless. Wish I still had it. 🙂

    • Under emulation at least, it’s very underwhelming. And you absolutely need that 80col program, otherwise it’s unusable. But as a side effect of the 80 column program, it’s very slow.

      I set Vice to 1:1 speed, and Infocom games were insanely slow, like it made the regular 40col c64 side feel zippy, which it most certainly is not.

      That being said, with no real good way to transfer data in and out of those 1541 disks it really was stillborn. Not that the thing had any real legs in the first place. A 8088 co processor with MS-DOS 1.25 support would have been equally disastrous, although a little more fun to have a PC in a C64.

    • Wow that is amazing!

      I’ll check it out for sure! I’m not sure if it’s a good thing these carts were so hard to find as it made moving to a 286 all the better, but the CP/M apps like basic, pascal were not only better but even had compilers.

      I forget what the fundamental flaw was with the cartridges, but I recall that the 128 had the same issues in development.

      • The carts only worked with early VIC-II chips. Like the 5-pin A/V ones. It is interesting when tinkering with an 80 column card I was trying to adapt on a C64C I manage to make it to work, but it was very erratic and trial and error.

        • My findings are that it only works properly on the 1982 and 1983 board with the MC4044 PLL clock setup. It will also work on the SX-64 because it has the same old clock system.

          It won’t work reliably (or at all, usually) on a machine with the 8701 clock chip.

          The revision of the VIC-II does not matter. R56A/R7/R8/R9 all work.

Leave a Reply