MS-DOS was *not* an illegal clone of CP/M
liam-on-linux.dreamwidth.org
liam-on-linux.dreamwidth.org
Anyway, hi, author/submitter here.
I have heard several versions of this story. Most seem to be unsubstantiated AFAICT.
The one that seems to add up is that Dr Kildall claimed that only he knew why some DOS APIs took the exact parameters they did.
Which ISTM is fair enough, if they were written using DR documentation. As I said, DR intended the API docs to be for app writers, but that didn't stop people using them to write compatible OSes, and lots of companies did.
That's how come David Given's amazing CPMish OS was possible:
https://github.com/davidgiven/cpmish
CPMish combines existing BDOS and BIOS replacements and other components. It puts together so many existing replacement parts for parts of CP/M-80 that nothing of the original was left. Theseus' ship, in software:
https://en.wikipedia.org/wiki/Ship_of_Theseus
There was a code investigation that looked for any DR code in the early MS-DOS binaries: https://www.embedded.com/was-dos-copied-from-cp-m/
It concluded that no, code was not copied, but APIs were.
https://www.researchgate.net/publication/309274064_Source_Co...
PCDOS 1.0 (could also be called MSDOS 1.0) was written to use the same set of calls as CP/M 80. (NOT CPM-86.) That was the one that was written by the Seattle Computer Company and eventually sold to Microsoft, bought by Bill gates when he needed something to sell to IBM.
When I was younger back in the 80s, just because I could, I wrote a cp/m emulator that basically intercepted the 'Call 0005" of cp/m and called the MSDOS interrupt instead, using the cp/m register arguments as MSDOS arguments. All those cp/m programs ran perfectly as MSDOS programs. Because the same APIs were used for MSDOS as had been used for CP/M.
This is from my DOC file for the emulator:
First of all, I thought it might be simple enough to make an 8080
emulator which ran an 8080 program in the ES: segment just as if
the ES: segment was a 64K 8-bit system. It did work but so slowly
in the CP/M operating system section that I next thought I should
keep CP/M's CCP and BDOS in 8080 but code the BIOS in 8086 so
that file I/O and console I/O would be a little faster.
Then I made a discovery about MSDOS. I knew that it had been
patterned on CP/M originally, but I didn't realise how closely!
In fact, most of the BDOS calls in CP/M are identical to the INT
21H calls in MSDOS. With this in mind, it is relatively easy to
trap any calls to the emulator's BDOS and use those parameters to
invoke the MSDOS operating system.
This means we don't need CP/M code as such in our emulator; no
CCP, no BDOS, no BIOS - just a jump table so that application
programs can latch into the emulator if required.
Later versions of MSDOS drew largely on UNIX/Xenix practices, like pipes and tree-structured directories. These versions no longer used the original CP/M interrupt calls and used interrupt calls that did a similar job but were more like UNIX calls.Having said that, most of those original CP/M-based interrupt calls were retained also, for back-compatibility with older software.
https://en.wikipedia.org/wiki/Seattle_Computer_Products
MS only bought DOS, and hired programmer Tim Paterson, later on. Initially it just licensed DOS from SCP.
It's PC DOS, with a space, and MS-DOS, with a dash.
I mean, if someone wants to Google this and check that I have my facts straight, they need to be exact about the spelling and punctuation.
DR's version was called multiple versions at different points: DR DOS, DR-DOS, DrDOS, Novell DOS, OpenDOS, DR OpenDOS, etc.
True. But I'm lazy and this isn't really worth me spending a lot of time on. And it shows. With the exception of my quoted text, everything I wrote was purely from memory.
In which case, I'm impressed. Thanks for the additional context and info.
What Gates, with Paul Allen (and Monte Davidoff) wrote MS BASIC, as used in the ROMs of many early-1980s 8-bit computers.
https://en.wikipedia.org/wiki/Monte_Davidoff
They did not write DOS or Windows, nor did they claim that they did.
MS-DOS is based on SCP QDOS, AKA 86-DOS: https://en.wikipedia.org/wiki/86-DOS
It was written by Tim Paterson (one "t"): https://github.com/TimPaterson
Note his excellent LinkedIn URL: https://www.linkedin.com/in/dosdaddy/
Microsoft licensed 86-DOS from SCP. It then licensed it to IBM but retained the rights to licence it to others as well, a very smart move.