Back to News
Advertisement
lluke8086 2 days ago 88 commentsRead Article on github.com

ES version is available. Content is displayed in original English for accuracy.

Hello HN,

I've been working on a simple OS for tinkering and running bare metal apps on vintage PCs.

Since I couldn't quite decide whether to target pure 16-bit, or slightly more capable 32-bit machines, I ended up with two separate versions:

- GentleOS/32 (https://github.com/luke8086/gentleos32) works on i386+, requires 4MB of RAM and VGA display supporting 640x480x16 mode or any 256-color VESA mode.

- GentleOS/16 (https://github.com/luke8086/gentleos) works on 80186+, requires less than 192KB of RAM and a CGA display supporting 320x200x4 mode.

You can find more details in the repos.

Advertisement

⚡ Community Insights

Discussion Sentiment

88% Positive

Analyzed from 1885 words in the discussion.

Trending Topics

#bit#https#com#apps#github#vintage#ram#floppy#run#code

Discussion (88 Comments)Read Original on HackerNews

mysterydipabout 12 hours ago
> The only future plans are bugfixes, optimizations, and adding more apps.

Perfect. Nice to see a platform target stability instead of constantly reinventing itself and its APIs. Definitely want to give it a go!

iamnothereabout 23 hours ago
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.

luke8086about 7 hours ago
Thank you so much! Somehow I haven't heard about Uxn before, but it seems very cool and I'll definitely look into it.
iamnothereabout 6 hours ago
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.
sandosabout 9 hours ago
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....

nosioptarabout 11 hours ago
I think this is fantastic! I love that the code is so clean my dumb ass can understand it despite not using C much.
sixothreeabout 9 hours ago
The code is cleaner that what I was expecting from a C repo. Also, it's quite a feat to fit this into 4 MB on a 386.
lprovenabout 8 hours ago
> it's quite a feat to fit this into 4 MB on a 386.

I had 2 different Librex 386SX laptops, with 4MB of RAM, on long-term loan from work around 1992. One was quite chunky, the 2nd was a slimline thing with an off-centre hinge.

I ran OS/2 2.0 on them both.

So I could run multiple DOS apps, and a WinOS2 VM containing Windows 3.0, meaning I could run Win16 apps as well. And native OS/2 apps, although I didn't have many.

Here's a pic of the original Librex:

https://books.google.im/books?id=tDwEAAAAMBAJ&pg=PA27&redir_...

And the 2nd model:

https://www.reddit.com/r/vintagecomputing/comments/10gepdd/l...

TL;DR

A 386 with 4MB is small now but at the time this was a fairly serious workstation-level PC. At the time my work desktop was a 386DX but it had only 1MB of RAM.

In its time a 4MB 386 could run any one of multiple multitasking 32-bit protected-mode OSes, including OS/2 2.x, SCO Xenix, Coherent 3 or 4, DR Concurrent DOS/386, and so on.

This was a high-end bit of kit and with one of these OSes, or even with Quarterdeck DESQview, it could multitask half a dozen large and demanding DOS apps, or maybe a couple of the still fairly new Windows apps such as WinWord 1, or Excel 2.

oso2k3 minutes ago
I have one those Librex as well. It was fun to play with when it came into my hands back in 1997.
nosioptarabout 5 hours ago
That's a wonderful machine. I'd love to see that style of keyboard on new stuff.

Its wild to me to think of how much old computers could do relative to new. WordPerfect for DOS was always responsive and quick wheb I used it. I've seen ms word cludge up machines that should have plenty of power to run a word processor.

NoGravitasabout 6 hours ago
I had a 386SX-16 running OS/2 from 2.1 to 3.0. It was usually fine, you could multitask several OS/2 and DOS applications or a WinOS2 session. It was very easy to get it swapping, though, and when it was swapping, it ground to a halt. It helped a lot putting 8MB on it, though 4 of those were on an ISA card and very slow.
icedchaiabout 6 hours ago
My first Linux box was a 386SX with 3 megs of RAM (1 meg on the motherboard plus a 2 meg expansion.) It was a tight fit (SLS Linux, I think?) This would've been around 1992 or 93.
sixothreeabout 3 hours ago
For you to downvote my small comment, and then go on to lecture me about things you have barely any grasp or memory of, is just astounding to me. I currently own at least 5 computers with 4 MB of RAM, part of a collection of computers that is too large to count (hence the project on github).

A 386 with 4MB was the bare minimum to run Windows 3.11, which is considered the first mainstream GUI for PCs. Technically they required 3 MB, but recommended 4 MB.

Topping it all off, you're being disingenuous by suggesting running OS/2 desktop applications with just 4 MB of RAM. OS/2 was _notoriously_ memory hungry. At the very least it required more RAM than Win 3.11 (which recommended 4 MB). While OS/2 required 4 MB, suggested 8 MB as a minimum, but really needed 16 MB to do anything remotely useful.

And for you to not remember that is pretty telling.

ajxsabout 1 hour ago
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.
Waterluvianabout 8 hours ago
Kind of an odd statement I think, but I really like the aesthetic of early OS GUIs where you could tell half the tools were pretty much there as developer tools.
Aldipowerabout 13 hours ago
A pre-build floppy disk image would be great, so I could run it on my IBM PS/1 from a floppy.
Aldipowerabout 10 hours ago
Ok, I built the floppy image now. dd'ed it on a floppy and powered my IBM PS/1 up. Despite some nasty sounds of the HDD bearings that went away after 30 seconds, the floppy does not boot on this machine. Just a black screen. 386SX-25 2MB RAM. Maybe 2MB RAM too less, but I thought at least something will happen. :-)
luke8086about 6 hours ago
Even on 2MB, you should be able to at least see GRUB, which would tell you that it can't load the kernel. Does it go blank before that? This could mean an issue with either GRUB or the floppy.
Aldipowerabout 3 hours ago
Yes, it goes blank before GRUB and after 2MB count-up. I ruled out a defective floppy too. I suspect GRUB?
valleyerabout 13 hours ago
ginkoabout 12 hours ago
Someone prepare a set of floppy disk images so you can get the proper installation experience.
RobotToasterabout 11 hours ago
Including the mandatory corruption on the last one.
Aldipowerabout 12 hours ago
This is a hdd image, I guess.
sillywalkabout 7 hours ago
I'm curious what model of PS/1? My first PC was a PS/1 model 2011, with a 286@10Mhz.

Also, there's an emulator for PS/1 machines at https://www.ibmulator.org/

luke8086about 11 hours ago
For PS/1 you'll need the 16-bit version from https://github.com/luke8086/gentleos. A floppy image is provided in releases. Note you only need to copy the first 64KB, the rest is just padding for emulators.
Aldipowerabout 8 hours ago
Ah, even though the 386SX-25 is 32bit in my PS/1? Will try it eventually.
luke8086about 6 hours ago
Oh sorry, a quick google check told me PS/1 had 286. 386SX itself should be supported, the monochrome Toshiba on the photo has 386SX/20 with 10MB RAM.
gunapologist99about 7 hours ago
Yes, the CPU is full 32-bits, but the bus in a 386 SX is only 16 bit. Those PS/1's are such a cool piece of computing history!

https://en.wikipedia.org/wiki/I386#80386SX

hansvsabout 11 hours ago
Nice! The project also has a 16-bit variant https://github.com/luke8086/gentleos, not clear if it works on 8086 IBM PC, but I'll give it a go. Been looking for a reason to power up my IBM PC again.
reconnectingabout 12 hours ago
GUI looks a but BeOS inspired, but somehow even cleaner.
luke8086about 11 hours ago
Good catch, the yellow and blue colors are totally inspired by BeOS :D I'm even adjusting the default VGA palette to get the right tints in 16-color mode.
tecleandorabout 12 hours ago
I think it's that yellow bar what it makes it look like BeOS. And maybe the right hand menu bar. But once you check a B/W version, it doesn't look like BeOS that much.
MisterTeaabout 10 hours ago
More like a Win 3.1 theme with BeOS colors and a NeXT desktop.
gt0about 12 hours ago
Made me think of Breadbox Ensemble, which is GEOS, and was really lovely.
lprovenabout 8 hours ago
FWIW, still around and now FOSS.

https://github.com/bluewaysw/pcgeos

j1greeneabout 3 hours ago
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.
ameliusabout 10 hours ago
Part of why these images look so nice is because these systems were not so locked down.
Advertisement
aktauabout 4 hours ago
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].
[1]: https://github.com/luke8086/gentleos32/blob/main/kernel/main...

[2]: https://github.com/luke8086/gentleos32/blob/ea691f14635c023d...

luke8086about 2 hours ago
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...

Dweditabout 8 hours ago
There weren't too many GUIs that used the PC-BIOS font. Most of them wanted to get away from that.
ge96about 8 hours ago
Ahh the Librettos... I had a couple of 50s at one point, one of those looks cool unusable thing and the brittle plastic damn, I opened it and the hinge snapped lmao my heart my soul

Unusuable because of how small the keys are

raszabout 8 hours ago
Am I crazy or are the "photos" generated? I did have T1800 and it never looked like this. It had a very early very bad grayscale LCD wiht fiddly contrast control, not a perfect crisp vibrant OLED like this page shows.

example how one looks like irl https://allegrolokalnie.pl/oferta/laptop-toshiba-t1800 https://www.youtube.com/watch?v=sxIc_UVKxvc

luke8086about 5 hours ago
All the photos are real, though it took me *lots* of time to get them somewhat right. The display on T1800 is indeed "challenging". What helped was:

- Letting it warm for a while

- Putting windows in the right places, because each one generates its own artifacts

- Setting background to dark with the white pattern

- Fiddling with the contrast knob and matching it with the right viewing angle

- Using 2x zoom

To be fair, the default photo app of iPhone 16 automatically reduced some of the artifacts. The only post-processing done myself in GIMP was very basic stuff like adjusting white balance, exposure and contrast.

Here you can see a few very quick-n-dirty photos I just took for comparison - https://imgur.com/a/6Xz6vc8

bor_realabout 7 hours ago
Perhaps a new panel was retrofitted into it?
raszabout 7 hours ago
OLED panel? that would be a bigger hack than this OS :) Either all pictures are AI generated using QEMU templates that were there previously https://github.com/luke8086/gentleos32/commit/d40576226b7020... or those are real pictured beautified by AI. YT loves doing that to thumbnails, example https://hackaday.com/2026/06/03/hydraulic-drive-for-your-law...
luke8086about 5 hours ago
The only AI-generated artifact is the cyberpunk wallpaper from the last photo, I'll admit that :)

Btw. the QEMU screenshots are still in the repo in https://github.com/luke8086/gentleos32/tree/main/doc/appimg

phendrenad2about 9 hours ago
Love the photos of it running on 386/486 laptops. So cute!
vortegneabout 9 hours ago
What a lovely-looking OS! Also great to hear that the project isn't aiming for infinite changes!

Will be digging out some old hardware to test it out very soon, this is exciting!

Damjanskiabout 10 hours ago
<3<3<3
mdctabout 11 hours ago
This reminds me of the era when operating systems felt more approachable and visually distinct. Modern UIs are often cleaner, but many of them have lost some of the personality that older systems had.
shevy-javaabout 12 hours ago
> A hobby operating system for vintage 32-bit PCs.

I am all in favour of great projects, but why a differentiation between 32-bits or 64-bits? I don't understand that. Is a computer that is 32 bit or 64 bit, either way which, not worthy?

Edit: I understand a motivation if it is on simplicity choosing one or the other, but other than that I don't see why that should ever be a goal worthy to be pursued. Software should really "just work" no matter the number of bits and bytes.

luke8086about 10 hours ago
In this context, 32-bit means the minimal requirement. You can absolutely run even the 16-bit version on a 64-bit PC, provided it has BIOS/legacy-boot mode.

It only won't work on modern pure-UEFI systems because that would require writing full stack of USB drivers for keyboard and mouse, and that would be a huge task.

grebcabout 12 hours ago
“Vintage” 64 bit PC’s aren’t a thing.

> Edit: I understand a motivation if it is on simplicity choosing one or the other, but other than that I don't see why that should ever be a goal worthy to be pursued. Software should really "just work" no matter the number of bits and bytes.

Not really how software works.

Aldipowerabout 12 hours ago
> “Vintage” 64 bit PC’s aren’t a thing.

Just sold my SGI Indigo 2 for 900 $ ! Vintage 64 bit is absolutely a thing. :-)

amuradbegovicabout 11 hours ago
they said PCs
trashbabout 11 hours ago
The DEC 3000 would like to have a word with you.
nocmanabout 8 hours ago
Yeah, DEC Alpha was the first thing to come to my mind. I guess some might argue it wasn't a "PC" - if you don't include what used to be called "workstations". This is largely because PC meant "personal computer", and very few people could afford their own DEC Alpha - they were very pricey ($20k at some point in the 90's, I believe).
Aldipowerabout 11 hours ago
It even has 64 bit "word" size!
RobotToasterabout 11 hours ago
Itanium was released 25 years ago now...
hnlmorgabout 10 hours ago
Whilst that’s definitely old in computer terms, even “retro”, is it old enough to be “vintage”?

Personally I’d have said it isn’t. But these terms are subjective.

pjc50about 11 hours ago
Don't worry, this is portable to both vintage word sizes: 32 and 16.
trashbabout 11 hours ago
x86 boots in 16-bit real mode. Then you need to specifically transition into 32-Bit, and from 32-Bit it can be transitioned to 64-Bit Architecture...

The last step (32-bit to 64-bit) can a bit of a can of worms especially on older platforms where 64-bit implementations can differ greatly and 32-bit "just works tm". 32-bit is quite well supported and has enough resources to make some interesting programs work without much hassle.

I think the author has made the decision not to support 64-bit mode due to needing to balance the complexity and usability of the project. It is a hobby project after all.

Since the author maintains a 16-bit and 32-bit for this project I suppose if you wanted you can always fork and maintain a 64-bit version if you wanted to.

ReptileManabout 12 hours ago
32 is vintager vintage
Aldipowerabout 12 hours ago
32 bit vinteger ;-)
bayindirhabout 11 hours ago
You can do 32 bit voolean too, great for that vintage bitmasks to store application flags. =]