
Hi! For the past 3 months I’ve been building an x86 OS inspired from the very first versions of Mac OS (system OS 1-6) and windows 3.1. At first I started in full bare metal assembly but I realised I was going to need a higher language like C to accomplish this, so I started rewriting from scratch. Thankfully, this happened in the first week when I did not have even a proper gui. Later, I started implementing a gui, wm, shell, apps, file system, fdd support and more, until I asked Claude to make a serious assessment of my os compared to my inspirations. While it was shining in some places, it fell behind in categories such as display modes (I was using mode 13h) and more. So instead of polishing the “demo”, as it called it, I started improving it yet again. Switching to VESA was relatively easy. Adding psf fonts was kinda medium (I don’t even know if they really work; I got frustrated and moved to something else). Anyway, I got to external apps loading and that’s where my problems began. I was only able to make one external app load at a time and this is because I’m using a flat memory model, plus running the whole thing in ring 0. This is where my question appears: should I start over and use ring 3 (user mode) and implement virtual memory or scrap multiple apps loading and have only one loaded at a time?
I would like both an answer to my dilemma and a thought about my work? Do you like it? Any major issues or advices you can give me? Thanks.