Chapter 22 of "<i>Code: The Hidden Language of Computer Hardware and Software</i>" uses CP/M to illustrate the inner workings of operating systems. I highly recommend this book overall: <a href="https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319" rel="nofollow">https://www.amazon.com/Code-Language-Computer-Hardware-Softw...</a>
My first CPU was a Z80 running CP/M from two floppies. Monitor showed monochrome letters written in WordStar. Only survivor is moving the cursor usually word by word probably now hard coded in muscle memory. Writing this on a machine with no moving parts nor noise. Took 40 years to get from ASM to WASM, quite a ride.
The source code of a few versions of CP/M was released a couple of years ago:<p><a href="http://www.computerhistory.org/atchm/early-digital-research-cpm-source-code/" rel="nofollow">http://www.computerhistory.org/atchm/early-digital-research-...</a><p>The accompanying article does a good job of putting CP/M in its historical context describing what it actually was. But other than nostalgia (and those who have sacrificed their eternal souls to WordStar), there isn't much of a reason to actually <i>run</i> CP/M itself. There's not a lot to see there - if you've ever used the MS Windows shell, imagine its Paleolithic ancestor.
Back in the day, a friend of mine had 3" disks for the ZX Spectrum +3 with CP/M.<p>So this is a possible way to try out CP/M on real hardware, after finding one in workable state.