System 80/10

My desire was to build an MDS-800. I was unable to purchase a system or the correct boards to build an MDS-800. So I put together three boards I had - iSBC 80/10 CPU, iSBC 064 RAM and iSBC 208 FDC. This is actually an Intel System 80/10. The Hardware Reference Manual for the System 80/10 is here.

I had to have a multibus card cage and power supply to use these three boards. I modified a 7-slot card cage and an old ATX power supply to build and operational System 80/10. These modifications are covered here.

The iSBC 80/10 required some modifications:
1) Replace the 2708 EPROMS with byte-wide EPROMS.
2) Turn off onboard EPROM and RAM under program control.
These modifications are covered here. Also covered here are the testing and development of the Monitor Program used on my System 80/10. At this point on the hardware side, I had operational and tested card cages, power supplys, CPU cards, RAM cards, and FDC cards. On the software side, I had a fully functional Monitor program with source code (MON80V41C1).

The iSBC 064 and iSBC 208 only required jumper configuration changes to operate in the System 80/10.

I have disk subsystems with pairs of 5.25-inch 360 KB drives, 5.25-inch 720 KB drives and 5.25-inch 1.2 MB drives. I also have a pair of 3.5-inch 1.44 MB drives. These all use a standard DC-37 connector and draw power from the connected system. These are covered here.

I got the hardware to BOOT CPM-80, with some severe problems, from a 360K DOS floppy. The problems bothered me to some extent each time I tried to progress on the hardware solution. These problems resolved themselves to be:
1) Misuse of Copy and Paste to change label names.
2) Failure to set the SP in the BIOS warm boot.
3) Various coding problems in the boot sequence.

1828 MST 1 February 2012

SIMH Simulator

It was time to get CPM-80 to work on this system. I had the hardware and Monitor software working correctly. As a side project, I developed a SIMH simulator for the System 80/10. I have it working now.

1820 MST 1 August 2014

It has been an off and on development task to get CPM-80 to run on the simulator. I get easiloy distracted by new software and hardware. I have several versions of CPM-80 V2.2 in full source. Since 1982 I have used source code to build the operating system for different system configurations. I have been using source code for CPM-80 which matches the Compupro MOVCPM program. This will allow using MOVCPM and DDT for the final system generation with a SYSGEN program I develop.

While I was working on the hardware system 80/10, I settled on using the same disk formats that DOS used for the various 5.25- and 3.5-inch drives. The original hardware booted from a disk formatted on a PC DOS system. This selection of disks followed into the simulator.

In the 36 years since I started using CPM-80, the 512-byte sector has become the standard for floppy and hard disk drives. I will use this in my System 80/10.


I just got the CPM-80 and applications to operate on the simulator yesterday. I had to make some changes in the BIOS and Monitor to get it fully functional with a simulated 360 KB DOS-format floppy disk image. This disk format has 40 tracks, 2 heads, 9 each 512 byte sectors per side for a total of 368,640 bytes. This is the version 00 for the Intel - V00-Intel.

The system is on the first two tracks of the disk as follows:
Track 0, Head 0, sector 1: Combined BOOT and ID sector
Track 0, Head 0, sector 2 - 5: CCP
Track 0, Head 0, sector 6 - 9: BDOS
Track 0, Head 1, sector 1 - 3: BDOS (cont)
Track 1, Head 0, sector 1 - 9: BIOS

Sector skew is set to 1 at this time. All sectors are selected from the disk image in a linear manner. Sector skew is meaningless on the simulator - any sector can be accessed in the same amount of time. Once I move the code back to the hardware, the sector skew can be tested for the fastest operation of an assembly of a long file on the hardware host.

This is fully operational now on the simulator.


This code contains the standard (CCPv00) and my modified CCP (CCPV01) for CPM-80. Both will be available in the newer versions of the Intel code.

Sector skew is still set to 1 at this time.

This is fully operational now on the simulator.

Herb Johnson

Herb Johnson wanted me to develop a CPM-80 system for an Altair CPU card with an SDSystems VersaFloppy II disk controller. This would require the BOOT and BIOS to be entirely 8080 code. He wants to use the Compupro MOVCPM program along with DDT to make new boot disks as we all did originally. He sent me a number of SDSystems board to use in my S-100 system to get this operating and create a boot disk for the system in 2012. I have the VF II board in one of my compupro systems along with a JadeDD board. The JadeDD is connected to a pair of DSDD 8-inch drives and boots up CPM-80 from the 8-inch drives. I will use this system to develop the software Herb has requested. But first, I needed to make sure I had a "supported" system (MOVCPM) and my booting OS was clean.

I have the software to build a clean "supported" for the JadeDD controller. I have encountered some small problems with my source code built systems that I never was able to find until I had the simulator!

My plan is to stay on the simulator until I get the BOOT sequence and disk formats formalized. The simulator is much faster to use to debug than the hardware ever was.

2314 MST 6 October 2014


If I only use 9 sectors of cylinders 0 and 1 (either head), the Monitor, BOOT, and BIOS code will work with any simulated drive size: 360K, 720K, 1.2M and 1.44M. I will verify this in this version of the code on the simulator.

In trying to implement V2 through V4 in one run I again broke CPM-80. I verified it was not a stack problem which is common with CPM-80. If you use too much stack space in the BIOS the CPM-80 system fails in unexpected ways. This is why the debugging in my BIOS is broken into so many threads.

I have broken the upgrades into several separate sections and reordered them based on the failed attempt. This should allow me to have an operational CPM-80 at the end of each step.

2155 MST 9 October 2014

Ran into a problem with the head select for normal reads from the disk. I have the DPB sector per track value set to the total cpm sectors per cylinder. This is necessary because I switch heads for host sector 10 and up, converting them to head 1, host sectors 1-9 in the BIOS. This will only work with the 360K and 720K drives. Have to calculate the head switch host sector for 1.2M and 1.44M disks.


The disk sizes that CPM-80 can support with my standardized disk systems are:
1) 360K -- 5.25-inch DSDD 40T -> 368,640 Total bytes
2) 720K -- 5.25-inch DSQD 80T -> 737,280 Total bytes
3) 1.2M -- 5.25-inch DSHD 80T -> 1,228,800 Total bytes
4) 1.44M - 3.5-inch DSHD 80T --> 1,474,560 Total bytes
To add three more disk sizes to CPM-80 will require some coding changes to BOOT, BIOS, and MCI.EXE. Again, I will verify these on the simulator.


I need to revise the layout of the BOOT/ID sector to allow the inclusion of both the DPB and sector skew map. This will remove DPBs and skew maps from the BIOS for each disk format.

Per a conversation with Herb Johnson, I am going to concentrate on the 360K solution for now. I have a fully functional CPM-80 which works on and boots from the 360K disk. Time to return to the S-100 hardware and the GB01 software development platform.

1110 MST 11 October 2014