Behind Menuet, an OS Written Entirely In Assembly 419
angry tapir writes "MenuetOS is an operating system written entirely in assembly language. As a result it's extremely quick and compact (it can even fit on a floppy disk, despite having a GUI). It can run Quake. Two of the developers behind MenuetOS took time out to talk about what inspired them to undertake the daunting task of writing the operating system, the current state of Menuet and future plans for it."
From the license... (Score:5, Funny)
Are you sure they wrote the entire thing in assembly language?
Re:From the license... (Score:4, Insightful)
Yeah I wonder about why they chose that particular license. I mean it's not a commericially viable product, and if it's meant to spur research and development then why not chose some sort of free software license.
Re: (Score:3, Insightful)
Re: (Score:3, Insightful)
Just because a thing is easy to do does not mean one automatically has some right to do it.
Re:From the license... (Score:4, Interesting)
Re:From the license... (Score:5, Insightful)
Re: (Score:3, Informative)
It's copyright, not readright. The copyright limits what you can -copy-, not read.
In this case, under the terms of the license you are free to use (i.e. "read") the program, free of charge, but as soon as you disassemble it your right to use the software is revoked. What's tricky with software, is that in the simple act of "reading" involves copying the program several times (moving it from one drive to another, loading it into ram, loading the machine code into the cpu cache, etc).
Now, reverse-engineerin
Re: (Score:3, Informative)
You lose a lot on a disassembly though.
Comments for one, and non-public symbols for another (including stuff like variable names, structure names and composition, etc), plus any oddball globals referenced through a base pointer. You lo
Re: (Score:3, Insightful)
Tiny User Base. So there's no incentive to be a developer for the platform. Doesn't support UNIX/POSIX standards, so it's not easy to port existing software to the platform. Freely available OSs have orders of magnitudes more users and developers, and far more reference material making them easier to learn. Who cares about fitting on a 1.4 MB floppy when 1 GB USB drives are practically free?
Re:From the license... (Score:4, Insightful)
I played with Menuet a year or so ago, and it is very impressive how much they've squeezed into such a small space. It boots almost instantly with a responsive GUI and a number of applications. It's not so impressive, however, when you compare it to something like RiscOS, which did the same thing on a 25MHz ARM2 with 1MB of RAM, or comparable operating systems of the time. It does highlight how poor an effort DOS was (although it requires protected mode, so won't run on anything before an 80386), but I think we already knew that.
Re: (Score:3, Funny)
why would it not be a commericially viable product?
also if they just stuck it out there for anyone to fork off and do what they want with it - then they can quickly remove any chance of it being commericially viable.
It's impressive work - let them share it how they want.
I have a feeling that the Year of the MenuetOS on Desktop is coming soon.
Re: (Score:3, Interesting)
I'm already posting from MenuetOS - I've been using it for a couple of years as my 'security' option for things like pissing off people in IRC and daring people to hack my computer.
It's nice having a machine that's pretty much untouchable because nobody knows the exact hardware you're running, nor your coding habits.
Re:From the license... (Score:5, Informative)
Re:From the license... (Score:5, Interesting)
Re: (Score:3, Insightful)
Correct. And then we're also talking about information that can't be recovered by decompiling binaries, so the point is moot.
Once you're done debugging, you don't need the symbol tables any more, yes? We may need the comfort of rich commentary and maintainability, but the system really only needs the instructions, opcodes, addresses, literals and data in the binary code to work. [Decompiled|Disassembled] stripped binaries are very hard to make sense of.
In the olden days, we obscured code by renaming variable and constant names with some variation of "I"'s and "1"'s and "O"'s and "0"'s. Not as effective as adding the "strip sym
Re: (Score:3, Insightful)
Re:From the license... (Score:5, Insightful)
You are all incorrect in assuming that legalese (should|can|does|will) make any sense from a technical point of view.
Re:From the license... (Score:4, Funny)
Hex? You had it easy.
I had to flip switches on a front panel, in binary.
Though come to think of it, when I was a child I had a 'computer' that was programmed by putting wires into holes in a breadboard. So.. binary, pah! I had it easy...
Re:From the license... (Score:5, Funny)
I opened my hands and let the delicate wings flap once. The disturbance ripples outward, changing the flow of the eddy currents in the upper atmosphere. These cause momentary pockets of higher-pressure air to form, which act as lenses that deflect incoming cosmic rays, focusing them to strike the drive platter and flip the desired bit.
*shamelessly stolen from XKCD [xkcd.com]
Re:From the license... (Score:4, Funny)
For those of you not interested in following the link...there's an Emacs command for that.
Re: (Score:3, Funny)
2009 is the year of the Emacs desktop!
Re:From the license... (Score:5, Funny)
Re: (Score:3, Interesting)
Did you think they wrote it in hex?
Why not it's how I started writing Machine Code
Programming in hex, compared to just clicking a "compile" widget on a toolbar, feels a lot more like "programming." It's fun to toggle in a program byte by byte and see it run -- even on a slowed-down Z80 [paleotechnologist.net].
Re:From the license... (Score:4, Insightful)
I think only a few of the responders have a firm grip on the distinction between decompilers and disassemblers.
The true distinction is not on the input to these programs, but instead on their output. You can feed a good decompiler some white noise and still get some high level source code.
Given that (Score:3, Informative)
Given that most assemblers are macro assemblers, I'd imagine that disassembly doesn't give the original source code back. You get an equivalent source code, but it might be considerably harder to read (depending on macro usage, obviously).
Re: (Score:3, Informative)
We would write the code in assembly, then run a couple of command line programs over it to compile it into something that would actually run on the chip, then burn it to the firmware.
That's an assembler, not a compiler. Assembly language is a unified set of mnemonics that translate into machine code. For assembly language to be assembled into a binary that the machine can run, you need an assembler that assembles assembly language into machine code.
Compiled languages (like C, C++, C#, Fortran, VB, etc) run through a compiler, which compiles the high-level language into what is the equivalent of an assembly language, before assembling it into the binary machine-readable code.
It's calle
But (Score:4, Funny)
Oh wait...
What! (Score:2, Funny)
It seems their webserver isn't written in assembler.
It's not FOSS? (Score:4, Insightful)
It's free as in beer, AFAICT, but not open. That seems strange to me.
Re:It's not FOSS? (Score:5, Informative)
for anyone wanting to tinker - it had been forked before they closed it
http://wiki.kolibrios.org/ [kolibrios.org]
http://www.kolibrios.org/?p=SVN&kind=dir&loc=/kernel/trunk [kolibrios.org]
Re:It's not FOSS? (Score:5, Funny)
Imagine what today's world would be like if Linus had gotten pissed when people started working with the Linux Kernel.
I'm guessing the population in the western world would be higher.
Re: (Score:3, Funny)
All 5 of them?
Re: (Score:3, Funny)
There's always some smart-arse coming up with reasons to disallow free beer at work, dammit.
Stupid license. No thanks. (Score:5, Insightful)
Menuet64 Copyright (c) 2005-2009 Ville Turjanmaa
1) Free for personal and educational use.
2) Contact menuetos.net for commercial use.
3) Redistribution, reverse engineering, disassembly or decompilation prohibited without permission from the copyright holders.
Probably won't gain much steam with a license like that. Enjoy your obscurity and 3 users.
Re:Stupid license. No thanks. (Score:5, Insightful)
Re: (Score:3, Insightful)
Or you could pop a quick email off explaining what you want to do, and get permission.
System Libraries exception (Score:3, Informative)
Of course, if they had to integrate Quake with the OS parts, then wouldn't the OS also fall under the GPL like the quake source?
It depends on how one defines "integrate". If "integrate" just means porting to its API, then porting a GPL app to MenuetOS doesn't bring the operating system under GPL any more than porting it Windows. Both GPL versions 2 and 3 have an exception for linking to an operating system's System Libraries.
Re: (Score:3, Insightful)
Truthfully, though neat as a "Gee whiz" type of thing, I just don't see much practical application for Menuet.
I recall hearing the same arguments regarding Linux and 386BSD back in the early 90's.
Re:Stupid license. No thanks. (Score:4, Insightful)
Re:Stupid license. No thanks. (Score:4, Informative)
Score: 4, Insightful
Sarcastic moderation on Slashdot? Fuck yes.
Re:Stupid license. No thanks. (Score:4, Insightful)
Re:Stupid license. No thanks. (Score:4, Interesting)
Re:Stupid license. No thanks. (Score:5, Insightful)
Probably won't gain much steam with a license like that. Enjoy your obscurity and 3 users.
SO what?
At least the they are doing something interesting... Maybe they will find someone who needs a really small and quick OS that is hacker-unfriendly. I'd personally love to see ATM machines running something like this instead of Win2k and XP....
If by some oddball chance they can make some money off their hobby more power to them... Anyone who can code a OS in ASM is ok in my book and you got no room to judge them just because they are covering all their bases. I mean do you really not think some company wouldn't come and grab up all their work and laugh after spitting in these guys faces?
Re: (Score:3, Insightful)
At least the they are doing something interesting...
What is interesting or novel about this? There have been numerous OSes written in assembly language. That was pretty much what you did before C came along and even for quite some time after wards. Secondly, writing an OS kernel in assembly was a project that many people did while in school making this pretty mundane to be honest.
I mean do you really not think some company wouldn't come and grab up all their work and laugh after spitting in these guys faces
Since no company stole the work during the years while it was under the GPL, I see no reason why they would have had to worry about it enough to change the license for that reaso
Re:Stupid license. No thanks. (Score:5, Insightful)
No software got popular with such a restrictive licence! Heaven forbid they give it away free for personal use, all the most popular OSs are free for all!
The only non-free OSes that have have actually been used by more than 5 people actually provided more features than "Can play a 13 year old game fast".
(I don't disagree with you that it might seem a pointless licence, depending on what their plans for it are, but I don't think this has much relevance to popularity.)
Actually it does. Since this is clearly not a commercially viable OS the only segment of the population that might possibly use it would be tinkerers in the FOSS crowd, but they are going to be turned off by the license. There is really no viable reason to run the OS if you aren't allowed to tinker with the source code.
Not the best choice of languages (Score:5, Insightful)
In today's multi-level cache, highly pipelined CPU environment, hand optimized assembly is not usually the best choice when compared to a good compiler. It's easier for bugs to hide, and small mistakes can cost way more than any possible optimization is going to buy you.
Re:Not the best choice of languages (Score:5, Funny)
You are right of course. What they need is some kind of software tool that can automatically and quickly generate code optimized for any new hardware that comes out. Rather than code in the particular assembly language of the processor of the day they could write out their algorithms in some kind of abstract, human readable script, which the aforementioned tool would then convert to assembly language.
Why has nobody thought to create such a useful tool for these poor chaps??
Re:Yes! (Score:5, Funny)
Re:Not the best choice of languages (Score:5, Insightful)
Having written in assembly on 8048, 8051, 8086 and DEC Vax boxes, I can tell you right now that debugging most of that code was a lot easier than chasing down the side effect from some array overwrite on leaked memory from a third-party library that you didn't even know was being linked into your code.
Writing in a compiled language is easier, faster, and usually has a better set of pre-written functionality, but never, ever claim that it's going to be more optimized. Even with pipelining updates from the compilers that help the look-ahead caches on the CPU, there's very few times that hand-coded assembler isn't going to be faster.
Go look at the assembler that some of these compilers produce. It's frightening to see the amount of overhead they cost on even simple assignment operations. I saw one compiler (Microsoft's Visual C++) that took a simple x=10; in C++ and turned it into 15 assembly language operations that, had it been coded by hand, would have been one MOV statement. The compiler turned it into conditional conversions for type, did some byte order and range checking on it (for a hard assign to a constant -- rolls eyes) and then finally did the same MOV AX, 0x0a that you would have coded by hand.
Re:Not the best choice of languages (Score:5, Insightful)
Even with pipelining updates from the compilers that help the look-ahead caches on the CPU, there's very few times that hand-coded assembler isn't going to be faster.
The GP never made that claim.
Re:Not the best choice of languages (Score:4, Interesting)
Also, since when do you have to write your program/os in only one language?
Game developers mix their code all the time. C++ for the main part/glue, assembly for the tight loops and things that need speed-ups, and a (maybe compilable) scripting language like Python or Lua for, well, scripting (bots, map events, rules, etc).
I'd write an OS in Haskell for the main part, and assembly or C++ for the really low level or very speed-dependent stuff.
Assembly language doesn't scale (Score:4, Interesting)
Writing large programs in assembly language is almost impossible, you have to get it perfect first time because refactoring assembler code is next-to-impossible.
eg. Small changes in the base data structures (eg. change a data type) mean you have to go through and change every instruction which references that data, and since there's no type-checking in assembler you can easily miss some and the assembler won't tell you about it.
With a compiled language you can change the data type and you're done.
This argument also explains why C++ is better than C. C++ and OO methodology makes writing large programs MUCH easier than using C and procedural code. With C code you have to keep an awful lot more knowledge in your head at any give time and it's easy to forget things in C that can be done automagically in C++.
Re:Not the best choice of languages (Score:5, Informative)
Writing in a compiled language is easier, faster, and usually has a better set of pre-written functionality, but never, ever claim that it's going to be more optimized. Even with pipelining updates from the compilers that help the look-ahead caches on the CPU, there's very few times that hand-coded assembler isn't going to be faster.
As CPU's become more complex, this is less and less true. For example, even on the PS2, they created a tool called VCL [playstation2-linux.com]that preprocessed assembler for you for maximum usage of registers, unrolling, and pipelining. It generated better optimized code than 99% of of coders out there could do on their own and at a fraction of the effort to seriously fully optimize pipelined assembler -- not to mention the asm code was much more maintainable since with handrolled manually pipelined code you may have to re-optimize everything if you change a single register or just a few instructions. Also, things like the auto-unroll and auto-register-assignment a were huge time saver (it could unroll a loop NX and allocate NX registers to interleave SIMD operations to hide latencies).
That's not to say that a really great ASM programmer wouldn't do better than VCL, but he would have to work much much harder. You'd have to track all the registers yourself, remember the pipelining rules and latencies for every single instruction, be willing to experiment with unrolling every loop and counting cycles between unrolled (with prologs/epilogs) and normal versions, know all the possible instruction swaps, synchronize the integer and vector pipelines manually, try nearly all possible instruction orders, etc. Certainly an average assembler programmer wouldn't do as well.
Re: (Score:3, Insightful)
That's not to say that a really great ASM programmer wouldn't do better than VCL, but he would have to work much much harder. You'd have to [...]
...start from scratch when someone rolls out a different chip design that obsoletes all your assumptions or when you learn a new optimization technique. I'd much rather write at a higher level and let new versions of the compiler handle updated architectures, and automatically adjust all my old code whenever their optimizers improve.
Re: (Score:3, Insightful)
Well I guess the compilers/CPU architecture have advanced enough that some of your old experience doesn't apply anymore.
Re: (Score:3, Insightful)
Re: (Score:3, Informative)
Whoosh. The point of doing number crunching in FORTRAN is that FORTRAN does not reorder expressions. This is critical to maintain accuracy in certain computations.
Who cares how fast it is if you come up with the wrong answer?
Re: (Score:3, Informative)
oh, erm.. encryption algorithms need the exact things you claim compilers are great at, yet the fastest encryption libraries are in hand-written assembler.
The fact is that this "compilers are better than humans" meme is complete bullshit and has always been bullshit. This fact can clearly be demonstrated by looking at the change logs of those compilers. For well over a decade this meme has been out there and for
Re: (Score:3, Insightful)
Assembly is best for optimizing limited sections of code where your specific domain knowledge can allow you to make optimizations the compiler wouldn't know about. It makes sense in those situations, and that's it. Writing an entire, non-trivial application (or OS in this case) is a waste of time since
And most importantly, for everything except the most
Re:Not the best choice of languages (Score:5, Insightful)
For well over a decade this meme has been out there and for well over a decade there has been continual performance improvements to those compilers.
Just because version n+1 of a compiler is better than version n of a compiler doesn't mean that version n isn't better than a human. Maybe you can do cross-module function specialisation in your head, but the rest of us aren't so lucky.
That's just dumb. And kinda cool. (Score:5, Interesting)
6 months from now, a new processor revision will provide enough marginal performance to make up for not coding the other 95% in assembly.
That said, this is a monumentally cool achievement, if academic.
Re:That's just dumb. And kinda cool. (Score:4, Informative)
Re:That's kinda cool. (Score:3, Insightful)
The point was to write an OS in assembly, so all of your analysis is irrelevant.
It's monumentally cool, and academic. The point wasn't to have a portable OS, and assembly can be very maintainable if structured correctly.
If they wanted a lightweight, portable OS they would have chosen a different language.
Re:That's kinda cool. (Score:4, Insightful)
What's academic about writing an OS in assembly?
Re: (Score:3, Informative)
What's academic about writing an OS in assembly?
Actually writing an OS in assembler on a 680x0 was part of my engineering degree. Also had to write a real time multithread scheduler.
Re:That's kinda cool. (Score:4, Insightful)
I also had to create slides for a presentation for my degree, but that doesn't make it academic.
Re:That's just dumb. And kinda cool. (Score:5, Interesting)
Ehhh..... (Score:5, Insightful)
Ehhh. The whole effort doesn't impress me. There are/were Linux distros that fit onto a floppy. OSs were written in Assembly for years.
If they can demonstrate that "remov[ing] the extra layers between different parts of an OS" simplifies programming and eliminates bugs, then they'll have something interesting. And they can have a flame war with the microkernel folks, who assert that separating the OS into separate parts that are independent and can be thoroughly tested simplifies programming and eliminates bugs.
Abstractions have a purpose; they make it easier to think about things. There are no "Files" or "Folders" (or "Directories", for those of a Unix persuasion) on your hard drive; there are only a sequence of blocks. The Operating System provides the abstraction of files. Various protocols and their implementations then provide an abstraction that "Files" and "Folders" on remote machines are just like "Files" and "Folders" on the local drive.
If abstractions make life complicated for the OS developer, but easier for the user, is it a win? It depends on whether the OS has more developers or users.
Am I hearing you correctly? (Score:3, Informative)
Interestingly, their homepage does not tout execution speed as a motivation: "Menuet has no roots within UNIX or the POSIX standards, nor is it based on any operating system. The design goal has been to remove the extra layers between different parts of an OS, which normally complicate programming and create bugs."
Layers complicate programming and create bugs? Really? As in, "the whole modular programming thing is just a fad"? If these guys can actually honestly claim that they program better in the big ball of mud paradigm, they must be super-geniuses, and trying to collaborate would be impossible for the normal geek anyway.
Re: (Score:3, Insightful)
All of this is just the normal softwar
Re:That's just dumb. And kinda cool. (Score:5, Informative)
I agree. Every time I've ever profiled code, I've been amazed at how much time is spent in such tiny portions of the code.
It's an interesting exercise though. I've only done a little assembler, but my thoughts were that if I did more of this I could get pretty good at it. The trick in any kind of programming is to learn to express *ideas*. I learned several different programming paradigms over the course of my career, and while I'm doing OO like everyone else these days, having tried functional programming makes me a better programmer.
I could imagine doing non-trivial systems in assembler, but mainly if the problem domain and its solutions are very well understood. When you see that 1% of your code is taking 99% of your execution time, you *could* tighten that code and get an immediate payback, or you could try understand the problem better in order to find a more efficient algorithm. If you can improve your algorithms, that's almost always going to be a bigger win.
We've been making essentially modern operating systems (virtual memory, process scheduling etc.) for a long time. If you just wanted to implement the textbook approaches for everything, and didn't care about architecture portability, it seems pretty feasible for a couple of guys to make a reasonably credible OS in assembler, provided they knew their OS stuff and were very good assembly programmers. Obviously the C with assembly for tight loops approach is a quicker path to a usable system, but the fact that they're assembly enthusiasts probably means they'll get more benefit out assembler where it is most useful and less benefit out of C where assembler is least useful than a sane programmer would. And it's always worthwhile to demonstrate the limits of conventional wisdom.
SInce you work in embedded systems, I don't have to tell you that upgrading your processor in six months isn't always an option.
Re: (Score:3, Interesting)
Typically, you get most of your performance gains by rewriting 5% or less of the software in assembly [Citation needed... :-)].
I think you mean Amdahl's Law [wikipedia.org] (that speeding up or parallelizing one task will only produce a speedup limited by the relative time consumed by that task compared to the rest of the code.)
I do think that writing good, efficient C code (for instance) will get you most of the way there -- and in that case, your argument is right. There's still something to be said for developing something like this just for art's sake, though. Why do people admire handcrafted Swiss watches, when they can get a perfectly good
Re: (Score:3)
<ref>Donald Knuth, in "Structured Programming with Goto Statements". Computing Surveys 6:4 (December 1974), p. 267: "Experience has shown [...] that most of the running time in non-IO-bound programs is concentrated in about 3% of the source text".</ref>
They should... (Score:5, Funny)
"it can even fit on a floppy disk"... (Score:5, Funny)
is that some kind of new super-awesome flexible organic flash memory?
No (Score:5, Funny)
Re: (Score:3, Funny)
No, it's yet another proprietary Sony format that Sony is going to try to force on consumers.
RIOT AGAINST SONY AND THEIR "FLOPPY" DISKS! PROPRIETARY I SAY!
Not that amazing (Score:5, Interesting)
For a more impressive feat, check out the Synthesis kernel written back in 1988. Also written entirely in assembly, and as stated in the linked wikipedia entry, that OS kernel was the "mother of all self-modifying code." It actually handled things like thread scheduling by generating a custom assembly snippet to jump to the correct point in the next thread to execute.
http://en.wikipedia.org/wiki/Self-modifying_code#Alexia_Massalin.27s_Synthesis_kernel [wikipedia.org]
Re:Not that amazing (Score:4, Interesting)
thread scheduling by generating a custom assembly snippet to jump to the correct point
Wow, this thing must have been fun to debug and maintain. And also, must be a challenge to optimize current generation CPUs for, with separate data and instruction caches... No wonder it never gained traction.
Re:Not that amazing (Score:4, Insightful)
Wow, this thing must have been fun to debug and maintain. And also, must be a challenge to optimize current generation CPUs for, with separate data and instruction caches... No wonder it never gained traction.
Yeah, I read somewhere that that was the reason everybody's given up on the Synthesis techniques today. A shame, in a way, as it was a really cool system.
Re: (Score:3, Insightful)
Re: (Score:3, Informative)
Re: (Score:3, Informative)
I found a better description of how it essentially does just-in-time compilation [c2.com], treating even the pointer to the file, buffer etc. as constants, thus resulting in different compiled code for each file opened.
(argh, link was borked in the previous post)
Followup to Menuet (Score:5, Funny)
Build a 747 with nothing but stone knives and bear skins...
Re: (Score:3, Funny)
Or how about Building a 747 while in the sky [youtube.com].
Re: (Score:3, Informative)
Actually, that would be Mr. Spock (to Edith Keeler), from TOS episode, "The City on the Edge of Forever":
Please turn in your Geek card :-)
Thanks for your great accomplishments! (Score:3, Funny)
Kolibri: a Menuet offshoot (Score:4, Informative)
Since all links in the article submission seem to be slashdotted, an offshoot of Menuet OS named KolibriOS is located at http://www.kolibrios.org/?&lang=en [kolibrios.org].
Re: (Score:3, Insightful)
How is KolibriOS "based on" Menuet, given than the former is GPL, and the latter is under a proprietary license? Their history page seems empty, and the only description I found on their page is in Russian, which I'm not good in.
Re:Kolibri: a Menuet offshoot (Score:5, Informative)
Kolibri is a fork of the 32-bit Menuet OS which WAS GPL. When Menuet went proprietary then community forked the GPL version.
Fast due to assembly or fast because it's minimal? (Score:5, Insightful)
I have to wonder if it is small and fast because when writing in assembly it is easier to resist the urge to add features. Todays compilers are pretty good and can produce pretty tight binaries. However, you can write (and debug) a lot more code in a given time using a high level language.
Re:Fast due to assembly or fast because it's minim (Score:3, Insightful)
obsolete technology (Score:5, Funny)
(it can even fit on a floppy disk, despite having a GUI)
Excellent, but if we're going to measure these things in obsolete technology;
- How many parchments would I need to copy it?
- Could my team of monks transcribe it in its entirety before the Feast of All Hallows Eve?
- If the Germans intercepted a morse transmissions of it, how long would it take them to crack the code and scupper our plans to retake mainland Europe?
networking (Score:5, Interesting)
Too bad it doesn't have wireless networking support, it looked to be the perfect thing to make older notebook computers useful.
Re:networking (Score:4, Informative)
Damn Small Linux and Puppy Linux work well on older machines. Give 'em a try.
http://www.damnsmalllinux.org/ [damnsmalllinux.org]
www.puppylinux.org/
My Javascript OS (Score:4, Funny)
I guess now is not the right time to announce my OS written entirely in Javascript. It can already play the Bill Gates Pie in the Face game.
Cool GUI. (Score:3, Funny)
Mac OS 6 (Score:3, Interesting)
So it's written in assembly, has a GUI and boots from a floppy? Yup, Apple did it (Mac OS was written in 68k assembly up to System 6)
And no offense but Mac OS 6 looks like it had a more sophisticated GUI than that, colour depth aside.
Re: (Score:3, Informative)
Re:Quake? (Score:4, Insightful)