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):
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.
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.
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.
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.
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>.
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.
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. ;)
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.
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".
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.
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 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:
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.
> 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.
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?
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.
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.
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.
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.
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.
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, 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.
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.
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.
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.
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.
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”.
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.
> 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.
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.
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.
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.
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.
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.
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.
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.
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).
> 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.
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.
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.
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.
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.
> 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”.
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.
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.
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.
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.)
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 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.
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.
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.
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.
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.
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"
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.
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.
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.
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.
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.
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.
> 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.
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..