CP/M is really open-source now
retronic.us
retronic.us
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..
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.
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.
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.
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>.
and Atari ST price point, or 80% Amiga 500
I passed it on, but wish I didn’t. At this point, I probably could have replaced the switch.
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.
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.
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.
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.
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.
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. ;)
You're probably thinking of SymbOS:
See also: ContikiOS (for 8-bit machines) .. pretty amazing!
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
* 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
That CPU lacked a multiply instruction, so you had to implement that yourself.
Luxury super computer!
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.
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.
http://www.cpm.z80.de/source.html
http://www.cpm.z80.de/binary.html#operating
Search for MP
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.
CP/M was not actually needed for this implementation, it could boot on its own: http://timonoko.github.io/Nokolisp.htm
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.
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...
Let's go a bit further then.
Next, open source SCOPE, NOS/VE and PLATO!
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.
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.
Also, MSDOS is opensource now.
https://computerhistory.org/blog/microsoft-ms-dos-early-sour...
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.
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.
[1] https://developer.apple.com/library/archive/documentation/ma...
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.
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.
When directories were eventually added, the forward slash couldn’t be used as a separator because it was already used for modifiers.
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).
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.
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.
[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.
[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/...
(Also worth noting is that MS-DOS 2.0 was a nearly complete rewrite of the 1.x codebase...)
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.
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 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...
a small company founded by a kid, Bill Gates, whose parents happened to be IBM's lawyers.
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.
https://www.nytimes.com/1994/06/11/obituaries/mary-gates-64-...
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.
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.”
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.
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
CP/M seemed much nicer.
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
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.
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.
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.
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.
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.
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.
[0]https://adventofcomputing.libsyn.com/episode-36-the-rise-of-...
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.
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.
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.
CP/M prints a Digital Research copyright when you boot it up; this seems hard to believe. Is there corroboration?
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.
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.
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.)
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.
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.
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...
See jecel below.
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.
Commodore 64 owners may have a different opinion.... :P
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.
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.
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”.
What IBM wanted was ubiquity rather than technical excellence.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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? :-)
https://en.wikipedia.org/wiki/Seattle_Computer_Products
https://www.theregister.com/2007/07/30/msdos_paternity_suit_...
Also, CP/M bore a remarkable resemblance to DEC operating systems, like RT-11.
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).
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.)
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.
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.
This is also not true at all! Mary Gates never worked for IBM. However, she knew IBM's chairman John Opel.
Microsoft was already one of the biggest most significant microcomputer software companies.
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...
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.
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.
I actually used Turbo Pascal for a project, and found it quite good.
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.
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.
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.
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.
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?
From experience in related things: lawyers.
No need to get cutesy with something as important as your license terms, people.