• Please review our updated Terms and Rules here

Well-known ports under CP/M - And binaries that access ports directly.


Veteran Member
Jan 25, 2022
Perth, Western Australia.
Just wondering if there are any well known I/O ports for CP/M as there is with MS-DOS -

I know there are none in CP/M itself, but were there any common hardware ports that software (eg, Wordstar, Modem Software ) used that transcended a single machine architecture? Such that the same software worked across multiple machines?

Or anything like well known bios extensions for I/O devices like there was with the IBM-PC and original DOS?

AFAIK, not really. Each vendor's system was treated as sui generis pretty much. About all I can think of is some terminal emulation (mostly LSI ADM-3 type) by several platforms. Of course, CBIOS interfaces were standardized by fiat.
Core CP/M (Digital Research contribution except the sample BIOS) did no I/O itself. That was entirely up to the BIOS. There were occasional third-party apps that did, but those were not portable to another platform and did not do well commercially (if that was their intent). Vendor utilities might, but those are specific to a platform. I have seen some apps (like some versions of MBASIC) that were licensed for a specific platform and did some "security" check to make sure you were running on the licensed platform.
I think the only true standardization was that applications relying on doing I/O themselves were either married to a particular platform (e.g. vendor utilities), or they were adaptable through patching or similar mechanisms. This also includes terminal output beyond a teletype or maybe a handful of common terminal types.

As far as BIOS extensions go, I can only think of GSX (graphics support) and CP/NET (remote drives), but I don't think they were particularly common. There aren't many GSX applications around, for example.

Keep in mind that early versions of DOS were structured very similar to CP/M, and on early machines, you can't rely on any well-known I/O ports or addresses, either. Those conventions came with the IBM PC dominance and its clones. I've got an 80186-based system running MS-DOS 3.10, but most applications simply fail because the video and interrupt systems work in a completely different way. It attempts to be partially BIOS-compatible though, other early systems don't at all.
TAPELIB, the tool for use with Tarbell Cassette Interface Cards, hard coded references to specific ports. I am dubious that all S100 systems with Tarbell interfaces had those specific ports available.
CASD    ==    6FH        ;CASSETTE DATA   PORT