Or, said another way; what are some advantages and disadvantages to each? Thank you
CP/M and MS-DOS are very similar - and MS-DOS really is just a "fork" with all new code from CP/M. However MS-DOS continued to improve, gain more functionality, grow to take advantage of the extra memory in PCs and extend out until it was a key element of MS Windows, while CP/M more or less ended at version 3, with version 2.2 the main contender for compatibility.
Something similar happened when MS-DOS 4 came out, and a lot of people stayed with MS-DOS 3.3, however in the end the better memory management on newer systems with MS-DOS 4 won out, and slowly the MS-DOS 3.3 machines died out.
The big differences are;
People used CP/M. Not many people used MS-DOS. And by people I mean the software the wrote - on CP/M machines, you needed to make the system calls for compatibility, but on a PC, the hardware was consistent and compatible and well understood. All of the clones used the same hardware, so there was no need to deal with the OS beyond bootstrapping your program and maybe for some file access and mode changes, but once you got to things like video, you went direct to the screen in many cases. Because of this, MS-DOS but not PC Compatible machines don't have a lot of software for them.
CP/M is a leaner file system and is easier to implement and write your own utilities for.
CP/M came out in the text era, but MS-DOS came out in the graphics era, and so grew in that direction.
MS-DOS changed the names of common commands, which made CP/M feel somewhat alien to MS-DOS users.
CP/M was designed for 24K machines, while MS-DOS was designed for machines starting at 64K and quickly then 256K and 640K and finally UMBs, so it was able to fit more in.
Later versions of MS-DOS came with subdirectories, which fit in well with File Allocation Tables (FAT) type disks. CP/M's format structure didn't support this so well, and while some versions came out with support, the base idea of having the file entries remember where the file is, prevents having a lot of directories spread over a disk as it doesn't support hierarchical structures well.
CP/M files support sparse mode ( eg, Random files where only parts of the file exist on disk ) and common mode ( Files share common elements ) operation, while MS-DOS doesn't. Again, this is a characteristic of CP/M's file structure over MS-DOS.
CP/M also only has about 6 internal commands while MS-DOS has quite a few more and began to incorporate more as it continued. MS-DOS also had an integral debugger in later versions.
Another difference is what comes after the command. MS-DOS has the concept of switches, but CP/M has only the concept that the first two elements are probably filenames, so it populates a full FCB and a partial FCB and then leaves the command line in the lower DMA buffer.
CP/M source was distributed by DRI. MS-DOS source was not.
MS-DOS didn't need to do much to take advantage of x86 architectures. CP/M was limited to z80 systems with smaller memories and there was no common standard to additional memory before CP/M+, but even this didn't fully address the requirements.
The biggest difference though is they lived in separate eras. MSDOS was 1982 onwards. CP/M was dying out by this time and in it's decline. The changeover happed over around 2 years.
MS-DOS continued until 1995 and for a while after that, maybe in decline from 95 to 2005.
And of course, the systems that MS-DOS worked on got a LOT more powerful, very quickly, while CP/M machines never made that leap. Right up to the Pentium era, MS-DOS held it's own.
I really like CP/M. But I'd have chosen MS-DOS back in the 80's once I used it. I think version 3 was just coming out when I went to the 286. Now I'm starting to find an appreciation for CP/M but my experience is limited to CP/M 2.2
David