Hacker News new | past | comments | ask | show | jobs | submit login
CP/M is really open-source now (retronic.us)
393 points by jstanley on July 13, 2022 | hide | past | favorite | 208 comments



HP should open OS/8 and RT-11, the two big influences on CP/M. OS/8 is kind of remarkable, running on a system arguably less powerful than the first 8-bit home computers (I would say they are closer to PIC microcontrollers, but with more RAM):

https://www.pdp8online.com/os/os8/index.shtml

PDP-8 memory is heavily paged. There are 128 word pages- direct addresses can only reach within the current page, and literals (immediate data including addresses to other pages) have to be allocated out of this current page along with the instructions. Second, there are 4K-word fields. So you need to use far jumps and returns to access outside the current field. This is just like PIC microcontroller pages.

OS/8 reserved only two pages for itself. Things like the command interpreter were swapped out to disk or DECTape.

https://en.wikipedia.org/wiki/DECtape

If the application needed device drivers, it got to choose which pages the drivers would occupy- meaning the device drivers had to be written as position independent code. Also I think each driver was limited to two pages..


In high school in 1980 we had Commodore PETs. They had no tangible OS, just a BASIC interpreter in ROM. There was an easter egg that made it say Microsoft or wasn't it spelled MicroSoft? Either way a company nobody had ever heard of.

CP/M had the aura of being something for real pros. Read some journal articles and it looked really complicated. But without suitable hardware I had never any chance to touch it.

In 1983 I went to university where beginner courses happened on VAX/VMS and my definition of "pro" got shifted.


The early microcomputer OSes were little more than program loaders and only came into play if you had a disk drive. Even MS DOS was not much more than a program loader for most of its existence. It was a little jarring when making the transition from a TRS-80 or Apple ][ or Commodore computer to something running MS-DOS or CP/M that you could no longer just type 10 PRINT "HELLO, WORLD!" to start writing a program.


> In high school in 1980 we had Commodore PETs. They had no tangible OS, just a BASIC interpreter in ROM.

Five years later the Commodore 128 appeared. It had the best of both worlds: could run all C64 games and CP/M. These were magic times.


I inherited one of these from a friend in 2000. The ‘l’ key switch was broken. It (like most) were only booted into C64 mode and used for Batman and stuff. ‘L’ was broken because of ‘load’? I think that was the command. It’s been too long.

I passed it on, but wish I didn’t. At this point, I probably could have replaced the switch.


I always booted mine while pressing the Commodore key. Waste of money.


With its separate number pad, it looked really grown-up and professional compared to the 64, though. The 128D even more so, with its desktop box, built-in floppy drive and separate keyboard.


Yes I had that one. It was the worst decision of my life. Had I waited 6 months or so, the Amiga 500 would have launched. I got stuck on dead hardware and got hooked off from computers for several years.


If it is any consolation, I got started on the Radio Shack Color Computer ecosystem, with the original version the the CoCo3. Back then, there was quite a bit of debate by the mid 1980's about the longevity of 8/16-bit processors like the 6809 and the 6502 / 6510 series.

Addressing a maximum of 64KiB of memory back when 4KiB was expensive seemed fine. And due to cost, picking an 8-bit processor for a design in 1980 seemed sensible. But the ability to support up to 1MiB of RAM (eventually) on the 8086 series help insure the platform's longevity, in spite of the horrible segmented memory programming model.

Companies like Motorola weren't terribly interested in backwards compatibility, preferring instead to design completely new instruction sets (like the 68K family) for their 32-bit platforms.


If it is any consolation, I had to use ZX81 as my parents couldn't even afford ZX Spectrum.


Same here. Trying to type anything on that thing (especially copying the code out of magazines) was just horrible.

Edit: just remembered something that made it even worse than just the awful keys - all reserved words for BASIC were tokenized in some way where you had to use a control-key sequence to tell it PRINT, for instance, instead of being able to type P,R,I,N,T <enter>.


Me too. But I think it led to more learning and less gaming! I did finally get a Speccy... recently!


>128D even more so, with its desktop box, built-in floppy drive and separate keyboard

and Atari ST price point, or 80% Amiga 500


128 was a scam. It was a way for Commodore to get rid of unused sunk cost R&D (MOS 8563). Buyers were promised C64, but twice the number so must be 2x better, received C64 with another almost separate computer glued to its ass. Second graphic chip requiring expensive monitor, second CPU. As a bonus manufacturing C128D was more expensive than Amiga 500!



I remember, when I was a kid, having a CP/M diskette for the Amstrad CPC. It was provided with the machine. Every now and then I would try it out, not really understanding what it was about.

Years later I learned, reading about it, that it was some sort of "professional" OS on which productivity software would be used.

Does anyone actually used that OS on CPC or any other 8bits machine of the 80s to do anything remotely useful? Genuinely interested.


Yeah, I used it a fair bit on the CPC.

There was huge amounts of CP/M software, much of it distributed for the CPC by "public domain libraries", who'd send you a disk of stuff by post for a small fee. (I ran one such!) But, to be frank, it was a minority taste because there were often faster, more graphical native programs available - i.e. running under the CPC's ROM-based firmware. For example, why would you use a CP/M wordprocessor when you could use Protext? Why would you use a CP/M assembler when you could use Maxam? And so on.

So CP/M programs on the CPC tended to flourish in areas where there wasn't much decent native software. Comms programs, for example - dialling up to a BBS, or even running one. (There were a couple of BBSs run on CPCs using the ROS software under CP/M.) Languages other than BASIC or assembler. Compression/archiving.

CP/M was a bigger thing on the Amstrad PCW because it didn't really have native firmware, and because the hardware was closer to a decent CP/M machine.


CP/M was a lot like MS-DOS. People used the Wordstar word processor on it, you could run a BASIC interpreter and compiler on it. There was an upgraded version called ZCPR3 that was used on a BBS server in my town where you could log in and use the command line.


Wrote thousands and thousands of lines of code on CP/M, back in the day - not on an Amstrad CPC back then, rather some other strange machine - but it opened the door for a lot of great work in the decades that followed.

In my retro collection I currently have a CPC6128 that boots CP/M and for which I have Turbo C and Turbo Pascal installed.

I prefer to run SymbianOS on it though - it has multitasking, a network stack and a working GUI. ;)


Symbian OS is something entirely different: a native ARM OS written in C++ for smartphones.

You're probably thinking of SymbOS:

http://www.symbos.de/


Thanks, thats correct - I was thinking of SymbOS. :) Its a mistake I make almost every single time I refer to the Amstrad CPC6128 version of it.

See also: ContikiOS (for 8-bit machines) .. pretty amazing!


I worked on an industrial process monitoring system using CP/M in the 80s. It wasn't on CPC. It ran on a professional Z80-based S100 bus system with lots of I/O cards.


CP/M was at one point the native platform of Turbo Pascal. It only got fine-tuned for MS-DOS in later versions.


Yeah, I wrote quite a bit of Turbo Pascal code on CP/M on a Radio Shack TRS80 Model II. I loved TP and CP/M, especially TP.


My first job straight out of engineering school in 1983 was developing Z80 embedded code. My 'development system' was some kind of semi home made floppy disk based CP/M computer with 48K of RAM and the native Dev tools including ED a command line editor and ASM an 8080 assembler (which was basically sufficient if not ideal for writing Z80 code). For the first few days I recall being confused about the difference between the ED command line and the CP/M command prompt. In other words, I was all at sea. But it was basically being thrown into the deep end and I learned fast. Within a year or so I was writing my own BIOS for an Intel bubble memory based customer CP/M computer that we were embedding into a field application. I didn't have the proper OEM documentation, but if you understood the CP/M architecture you didn't really need it.


I haven't used a real 80s computer (except in a museum). I've used CP/M a fair amount on an RC2014[0], but never for anything you might describe as "useful".

[0] https://rc2014.co.uk/


Same here, I've been running a single-board Z80-based system with 64k and CP/M 2.x

I worked my way through the various infocom adventures, and even wrote my own trivial text-based adventure game in Z80 assembly language - later porting it to the ZX Spectrum (which was the actual computer of my youth).

It's fun to play with these systems, and I've rebuilt the CP/M from sources a few times to add simple changes and new built-in commands.


Turns out I've actually played your text adventure on my RC2014, and sent you a couple of trivial pull requests :).

I had a go at Zork too but found it far too complicated to be playable. I might have persevered if the directions were consistent, but it's just too hard to map everything out when you leave a room by going east but then to go back to where you came you need to go south.


Small world, thanks for your contributions! It wasn't very complicated, but I enjoyed putting it together and playing it with our child.

For me the Hitchhikers Guide was something I'd been wanting to complete - having played it for the first time a little after the release -and I did get there in the end.


I did, on a Czechoslovak 8080-based machine called TNS: I have written & cross-compiled a fulltext screen editor for another 8080 machine. It was written in the assembly language, and the resulting product had less than 2 KB.


Yes, I remember using Dr.Logo on CP/M on my friend’s CPC6128 and being very impressed with the capabilities of the language compared to BASIC. I also loved how detailed were the help text for the CLI tools. I remember reading HELP pages. I used to like command-line option syntax in brackets too. It felt very thorough and professional compared to AMSDOS :)


There was a category of med/high range microprocessor machines ($10k+) that used it a lot, like Z-80 S100 machines with a bunch of "custom" expansion cards. I don't recall any of their names now, but if you look at the ads in late 70's Byte magazine you'll see them.


Me too. I used it only for copying floppy disks. I didn't know better at the time.


Same here. Had it on the CPC464. Had no idea what to do with it other than IIRC loading an image editor whose highlight (for me) was a brush in the form of a propeller fighter plane :)


I remember using Wordstar and Turbo Pascal (version 3.0, I think?) via CP/M on a CPC.


There was a famous tracker for the CPC6128 that ran on CP/M. The name escapes me ATM.


Do you mean back then, or now?


That is cool news because it's probably a nice starting point for osdev projects. At least more code to read :)

I feel like the code was available before and I read parts of it but I may remember it wrong.

Edit: Yes it was indeed "just" a license clarification. Link to the source: http://www.cpm.z80.de/source.html


I remember CP/M with fondness. My father gave me an Osborne 1 for my first computer when I was 12 (41 years ago). It came with CBASIC2 as well as MBasic, and I managed to find a Lisp (I forget what flavor). To put the Osborne 1 in perspective, the stats:

* 64kb memory (yes that's kilobytes)

* 2 5 1/4 floppy disks

* No hard disk

* 5" monochrome green screen monitor

* 4 MHz CPU

* 37 watt power supply

* weighed ~25 pounds


4mhz CPU?

Luxury super computer!


3.5-4Mhz was standard for most Z80 based systems.


Still, it didn't perform much better than a 1Mhz 6502 due to its design.


Elite on the Spectrum ran much faster than Elite on the C64.


Technically correct. Its ~6fps on C64 and ~8fps on Spectrum.


Yeah, the difference definitely doesn't match the quadruple clock speed.


Plus an RS-232 for your modem and an IEEE 488 for your printer.

That CPU lacked a multiply instruction, so you had to implement that yourself.


The multiply instructions on later CPUs were implemented as microcode programs on the silicon, so sometimes it was faster to write your own or a specialised routine anyway.



Lots of the source of CP/M came with the distribution, and it wasn't hard to dis-assemble specific bits you were interested in.

Some CP/M software (I'm thinking of WordStar specifically here, but no doubt others) almost required you to write a keyboard and display handler in Z80/8080 machine code to get decent performance over the generic CP/M code - been there on Research Machines 380Zs.


Source has been available for years, it just hasn't been clear whether it was legal to redistribute it. Now it's clear :).


...clearer (if at all). The proper license, whatever it is, is still missing. Sorry. :)


> This right comes from the company, DRDOS, Inc.'s purchase of Digital Research, the company and all assets, dating back to the mid-1990’s

What the Wikipedia says, if you piece it together is that Bryan Sparks founded Caldera in the mid 1990's, which bought Digital Research. Around the time Caldera went defunct in 2002, Sparks started DeviceLogics which got renamed to DRDOS Inc. So that must have inherited the Caldera assets, including the Digital Research stuff.


Why about MP/M. I loved having more than one user on a 8080.



That is so cool. I'm not really a retro-computing guy and am unlikely to ever run this code, but it does bring back memories of bringing home an old unsold box from work, sitting on the garage floor, writing a program in unfamiliar 8080 mnemonics, and getting two terminals to chat to one another. OTOH it might be fun to get something working on a Z80 SOC. Or something like this https://hackaday.com/2017/01/02/retrocomputing-for-4-with-a-...

Has anyone ever trans-compiled Z80 assembly to a microcontroller? Is that even a thing?


Slightly off topic:

I recall as a youngin watching Gary Kildall on the Computer Chronicles. I was always fascinated by what people were doing with computers. I know it is nostalgia and there's infinitely more to learn about today than there was then, but I do miss that era of computing.


Of course, there's a CP/M emulator in the browser now, so you don't have to dig out your Z80/8080 computer: https://www.tramm.li/i8080/


I thought I had CP/M source code for Osborne-1. But no, I have only inch-thick listing of BIOS. And it did not matter, one always used direct Bios-calls for speed.

CP/M was not actually needed for this implementation, it could boot on its own: http://timonoko.github.io/Nokolisp.htm


Symbolics next, please!


Good luck hoping for that!

They sold their "first .com domain" to some guy who… seems to be a domain squatter (although he writes a lot about not being one).

Companies that eager to make a quick buck are usually not the ones open-sourcing their stuff.


It certainly feels like the people in the Amiga space. They'll milk their cow until its last drop of blood.


I'm not familiar with this culture. Can you expand on it?


I would guess that they mean Hyperion, which owns the name and IP. It develops AmigaOS 4.x for PowerPC Amigas:

https://www.hyperion-entertainment.com/index.php/where-to-bu...

And also AmigaOS 3.2 for old 680x0 Amigas:

https://www.hyperion-entertainment.com/index.php/news/1-late...


this is the guy who presumably sold the original domain, http://www.symbolics-dks.com/


That'd be INSANELY cool.

Let's go a bit further then.

Next, open source SCOPE, NOS/VE and PLATO!


For nostalgia purposes, I'd like to see MUSIC & MUSIC/SP source with a fully open license. It was on our mainframe at uni in the 1990s.


Do we have a wishlist for version 2.4? I'd go for s390x and 64-bit addressing support.


I haven't interacted with the system in decades. I have some wishlist items from since then but I really need to give the demo some time to have an updated list. Those two alone seem sufficient for a release though.


McGill will need to open-source it first. I'd suggest AGPL for the license ;-)


Always excellent when a piece of computing history has it's source made available. Even better when it's provided under a libre license, as this is!

CP/M is a powerful example of what you can do without multitasking. The code is also a time capsule of development techniques and styles of the time.


My foray into disk-based operation systems. Oh, sooo many years ago. A friend of mine had it, and I would ride my bike through country roads as a kid to play around with it.


I'm sorry but it's not on MIT, GNU, or BSD so I would go so far as to say the title is clickbait...like can I take this code and try and get it to work on my x86 machine and then commit my changes under bsd? Probably not

Can someone point me to a repo to look at it? I can't find a link and it doesn't show up on Google.



So IBM went crazy with CP/M, and Microsoft suffered. We'd now have CP/M 11, and DOS would be open-source now.


I am not so certain that it would have made much difference. Microsoft would still have produced both BASIC and Windows, and we may have had the exact same evolution anyway. DigitalResearch's GEM was mired in legal red tape preventing from much evolution.

Also, MSDOS is opensource now.

https://computerhistory.org/blog/microsoft-ms-dos-early-sour...


In all likelihood in that timeline DOS as we know it wouldn't have existed.


Good but 30-40 years too late.


CP/M was the popular operating system that IBM wanted to license for their skunkworks Personal Computer project. But the founder of Digital Research, the company that developed CP/M, was more interested that day in going flying his plane than meeting with corporate men in navy suits. (This may be apocryphal.)

IBM turned instead to their second choice, a small company that was supplying BASIC interpreters to many 8-bit micros. The company didn’t actually have a suitable disk operating system product, but the founder knew someone who did. He made a deal to license the source code for a fixed fee and no limitations on redistribution. And that’s how Bill Gates acquired MS-DOS for $50k.


Yes it's apocryphal. Please stop repeating it. It's disrespectful to the late great Dr Gary Kildall, for a start, and to his cofounder and business partner, the late Dorothy McEwen.

From memory and without consulting much in the way of references:

* Dr Kildall's personal and business partner Dorothy was the company's cofounder and dealt with contracts etc. https://en.wikipedia.org/wiki/Dorothy_McEwen_Kildall

* Dr Kildall, as the CEO of the most significant microcomputer OS vendor in the world at that time, had his own plane, yes, and he piloted it himself. He was going on a site visit to a major customer. It wasn't for fun; it was a business trip, and it wasn't his job to deal with IBM.

* DR had good reasons to refuse the deal.

1. IBM wanted DR to sign a very restrictive NDA; DR had a policy against that. Ms Kidlall refused. MS, as a small company with nothing much to lose, happily signed.

2. IBM offered $250K for an unlimited license. DR quite rightly refused and so did MS. MS retained the rights to licence DOS to other vendors, and it did, a lot, and made a lot of money thereby. The deal IBM offered DR precluded that.

* AIUI, MS licensed SCP QDOS for $50K. It only bought it in later on, for a lot more money. It ended up paying $1M for it, and that was still a bargain.

This is not ancient history. It was only about 40 years ago. Many of the protagonists are still alive and active, notably Tim Paterson and a certain William H Gates the 3rd.


The IBM guys had gone to Seattle expecting to license CP/M. Their "benchmark" (in business terms) was the Apple II with Microsoft's Z80 SoftCard running CP/M. As far as they could tell, Microsoft owned CP/M. Bill Gates told them otherwise, phoned Gary Kildall but had to be vague and then sent the IBM guys on a plane to California. I can only guess they were pretty upset even before they ever got to DRI.

People's memories of what happened vary. One of the IBM guys claimed no meeting happened and they went back to Seattle even more upset (which is the most popular version). Gary claims that after some back and forth between Dorothy and her lawyer she did sign the NDA and that he arrived towards the end of the meeting and had a nice chat about the technical side with the IBM people.

The PC was launched with a choice of three operating systems: PC-DOS (the licensed MS-DOS), CP/M86 and UCSD Pascal. But the first cost less than a third of the other two.


As I recall, PC-DOS sold for $40. CP/M86 sold for $180. People overwhelmingly bought PC-DOS because it was cheaper and nobody was able to explain why CP/M86 was worth the much higher price.

The company I worked for bought both, and I tried CP/M86. There was no reason to prefer it over PC-DOS, and that was that.


PC-DOS's predecessor, 86-DOS, was allegedly reverse engineered from CP/M. The subsequent lower development costs probably account for at least some of the price difference between the two products.


CP/M was (mostly) written in the PL/M language and ran on the 8-bit 8080/Z80 processors. 86-DOS was written in pure assembly language and ran on the 16-bit 8086 processor. Tim Paterson, its author, wrote an 8086 assembler and an 8080-to-8086 source code translator that ran on a CP/M machine. He used these tools to bootstrap 86-DOS.

86-DOS was intentionally designed to mimic the CP/M APIs to make it easy to port CP/M applications to 86-DOS through mechanical translation of the source code.

(And, surprise surprise, much of the business software that was available for IBM PC-DOS in the first couple of years were direct ports of existing CP/M applications: SuperCalc, WordStar, dBase II, etc.)


> CP/M was (mostly) written in the PL/M language and ran on the 8-bit 8080/Z80 processors. 86-DOS was written in pure assembly language and ran on the 16-bit 8086 processor.

In CP/M-80 1.x, most of the OS was written in PL/M. By the time we get to CP/M-80 2.x, the core of the OS (BDOS) has been rewritten in assembler for improved speed, while utilities (such as PIP) remain in PL/M.

CP/M-68K was written in C (although possibly with an earlier version in Pascal???). CP/M-8000 was written in C, probably ported from CP/M-68K.

CP/M-86 was mostly written in assembler, possibly with some bits (especially utilities) in PL/M and/or C as well.


And CP/M copied from DEC's operating systems, most especially RT/11.

I haven't examined the code myself, but the source code to the original PC-DOS is available and can be compared with CP/M. I've been told they were not copies.


Tim Paterson, of Seattle Computer Products and later Microsoft, gave a good talk at VCF West 2019 where he describes the history of 86-DOS (licensed to become PC-DOS and MS-DOS). There was an intention for significant API compatibility with CP/M, but no code was taken from CP/M.

https://www.youtube.com/watch?v=R2Qh0O3Dt10


> As far as they could tell, Microsoft owned CP/M

CP/M prints a Digital Research copyright when you boot it up; this seems hard to believe. Is there corroboration?


The Apple II softcard version does show a Microsoft copyright. (This was reportedly the most popular platform for CP/M.)

https://www.youtube.com/watch?v=DCV81rlwMTU


This is one part of the story that most people agree on. I think I’ve even seen an interview with Bill Gates where he recalls this.


I did some work at DRI in 1984 (my group was housed in the old KMST television studio, on the outskirts of the DRI campus, for about four months while we ported GEM to the Atari ST).

My manager talked with Gary about the CP/M incident at one point. Apparently some "guys in suits" showed up without an appointment one day, wouldn't say who they were, wouldn't sign an NDA, and were demanding to see Gary. They were sent away without talking to anyone. Gary was in his office the whole time, and definitely not flying.

Take it as you like. My Kildall Number is 2.


Strange that everyone else says more or less exactly the opposite?


Popularity doesn’t make facts. People tend to align with popular thought anyway, so, it may as well be a feedback loop.


Occam's Razor suggests that what has been published as truth for a long, long time (since the actual events, in fact) is truth, rather than being made up by gullible people.


There has been several published accounts from different people involved, all of which differ. The story the GP published is one such version (I’ve read that account elsewhere, published as first hand).

AFAIK there isn’t even a popular opinion since most people tend to agree we will never know the truth. And of those who do have an opinion, those opinions have been largely split (as evidenced by the comments on here).

So I have no idea why you’re so confident in your assertion but it is entirely misplaced.


All of the many widely read and reviewed books on Gates' career tell the same story (i.e, the one I am suggesting). If they were wrong, surely someone other than a couple of randos on the internet would have got on the author's case. But nobody has done - hence Occams Razor.


> All of the many widely read and reviewed books on Gates' career tell the same story

Is it really that surprising that books specifically documenting Gates would cover his version of events? This is a very definition of selection bias right there.

> If they were wrong, surely someone other than a couple of randos on the internet would have got on the author's case. But nobody has done

There's plenty of contradictory accounts. People have literally posted them right here. You're just refusing to acknowledge they exist because you've never bothered to research this beyond Bill Gates own personal account. But I'd suggest you read some content written from the perspective of Kindall if you're genuinely interested in hearing the other side of the story. He has even written about it himself.


Occam's razor.. or not wanting to get sued.


People are "randos on the internet" to you, but no one is actually a rando on the internet. Don't mistake your not knowing someone for them being unknowable.


This particular internet rando predates the internet. I have a lot of stories, some from Arpanet days.

I didn't talk with Gary directly about the incident, but my boss did. I have no reason to disbelieve either of them.

But it's perfectly fine with me if someone wants to believe a (shudder) journalist instead of an old fart programmer. :-)

I live less than a mile from BillG's house; want me to walk over and ask him about it? :-)


Now that's a video I would watch.


We will never know what happened on that day. None of the witnesses can be considered reliable. Even if they consider their own accounts as honest, the eventual fallout would taint their memories of the events. The best we can hope for is documentation to support one hypothesis or another (e.g. contracts).

That said, I do agree the common account is both disrespectful and inaccurate. I never understood why people would believe that Gary Kildall or Dorthy McEwen would brush off a business meeting. They may not have been an empire builders, but they were successful business people who built a successful business.


> None of the witnesses can be considered reliable.

I find this to be a curious statement, as in not reliable in what way?

Gordon Eubanks company was acquired by Kildall and worked for them at the time. I found this interview to very interesting, he touches on those events and gives his perspective.

https://www.computerhistory.org/collections/catalog/10271736...


Accounts differ and parties have their professional reputations on the line; want to pin the failure on the other.

See jecel below.


We absolutely know the source for the “Gary went flying” story: Bill Gates. But he wasn’t actually there!


One thing that does seem almost certain is that, to whatever extent Kildall did intentionally skip or turn up late to the meeting, it was more likely an attempted power move or an expression of annoyance than the sort of genuine indifference or carelessness that the "Gary went flying" story usually tries to suggest. But naturally the IBM representatives would not have been happy to be deliberately flexed on by an SME owner, either.



There's a third reason why the DR/IBM deal didn't work out: CP-M/86 was extremely delayed. The reason why SCP QDOS even existed was that SCP had an S-100 machine with an 8086 in it and there was no OS that could run it.

Microsoft wasn't necessarily a "small company with nothing to lose", either. They had the best BASIC interpreter in the business[0] and everyone licensed from them already.

[0] This also allowed them to strong-arm Apple into making a few licensing deals that would kill all the "look and feel" shenanigans later into that decade.


> Microsoft wasn't necessarily a "small company with nothing to lose", either. They had the best BASIC interpreter in the business[0] and everyone licensed from them already.

Nope and nope.

The “best” is subjective but BBC Basic (as seen on Acorn BBC Micros) was fscking awesome. Far better than Microsoft BASIC in my opinion. Locomotive BASIC then took the BBC BASIC dialect and improved upon it. Amstrad shipped that on their CPC 464 models.

There was a BASIC for the Atari ST I’ve used too which was pretty awesome.

Microsoft BASIC might have been widely used but it was neither universal nor the “best”.


The classic way to test out a BASIC interpreter was to see how it parses "FORK=ATOM".

BCC Basic is parsing it as FOR K = ATOM and complains that "TO" is missing.

Applesoft Basic is parsing it as FOR K = A TO M, and adds spaces when you list it back.

C64 Basic is parsing it as FOR K = A TO M as well, but does not add spaces when you list it back.

QBASIC and GWBASIC are parsing "fork" and "atom" as variable names.


Yeah the parsing for some of the BASICs was weird at times. Some auto-capitalised terms whereas others would list that as a syntax error or some other error. Some even allowed you to abbreviate terms. Locomotive BASIC allowed you to use something like a question mark (I forget the exact punctuation but I think it was a question mark) in place of a PRINT command.


BBC Basic did not exist at the time; all Acorn had was Atom Basic.

By the time your later Basics came around, Microsoft and the PC were already the extinction-level event for small business micros of the sort that ran CP/M. It's sort of shocking leafing through say, BYTE magazine from the era and realizing how plain it should have been that was happening.


BBC BASIC is based on Atom BASIC. Atom BASIC was pretty fast (like BBC BASIC and Apple BASIC, it vastly out performed Microsoft BASIC). Atom BASIC also allowed you to do some really cool stuff too like in-line assembly.

Also the BBC Micro was released in the same year as the first IBM PC, so it’s a bit of an exaggeration to say Acorn didn’t have BBC BASIC at that time.

Let’s also not forget that the original few generations of the IBM PC was crap for all but business applications (I don’t need to lead though old magazines, I was there in that era). And that it took a while before the IBM-compatibles became reliable (for years there was uncertainty about which PC software would work on which PCs) or even safe from litigation (since IBM sued a few OEMs). It wasn’t until crafty developers (like Carmack and Romero) found ways to make stuff like scrolling PC games - software that before then people didn’t think was possible on a PC - that people started to take it seriously as a family computer. Before then BASIC micros were a much more attractive option; and cheaper too.

Edit: it’s also worth noting that the Apple Macintosh, Atari ST and Amiga all ran circles around IBM PCs too. Albeit we are now talking a few years later. Frankly IBM PC + DOS/Windows was amongst the worst micro computers on the market in my opinion. The only reason they dominated was because by the end of the 80s OEMs could build them more cheaply than designing their own hardware. So the market got saturated.


Well the obvious context here when talking about IBM's PC deals was "best" 1) "in the US" (eliminating BBC Basic), and 2) "at the time" (Atari ST happened after the IBM PC).


Their context wasn’t about IBM buying BASIC, it was about IBM buying DOS from Microsoft. Plus given IBM was a global brand it seems a bit self-congratulatory to argue that only US-developed BASICs count anyway. However even taking your comment at face value, it’s still not true. There were plenty of better US-developed BASICs too.

What IBM wanted was ubiquity rather than technical excellence.


IBM purchased BASIC and DOS from Microsoft in the same transaction. BASIC was the only "OS" installed by default in the first PCs and PC-DOS was an optional extra at launch.

Contextually here "best" also means "best fit for IBM to buy". Global brand or not, IBM certainly had US biases: a US headquarters, more engineers and managers in the US making purchasing decisions.

I can't argue with you on the subjective quality of other BASICs, and I can't speak to what IBM "wanted" other than what we know they eventually purchased. Their "best fit" may have indeed been entirely "pragmatic" things like "ubiquity" or "cheap" rather than "best technically".

> There were plenty of better US-developed BASICs too.

Citation needed on "plenty", I think. On the "microcomputer" Microsoft nearly cornered the market on MOS 6502 BASIC at the time and even the ones that didn't have a Microsoft banner at startup still had a licensed Microsoft interpreter under the hood ("Applesoft Basic" and "COMMODORE BASIC", for examples).

Of the Wikipedia documented "microcomputer" BASICs that weren't Microsoft's/Microsoft-licensed, two were UK-developed (BBC Basic and Sinclair BASIC), and the only other one (Atari BASIC) is listed as not having a stable release until 1983, two years after the first IBM PC.


> IBM purchased BASIC and DOS from Microsoft in the same transaction. BASIC was the only "OS" installed by default in the first PCs and PC-DOS was an optional extra at launch.

Yes, I'm already aware of that. You're building a strawman argument though because that has naff all to do with the statement I was directly responding to:

Microsoft wasn't necessarily a "small company with nothing to lose", either. They had the best BASIC interpreter in the business[0] and everyone licensed from them already.

> Citation needed on "plenty", I think.

BASIC has been around since the 60s, so yes there has been plenty.

> On the "microcomputer" Microsoft nearly cornered the market on MOS 6502 BASIC at the time and even the ones that didn't have a Microsoft banner at startup still had a licensed Microsoft interpreter under the hood ("Applesoft Basic" and "COMMODORE BASIC", for examples).

I know, I was writing software on those machines at the time. I also already acknowledged Microsoft BASIC was ubiquitous. I was disagreeing that Microsoft BASIC was the best, because it wasn't. It was slower than most others and lacked a lot of features too. Frankly, it was shit. But history seems to only remember the victors it seems.

> Of the Wikipedia documented "microcomputer" BASICs that weren't Microsoft's/Microsoft-licensed, two were UK-developed (BBC Basic and Sinclair BASIC), and the only other one (Atari BASIC) is listed as not having a stable release until 1983, two years after the first IBM PC.

Well that's clearly wrong then because there were loads. Apple/Integer BASIC (which was originally named GAME BASIC) which was inspired from HP BASIC (unlike Microsoft BASIC which was based from DEC BASIC). TI BASIC (Texas Instruments) was released in the late 70s too.

And on the UK side there was Locomotive BASIC, which was based on Mallard BASIC (1980) and inspired by BBC Basic, which was originally Atom BASIC (the Atom being released before the IBM PC and the BBC Micro being released the same year). Sinclair BASIC was also pre-PC (1979).

Mallard BASIC competed with CBASIC (mid 70s) and ZBASIC (1980) but I hadn't used those.

There were others too. Some for mainframes, some offered as alternative 3rd party ROMs for micro computers, some loadable from cassette or disk, some that compiled instead of interpreted code, etc. It was a really common language.

edit: in fact a 5 minute Google has shown several I hadn't even thought of: https://en.wikipedia.org/wiki/List_of_computers_with_on-boar... (wikipedia too, so I'm surprised you found such wildly inaccurate information on there), and even that isn't a complete list (I'd suspect even https://en.wikipedia.org/wiki/List_of_BASIC_dialects isn't a complete list).


> They had the best BASIC interpreter in the business

Given the whole thread that spawned from this, I have to say that I think this was poorly-worded.

MS did not have the "best" BASIC by any measure except by one: it had the smallest BASIC in the business.

The early MS BASIC releases ran in 4 kB or so, and even later on after it expanded, it still ran in 8kB.

Bill Gates, Paul Allen and Monty Davidoff were famous for fitting a lot of code into a very small amount of space. That was the basis of the former two's extraordinarily successful careers.

But "best"? No.

By 1981, Acorn offered BBC BASIC, a drastically better language by any measure: structured programming, local variables inside named procedures, inline assembler and more. But it needed 16kB of ROM: a quarter of the memory map of an 8-bit CPU.

> and everyone licensed from them already.

"Everybody" did not license it. AFAICR Atari and Apple didn't; across the ocean, Sinclair and Acorn and Tangerine didn't.

But yes, MS BASIC was dominant on the early American 8-bit machines: it was on Commodore, and I think on Tandy, and of course on the IBM PC right in the ROM if you didn't have disk drives.


> They had the best BASIC interpreter in the business[0] and everyone licensed from them already.

Commodore 64 owners may have a different opinion.... :P


So would some Apple II owners. I don’t think MS BASIC was the best in the business, but it was the most ubiquitous.

If only Woz had been willing to add floating point support to his BASIC. He was perfectly capable of it! Would’ve saved Apple a lot of heartache later.


Why was Woz unwilling to add floating point support?


He wasn’t unwilling. The story I heard was that it’s the usual tail of time constraints. It was quicker to license Microsoft BASIC than it was to add floating points to Integer BASIC.


c64 Basic was licensed from Microsoft.

https://en.wikipedia.org/wiki/Commodore_BASIC


Not sure about that. C64 BASIC was not all that impressive even then. Mid-eighties, those interested in BASIC programming on the C64 preferred Simon's BASIC.


I have heard that Commodore BASIC was MS BASIC 2.0, so somewhat behind the times when it came out.


It was. This was because Commodore was trying to keep the cost of the machine down, and BASIC 2 (along with the Commodore "kernal" [sic], the closest thing the computer had to an OS) fitted into an 8 kB ROM.

CBM BASIC 2 was terrible. It didn't support any of the C64's excellent (for the time) sound and graphics. It didn't have structured command (IF... THEN... ELSE, REPEAT... UNTIL, WHILE... WEND etc.) or named procedures or local variables or anything.

But it was small.

This terrible BASIC is why most of the world became convinced that BASIC was a bad programming language. Other contemporaneous 8-bit home computers had much better BASICs, notably the Acorn 8-bits, but also Sinclair, Oric and others.

https://liam-on-linux.livejournal.com/71381.html


The 6502 version of MS BASIC wasn't as good as the 8080 / Z80 version.


Microsoft also had FORTRAN and COBOL (and maybe Pascal? Not sure). They were known for their languages.


This is true but only a partial picture. MS-DOS was Microsoft's first OS.

In the early days (roughly, the 1970s) Microsoft only produced programming languages. So, yes, the company was known for it, but only inasmuch as it was known for nothing else.


So DR had a dumb policy and were not great negotiators. Gates knew exactly what had fallen into his lap.


No, not really.

At the time, IBM made very expensive mainframes and minicomputers, plus all the associated paraphernalia: terminals, printers, storage.

It didn't make microcomputers. It didn't really sell to the general public. It sold smaller kit to big businesses, and the bigger kit even they couldn't buy: you could only lease it.

Microcomputers were only just beginning to be a product sold to the public for home use. Up until the first few complete, integrated systems in around 1976-1977 (in the USA, the Apple ][, Commodore PET, and original TRS-80), microcomputers had been expensive modular devices, used in business.

That's the market DR sold to, and utterly dominated: relatively price S100-bus small business micros.

DR was not _a_ big player in microcomputer OSes, it was _the_ big player. Almost the only player: I can't think of any other cross-platform microcomputer OS available in the 1970s.

The PC was a highly atypical product for IBM, made from COTS parts, intended to be sold to the public, direct to end-users. It's not really something anyone expected IBM to do, and in this position, it was a company nervously trying to get into a totally new market for them, approaching the industry giant with caps in hands.


When I heard the (fake) story, it went like this:

IBM offered to buy DOS first, but Gates & Allen rejected it. Gates, being an acquaintance of Gary Kildall, told them to give Digital Research a try. He phoned Gary and said, playfully "They're coming for you next". Gary took this to mean someone was coming for him, and jumped in his plane and left. When IBM showed up, he was mysteriously missing, and everyone involved was confused.

Usually truth is stranger than fiction, but in this case I think the fiction above is hilarious and top-notch alternate history.


You left out the part about SCP blatantly ripping off the CP/M OS to produce QDOS, which Bill Gates purchased in order to license to IBM. The CP/M source code was widely available, but still copyrighted by DRC. At the time, I recall having a CP/M-based x86 cross-assembler that did a pretty good job. It probably took Tim Paterson a day or two to hack QDOS together given the availability of the CP/M source code and tools. If QDOS was an original work, why use "5" as the system call interrupt? (CP/M used "call 5".) The QDOS system call function list and arguments are identical to CP/M. The FCB-based disk layout was also virtually the same as CP/M.

https://en.wikipedia.org/wiki/Seattle_Computer_Products

https://www.theregister.com/2007/07/30/msdos_paternity_suit_...


The analysis done by Robert Zeidman in 2014[1] published in the Journal of Software Engineering and Applications comes to the conclusion that no code was copied from CP/M by SCP.

Tim Paterson has stated that API and structure compatibility were explicit goals. That can be achieved w/o copying any code.

re: "5" as the system call interrupt - I've never seen an SCP machine or QDOS, but on an IBM PC interrupt 5 handled print screen (and on the 80186 and up it was a CPU-generated interrupt for BOUND exceptions).

[1] https://www.scirp.org/html/4-9301871_46362.htm


> re: "5" as the system call interrupt - I've never seen an SCP machine or QDOS, but on an IBM PC interrupt 5 handled print screen (and on the 80186 and up it was a CPU-generated interrupt for BOUND exceptions).

Not an interrupt, a CALL. In 8080/Z80 systems, a system call is just a subroutine call to the OS kernel, there is no memory protection so no need for any special type of instruction. (I suppose on 8086 there is no memory protection either–but software interrupts are beneficial in isolating software from direct knowledge of memory addresses, which simplifies memory management; 8080 systems had far less need for simplified memory management–you can't fit much in so little memory, so there is not much to manage.)

So, on CP/M-80 and CP/M-8086, you CALL 5 (call to memory address 5), where there is a jump instruction which redirects your call to the actual entry system call dispatcher entrypoint in the OS kernel (CP/M BDOS). QDOS/PC-DOS 1.0 preserve the same mechanism for source backward compatibility with CP/M, and their system calls are a subset of CP/M's (with equivalent numbers/arguments). Except, of course, in 8086, it is not a CALL to absolute address 5 (0:5), since that would be calling into the IVT, it is a call to CS:5 – DOS puts at offset 5 in the PSP a JMP FAR which eventually lands you in MSDOS.SYS, via some bizarre mechanism involving address wraparound (the infamous "A20 gate" was introduced to keep this mechanism working on 286+). "CALL 5" ends up being essentially equivalent to INT 21, and very little software ever used it – basically only software directly ported from CP/M-80 (such as, possibly, very early versions of WordStar for DOS–surviving copies appear to use INT 21 instead, but the earliest versions are quite possibly lost.)


OP used the word "interrupt" so I was thinking about the INT 21h API into MS-DOS. I never did any coding under CP/M. What assembler coding I did under MS-DOS that touched the PSP was mostly concerned w/ pulling the command line out. I can't say that I ever noticed the stuff in there that's clearly for CP/M compatibility. I do remember exiting COM programs using "RET", which transferred control to CS:0000 where an INT 20h was always present. I'm reading that was for CP/M compatibility, too. Neat.


Haven't the courts decided that an interface is not copyrightable?

Also, CP/M bore a remarkable resemblance to DEC operating systems, like RT-11.


The 8086 was not object compatible with the 8080, but one could "assemble" 8080 code (or even Z80 code) into 8086 with an automated process. It might not be optimal code, but it would get a working application up and running rather quick on new hardware.


Patterson ripped off CP/M the same way that Columbia and Compaq ripped off IBM...by creating clean-room copies of CP/M and the IBM PC BIOS.


Why would you intentially make things different? There is a lot of value on agreeing on low level details.


> IBM turned instead to their second choice, a small company that was supplying BASIC interpreters to many 8-bit micros.

a small company founded by a kid, Bill Gates, whose parents happened to be IBM's lawyers.


The real story was that she was a board member on another corporate board with someone who was also on IBM's board. Even with that indirection, she did use that influence to convince IBM to use Microsoft for the PC.

https://www.nytimes.com/1994/06/11/obituaries/mary-gates-64-...


And had access to a computer at school starting eight grade in 1968, at a time purchasing price started at $500k, 4 million adjusted for inflation.


I have never heard that before. Do you have a reference? What I have read is that Bill Gates's mother was on board of directors of United Way with the chairman of IBM.


I agree with you. Looking at Bill Gate Sr's wiki, it shows he worked at Preston Gates & Ellis, LLP or a firm he co-founded before.

https://en.wikipedia.org/wiki/Bill_Gates_Sr.


A small but probably important detail!


As far as I can tell it's entirely untrue. Gates's mother wasn't a lawyer at all, and neither of them ever worked for IBM.


As far as I remember, it's from a tech blog or tech history book, but I can't quite remember the exact source right now.

In any case, we know Gates father was a lawyer - according to Wikipedia he "co-founded the law firm Shidler McBroom & Gates in 1964, which later became a part of Preston Gates & Ellis LLP (PGE). He practiced with the firm until 1998, when it was merged into the firm now known as K&L Gates. During his career he served as president of both the Seattle/King County Bar Association and the Washington State Bar Association. Gates served on the boards of numerous organizations in the Pacific Northwest, including the Greater Seattle Chamber of Commerce, King County United Way and Planned Parenthood. In 1995, he founded the Technology Alliance, whose mission is to expand technology-based employment in Washington".

Regarding his wife, we should state he had two wives, and the second wife apparently had a museum-related career. Gates II first wife, Mary Maxwell Gates was also not a lawyer but studied education, first worked as a school-teacher and then had various board positions.

So I retract my initial claim "they were lawyers working for IBM" and replace it by the more precise "Gates father was a lawyer and her mother was on various boards and they both allegedly knew people inside IBM were looking for an operating system at the time".

EDIT: I'm based in Europe and a different age group - maybe some HN are from the Washington area and actually witnessed this, it would be quite interesting to learn more about how IBM and Gates actually got together, roles of parents and other intermediaries.


but what kind of lawyers were they?


> was more interested that day in going flying his plane than meeting with corporate men in navy suits. (This may be apocryphal.)

That day was his wife’s birthday and he had already promised her to go flying.

Here it is reported by Stewart Cheifet, his long term co-host of the Computer Chronicles (which is a treasure and freely available in the Internet Archive https://archive.org/details/computerchronicles):

> “... but it’s just as good. It’s just that that day they came was his wife’s birthday, and he said «Sorry, I’m committed to my wife, we’re gonna go flying» [...] He didn’t have to worry about money, but what killed Gary was just the... he was annoyed at what happened. [...] [Cheifet in an excerpt from Computer Chronicles in 1983:] Gary, are we at the end of the line in the evolution of computer hardware?https://www.youtube.com/watch?v=WdtHS_X1ibg&t=430s

Edit to add: the first video in the Computer Chronicles Archive collection is the “Gary Kildall Special” from 1995, and I quote here a couple of paragraphs:

> “In 1976, Gary and his wife Dorothy founded a company called «Intergalactic Digital Research», later shortened to «Digital Research».

> “The main thing that CP/M brought that was different from how anybody else was approaching micro-computers, was that Gary made a logical separation of the physical I/O system from what was called the BDOS. The physical layer system was called the BIOS, the Basic I/O System, and that was the term that Gary used in early CP/M. The BDOS was the Basic Disk Operating System. The BDOS was independent of the specific hardware that you had in your micro-computer. By comparison, we are looking at the time of UNIX being out as a major mini-computer operating system, and you could not move executables of any application program from one UNIX machine, unless it was an identical machine, to another system. So that was really a remarkable innovation.

> “CP/M sold extremely well, and DRI flourished. The company expanded to larger quarters across the street, the number of employees grew from 9 to 24. When the new VAX mini-computer arrived, it was too large to fit inside the building, so the entire structure was lifted off its foundation to accommodate the machine. A beaming Gary told the staff that they would all be getting a «raise» that week.


Reply to myself: watching that Gary Kildall Special of The Computer Chronicles, there is a segment at 17:10 talking about that incident, presented too by Stewart Cheifet, where Tom Rolander, first DRI employee, tells that he was flying with Kildall that morning for a business trip, then “flew back down and joined the IBM meeting, we were there for the meeting later in the afternoon”.

A sibling comment (https://news.ycombinator.com/item?id=32082362) tells a story consistent with this one.

The first video from which I quoted Cheifet is from 2013, while this last one is from 1995. I have no way of verifying which one is right.

Here is Tom Rolander again, in 2017, in an interview with the Computer History Museum, describing the background between Gary Kildall, Bill Gates, and IBM, and then a very detailed report of the incident, again consistent with his 1995 report: “Oral History of Tom Rolander” https://www.youtube.com/watch?v=VREZ6Zx_usc&t=5040s


I've got to second checking out Computer Chronicles for anyone at all interested in the history of computers or people just looking for a little nostalgia.

The YouTube algorithm suggested it to me a few months back and I've been watching episodes whenever I get a little downtime. Watching John Dvorak teardown a brand new IBM PS/2 literally and figuratively was pretty fun.


Entertainingly clarified in the wonderful podcast 'Advent of Computing' ep. 36 [0]. Highly recommended!

[0]https://adventofcomputing.libsyn.com/episode-36-the-rise-of-...


Small correction, he acquired QDOS, which was then morphed into MS-DOS.


Initially, just licensed. Only later acquired.

If you're going to correct, you've got to be right!

I say this as something of an HN admirer of yours, because you so often comment to people with exactly what I would say myself. We should talk.


Point taken and thanks. :)


You could get a CP/M-86 license for the PC. Also Turbo Pascal. But MS-DOS was the cheapest so it prevailed.

One of the most impressive things about this is that Bill Gates and MSFT actually had a deal with IBM and came out ahead. Very few companies did this.


It was not Turbo Pascal. You are confusing it with the UCSD p-System, a different Pascal.

https://en.wikipedia.org/wiki/UCSD_Pascal#UCSD_Pascal_and_th...

TP was a Borland app which ran on CP/M and later DOS; it would be no use on its own. It was not an OS.

The 3 OS choices for the IBM PC were:

[1] The UCSD p-System, a Pascal environment with a VM for portable code.

[2] PC DOS, IBM's version of MS-DOS.

[3] DR CP/M-86, at about 3× the price.


You know, I had UCSD in my head but typed Turbo Pascal.

I actually used Turbo Pascal for a project, and found it quite good.


These things happen.

Way way back, before DOS and the PC and so on, the UCSD p-System was very widespread.

TP supplanted it, but TP on DOS was very different from the original CP/M TP, and indeed with Delphi on Windows it transformed again into something wholly different and much more powerful.

Delphi fused Turbo Pascal, its fast compiler and rich capable DOS IDE, with something much like NeXTstep's Interface Builder and a set of OOPS libraries for Pascal to construct GUIs.

Which inspired MS to copy it, taking the forms painter from the Ruby database tool, and an extended kinda-sorta BASIC, and some OLE/COM GUI controls, to make something... well, sprawling and unfocused and sluggish and overcomplicated.

Then, when MS was seriously afraid that its OS and apps divisions would be split up by the DoJ, which the company forcibly transformed into .NET so it would have a tool for asserting cross-platform apps dominance.

But the fierce and determined Judge Thomas Penfield Jackson was replaced with the conciliatory Judge Colleen Kollar-Kotelly, and she backed down and let MS get away with it.

So the big split never happened, and MS was left with a fancy cross-platform tool it no longer really needed.

The result has been decades of bloat and flab, a somewhat tokenistic FOSS version for Unix-like OSes, and a wasted opportunity... but which nonetheless strangled the 3rd party compiler/dev-tools market on Windows.

Mac OS X succeeded because it bundled great dev tools, therefore strangling the Mac dev tools market.

And the Linux world does its monastic Unix self-denial thing -- plain text, horrible 1970s text editors, because suffering is good for the soul -- and never goes anywhere much. C++ is an evil modern heresy! We can have 50-line "object" calls in plain C, and it remains clean and holy, just as Saint Ritchie and the prophet Stallman decreed.


Lots of visual tools run under Linux, lots of C++ written for Linux.

But general Linux devs tend to be more self sufficient and need less hand holding. Unless they are doing Java, which is almost impossible to use effectively without an IDE.


In case it was not clear, my point was not entirely serious.

However I have to say that I have seen several appalled comments from Windows devs looking at using Linux on the theme of how awfully stone-aged the tools are.


Before the direct reply, I remember Judge Jackson. The ruling in the trial was quite hard hitting and many people were expecting something like the Bell System breakup. Likely three components, Operating Systems, Office, Dev Tools.

Back to working on Linux.

There's something to what you are saying. But it may partly be culture shock going from full IDEs to command line oriented projects.

I did some work with Visual Studio with C++ and liked it. Of course, the Windows API is so complicated you need as much help as you can get. Also a tiny bit of Visual Basic, which I found very quick to get things done with.

There are tools for Linux, of course.

For the Java folks, Eclipse runs on Linux.

For Python, the PyCharm IDE is pretty good.

Qt has visual tools that run on Linux.

VS Code runs on Linux.


CP/M was nice, it's a shame we got saddled with MS-DOS for decades.


Having started my MS-DOS path with version 3.3, and used all MS-DOS versions, also the DR-DOS 5.0 and 6.0 versions, experienced CP/M on the Spectrum +3A, I fail to see how CP/M was better.


To be fair I was thinking about the way MS-DOS solved problems that came along later like having lots more RAM and larger file systems. 640k, expanded memory, extended memory, file size limits. Things that I don't think CP/M was developed long enough to have to solve, so maybe it's not really fair to compare the two.


It would have probably ended up in similar mess with some different trade-offs and design decisions. Not in anyway certain it would have been better.


Which directory separator did it have?


Note that the OEM README[1] for MS-DOS 2 (the first version with a hierarchical filesystem) suggests that it was at IBM’s insistence that MS-DOS used backslash for directories and slash for options, rather than slash for directories and hyphen-minus for options (even though Microsoft’s own programs for CP/M apparently used slash for options due to DEC influences, instead of the brackets used by CP/M itself[2], so this is a bit of a tangle). The documentation and examples for CONFIG.SYS[3] also bear an evident Unix influence, note in particular AVAILDEV and SWITCHAR. The MS-DOS-specific calls for file descriptors (as opposed to CP/M-compatible calls for FCBs) are called “XENIX file calls” in the source[4]. (All DOS system calls for files accepted either separator, but the option parsers would retrieve SWITCHAR[5] and give it precedence.)

[1] https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/...

[2] https://news.ycombinator.com/item?id=30510935

[3] https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/...

[4] https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/...

[5] http://www.ctyme.com/intr/rb-2752.htm


> it was at IBM’s insistence that MS-DOS used backslash for directories and slash for options

I think this is a misinterpretation. See the footnote in this article:

http://www.os2museum.com/wp/why-does-windows-really-use-back...

Look at the positions of `\` and `/` on this keyboard: https://en.wikipedia.org/wiki/Model_F_keyboard#/media/File:I...

Both were easy-to-type characters on US-layout keyboards, not requiring shift or any other control key.


Yep, there was a (brief) period of time -- before MS-DOS became wildly popular -- when Microsoft was pitching Xenix as the future operating system for the PC.

(Also worth noting is that MS-DOS 2.0 was a nearly complete rewrite of the 1.x codebase...)


I am not sure if you are being facetious or not.

CP/M did not support subdirectories, so it did not have a directory separator.

Its design was derived from a multiuser minicomputer OS (or several of them, principally DEC OS-8) and so it had user areas instead:

A1:

B6:

C3:

http://www.primrosebank.net/computers/cpm/cpm_cookbook_user....


I am not facetious. I wonder how things would have turned out if CP/M "won".


OK, fair enough.

I suppose it's fairly natural to assume from the POV of the 3rd decade of the 21st century that computers from 50 years ago had basic facilities like hierarchical directories... but not all of them did.

Big ones like high-end minicomputers did. I learned on VAX/VMS at university in the 1980s, and it did.

Cheap low-end minis didn't, and nor did the early 8-bit machines whose design was inspired by low-end minicomputers.

The main influences on CP/M were DEC OSes: OS/8 and TOPS-10.

https://en.wikipedia.org/wiki/OS/8

https://en.wikipedia.org/wiki/TOPS-10

The 2nd is mentioned here:

https://en.wikipedia.org/wiki/CP/M#Early_history

I have never used either -- I'm not that old -- and I am not sure but I don't think either supported hierarchical subdirectories.

The closest thing that evolved into something that did was the DEC OS RSX-11, which influenced VMS. They used a filesystem called DEC Files-11:

https://en.wikipedia.org/wiki/Files-11

So that did end up supporting hierachical directories, but there isn't a "directory separator" per se. That's a UNIX-ism that MS-DOS 2.0 copied.

A VMS file in its folder might have been called something like:

VAXA$DKA100::[USERS.LPROVEN.SOURCE.FORTRAN]WUMPUS.FOR;42

In other words, devices had multicharacter names that had meaning (e.g. what type of controller board, then which controller, then which disk), possibly after a cluster node name, then in square brackets a folder path separated by dots, then a filename, then another dot, then a 3-letter extension, then a semicolon, then a version number.

Looks baroque compared to the dead simple UNIX name style...

/home/lproven/source/fortran/wumpus

Every time you save a file, the version number increments automatically. And path specs combined with device names and cluster names mean that the filename could point to another disk on this controller, or another disk on a different controller, or a disk on another node in the cluster, or a disk on any node in a named cluster.

You can't do that so easily with the Unix naming system. So the sysadmin has to mount folders from other machines into this one's filesystem, and that means also setting up some kind of distributed authentication like NIS or YP or LDAP, and then some PAM modules or something... and it all gets very complicated.

In other words, the simplicity of the UNIX design doesn't take complexity away: it just hides it. It's still there but it becomes someone else's problem.

Whereas the DEC way of doing things sort of puts the complexity right there in front of you, but in return, you got rich facilities right there.

Much less need for Git when files are versioned and you can go back to an older version before you broke something just using info encoded into the filename. Much less need for NFS mounts when the filesystem knows about controllers and networking and clusters and lets you address them. Much less need for bolted-on fancy authentication when that's built into the OS because the designers thought about stuff like networks, clusters, and authentication, when all that got taken _out_ of UNIX and then had to be bolted back on later.

So, yeah, the UNIX way is simpler, but OTOH that also means it's poorer. Poorer as in less rich. As in the DEC system was richer: being richer lets you do more.

CP/M evolved into multitasking multiuser OSes in time, but DR didn't get to re-invent all this stuff.

Maybe if DOS had never happened, DR would have prospered and bought DEC instead of Compaq buying DEC, and this stuff would have made it into PC OSes.

Who knows...


I believe CP/M always used the forward slash as the CLI modifier argument prefix (where Unix would use a dash). MS-DOS inherited this.

When directories were eventually added, the forward slash couldn’t be used as a separator because it was already used for modifiers.


MS-DOS did have a function to change the option character (INT 21h, AH=37h) [1], and the "kernel" always accepted both '\' and '/' as a path separator (and that is still the case today; the shell however, is another story). The same call can also change MS-DOS to require "/DEV/" before device names. [2]

[1] Documented for MS-DOS 2.0; documentation removed for MS-DOS 3.0; still available (according to my source) through at least MS-DOS 3.30

[2] God, why do I still remember this information thirty years later? Sigh.


CP/M does not use forward slash as the CLI modifier.

Examples - from the standard CP/M utilities (CP/M 2.2)

ASM FILE.ABC

.ABC encodes options. Source file for ASM is always .ASM

STAT uses $ - STAT FILE $R/O sets file to read-only PIP A:=B:[G0] - PIP (copy, "peripheral interchange program"), uses [ for options, as do later Digital Research programs (like the linker). Basically /no/ Digital Research use of / as option separator.

Microsoft used / - for example the command line L80 FILE,FILE/N/E - which means link FILE.REL (relocatable), naming the output FILE.COM, and link and exit.

CP/M 2.2 introduced "user areas" - a disk could be divided into 16 user areas (USER 0 to USER 15). There was no "searching" until CP/M 3. CP/NET (Digital Research networking) used [ as a separator. Examples (from CP/NET documentation)

A>RMAC SNIOS A>LINK SNIOS[OS]

LOGIN {password}{[mstrID]}

LOGIN secret[01]

would log in to server 01, with password secret

NETWORK B:=D:[F]

assigned B: to server 0F, drive D:

The lack of directories was not such a loss, as the maximum disk size for CP/M 2.2 was 8MB. Remote drives with CP/NET could be much larger (I have used up to 1TB).


Forward slash as a modifier prefix was IBM's desire because it was what they used in Mainframe OSes at the time. A lot of MS-DOS things were for "compatibility" with IBM Mainframes at the time. Supposedly, Microsoft was lightly against the forward slash as command argument because they preferred Unix machines at that point as development mainframes and liked the POSIX defaults for forward slash as directory separator. (Which is why MS-DOS even from the early days of the file system often supported both for directory slash in first party commands, even if individual app argument parsers from third parties did not.)


> Forward slash as a modifier prefix was IBM's desire because it was what they used in Mainframe OSes at the time. A lot of MS-DOS things were for "compatibility" with IBM Mainframes at the time

Not true. On IBM mainframes, options are generally specified in a NAME=VALUE or NAME(VALUE) format. For example, here is a TSO command to allocate a dataset: ALLOCATE DATASET(ALLOC.FILE1) NEW DIR(4) TRACKS SPACE(2,3) DSORG(PO) RECFM(F) LRECL(80) BLKSIZE(800) CATALOG

VM/CMS uses an open parenthesis to introduce options instead, for example: LISTFILE (LABEL

The forward slash option style does not come from IBM mainframes.

Nor (despite what many people think) does it come from CP/M – CP/M's own option style was to put options in square brackets: PIP B:=A:*.COM [G9 V]

Not sure exactly where CP/M gets that from, but may be very vaguely inspired by IBM mainframe conventions (especially VM/CMS), with square brackets replacing parentheses for whatever reason, and using single characters to save memory and typing.

What I actually believe happened: forward slash comes from DEC via Microsoft. Microsoft's development tools for CP/M used that option style, which Microsoft got from DEC, because they didn't like CP/M's native option style. QDOS/PC-DOS/MS-DOS 1.0 copied that Microsoft option style.

Yes, IBM did tell Microsoft not to change it from / to - between PC-DOS 1.0 and PC-DOS 2.0. But that was simply because IBM cared more about backward compatibility between DOS 1.0 and DOS 2.0 than Microsoft themselves did. It was nothing to do with mainframes.

The only thing about DOS which shows any strong direct IBM influence, in terms of actual syntax/terminology/concepts/etc, is code pages.


This is not true.

Most mainframe OSes have flat filesystems which do not have the concept of subdirectories.

They also do not use command switches.

The behaviour was almost certainly inherited from DEC TOPS-10:

http://www.os2museum.com/wp/why-does-windows-really-use-back...

This is not a mainframe OS, or an IBM one either. It ran on a 36-bit DEC minicomputer, the PDP-10.


The same as always \, while CP/M didn't even had directories, it was a flat file systems.


CP/M didn't have sub-directories, though it did have 16 "user areas" on a disk.


MS-DOS did not have directories at first either. It was a feature in version 2.0, when hard drive support was added.

Directories seem to have been a foreign concept among early home computer operating systems and I suspect its adoption was driven by the adoption of hard drives. For example, the Apple II did not gain directory support until ProDOS was introduced and the Macintosh only gained folders with the introduction of HFS. I don't recall directories existing for the Commodore 64 either.


Directories just weren’t worth it on discs that stored less than 200k. You organized stuff by putting the floppies in the right place in their storage boxes.


Technically, the original Macintosh filesystem supported folders as "an illusion maintained by the system software"[1] in spite of its flat directory structure.

[1] https://developer.apple.com/library/archive/documentation/ma...


Oooo, question for those that might know a little more about this.

I had an Amstrad (CPC6128 running CP/M) and I found that if I did cat to list disk contents without a disk in the drive enough times in a row it would eventually list out really random contents. Anyone know what might have been going on.


CAT would have been AMSDOS, not CP/M (it was DIR in CP/M). Not sure what was happening in that case though - it sounds like a bug, but not one I ever recall encountering!


Oh interesting. I swear it was cp/m; cat I’m more hazy on (though I feel like I didn’t use dir until ibm dos).

I had to really hammer on the command, and it would actually be trying to read either the hardware. I wonder if it was actually a physical issue that triggered it.


Sounds like whatever check that was used to determine whether a floppy was present or not had some small probability of giving a false positive. Maybe because without a floppy, the head would read random data that could pass some integrity check by chance.


"This may be apocryphal."

Yes, you story is not true at all. Bill's mom was higher-up executive in IBM and persuaded company to do business with her son's company, not DR. That gave rise to Microsoft.

BTW: for a long time many people were using DR DOS as a much better replacement for MS DOS, which was broken in many places (I did that too). Bill was not very much worried about shipping broken stuff, that's why we have seen "great" stuff like Windows ME or Windows Vista. Sadly, at that point Microsoft was practically a monopoly on the operating system market (Unix/Linux were not a thing, Apple was fighting with its own problems).

The good thing that happen to Microsoft and to its users was Windows NT kernel, that was a sort of a rip-off of rather sane VMS kernel, so Windows NT, Windows 2000 and their successors were more or less acceptable operating systems.


> "Bill was not very much worried about shipping broken stuff"

This goes against claims like[1] where Bill Gates got the spec for Excel Basic (to become Visual Basic for Applications) and read it and annotated it overnight, to grill the the author on the details, and says "Bill Gates was amazingly technical. He understood Variants, and COM objects, and IDispatch and why Automation is different than vtables and why this might lead to dual interfaces. He worried about date functions. He didn’t meddle in software if he trusted the people who were working on it, but you couldn’t bullshit him for a minute because he was a programmer." and

"Over the years, Microsoft got big, Bill got overextended, and some shady ethical decisions made it necessary to devote way too much management attention to fighting the US government. Steve took over the CEO role on the theory that this would allow Bill to spend more time doing what he does best, running the software development organization, but that didn’t seem to fix endemic problems caused by those 11 layers of management, a culture of perpetual, permanent meetings, a stubborn insistance on creating every possible product no matter what, [...] and a couple of decades of sloppy, rapid hiring"

[1] https://www.joelonsoftware.com/2006/06/16/my-first-billg-rev...


> Bill's mom was higher-up executive in IBM

This is also not true at all! Mary Gates never worked for IBM. However, she knew IBM's chairman John Opel.


> That gave rise to Microsoft

Microsoft was already one of the biggest most significant microcomputer software companies.


Surely the choice of OS cannot depend on a single day.

CP/M seemed much nicer.


Hell no. (MS-)DOS was awful in every aspect, but CP/M was worse. It's quite amazing how age seems to make people paint the distant past rosy.

In 1980 CP/M would have been the obvious choice though for a micro computer, due to market dominance (there were penty of commercial software application available for CP/M, including, later, WordPerfect and Multiplan) and limitation of the hardware at that time. Glad that we moved on.


How was it nicer?


I used CP/M back in the day, on some of the last-ever CP/M computers, the Amstrad PCW series.

I still have one: they ran CP/M 3.0, AKA CP/M Plus, the final and richest version.

I don't think it was nicer or better. It was simpler, and so arguably cleaner. A CP/M machine generally had at most 64kB of RAM and floppy drives: machines with a hard disk, or with more RAM, were rare.

So that meant CP/M could be a lot more minimal than MS-DOS.

CP/M grew up into CP/M-86, which turned into Concurrent CP/M, a full multitasking OS. That grew into Concurrent DOS, a full multitasking MS-DOS compatible multiuser OS.

And CDOS developed into two things:

* DR FlexOS, a real-time multiutasking multiuser OS with a GUI, which is still around today in the form of IBM 4680 and 4690 OS.

https://en.wikipedia.org/wiki/4690_Operating_System

Latest update: December 2020.

* DR DOS, the original better DOS than DOS.

Probably the best-selling and most widely-used member of the family.

Still around today as DR OpenDOS. I've been working on it myself.

https://liam-on-linux.livejournal.com/58013.html ← info & downloads

https://liam-on-linux.livejournal.com/79015.html ← VirtualBox VM images


Concurrent DOS (CDOS) did not develop in to FlexOS.

That confusion comes from the original naming it had, CDOS 286.

FlexOS was a new development mainly in C, vs the assembly based Concurrent DOS. This is all obvious from reading the programmer APIs and header files for FlexOS.


OK.

I may be misinformed: this is what Wikipedia claims --

« Still named Concurrent DOS 68K and Concurrent DOS 286, it was renamed into FlexOS on 1 October 1986 to better differentiate the target audiences. »

https://en.wikipedia.org/wiki/FlexOS

« These same limitations affected FlexOS 286 version 1.x, a reengineered derivation of Concurrent DOS 286 »

https://en.wikipedia.org/wiki/Multiuser_DOS#CDOS286

But I've followed several of the references and they do not seem to bear this out, so I defer.


Wikipedia is what it is, I managed to get some of the FlexOS page updated based on pointing them to better info, but they're still not correct.

When FlexOS was first created (as a thing written from scratch in C), it was aimed to be released under the name "Concurrent DOS 286" (aka CDOS-286), as a general DOS for 286 based PCs.

This is apparent from the various descriptions of the effort at the time, including the BYTE article. It seems obvious that this use of 'Concurrent' was for marketing purposes, as the code base has no relationship to the earlier products using the 'Concurrent' name.

In that development time frame, the port to the 68k was done, specifically to a Motorola VME/10 device; however some of the media reports on the port are themselves confused, as they reference the old Concurrent not the new C based thing.

That overall effort to create a general 286 DOS was eventually abandoned, when issues with how real mode emulation on the final 286 chips performed, and that the 286 scheme had become a dead end with the 386 being available. Hence how it got retargeted to embedded systems, and renamed to FlexOS.

I worked for a company developing a product based on FlexOS between 1990 and 1997, I had access to the APT and SBK (the former being the application API and libraries, the latter the equivalent for device drivers). The header files have a confusing mix of names in them as the product was renamed.

Have a look at some extracts on:

https://en.wikipedia.org/wiki/Talk:FlexOS

I once performed a dig of media sources for FlexOS, and found a bunch of obviously confused stuff in terms of PRs, etc. So a random editor on wikipedia trying to make sense of it is not in the best position.

As to the Multiuser_DOS page on WP, and it referring to CDOS-68K as a successor to CP/M-68K that sounds like confused speculation. FlexOS has/had the ability to offer multiple 'Front Ends' (FEs).

It had its own native APIs (which the APT above provided), the intended general DOS (CDOS-286) had a parallel DOS API (Int 21) Front End. The CDOS-68K version had the native FE, and a parallel CP/M-68K FE. The programs in the 68K distribution zip files are mainly written to the native FE, but the compiler (possibly also linker, librarian) are written to the CP/M-68K FE. The version of FlexOS I worked with only had a native FE in FlexOS-286, but FlexOS-386 also had a somewhat improved version of the original DOS (Int 21) FE. Good enough to run Turbo-C at the time.

Frankly, IMO, all of the Concurrent DOS 286 and CDOS-68K stuff on the Multiuser DOS page should be on the FlexOS page, with only a small piece of text on the MU-DOS page to the effect that the use of 'Concurrent' regarding the early form of the FlexOS products was a marketing name, and they had no relation to the other 'Concurrent' products.


OK, so fix it then! That's how WP works. If you think something belongs better on another page, then move it, and leave a link.


Theoretically, at one time maybe. Now - with their rules, it just ain't worth jumping through the hoops.

I know some statements are rubbish, but I can't use my personal knowledge to correct things; and the various 'secondary sources' which one is obliged to reference are themselves often flawed misinterpretations.

I'm not going to bother to create an account, just to get in to an edit fight with someone riding a hobby horse.

WP is basically a bulletin board, from which one has to launch off to find the truth.


Sadly, I do know what you mean and I at least half agree.

I have been attacked for WP edits and had entire articles deleted, and now all I do is occasionally fix typos.

The deletionists are in control and they have their own weird little social network of pseudonymous semi-trolls, giving each other strange little awards. I don't like it at all, but that is much of the C21 internet for you.


Bill Gates mother having a seat on IBM's board was not a factor in IBM giving him such a sweet deal?


Mary Gates was on the board of United Way; so was IBM's chairman at the time, so they were friendly. She didn't work for as a director of IBM.


> The discussion is not over yet, but we believe this statement is equivalent to the well-known BSD or MIT licenses.

That's not now I'd interpret it. "Open Source" in my mind means that the software uses one of the OSI approved licenses. The quoted paragraph:

> Let this paragraph represent a right to use, distribute, modify, enhance, and otherwise make available in a nonexclusive manner CP/M and its derivatives. This right comes from the company, DRDOS, Inc.'s purchase of Digital Research, the company and all assets, dating back to the mid-1990’s. DRDOS, Inc. and I, Bryan Sparks, President of DRDOS, Inc. as its representative, is the owner of CP/M and the successor in interest of Digital Research assets.

is not even a license in the traditional sense. It defines nothing. Whatever rights it grants do not appear to be transferrable. Worst of all, it does not even mention source code.

If the owners of the CP/M source code want to make it open source, what's so hard about attaching the actual MIT or BSD licenses to a source distribution and publishing it?


This is most likely why the post mentions that "discussion is not over yet". They seem to be quite optimistic that we might be getting a proper FLOSS release.


This sort of confusion could have been avoided if they had just said "the source code to this program is now free to distribute under the (MIT|BSD|GPL|etc) license" from the beginning. Nobody knew what exactly the intent of this novel "let this paragraph represent" approach was supposed to be, and now it just sounds like we have a slightly clearer idea.

No need to get cutesy with something as important as your license terms, people.


> what's so hard about attaching the actual MIT or BSD licenses to a source distribution and publishing it?

From experience in related things: lawyers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: