@John Smith 19
> But I'm unclear how that connects with my point.
CP/M was structured with several separate parts (MS-DOS 1.x was identically structured). There was a BDOS - the actual core operating system, a BIOS - written in assembler and different for each type of machine, a CCP - command processor (command.com in DOS).
The BDOS was written in PL/M, developed on DEC machines and provided in binary code to the OEMs. The BDOS of a particular version was identical on every CP/M system.
There were developers who disassembled the BDOS and hand coded in appropriate variable names (which were not the same as those in the source code) and added their own comments. If they had sold these disassemblies then they would have potentially been in breach of copyright. So they built a program that read the actual BDOS and this triggered the names and comments.
The 'tool' was only meaningful to the specific version of the BDOS. (or to whatever other program the tool was designed for).
If the disaasembly was then compiled it would be _identical_ to the original BDOS. If the disassembly had been put through 8080->8086 translator and recompiled with an 8086 assembler then it would be quite different instuctions but would work the same.
> assembler coders don't tend to write S/W the way compilers generate it.
In the 70s and 80s compilers were rather simple, not a lot of optimization. Basically the compiler output code that had been designed by an assembler programmer for that particular input line.
> similarities between CP/M & QDOS
If he had actually compared QDOS to CP/M he may have found similarities even though they were different CPU targets. But he didn't, he compared it an unknown version of MS-DOS. It has been through several rewrites, including one by IBM to produce PC-DOS 1.1 specifically to eliminate any residual CP/M origins (this was handed back to MS to make MS-DOS 1.25).
You could probably compare MS-DOS 4.01 (which was another rewrite by IBM) against 1.0 and find no similarities of code at all.