
Show HN: A simple Unix-like operating system that runs Doom - ozkl
https://github.com/ozkl/soso
======
mysterydip
Love the test case "but can you run Doom on it?" Great work!

Personally I'd like to see a homebrew OS that attempts some kind of
compatibility with 16-bit Windows, with some modern design/conveniences
(sortof a ReactOS for the 3.11 world). It seems like people make either 8 bit
or 32 bit OSes. Maybe I'm not searching the right terms. Anyone know of
anything, or a starting point?

~~~
jacobush
AFAIK you can run 16 bit Windows programs in Wine.

~~~
mysterydip
Thanks, I'll check it out for some ideas!

------
akling
Nice job ozkl! Cool to see another OS being built in Qt Creator :)

Your generic DOOM looks really easy-to-port, gonna try it ASAP:
[https://github.com/ozkl/doomgeneric](https://github.com/ozkl/doomgeneric)

~~~
ozkl
Thanks! Yeah it is my favorite editor and the os is entirely written in it :)
In fact, doomgeneric is created just for Soso in order to port easily.

------
e12e
Nice. Why 32bit, not 64bit? I don't program much assembler - but after seeing
how much simpler (sane) 64bit is (amd64), I'd have to be really motivated to
do a hobby project in 16 or 32bit (for x86). So curious about that choice in
today's hw world, where you'd have to hunt for real 32bit x86 hw.

~~~
Arelius
I'd like to hear from OP also. But in my experience, x86 documentation is much
more wide spread and available esp regarding system startup.

~~~
ozkl
I chose x86 because I wanted to try the os in my ancient PCs like a Celeron
333MHz. And articles I was reading at the start was for 32bit.

~~~
e12e
That makes sense. It's been so long since I've seen a 32bit x86 (apart from
single board industrial type stuff) - that I didn't really consider anyone
would keep one around... Then again, we do have our old commodore vic 20 in a
cupboard somewhere...

------
rblatz
This is cool, based on the title I was expecting
[http://psdoom.sourceforge.net/](http://psdoom.sourceforge.net/)

~~~
shscs911
Exactly. I read the title as `A simple Unix-like operating system that runs on
Doom`

------
AlexDragusin
Having lua on it is a great way to help spark more interest! Good call.

~~~
ozkl
Yeah, and Lua is also great at dependencies. It doesn't depend anything :)

------
corysama
Nice. Reminds me of the opengl32.dll's that were made to be only just enough
to run GLQuake.

What made 4Mb pages easier than 4Kb?

~~~
ozkl
By using 4Mb pages, we can skip one step which is page tables.

In other words, Page Directory points directly to a 4Mb Page Frame. In 4Kb
mechanism, Page Directory points to a Page Table which then points to a 4Kb
Page Frame.

------
mruts
Nice work! But one question, what’s up with the naming scheme? Some functions
are camel case, other are not. It seems like variables are camel case, but not
all of them. And types are whatever it’s called when you capitalize each word,
but some have underscores. What’s the reasoning?

~~~
ozkl
Thanks! In fact, I prefer camel case for functions. You must be saying this
for HashTable and List functions. I came from C++ world (where i name classes
Pascal case and functions camel case). I wanted to group HashTable functions
together like a class and named them that way. Yeah, it ended up being
inconsistent unfortunately. I named structs in PascalCase.

------
tinktank
This is awesome. How long did it take you and how familiar were you with the
low-level details before you started?

~~~
ozkl
Thanks. I think it would take 8 months night works. But it took longer because
of breaks. I was always interested in low-level stuff especially about
syscalls (how they jump to kernel from userspace). So, I was familiar with
syscall internals and memory protection. But I learnt all including how paging
is done in x86 when I was writing Soso thanks to OSDev.

~~~
eterps
Any books or other resources you used for guidance?

------
zoom6628
This looks like awesome work. Will be studying the source to learn about how
it works. Serious code envy for people who take the time and effort to build
OS'es like this.

Could see this having potential on SBCs and usage in IOT/PLC applications.

------
wmu
That's really nice, I enjoyed reading the code.

------
ferCats99
all i need, thanks

------
tsar_nikolai
But can it run Do... ...oh wait.

Cool project!

------
thsealienbstrds
Pure awesome

