iansjack wrote:Whilst I appreciate the work that you have done, you are talking about an OS that is considerably more complicated than that described in the OP.
It is specifically designed to look like MSDOS and use the same API as MSDOS. It's true that I started supporting the Windows API as well, but that's not a significant amount of extra code (and note that it was someone else who did the initial work of that, as well as getting PDPCLIB to generate an MSVCRT.DLL). There was an awful lot of time wasted because the tools weren't generating relocation information (neither a.out nor PE, due to two separate things I consider binutils bugs). I didn't realize that that was a bug though, I thought that was just the way things were. And the mainframe was deliberately tamed to support MSDOS as well. In fact, it's an ongoing effort, even as of a couple of hours ago. So basically the question to the OP would be "do you want your MSDOS-like OS to run on arbitrary hardware, ie be portable?". It took me an awfully long time to find out what the "huge" memory model in MSDOS actually was, and it didn't help that I got incorrect information in a public group (alt.os.development) with no correction from anyone. So that's if you want to support 16-bit hardware, with an arbitrary segmentation/selector model. I still haven't sorted that out yet either. I still have the number "4" hardcoded in my MSDOS executables, so they won't be able to make use of the Turbo 186 for example, nevermind the 80286 or the 80386 in PM32 with the D-bit set to 16-bit. Even the design of the OS hasn't been sorted out yet either. It's unclear to me whether I can bend PDOS/386 and leave the OS running with 32-bit D-bits below 1 MB and 16-bit above. The extensions (if any required) to the MSDOS executable so that 64k boundaries are known so that I can adjust when I've got up to 512 MB available on an 80386 (run out of selectors preventing 4 GB from being reached).
Still. All. MSDOS. No consideration for multitasking or virtual memory (someone added that to PDOS, disappeared, and then I had to spend a lot of time disabling it so that I could actually understand and debug PDOS again).
Basically that's it really. I wanted to design MSDOS "properly". Basically - if MSDOS had been written in C instead of assembler, would it have been running everywhere, including the 80386 circa 1987-ish, and the mainframe circa 1985-ish? I doubt any of the above is in any book, but I haven't attempted to search. There was also a lot of confusion as to why ANSI had standardized ANSI output but not input, but I eventually found that it was MSDOS that was responsible for that. And Windows until Windows 10 (and even then they expect you to put non-standard time-sensitive code into your application programs instead of sending two ESC for an ESC key, plus backspace deletes an entire line instead of a character). And MVS to this day unless you count Unix as MVS.
Oh, also I didn't know what a "monitor" was until recently (like 2 years), nor INT 1 and 3, and they were only implemented some weeks ago so that I could start debugging things at the assembler level as required (which it was indeed required). If you rely on an external GUI debugger instead of your own OS on real hardware, that's not really developing an OS - even MSDOS. You haven't proven that your OS can be debugged with your OS.
But you certainly highlight the difficulties of making a project more than a one-man effort. If you could take the time to read just one book you might appreciate The Mythical Man-Month: Essays on Software Engineering.
Ok, thanks. I did buy (1 year ago or something) and start reading the SubC book, basically out of desperation as it was the last missing piece of UC386, but I didn't finish it. And actually I did manage to find someone who was willing to modify SubC for fixed, reasonable cost, but it was a year-long process, and progress was made, but not enough. I'm not good with books. I prefer learning in forums such as this.