> Since CP/M 2.x has no concept of sub-directories
It has the notion of user areas. Each file entry has a 4b field tagging the file indicating which user space it belongs to. When you type "DIR" for example, it will filter and show only files for the current user space.
There are no protections across user spaces. Typing "USER n" will change the current user space you are in. Although one could use it to allow multiple people to have a file space on one floppy, often it was used by a single user to partition work, eg, USER 0 is utilities, USER 1 is word processing, USER 2 is source code, USER 3 is games.
So with a little squinting, it is possible to view CP/M has having 16 subdirectories, but the file system is flat in each subdirectory.
The cold hard truth, however, is that CP/M is kind of awful. Back then you didn't have directories and subdirectories, what you had were floppies and disk drives. These were your file management components. Hard drives were rare, and CP/M was just not very friendly to large disk spaces.
User areas had a marginal affect at the time, since they were really considered more apt to their name "User area", as in "separate users", vs a mechanic to actually organize files.
Out of the box CP/M had really poor support for user areas. The simple fun fact that the way you shared a command across user areas was to...copy the file in to each user area. Which is easier said than done.
The file copy program, PIP, could copy files FROM one user area to another (i.e. pull a file from one user area in to your current one), but not TO another user area.
So, in order to copy files in to a user area, you had to have a copy of PIP in that user area. But you can't use PIP to move PIP in the first place. You have to jump through hoops loading PIP into memory with the debugger to span user areas.
Later, new shells and utilities supported the idea of A3:FILE.TXT to represent user area 3 on drive A, started becoming common, but not every program supported it, and the stock OS did not support it either. Recall, in CP/M, the programs did most of the heavy lifting for this stuff.
It's unjust, honestly, to criticize CP/M looking backward. It managed to empower great things back in the day, which is what microcomputing was all about. Its influence is felt to this day. But that doesn't necessarily mean it was a great place to be.
CP/M wasn't that terrible. Some of my first paid development work circa 1985 was writing dBase II apps, with WordStar as an editor, on CP/M on a rather nice NEC PC. It did enough to allow small/medium sized businesses to start "computerising" their workflows for not staggering sums of money.
"It must run CP/M. The source-code to "everything" must be available."
Interestingly, that's only been possible with CP/M relatively recently. Reading over http://cpuville.com/Code/CPM-on-a-new-computer.html you'll see he had to fix some OCR errors, translate 8080 ASM to Z80, etc.
ZSDOS provides replacements for two of the three parts of a CP/M system: BDOS and CPR. The existing BIOS should work perfectly with these replacements, and the BIOS is the only part that is machine specific.
IOW it should run just fine, unless the simulator is written to hook into CP/M itself. I have my own z80 based system emulator where the BIOS is basically breakpoints into host code, and I didn't need to change anything to switch from DR's OS to ZSDOS.
But that doesn't replace the whole CP/M I think, just the shell.
EDIT: I already mentioned altairz80, so I knew that page, indeed. The last time I tried a replacement I
had the same issue: there is no libre CP/M 2.2 a la
FreeDOS, at least fully compatible for the Altair.
That's because you're running on a I/O device at 2 Billion Baud, instead of a 9600 baud device which is more era appropriate. At 9600, ^S/^Q is quite manageable.
It has the notion of user areas. Each file entry has a 4b field tagging the file indicating which user space it belongs to. When you type "DIR" for example, it will filter and show only files for the current user space.
There are no protections across user spaces. Typing "USER n" will change the current user space you are in. Although one could use it to allow multiple people to have a file space on one floppy, often it was used by a single user to partition work, eg, USER 0 is utilities, USER 1 is word processing, USER 2 is source code, USER 3 is games.
So with a little squinting, it is possible to view CP/M has having 16 subdirectories, but the file system is flat in each subdirectory.