Hacker News new | past | comments | ask | show | jobs | submit login
MS-DOS was *not* an illegal clone of CP/M (liam-on-linux.dreamwidth.org)
19 points by lproven on Aug 15, 2022 | hide | past | favorite | 9 comments



Does this mean that the story about PCDOS 1.0 containing a Gary Kildall Easter egg is not exactly true?


Huh. Lost my part-written comment somehow.

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...


OK, I'm confused. Did Bill Gates write some version of DOS that was marketed and sold?


We need to specify which version of MSDOS we're talking about. And which version of CP/M we're talking about.

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.


SCP, Seattle Computer Products, not "Seattle Computer Company".

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.


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.

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.


:-D OK, then, fair enough!

In which case, I'm impressed. Thanks for the additional context and info.


The CALL 5 interface was also provided in DOS, even the later versions. CP/M 86 used INT E0h instead, but the registers used were the same (function number in CL).


No. Big Gates did not write any version of DOS.

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.




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

Search: