This is great, thanks for releasing your work. Very impressive.
You may get some interest from others in the retrocomputing/permacomputing sphere if you implement an Uxn emulator; it is extremely simple and can run on very limited hardware. https://100r.co/site/uxn.html
Vintage hardware would be a great host for Uxn programs, so I suspect this would generate some excitement.
You’re welcome. You’d probably appreciate its focus on long-term stability; the authors wanted an environment for their software that would ensure code could stay frozen in a working state forever. The only thing that may need updates is the VM, as the host OS and userland will shift over time, but the VM is designed to be exceptionally easy to implement and maintain. That comes at the cost of some capabilities, but they were specifically aiming for simpler software, so it works out.
Really awesome work! A simple OS for retro x86 hardware is a really cool project! I wish I still had some era-appropriate hardware I could test-drive it on.
I clicked around in the kernel section and the other commenters highlighting the simplicity weren't lying. It's beautiful in its simplicity.
Seeing the screenshots I was kind of expecting this was a pre-emptive multi-tasking OS (forgetting what I read in the submission).
Things that thus surprised me on a cursory look:
- noticed krn_main() ends with `while (1);` [1]. I would've expected a "schedule" call or something. I assume there's no real busy loop burning CPU, maybe it's never meant to reach this code?
- I'm reminded of the "bare metal OS" when I see one of the apps call `krn_\*` functions directly [2].
Thanks, so glad people like the code! I keep looking for ways to make it simpler and more obvious.
> - noticed krn_main() ends with `while (1);` [1]. I would've expected a "schedule" call or something. I assume there's no real busy loop burning CPU, maybe it's never meant to reach this code?
Yeah, `gui_main()` takes over and is not supposed to return, so the code is unreachable. The loop is just an old idiom used in such places (e.g. [1]), though I've now replaced it with a comment and a call to `halt()` to better convey the intention.
> - I'm reminded of the "bare metal OS" when I see one of the apps call `krn_*` functions directly [2].
Yeah... but at least the kernel doesn't call the apps... which it could ;^)
This is great, thanks for releasing your work. Very impressive.
You may get some interest from others in the retrocomputing/permacomputing sphere if you implement an Uxn emulator; it is extremely simple and can run on very limited hardware. https://100r.co/site/uxn.html
Vintage hardware would be a great host for Uxn programs, so I suspect this would generate some excitement.
Thank you so much! Somehow I haven't heard about Uxn before, but it seems very cool and I'll definitely look into it.
You’re welcome. You’d probably appreciate its focus on long-term stability; the authors wanted an environment for their software that would ensure code could stay frozen in a working state forever. The only thing that may need updates is the VM, as the host OS and userland will shift over time, but the VM is designed to be exceptionally easy to implement and maintain. That comes at the cost of some capabilities, but they were specifically aiming for simpler software, so it works out.
Heh, the "small virtual machine" was NOT a lie! Is that less than 200 lines? Very nice!
Now I feel like integrating that into various things....
This might be nice on one of those pocket x86 machines, but I'm not nostalgic enough to try it out.
Really awesome work! A simple OS for retro x86 hardware is a really cool project! I wish I still had some era-appropriate hardware I could test-drive it on.
I clicked around in the kernel section and the other commenters highlighting the simplicity weren't lying. It's beautiful in its simplicity.
Seeing the screenshots I was kind of expecting this was a pre-emptive multi-tasking OS (forgetting what I read in the submission).
Things that thus surprised me on a cursory look:
[1]: https://github.com/luke8086/gentleos32/blob/main/kernel/main...[2]: https://github.com/luke8086/gentleos32/blob/ea691f14635c023d...
Thanks, so glad people like the code! I keep looking for ways to make it simpler and more obvious.
> - noticed krn_main() ends with `while (1);` [1]. I would've expected a "schedule" call or something. I assume there's no real busy loop burning CPU, maybe it's never meant to reach this code?
Yeah, `gui_main()` takes over and is not supposed to return, so the code is unreachable. The loop is just an old idiom used in such places (e.g. [1]), though I've now replaced it with a comment and a call to `halt()` to better convey the intention.
> - I'm reminded of the "bare metal OS" when I see one of the apps call `krn_*` functions directly [2].
Yeah... but at least the kernel doesn't call the apps... which it could ;^)
[1] https://github.com/freebsd/freebsd-src/blob/main/sys/x86/x86...
Does this OS (either the 16 bit or 32 bit version) require apps built for it, or is it compatible with DOS or Windows 3.x or any other OS.