• Please review our updated Terms and Rules here

Finished most of my CP/M compatible OS outline today. :) Looking for suggestions.


Veteran Member
Mar 13, 2011
Submit *does* support parameter substitutions within statements. It also supports a simple nesting nut no sophisticated branching or the like. CP/M 3 does support a conditional, provided the preceding command actually uses the "exit code" - which pretty much none do.


25k Member
Jan 11, 2007
Pacific Northwest, USA
But nothing like even the primitive batch protocol of MS-DOS, much less that of UNIX. I do remember writing some pretty hairy SUBMIT/XSUB scripts back in the day, but it was always a bunch of "How the heck do I do this?"
Even MSDOS was pretty weak in this department. I eventually turned to CENVI--Here's Brent Noorda's documentation. Perhaps that may give you some ideas.

Of course, now I use Linux/bash.
Last edited:


Veteran Member
Jan 25, 2022
Perth, Western Australia.
No, I never noticed CP/M-alike - I'll try to find all the files they mention and take a look at what they did.

I ended up writing the entire thing from Scratch in z80, then switched to developing an extended architecture to allow the entire RAM space to be accessed as DISK, so that the memory limits are removed without needing to page - And each process becomes a default file in memory space. That way the first megabyte of memory can be shifted around with file commands.. A bit like a ram disk except it's possible, for example, to write the current memory space allocations and modify the program in real-time, or open up a file for the raster display and edit it directly, drawing directly onto the screen. It can also bypass the disk commands and write directly, so there's no need to write a full record - individual bytes can be targetted and read and written.
I'm just cleaning up the source at the moment, adding a few missing bits (eg, User number, etc ) and checking that my routines return the same result as a real CP/M machine and then I'll put it up on Github.

It's pretty close to CP/M - Main differences are;
* It recognizes lower case filenames, but is case insensitive.
* The CCP supports a few extra commands like delete, and has a built in monitor. ( a bit like Debug in DOS, but is not complete yet ) and add in some of the other suggestions from this thread.
* I still have to code a "Submit" routine, so again will take suggestions from this thread.