CPM/86

I’ve never messed with CPM/86, as by the time it was free’d it was a dead end 8086 OS. Like all CP/M OS’s it doesn’t support directories, or have that large of a base of applications, as CP/M was primarily a 8080/Z80 OS… (I can only imagine how many CP/M 86 apps there are…!).

Anyways some strange googling led me to this 8080 emulator for CP/M 86 written by David Evans.

Well that’s certainly interesting, all I remembered about 8080 CP/M emulation back in the days is that most of them required a NEC V20 CPU, as the V20 had some hooks for emulating a Z80. I guess in many ways, the same was true of the 8086/8088. So I figured this would be a great time to give this thing a shot.

The first thing you’ll need is a copy of CP/M 86, and for this I’d recommend this version, as it’s been setup for IBM AT’s, and also it has a definition for a program, 22disk to copy files onto the CP/M disk, as CP/M doesn’t use FAT, and is incompatible with MS-DOS.

To build and use the whole thing, I’m using Virtual PC, although I’ve tested the end product under Qemu.

Unzipping 144cpm86.zip into a directory, you can simply run ‘makedisk’ and it’ll fireup the disk copy program, and ask you how many copies to make, and it’ll then write out your CP/M 86 diskette. You can boot it up once it’s done to make sure it works….

CP/M 86

CP/M 86

Ok now boot back to MS-DOS, and now we’ll want to get a CP/M 8080 program to run, and I’ll just choose zork1 from this archive. (They also have zork for the 8086 version of CP/M, but mine locks up, and the CP/M 86 seems to lack something like ansi.sys..?)

Now extract 22DSK139.ZIP, and delete the file cpmdisks.def . Next copy in the file 144cpm86.def from the CP/M 86 archive. Now we simply run:

GENINDEX 144CPM86.DEF CPMDISKS.DEF

Now we can run ‘cmenu’ as an interface to the CP/M 86 diskette. The first time you run it, you must go through steps 1&2. Since we deleted the existing definitions there is only the 1.44MB format, so you can’t choose wrong, hit enter a few times and it’ll set it up. Next under option #2, just answer ‘a’ (without quotes!) and that’ll have the a drive setup to read/write the CP/M diskette. Test this by choosing option six, and hitting enter. Verify that you can see the directory.

Now extract the file 8080.cmd from 86emulat.zip. Next extract all the zork files from zork123_80.zip. Now launch cmenu again from 22disk, and then choose option four. simply type in 8080.cmd , then hit enter to accept it using the same MS-DOS name. Now run option four again, and now you can use wildcards, enter zork*.* .

Ok, now we have transfered our emulator, and the test programs, you can reboot your VM with the floppy in the drive. Qemu users will have to specify “-no-fd-bootchk” to bypass the signature check as CP/M 86 (and MS-DOS 1.x) don’t have this ‘feature’.

Now with CP/M 86 booted up, type in “8080”.

This will launch the 8080 emulator, and print it’s banner. Now we just type in ‘zork1.com’ to start the zork1 game.

After a minor pause, Zork 1 should now be running!

8080 Zork1 on CP/M 86

8080 Zork1 on CP/M 86

And for anyone who doesn’t want to jump through so many hoops.. here is my CP/M 86 boot diskette with the files already transfered.

16 thoughts on “CPM/86

  1. It has been a while since I played with CPM too. I use to have a Kaypro 4 back in the day… I had installed a CPU turbo, a 20Mb hard drive, ZCPR and a video enhancement too. It wasn't a bad system for its day.

    I picked up a copy of CPM-86 and got it to boot no problem on VPC 2007. I even got the hard drive partitioned, set as bootable and copied the files over using PIP, but so far I have been unable to boot from just the hard drive. When I try I get –
    "Loading CPM.SYS

    Unable to load file as generated
    Insert SYSTEM diskette in A:
    then PRESS Ctrl/Alt/Del…"

    It not that big of a deal, but I would like make it work from just the hard drive. I have tried changing the boot order and even with the boot floppy in the hard drive won't boot (I was checking to see if a command was referencing the floppy drive).

    Its been a long time since I have done anything with CPM and I don't have my CPM manuals anymore. Does anybody know how to make the hard drive bootable?

  2. Not sure what's different today, but I booted from the HD without changing a thing. Maybe I just needed a fresh reboot (the joys and mysteries of Windows).

    Thank you for responding. I am grateful there is still some CPM people and info available. Now if I can just get OS/2 to play nice on my peer-to-peer… Linux is next on my list.

  3. OS/2 and linux…. that's going to be super involved.. Or at least my experience with it..

    Naturally it all comes down to what version of OS/2 do you have, with what connectivity options.

    IBM really blew it when it came to getting things connected, esp by making everything optional, and by preserving the ever so friendly config.sys

    As much as I thought it was bad, the OS/2 NT way of doing things is far superior… although they've made the registry such a convoluted thing.

    But hell, configuring TCP/IP in NT 3.5 and higher is such a snap!

  4. I have some more news. I had problems with booting CP/M-86 from the HD again, but it turns out CPM doesn't like BusMaster enabled. Switching the setting in the VPC Bios did the trick (Yay). I found some patches for native CDROM and 1.44Mb floppy support and will probably give it a try on a copy of the HD. I may even try installing ZCPR if I can find a good guide (I use to have a copy of ProFiles…)

    OS/2 is playing nice now. I have ver 4.52. OS/2 is a lot like Win 3.11, but getting peer-to-peer was a lot harder. Complicating my VPC network attempts is each virtual system defaults to the wrong NIC on my system. If I forget to switch it I spend a lot of time for no reason (I really need to disable the unused one).

    I just have my first NT experience and you are right, it was a snap. I was a little miffed at the drive limitation though. Partitioning with NTFS limits you to 4Gb for installing. It may be possible to expand it to 8 afterwards, but that's it. I had larger partitions on FAT32 under Win 98SE.

  5. Don't forget in multiprocessor setups VPC doesn't thread correctly… If you alter it's affinity to a single core BEFORE you launch a VM it'll behave a lot better..

    Sometimes I wonder about swapping out the device drivers from Virtual Server 2005R2 which is multiproc aware… But I'll save that for another day.

    NT's biggest fault is when it was released IDE disks beyond 8GB just were not all that prevalent, and the install procedure actually creates a FAT partition then converts it… I do recall back then having a copy of NT 3.51 on a zip disk that I'd boot up on new server installs to partition & format the whole disk as NTFS so I didn't have to suffer with 'little C' drives…

  6. Good news and bad news. I actually found some of my old magazines, but it looks like I pared down the collection so the issues I NOW want, are gone. I found 5 ProFiles issues (8/86, 5/87, 8/87, 8/88) and 3 Micro Cornucopia (37 – 39). Amazed I found any really (I think my collection use to go back to 84 or so).

    Thanks for the tip on multicore. If I have any problems, I'll give it a try. So far everything is working.

  7. Hi, this is a very late feedback, but it’s really “up to date”.
    Plz feel free to visit my blog (again) and look how beautiful CP/M-86 runs in VMWare, VirtualBox and even on a Thinkpad T23 – slightly more modern than a PC/XT.

  8. Late to the party by a whopping 7 years. I have a copy of CP/M-86 1.1 (.IMG disk image) on an emulator called PCEm. It’s running in XT (8088) mode, based on the BIOS I’m using. I’d like to tinker with some CP/M-86 source code files, but they’re in Windows/MacOS X. Not sure how to get them into a 160K floppy image. I can create a 160K disk image in PCEm or an image program in Windows, but other than the fact it shows the same screen of dots (when I dir from the B drive), it never shows any files I’ve injected. I can’t read disk images I create from PCEm in the Windows image program (says it’s corrupted or something), yet disk images I create in the image program show nothing when I try to dir them from the B drive in PCEm. Weird.

  9. Anyone here familiar with CP/M-86 1.1 source code? I’m looking to “modernize” CP/M-86 1.1 by (initially) just fixing up CPM.SYS (I have the three necessary files: BIOS/CBIOS.A86, CCP.A86, and BDOS.A86) a bit. Rather than using the “patches” (AT and Y2K) on the binaries, why not fix the problem in the source code, so the patches aren’t necessary?

    • Ages ago I thought that taking CP/M for the 68000 would be a better choice as it’s written in C. Although I didn’t get far enough…

      And there was that VAX port..

  10. “This is the original BOOT ROM distributed with CP/M for the SBC 86/12 and 204 Controller. The listing is truncated on the right, but can be reproduced by assembling ROM.A86 from the distribution disk.”

    and

    “This program resides in two 2716 EPROM’s (2K each) at location 0FF000H on the SBC 86/12 CPU board. ROM 0 contains the even memory locations, and ROM 1 contains the odd addresses.”

    This comes from a file called ROM.A86 in a source code archive called c8611src.zip.

    Is this the equivilant of the ROM BIOS in a regular PC? If so, then there might be a path of understanding in this, since it’s the actual source code.

    • The more insane thing to have done would be to look at the 68k version of CP/M (written in C) and getting it to run on the 386 in protected mode……………….

      Insane!

      • portected mode:

        thats what im trying to do

        but i cant get an example to it actually work

        any thinkg straight foward out there

        the ultimate plan is long mode

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.