It’s interesting that some of CP/M’s underlying ideas are part of Windows 11 today, such as drive letters.
It’s interesting that some of CP/M’s underlying ideas are part of Windows 11 today, such as drive letters.
In contrast to CP/M. It requires a block device of some kind (i.e. a disk drive), and a console of some kind (typically, but not necessarily, a serial terminal).
While some applications did route around the BIOS and BDOS in CP/M, most did not. CP/M was quite portable across a crazy range of hardware. Porting a CP/M BIOS is a nice engineering and assembly language challenge for anyone willing to take it on, depending on their hardware environment.
Today, anyone with a Z80 chip, a RAM chip, and some paperclips to wire it all together can get a device that will run Wordstar. That flexibility makes CP/M very popular with retro enthusiasts today. It's easy to find dongle sized computers for $50 running CP/M on eBay. It's also easy to find full through hole kits of parts and PC boards to make your own. Or, grab a Z80 CPU and Peripheral manual, a copy of KiCad, some parts and breadboards and go to town. Having your creating run Wordstar beats blinking LEDs any day of the week.
In my case I decided the hardware environment was going to be hosted inside Unreal Engine:
https://i.imgur.com/5MDfwKg.png
It's crazy easy to get CP/M running on just about anything with Z80 CPU emulation, and some glue logic to handle reading bytes from a keyboard I/O port, and sending them to a terminal, and reading/writing sectors from a block device. I had to write a VT100 emulator for UE4 but that doesn't take too much work.
WordStar:
https://i.imgur.com/rIY1he8.png
A telnet client (complete with ZMODEM) for accessing BBS's on the Internet:
https://i.imgur.com/aSc9VGL.png
Zork I and Rogue:
If it doesn't, there's a bug in my emulator, end of story. I have had to implement all kinds of things to make various software work correctly, and there's probably still more to do.
In other words, it was like the UNIX of the microcomputer world.
It had terminal capabilities (not to the level of termcap in Unix, but good) which meant that shrinkwrapped software like Wordstar would run on anything with an 8080, Z80, or NEC V20/V30 and CP/M. The Osborne 1's tiny screen was only 50 characters wide instead of 80, but software still ran on it.
It hit the sweet spot of abstraction for its time, and made it easy to write drivers for custom hardware that a new manufacturer might decide to make.
MS-DOS was structured the same as CP/M: there was a small-ish machine dependent part you ported (called an 'OEM Adaption Kit' at one time), and a hardware independent kernel. At least through 3.0 and probably later, it did not require a PC clone. It ran on all sorts of non-PC 8088/8086 machines. Ever run MS-DOS on an 80186 with 8" floppies? I have. Now, your apps might not run because of machine level assumptions (video, usually), but MS-DOS did.
But the real problem with almost-clones was (as you said) that in practice applications more often than not bypassed the "ABI" and went directly to the hardware, and admittedly that's not MS-DOS fault per se. The result was anyway that lots of software wouldn't run on almost-clones, especially if they moved around too many of the assumed interrupts (e.g. 80186-based PCs - they had some of the peripherals of the 8088/8086 integrated, just not exactly in an IBM PC layout). One system I ran across was an "enhanced" PC-like semi-clone, probably using an 8086 or something better - the local health services had just started a huge campaign where they tried to get everyone to volunteer for a health checkup, and they were followed up with a new one some years later, and on and on (it still goes on, to this day). Anyway, for that early start, they used this MS-DOS computer to collect and print information. But the printer didn't work - the PC was nonstandard. I went to the hospital and figured out why, and patched things and got it working (I don't recall anything today about what or how or even why I could).
CP/M applications though - they didn't, for the most part, bypass anything - maybe that's because people writing the software knew that the hardware could vary wildly. Screen-oriented apps like WordStar usually needed a machine-specific patch for that, but otherwise CP/M software was way more portable than MS-DOS software. PC software though - vendors just thought "IBM PC hardware" and that was it, for the most part.
There were many MSDOS but not 100% IBM PC compatible machines made that got hit in the market because of this, such as the Zenith Z-100/Z-120 , TI PC, etc. If the memory map and everything else didn't exactly match the IBM BIOS setup the application would fail.
Nostalgia is a helluva drug.
Were you using the Osborne-specific version or the "retail" version of WordStar, BTW?
The "Osborne-specific version" was the retail version...for the Osborne. Yeah, there was a 'generic' retail Wordstar...that you had to patch for your specific hardware if your combo wasn't supported out of the box. I had friends who's whole business back then was hacking popular CP/M apps to support less popular hardware.
There wasn't some compatibility nirvana. It was just easy to hack up a fix because apps were on the order of 10's or 100's of kilobytes, not hundreds of megabytes.
CP/M was also very portable and eventually ended up on Atari ST 68000 machines which I also used with the GEM desktop/graphics environment. There was even a CP/M card for the Apple II that had a Z80 on it.
The source code for both CP/M 68k and GEMDOS are available these days and one can see that while some small bits are borrowed between them (the program loader, for example), on the whole it's a whole new source tree.
I believe parts of the GEMDOS sources did become the basis of what eventually became DR-DOS on the x86.
There's mention of CP/M-68K and TOS with info on the Atari 130ST/260ST[1] (which also happened to have 512KB). I do recall later getting the OS in ROM of later hardware so boots were quicker.
It didn't have any. That's why it thrived. It was the first cross-platform OS for microcomputers. There were other microcomputers, but they didn't have OSes as such: they mostly had a BASIC interpreter in ROM and that was all.
And most machines had their own unique implementations of BASIC, all subtly different. In the American market (and only there), Microsoft BASIC was a lowest-common-denominator industry standard, because it was very small and MS made it cheap. It was rubbish, though: no graphics, no sound, no structure, not even IF...THEN...ELSE.
In the rest of the world, vendors competed for who could offer the best BASIC... and in the end, Acorn won, with BBC BASIC, which was the best by far of any early 1980s micro. Acorn went on to invent the ARM processor.
However, all the different BASICs made all the machines software incompatible.
CP/M was a DOS: a disk operating system. You needed a disk drive, and ideally 2. That was expensive, so CP/M ran on expensive micros in the small-business market: often they cost thousands of £/$ while home computers sold for hundreds of £/$.
In that space, CP/M had no competition until MS-DOS came along, for the newer and more powerful 16-bit Intel 8088 and 8086 chips.
France had some interesting home micros, and of course Minitel.
Japan had some amazing machines, and MSX did some stuff that no other 8-bits ever did.
Behind the iron curtain there was a ton of R&D, including legions of clones, but also PDP-11 home computers, machines that used trinary instead of binary and all sorts of exotica.
In the Southern hemisphere, Australia and several big Latin American countries had their own industries, due to the costs of imports.
MSX Basic was a derivative of MS BASIC, which isn't really surprising since they had their hand in developing the MSX standard.
But MSX was aimed squarely at gaming with a sideline in music making and things. I feel it deserves more respect, as one of the longest-surviving 8-bit architectures, one that was the most extended of all of them, and even transitioned with some degree of success to 16-bit, with the Z800-compatible R800 chip: https://www.msx.org/wiki/ASCII_DAR800-X0G
As for the prevalence of its concepts, Gary Kildall borrowed a lot from minicomputer OSes that he was exposed to early in his career. CP/M brought a lot of the capabilities and styles of those $$$ systems to machines that people could use at home. So I think if you want to see where this style of CLI came from and why those things were popular you might look at DEC TOPS-10... or other "real" minicomputer operating systems that hobbyists coveted but could not afford for themselves.
Before standardization around the IBM PC, CP/M was the only way to get that, really. And there were boatloads of these 8080/Z80 systems out there, all sharing some common attributes but not being 100% compatible with each other, so CP/M is what glued them all together until the great wave of the IBM PC overtook them all.
While deeply alien to the Unix crowd, OSs like MCP or zOS are remarkably simple in what they do.
Microsoft's first hardware product, the Z80 Softcard for the Apple II, was a bestselling product because it gave the Apple an 80 column display and CP/M 2.2 all in one package.
Here in Europe I've never seen it in the real world. It was all commodore 64 and other 8-bit or early PC. Even in businesses.