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."
I have an 8" floppy disk.
I remember futzing around with this little project 15 years ago. I am pleased to see that, not only is it still going strong, it's pretty remarkably modern.
Question: MenuetOS is entirely written in assembly? There's no traces of other languages, such as C?
Reply: nop
Get free satoshi (Bitcoin) and Dogecoins
It fits on a floppy disk? We are in 2015, right? What is a 'floppy disk'?
And they'll have something that'd be marginally useable today.
#DeleteChrome
and their website looks like it's from 1995 as well!
if the timing is that tight, it would allow using secondhand PCs instead of ladder logic controllers.
Liberty - Security - Laziness - Pick any two.
http://www.menuetos.net/m64l.t...
I might play with it, but if I can't use it for work, play is all it'll be.
Il n'y a pas de Planet B.
What's a floppy?
So, they're re-writing DOS?
It fits on a floppy disk? We are in 2015, right? What is a 'floppy disk'?
Its a unit of storage space measurement equivalent to about 30 seconds of music from iTunes.
Now that they've got this thing working, what would be really cool is if they could come up with a way of getting it to run on different processor architectures, in case x86 loses out to ARM in the long run.
I'm thinking maybe they could write some sort of abstraction layer whereby the instructions are originally written in some sort of higher level format, which could then be automatically turned into machine code for different hardware using a special program. You could do all sorts of things with that kind of system. I'm surprised nobody's thought of it before, actually.
Meh, how about Temple OS? http://motherboard.vice.com/re...
A Floppy Disk is that device you almost never bother using, but which gets added to your virtual machines by default, at least under VMware (haven't paid attention on OpenStack.) The recently-discovered VENOM vulnerability exploits bugs in the floppy drivers, which have been around for a decade, to let a process on a virtual machine break out into the hypervisor and maybe mess with other virtual machines.
So it's especially timely to have a convenient new platform for using floppies!
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
What's a floppy disk??
I'd love to use a quick booting high speed OS for embedded projects. Raspberry PI is cool, but takes way to long to boot for my embedded needs.
Remarkable, in the same way that hand made Swiss watches are remarkable. Really awesome, but pointless at the same time.
Fixed-pitch fonts, I miss those. They made UI development so much easier because the sizing was far more predictable than variable pitched fonts.
True, it's esthetically ugly, but when you want small, quick, and cheap; it's the way to go.
Table-ized A.I.
Assuming it is much faster than an equivalent system written in, say , C. I find it disappointing that hand crafted assembler should be so much faster than what compiler optimizations can achieve.
Nullius in verba
What are their startup scripts written with?
WE WILL RETURN !!!! ...and kick you in the ballz !!!
I'm not reallyd sure that I understand that point. To me, thst would sound reasonable for educstionsl Ãr entertainment purposes, but are there any other meaningful reasons for writing an entire OS in assembler?
The entire OS would occupy about 1/3 of an Intel i7's cache. For ultra-high performance apps that might actually be useful.
Of course that includes user land apps and such so the footprint of the OS itself would probably be far smaller.
Wow, slashdot has come a long way from when I first started reading "chips & dips" in 1997. Even just 10 years ago, a story like this would have been met with enthusiasm and honest support, with a virtual pat on the back to the developers.
Today, a story like this is reduced to a mere platform for chest-beating (see the parent above). As in, "nevermind the lame story, look at me instead". Why in the world are you people even here?
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.
So if they want to be more easily tested, they should make it USB bootable and release usb images. The days of booting a CD are over (or at least they oughtta be)
Surely this runs so embiggeningly fast that it's unusable?
I remember running some assembler demo's (back in the day) that made "legacy" hardware do things that just didn't seem possible. The thought of running an OS with that same performance on modern hardware is frightening. Hopefully they've tuned the input routines so that you don't eeennnddd uuuppp wwwiiittthh kkkeeeyyybbboooaaarrrddd jjjiiitttttteeerrr :o)
Moore's law is not a law. Theory, yes; Predictable trend, certainly; Law, no.
The 32-bit version is open (GPL), the 64-bit is currently not.
I have the opposite problem ;)
When I went back to community college to learn programming after the Dot Com bust, I was frustrated that all the courses was in every flavor of Java. (The school couldn't afford to renew the Microsoft site license for a few years.) When the assembly language class appeared on the schedule, I later discovered that I was only the student signed up for the course. Class cancelled. Since this class wasn't required for graduation, the dean couldn't grant my request to learn assembly language as an independent study class.
Plenty of OSes have, over the course of history, been written in assembly.
And all of them proprietary, just like this one.
Menuet is cool, but I don't see a compelling reason to use closed source assembly unless it demonstrates some really crazy superpowers. It's also an odd case of a GPL codebase switching to a closed source license a couple years before it becomes useful.
Kolibri forked from the GPLed 32 bit branch, but I don't think it's pure ASM at all.
Somebody’s living in the past.
I'm curious, other than Chrome (the browser that uses all available memory), what application is swapping 10 GB of stuff on a 16 GB system?
I wrote assembly, because I had to to. My instructor made it clear learning assembly was a dead end solution to an ongoing task.
Higher level languages were invented with a reason. More portability and easier to learn. People that would waste the hours of their lives to learn assembly are like grocery store clerks learning the four digit code for Roma apples. I can see that person running home to mama and squealing "Mama I've learned all the four digit codes for fruit at Albertson's. I'm a human bar code scanner. Be proud of me!"
What a waste of a human life.
And you're assembly is probably easy to beat with even pretty crappy SSE2 code.
Apparently not by compilers.
You don't seem to understand the purpose of writing in assembly language. Its not to optimize for the current state of the art box. It is to get acceptable performance from old legacy boxes. Some assembly in the right spot(s) can make the difference between an old architecture making the cutoff in terms of acceptable performance, of being able to include that segment of the market in your minimum system requirements.
My point is that such optimizations for the sake of the old boxes doesn't necessarily do any harm to the new boxes. That worrying about future architectures is a red herring of sorts.
Good work Menuetosites!
I am very small, utmostly microscopic.
it grows to 2.5"?
[sarcasm]Can it run systemd?
How about Gnome 3.x?
And does it use binary log files?
I must have those on any OS I run![/sarcasm]
(Or run very far away from!!!)
See subject: Doing simple things like considering variable sizes used (e.g. - most folks will default to say, "String" type for example to process data that is of that type (of course) - however, if you don't NEED long strings, using a 255 char length "ShortString" type actually saves memory, runs on the stack vs. the heap faster, AND makes your executable smaller...
There's other things like I noted here on using register "fastcalls" (I used Delphi code as an example thereof there http://games.slashdot.org/comm... ) vs. std. call types.
It will make functions/procedures operate faster also!
Compilers generally do *NOT* offer you those types of suggestions...
(Knowing about them tends to come after hands-on experience OR good mentoring!)
APK
P.S.=> I've done it before, as I am sure many here have, & yes - it works for all of the above (saving memory + exe size too):
Another thing I've just started looking at since it's touted to be more efficient is lamba functions (they remind me of calculus iterators) vs. std. loops (For loop's fastest I know of, & supposedly, these exceed it in various cases for speed of operations - feel free to correct me, those of you that use them in C++, Delphi, Haskell/Scala (functional programming languages on the last ones, not totally sure as I don't use them, but I've heard tell here those are examples of them that can use lambda)).
Of course, the best thing is to design as EFFICIENT AS POSSIBLE algorithm too, mainly for speed of operations on datasets... apk
Comment removed based on user account deletion
of assembly language on the desktop? will it run linux?
Some drink at the fountain of knowledge. Others just gargle.
I bet this OS doesn't have any buffer overrun issues!
"... runs on the stack vs. the heap faster..." - by Anonymous Coward on Friday May 15, 2015 @02:02PM (#49699291)
See subject: Runs in memory closer to the CPU would be a better way to put it (& gives it a greater possibility of running closer to the CPU in L1/L2/L3 cache vs. System RAM also due to being tinier...).
* I NEED COFFEE!!!
(Hope THAT clarifies it a bit better/more accurately, as to datatypes used for size compaction in memory + exe size on disk - I know the results ARE what I said they are, I am just *NOT* expressing myself very well today is all!)
Apologies!
APK
P.S.=> Sorry about that folks - ever realize you're getting old & you're not as 'sharp'/'quick' as you used to be? LOL... that + my mind's cluttered with home projects/fixes etc. here too due to "Spring Cleaning'' (taking a break on /. now though)... apk
Conceivably, you also might pick up a small execution time benefit, although most compilers probably can do better than a hand-coder these days -- they can perform instance specific optimizations that would be impossible to maintain in assembly source.
Writing an OS in assembly in 2015: what a great engineering decision!
check out their download page, updated today
http://kolibrios.org/en/download
Comment removed based on user account deletion
Come over to the (Dark) Embedded side, and you'll do plenty of Assembler.
Hey buddy, ever wait around near the nurses station at a hospital? Women can and do tell dirty jokes all the time.
The one who thinks the christian god talks to him through his computer's random number generator?
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.
Why has anyone not commented of this very important fact that the /. article mislabeled a game. /jk
How big is that in terms that we can all relate to, say, football fields?
To ensure perfect aim, shoot first and call whatever you hit the target
Doom can run on a Super Nintendo, while Quake requires more system performance.
Doom is a fan favorite, but Quake is a more relevant demo
Wherever You Go, There You Are
Well does it?
lazy programmers don't want you to notice.
For typical apps on a typical PC, you have more clock cycles and megabytes than are needed for the task at hand, so it makes sense to go lazy at the developer-end and use high-level compiled or even interpreted languages. It is in this environment where it is acceptable to say "a really good compiler is as good as (or almost as good as) assembly language" - the small relative performance gain relative to the requirements of the application and the developer time and competence required makes it so.
As a general rule though, a compiler will not match a competent assembly coder for several very good reasons that are obvious when you think about it; The assembly coder knows the intent of his code and understands it so the following is generally true:
[a] The assembly coder knows what routines will be called and under what conditions, so he knows what registers, memory locations, condition codes, etc can simply be ignored, not be initialized etc. Compiler generally need to do things in a "safe" manner because the code blocks they emit in response to the source code they are given are necessarily generalized.
[b] The assembly coder not only knows the code, but he also probably knows the data enough to know what's more-likely to occur at run-time; Code can therefore be written so the cleaner faster execution paths are the ones more-likely to be taken most-often (or most-frequently during critical times).
I could go on, but the point is that a human being writing assembly code has far greater insight into the problem he is solving and can know when to, for example, write a general routine and call it from many places or write several specific routines. A compiler writing assembly code has no understanding of the problem at all and can only emit a limited set of assembly solutions for any given high-level code construct with no real guidance about how the code will be used - the only real optimizations the compiler can perform are program structure optimizations.
It used to be easy with compilers that were targeted at specific CPU chips. Now that we have re-targetable compilers like GCC, it's even easier.
The REAL question is whether it's WORTH it. As much as I love assembly and use it in embedded systems when time or memory use make it a good idea, I have not used assembly on a desktop system application in over a decade (tend to do those in C++ or even C#). The true measure of a good programmer now in the era of cheap memory and fast chips is to know when to use a particular tool (languages are just a tool). I am certain I can out-code the GCC compiler, but there is no point to it for any application that will run on a PC. I know somebody who loves using GCC on MPS430 microcontrollers and for the problems he is solving it's a fine fit that lets him complete projects very quickly - a bit like using a sledge hammer to place a thumb-tack (it works, and it's fast, but it's overkill). I generally code in assembly on the '430, but then I tend to use them in situations where every byte matters and there are barely enough megahertz for the task at hand.
Lightweight - fast MenuetOS release 1.0 shipping
DarkStarZumaBeachSurfinApocalypseWow
What's a floppy disk?
label MenuetOS64
menu LABEL MenuetOS 64 bit - version 1.0
KERNEL images/clonezilla/syslinux/memdisk
append initrd=images/menuetos/M6410000.IMG
The last time I used it, it locks up pretty often. So, unless they've some some serious debugging, I'm not even going to bother until 2.0
stable on all hardware with which they've tested
How do they manage ACPI mess that exists on some machines, and unusual chipsets? There is nothing impossible here, but if the end product must fit on a floppy, there is no much room.
So, write your OS in 90% C and optimize the remaining 10% in ASM
"A profiler? What's that?"
Please stand clear of the doors, por favor mantenganse alejado de las puertas
I'd think this would be a secure (As assembly coders are less common than say java)
OR would the fact that its in assemble be its weak point?
How portable is it? Do you have an interface for C (which would allow compilation of everything else I'd imagine). Can we see the object oriented code? It's got to be temping.
I'm not the least bit surprised that an assembly programmer, who really understands what's happening in the CPU, can write very fast C. I bet for most software, your asm version will be at least twice as fast as a C version written by a typical programmer, who doesn't even realize that the CPU caches have any effect on how well their software runs. More to the point, the typical C programmer would never think about how writing their code differently might allow the inner loop to run from cpu cache. Hell, the typical C# programmer doesn't often even think about the fact that memory is thousands of times faster than disk.
I wouldn't suggest writing much in asm, but being ABLE to do so, having a clue what your C or .NET code may end up looking like in asm, is a huge advantage.
Are there any instructions that give direct insight into the state of the pipeline (like rdtsc for cycle count).
How do you distinguish slowness from faulty "branch prediction", pipeline woes or any other reason on any non trivial codebase ?
You people are forgetting the obvious use of dabbling in assembly today. Hacking software for instance.
"They show off the platform running Quake. Doom is mentioned in the article, but who read that far?"
They also mention floppy disks.
It's written in Assembler, they started this project in 1983, it used up all their time and so didn't have time to follow the technical evolution.
This excites me as much as ReactOS. It is too bad that such programming talent has been on a 15 year worthless-a-thon. Their talent would have been much better spent on Linux improvement.
I recall in college, my ADA textbook mentioned that it was the only language who's only and first compiler was written in ADA itself. How in the Hell? There had to be something in at least assembler to start off small, right? Just to plant a seed for gosh sake...
Yep, with assembly is a breeze to keep the system secure.
This sig can be distributed under the LGPL license
I think "coding" looks different to nurses than it does for you.