The author delves into revisiting CP/M after 40 years, using real CP/M machines, and developing utilities in C for CP/M. They discuss the use of the 1982 Aztec C compiler, highlighting differences from modern C development, such as function declarations and data type sizes. Surprisingly, CP/M compilers lack full function prototypes and have limited standard libraries, requiring manual implementation of basic functions. They address command line arguments, device I/O, system interfaces, and memory management in CP/M, along with discussing paging and overlays for memory management. Ultimately, the author emphasizes the importance of using real CP/M tools rather than modern ones for authentic development.
https://kevinboone.me/cpm-c.html