We talk to the developers behind MenuetOS: an operating system written entirely in assembly language
MenuetOS is an operating system that is super-fast and can fit on a single floppy disk (remember them?)

The average PC user expects that their computer's operating system will consume a fair chunk of hard drive space. Windows Vista Premium can take 15GB of hard drive space to install and tax even modern desktop PCs and notebooks. Indeed, thanks in part to Microsoft, people are used to the endless cycle of hardware upgrades to get the most out of their operating system — or even just make it usable. The developers behind MenuetOS have taken a different tack, however: their operating system is lightweight and incredibly speedy, despite having many of the trimmings you would expect from a modern OS.

MenuetOS offers pre-emptive multitasking, an attractive and modern-looking GUI, a TCP/IP stack for Internet access and more. Most importantly, you can run Quake on it. What's even more astounding is that the entire operating system can fit on a single floppy disk. The secret behind Menuet's diminutive size and astonishing responsiveness lies, unsurprisingly, in the development process.

Menuet

Modern operating systems are written predominately in high-level languages like C and C++. Menuet, however, is written entirely in assembly language: a symbolic representation of machine language. These days many programmers have minimal if any contact with assembly language, but that hasn't deterred the Menuet development team and the result is a slick, compact and super-quick operating system.

Two of the Menuet developers, Ville Turjanmaa and Madis Kalme, took time out to talk to PC World Australia about what inspired them to undertake the daunting task of writing the operating system, the current state of the OS and future plans for it.

Firstly, what inspired the creation of MenuetOS? Most people would consider writing an entire operating system in assembly language to be a pretty audacious project.

Ville: The original idea for assembly OS came a few years ago when I was browsing the Internet and came across to a page which used a scripting language. And even with my relatively new computer, the short script executed quite slowly. So it seemed like there will always be the need to create a language which uses the last cycles from a new CPU. So I decided to go to the other extreme end and just use assembly as much as possible.

Can you give me some idea of the backgrounds of the core developers? Do you have people contributing from outside the core team?

Madis: My passion has always been assembly language. As a teenager I started with some programmable calculators where ML [machine language] was the only way to go. Compared to that, assembly is really a breeze and such an elegant way to program.

Menuet

Ville: We come from different countries and with different backgrounds, but most of us core developers have a university background. I've used different programming languages during the last 30 years. From BASIC and Pascal, to C and assembly. And yes, there are people contributing from outside the core team; the MP3 player is one such contribution.

What aspect of Menuet are you most proud of? Are there any parts of the OS that were particularly challenging to code?

Madis: I am very excited about the GUI part because most hobby operating systems go as far as implementing only a command-line type of OS, but with a true-colour, VESA-supported GUI, it differs from all of these and therefore its ideal for games and small graphical demos. The 64-bit register extensions helped me to make a register-only line and circle routines and these I consider my "µ-achievements" that I can be proud of. "Challenging to code?" — I will let Ville answer that

Ville: As for the actual coding, I'm most pleased with pre-emptive scheduling and USB support. Maybe we have also made a small difference to mindsets about what can be done with assembly language.

What next for Menuet? Do you have a timeline for getting to version 1.0? Are there any features coming up that you're especially proud of?

Ville: We need to add new drivers and improve existing applications. Other than that, there are one or two completely new features I'd like to add before hitting the 1.0 mark.

The 32-bit version of Menuet was released under the GPL, but the 64-bit version uses a non-open-source licence that is free for "personal and educational use". Why did you decide to licence the 64-bit version differently? Has this had any impact on encouraging people to join the effort?

Ville: With a completely new type of open source project, people seem to have strong opinions about what direction to take. Even up to a point when time is actually spent more with disputes than doing the actual coding. And when that happened, I decided to concentrate more on the original path of Menuet with the 64-bit version and with a new type of license. However, I don't have anything against open source or possibly opening up the Menuet64 source later. But with the current licence, I'd say the people are a bit more committed and willing to put more effort in to a new feature.

Comments

Good post overall. Enjoyed

Good post overall. Enjoyed reading it. William

The original premise of Linux revisited!

Back in 1990/91 when Linux first started coming out, Linus Torvald's original premise was to create an OS that entirely supported the assembly language substructure of x86 Protected Mode, unlike any OS that existed before that or since. Once the Linux 1.x kernel came out, they quickly abandoned the entire assembly language idea, which I thought was a shame. Though going towards C/C++ made it more portable, and increased its commercial appeal but it did bloat out like a pregnant mom in her third trimester. I think the developers of MenuetOS understand how open source development creates this flight towards lowest-common-denominator mentality, and have done the right thing to not go fully towards open-source. This way if Menuet develops more fully within the assembly framework, it will become less likely for open-source authors to come in and ruin it by translating it to an inefficient portable language. They can release the 64-bit version as open-source later when it's got more momentum on its own. Afterall, open-source itself doesn't have a problem with assembly language, it's just open-source developers that have a problem.

Salute the Inspiration

Salute the team of developers that make this operating system.
I worked with almost every version of MS windows
including various Linux Distro's and Unix varient

I prefer only BSD / Redhat Linux
But this seems promising for me to check out the issues with the said operating system and possiblities.

Once again keep the good work. and give developers the vision to build speedy code.

--
Regards
Some body

Give menuet a try!

I played with menuet a few years ago and was really impressed. Would rock on my netbook if they had a driver for my wireless.

QNX is still developed and popular. You can get a free non-comercial version at qnx.com or go for the open source version at openqnx.com

poop

comments are poop

wow

hey, you rock! :)
so what new features are planned for the 1.0 release? any chance to be compatible with windows drivers :)?

RTFA

>One might assume that the processors that this OS is >written for are x86 32 bit and 64 bit, but notice how it's >not mentioned ONCE in the article.

It is mentioned in the article, I suggest you read it again.

Is assembly only available for ONE processor architecture?

One might assume that the processors that this OS is written for are x86 32 bit and 64 bit, but notice how it's not mentioned ONCE in the article.

There are other processors, and people do code in assembly for them, too.

John Klos

It would be enormously advantageous.

There's a huge amount of existing software that makes use of POSIX. Just because the basic core of the operating system may be written entirely in assembly, doesn't mean it should be shoved into the corner of having everything available to it being written only in assembly. A noted embedded real-time linux kernel, which is heavily based on a hardware abstraction layer with direct assembly interfaces implementing multi-level task switching (and so on), eCos, provides a POSIX abstraction layer. As an embedded software developer, this made it an extremely appealing, light-weight, customizable, kernel, that I could readily port a huge amount of already written Unix compatible software to.

POSIX not needed at all

posix is an api intended to talk to the Unix kernel and do things the Unix way. Why hamstring this exciting new project with that bloated pile of baggage when the goal is to make smaller, less resource hungry platform?

Marvelous!! but needs posix support to survive beyond toy state

Hats off to you guys - very well done but without posix layer (or even a plan for it) this will run out of steam and that would be a sad day considering the excellent work.

Did you guys ever see the QNX demo?

It came out back in the Pentium days. It fit on a floppy; had web, mail, and IRC clients; it had a PPP dial; and it made my 486 run faster than my Quadra. Not sure if it's available any more.

Amazing

Amazing. Extremely impressive what some people can do.

Good read

Thanks for the interview, nice OS.

Post new comment

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

Users posting comments agree to the Good Gear Guide comments policy.
Login or register to link comments to your user profile, or you may also post a comment without being logged in.
Syndicate content Syndicate content Syndicate content
 
1) Apple iPhone 3GS 16GB30 plans 27%
2) Apple iPhone 8GB42 plans 13%
3) Apple iPhone 3GS 32GB36 plans 2%
4) Nokia E7149 plans 4%
5) Nokia E7230 plans 2%

Mobiles | Broadband | Credit Cards

GoodGearGuide