MenuetOS, an Operating System Written Entirely In Assembly, Hits 1.0
angry tapir writes: MenuetOS, a GUI-toting, x86-based operating system written entirely in assembly language that's super-fast and can fit on a floppy disk, has hit version 1.0 — after almost a decade and a half of development. (And yes, it can run Doom). The developers say it's stable on all hardware with which they've tested it. In this article, they talk about what MenuetOS can do, and what they plan for the future. "For version 2.0 we'll mostly keep improving different application classes, which are already present in 1.00. For example, more options for configuring the GUI and improving the HTTP client. The kernel is already working well, so now we have more time to focus on driver and application side."
Question: MenuetOS is entirely written in assembly?
Yes, that's the whole point of the OS.
Not Open
Yeah, KolibriOS is an open fork of MenuetOS. It was forked when Menuet was still open source. Although Kolibri hasn't been updated for almost a year.
Not sure why they want to keep the genie in the bottle. Open source would be perfect for this kind of hobby project.
From their own site:
So, if you want to port your own application to it, you'll need to rewrite it too. And you may need to do it in assembly — although there is, apparently, a C-compiler for MenuetOS it is billed as "low-level", which, I gather, means no (or limited) libc, and other exciting and challenging limitations.
In Soviet Washington the swamp drains you.
None of that follows from it being written in assembly.
My first 5 years as a dev were spent working on a team that maintained an all-assembly OS, database, print server, and so on. Very fast, very small. But you can get all that in C, and a modern C compiler on full optimization produces object much faster than any sane, maintainable assembly source.
It's a mindset issue, not a toolset issue. Actually using assembly is a great way to keep the right mindset throughout. Plus, learning to read assembly fluently, find bugs by glancing at core dumps, fix bugs with a sector editor to save an assembler pass when you're in a hurry, bugfix a running program in memory - all of that builds your coding muscles, even if it all a bit silly for a modern prod environment.
Socialism: a lie told by totalitarians and believed by fools.
QNX fit a realtime OS with GUI, file browser, web browser, notepad and demos on a 1.44MB diskette.
http://toastytech.com/guis/qnxdemo.html
That's the whole point. It's not open source. The 32 bit kernel is old and not developed anymore.
A successful API design takes a mixture of software design and pedagogy.
Hey buddy, ever wait around near the nurses station at a hospital? Women can and do tell dirty jokes all the time.
Doom is shown as an icon on the desktop in the various screenshots found on the project site, but indeed, Quake is the game running in a window.
Someone would have to be crazy enough to try to write an SSL & PKIX library fully in assembly to get that HTTPS server working.
-- Julien Pierre http://www.madbrain.com/blog
From experience I know that a well-trained, well-weathered assembly hacker can generate code faster than the compiler.
This hasn't been true since instruction pipelining. And it hasn't been true for maintainable assembly source for abut 20 years.
Quick, what's the fastest way to multiply an integer by 8? Did you answer "depends on the previous 20 instructions, but probably 3 adds separated by 3-4 instructions each"? There's just too much state to keep track of with which silicon is doing what for how long following each instruction.
Socialism: a lie told by totalitarians and believed by fools.
Not a left shift?
Depends - did you do a shift or multiply in the previous several instructions? When do you need the result? Do you need to add anything else soon, or is the adding silicon idle? Modern compilers actually keep track of all that. For sure, if you need to shift two values, doing each a different way is faster.
The important stuff the coder can provide to help with optimization comes down to: avoid conditional branches, and emphasize locality of reference (I miss the days when a 256-byte lookup table was the fast answer to most bitwise questions).
Socialism: a lie told by totalitarians and believed by fools.