1

I had an idea and wanted to hear if there are any major technical obstacles.

Imagine any vintage computer with either a serial port or a parallel port.

The vintage computer is connected via that cable to a PC (or Raspberry PI or any machine with a serial/parallel port). It would need to be a "laplink" cable in the case of parallel.

On the PC side there is a server application written in Python that emulates a CP/M disk controller & drive.

CP/M and disk blocks are loaded via the cable.

The initial boot loader would be very small and would need to be loaded via cassette or if small enough, entered as machine code. The initial boot loader would have enough code to request data from the parallel port to get itself up and running.

Anyone have any thoughts on this? Does it seem like a feasible idea? The general idea being to build a server that provides disk functionality to essentially any machine with a serial or parallel port, allowing anyone with a parallel crossover or serial cable to run CP/M.

7
  • It's not a one-size-fits-all solution, because you still need a customised CP/M BIOS for each type of machine that talks to the parallel or serial port for "disk" access. It's also likely to be a fair bit slower than direct access to a floppy drive. Jan 12, 2019 at 9:11
  • 1
    Beside not being an RC question, similar has been done using CF or SD-Cards or cable links to many classic machines - not to mention the use of 1541 drives with home build systems before the age of flash storage.
    – Raffzahn
    Jan 12, 2019 at 10:17
  • There are lots of similar implementations for non-CP/M machines: 1541 "cables", Apple II Prodos Disk via parallel (or even Apple cassette ports + soundcard at the PC). So definitely doable, though today you'd need a USB-to-serial adapter, and parallel ports are harder to find.
    – dirkt
    Jan 12, 2019 at 11:26
  • From a retrocomputing perspective, I don't think it's a stretch to ask about ways to get an old CPU running when you don't have old disk drives to go with it. The question could do with a bit of rephrasing to make that clearer of course.
    – Ken Gober
    Jan 12, 2019 at 18:17
  • By the way, I think that any CP/M capable machine you can get your hands on, have at least one floppy drive. This would only be a "for fun" hobby project. Or did you find one that didn't? Jan 12, 2019 at 20:57

1 Answer 1

3

CP/M consists of two parts. The BDOS and the BIOS. In modern terms BDOS can be rougly compared to the operating system like Windows and Linux, and the BIOS compared to a collection of hardware drivers which the operating system uses to talk to the hardware.

So what you are proposing is to implement a driver in the BIOS which instead of talking to a disk controller talks to a serial or parallel port. For CP/M-2.2 this is done with 128 byte sectors (if I recall correctly) and is quite simple. (The usual complexity of the disk driver in BIOS was to handle that most disks had a different sector size).

This is not a hard task but a bit time consuming. It would require you to write a port driver and some mapping code in machine code. You need either to disassemble the current BIOS or get the source code for it, and then add your new code. I would suggest creating a test scaffold to test it during development.

When done build a new image (SYSGEN if I recall correctly) and boot it so you can debug it.

Note that parallel ports have much larger bandwidth than serial ports.

1
  • I've since found out that this is what CP/NET was for. A resident module providing a virtual drive mapped to a drive on a remote MP/M server. Dec 11, 2022 at 17:17

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .