Today we are hosting an interview with Ville Turjanmaa, the creator of the Menuet Operating System. Menuet is a new, 32-bit OS, it fits to a single floppy (along with 10 or so more applications that come as standard with the OS). It features protection for the memory and code, it has a GUI running at 16,7 million colors, sound at 44.1 khz stereo, easy of use and easy low level API. And the most important and notable feature? The whole OS was written in 100%, pure 32-bit x86 assembly code.1. You have wrote the whole OS in a x86 assembly. How much speed you think you gained by using asm-only when compared writting the source in C or C++?
Ville Turjanmaa: Parts of Linux was rewritten in assembly and the speed gain was 10-40%. That will give an idea.
2. Are there plans to support multiprocessing systems (SMP)?
Ville Turjanmaa: Yes, and plans to take it even further.
3. What kind of filesystem is Menuet using at the moment? Any plans for porting or writting a 64-bit, journal fs?
Ville Turjanmaa: The current support is only for Fat12 and Fat32. And we’re currently designing the directory tree for different file systems.
4. Will Menuet eventually be able to be installed in a hard disk partition? Has work started about such a feature?
Ville Turjanmaa: The current distribution fits to a single floppy and I plan to keep the basic OS functions that way. With floppy distribution practically anyone can easily try out Menuet without going through the trouble of partitioning their hard drive. But hard disk booting can be done if wanted. Its really not a big job.
5. While Menuet is written in asm and that is fine with most of us, a lot of programmers would like to have a higher level C or (preffered) C++ API, in order to port or program application for the OS easier. Are steps taken towards offering this higher level API and maybe a port of GCC?
Ville Turjanmaa: This is mainly a question of principle. Porting C programs to Menuet may solve things in the short run, but I am not so sure this would be the case in the long run.
However, basic tests have been made with C programs and everything looks ok.
6. Is Menuet fully optimized for the Penium/PII instructions, MMX and are the MTRRs turned on?
Ville Turjanmaa: We are now focusing in compatibility. So adding processor specific commands is not now at very high at the to-do list. But, because Menuet is distributed under the General Public Licence (GPL), people are quite free of doing what ever they want with the code.
7. Do you have plans to add to Menuet a full networking stack, like the one found on BSD or Linux?
Ville Turjanmaa: Yes, we are studying the tcp/ip protocol currently.
8. And speaking about unix, are there plans to add a Posix layer to the OS, so applications can be ported easier?
Ville Turjanmaa: Thats a very interesting question. If such a layer is implemented, the best way of starting would be writing a layer outside the os. The way Wine has done it for the Win32 API.
9. At the moment, Menuet is using a fixed font solution. Are there plans to add something like Freetype which enables TrueType font support?
Ville Turjanmaa: In general (not just font-wise), the GUI has a lot more to offer in the future, since Menuet has a basic design build on 16 Million colors. Something like Apple’s Aqua, which looks very appealing.
10. Which hardware devices are top in your list that you want to support soon?
Ville Turjanmaa: Network, TV/radio etc
Menuet now supports user space driver functions and that will speed up driver development for any device. You don’t have to touch the kernel anymore to get to your favourite device.
All driver development can be done inside Menuet using FASM, which has proven to be a very efficient assembler. In fact, there are plans on porting the kernel to FASM so no external compilers would be needed anymore.
11. Does Menuet have a mutlithreading and multitasking design? My understanding is that it is a realtime OS, which it may prove not the most elegant solution when it comes to a desktop OS (but a good solution when it comes to embedded devices). Also what about making the kernel more
modular than being strictly monolithic?
Ville Turjanmaa: Menuet has a real time multitasking design, which most of the time makes life easier. But since an application is quite free of doing whatever it wants to, there might be some problems when eg. accessing a banked screen area, such as Vesa 1.2.
For multithreading there is no support now. But a standard that would allow a basic application to send threads to other computers in the net via tcp/ip interests me a gread deal.
Ok, it’s been done before, but only for scientifical goals, not as a basic function of application programming.
12. Which was the reason of starting writting Menuet? Please tell us a bit about the history of the OS and its future in general.
Ville Turjanmaa: I was curious if this could be done entirely in assembly. I’ve seen no assembly written graphical multitasking OSes for x86 processors before Menuet. So it was quite a challenge.
I just wanted an answer if this could be done. Now I have done so.
The main distribution will be fully in assembly. There are some plans on porting major C apps. Plans to make Menuet even easier to use and plans of taking advantage of the native 16 M color design. At this stage of development we have to take one step at a time. Menuet is still quite young, 1 year and 4 months
Eugenia, where do you find these things??? Interesting concept. All in assembly!! You might want to mention that the home page doesn’t work very well under Communicator 4.78.
cheers
peter
>Eugenia, where do you find these things???
As they say in Greece in similar questions: “I found it in the bag with the chips in it”
>doesn’t work very well under Communicator 4.78
Yes, I just verified that. The guy who wrote the HTML, uses a TABLE and then uses the FRAMESET tags, which is of course not valid HTML and confuses Netscape. IE6 also has javascript problems with it btw.
I would like to say here that owners of 3Dfx graphics cards will have trouble to get Menuet to work. Menuet only works on 16 million colors, and the 3Dfx VESA is limited, it only provides VESA for 16-bit colors only, not 24 bit. The OS will boot up just fine, it is just that graphics will be icky and therefore the desktop will be unusable. I had to use a PC with a non-3Dfx card to get to Menuet’s desktop.
If you are under BeOS and you have trouble creating the bootable diskette, let me know, and I will post instructions how to do so (there are already instructions for Unix and DOS on Ville’s web site).
It’s too big for my floppy
Cool! Nice interview Too bad about the 3dfx cards, I’ll have to dig out my old HP to use this I guess…
Eugenia: could you post the instructions on making the disk in BeOS?
I managed to make a Menuet disk. Here’s how:
(1) Go to the Menuet website and download MSETUP.EXE.
(2) Per the website, extract the floppy image from MSETUP.EXE:
Run Terminal, go to the directory where you saved MSETUP.EXE, and enter this line:
dd if=MSETUP.EXE of=mfloppy.img ibs=1000 obs=1000 skip=20
(3) Put a blank diskette into your floppy drive and enter this line:
dd if=mfloppy.img of=/dev/disk/floppy/raw
After dd finishes, you can boot from the floppy into Menuet.
(One caveat: I managed to see firsthand what the GUI looks like, but after that I couldn’t get anything to work. I couldn’t move the mouse, and I couldn’t make Menuet respond to anything I tried with the keyboard. Still, I could reboot into BeOS, mount the boot floppy, and copy the source code files to my hard drive.)
If your keyboard and mouse are PS2, it should have worked (you can move the mouse cursor with ALT+cursor keys). If they are both USB, then no, you can’t interact with Menuet at all.
Thanks for saving me the BeOS reboot btw. Yes, this is the way to write Menuet through BeOS.
Very impressive.
Given that CPUs are so slow these days, and the over-hyping of the usefulness of harddisks, it’s about time we had such an OS.
All those C++ and Java developers out there must be really silly not to see the benefits of writing everything in assembly.
Oh wait…
I really meant to say it’s the most stupid project I’ve every heard of! Get a life!!!
<p>I was curious if this could be done entirely in assembly. I’ve seen no assembly written graphical multitasking OSes for x86 processors before Menuet. So it was quite a challenge.</p>
<p>It was done 10+ years ago. GEOS is a pre-emptive multi-tasking, multi-threaded OS with a GUI, and was written entirely in 80×86 assembly. Some libraries and applications have since been written in C, but the OS itself is 100% assembly.</p>
<p>Still, this is a pretty amazing undertaking.</p>
As a Computer Science student, one of the things we have over a lot of IT majors is that we have to study assembly. Not a bad thing, as we get into both the breadth and depth of how our computer truly works. This is an inspiration to those who still believe highly that everything could and should be written in assembly, and to those that like higher level programming, here’s another reason why all assembly should not be abandoned.
I’m not impressed of what i see so far…it’s not at all fast.
I cannot say that writing code in ASM will not give speed, but
that’s not where true speed comes from – Thats from choosing the correct algoritm, and profiling the code.
If you look at linux, some (as mentioned on the web-page) functions are written in ASM go gain speed, such af memcpy.
Writing in C is quicker, and you can focus on the algoritm and correctness. Writing in asm take longer, and if you have fixed time, I beleive that the C os, with bottleneck functions written in assembly, will be better / quicker.
(A function that is only called one every second, sould not be written in assembly to gain 10% speed – thats a waste of programming time)
Use the best from the two worlds and combine them.
P.s
(Would the OS ever be ported to the patha processor – I think not)
Just over a year to do it in Asm? I wonder how long it would have taken to write in C ?! Perhaps the project is just an indictment of current compiler technology: how about a critique on this aspect – what’s wrong?
Maybe someone should do a C port, then it can be portable to other architectures, too.
I have this idea for a really fast computer, I’m going to build it out of a pile of transistors …
Why would he waste his time doing this?!
I tried to put MSETUP.EXE on the floppy. I shouldn’t be allowed near a computer.
Downloaded a copy, did the dd stuff.
dd if=mfloppy.img of=/dev/fd0
worked for me by the way.
Rebooted, answered the two questions, and it was working. Only complaint I could find was that the Super Mario game had bugs.
There are many good reasons for doing such a thing. The two most important are for the authors to learn and pass on their learnings, and to show it can be done.
If TCP/IP can easily be added, and maybe a way to easily push very simple GUI’s onto it, then it might be of interest to embedded people using x86 style chips.
Or, knock out tcp/ip, a simple web-browser, ssh and an email/news agent, and you’ve got a nice floppy disk sized OS to deploy on ancient machines.
>I’m not impressed of what i see so far…it’s not at all fast.
uhh, it’s really quick… for booting from floppy. Very nice OS, I’m using a Matrox g400, and the colors were VERY dark, but it was still very useable.
I THINK THIS IS THET WAY TO GO.. I HATE ALL THE BLOATWARE FROM OTHER OS’S
I THINK YOU SHOULD FOUCS ON THE EMBEDDED WORLD WITH THIS WHERE SPACE AND SIZE IS A ISSUE. I LIKE TO SEE IT RUN ON SOME OTHER PLATFORMS, LIKE Z80 8051 ECT..
NOBODY HAS A GUI FOR SUCH SMALL 8 & 16BIT CONTROLLERS, IT WOULD BE A GERAT BANG IN THE ARM FOR THIS AREA OF CONTROLLERS , MOST OF THE CPUS ARE SOLD HERE IN THIS AREA FOR PORTABLE EQUIPMENT AND HANDHELD IT WOUND BE PREFECT TO PUT A PLATFORM WITH THIS .
IF INTERSTED PLEAS E-MAIL ME
Any programmer that thinks spending a few extra hours or even months writing code in assembler versus C to gain a 10% increase in speed is worthless amazes me. That 10% increase in speed could save countless hours if your program is ever actually used. Ask any 3D application developer what they would do for a 10% boost. What would you give for you compiler to work 10% faster? So I guess if you only work on projects that never ship or are never used, that 10% boost is meaningless.
Eugenia, I would love to see a master list of links to all of the OSes available. You rule.
Did all of you naysayers wake up on the cranky side of the bed this morning, or what? If this guy wants to write everything in assembly for his own pleasure and enjoyment, why are you bothering to snipe at him?
I think it’s a pretty amazing thing to accomplish, for anyone and more power to him!
Backin 1997, in one of his articles, JLG mentioned that they had managed to get BeOS and some apps to fit on a floppy… this is what eventually became BeIA.
What I want is… they should release that floppy version, like the QNX floppy demo!
Thank you Ville Turjanmaa, the Creator of MenuetOS! You did better than I did. I wire-wrapped a 68000 system 20 years ago, built dual ported video ram display, wrote an operating system out of assembly, and got stuck in the middle of a basic compiler. Now I study Buddhism. It is very similar – take the truth as far as it goes. Sometimes the way to life is to dig in and go for it! Love is waiting all who enter.. http://www.dyad.org
They pulled the installer off the website due to the slashdot effect. Does anyone have it available on a mirror for download?
Ryan, there are lots of such lists on the web.
I don’t have them handy right now, but if you make a search on google, I am sure you will find lots of websites that list every known OSes and kernels.
and that’s it. My computer hangs at that point and nothing else happens. Should it take longer than the two minutes I gave it?
Hey,
Very impressive stuff. With a minor amount of work, which you alluded was already happening, this could be a really awesome toy/tool. If you get the IP stack complete, and get the font stuff done, it is darn close to excellent.
I can think of multiple situations where I could use it as a diagnostic tool. The only things it lacks, which I am certain you are already doing, is ip Telnet, and a simple file manipulation tool. IE cp, rm, etc; in a console window, or a simple graphical one.
I do QA for a living, so if you want a QA guy to be nasty and critical I offer my services.
Keith
A question: did this guy code the assembly from scratch, or did he write C, generate ASM output (as many compilers will do) and then tweak from there? There is a reason why Linux (and several other OSes) are written predominantly in C with some Assembly: the assembly represents that part of the code that needs optimization. Unfortunately, as processors become increasingly complex, hand-tuned optimization becomes increasingly hard to do. That is, ultimately, a compiler often generates better code that an individual – and this trend will only grow more significant. While this achievement is impressive, it is inherently limited, since the author has chosen one of the least portable ways in which to implement his project.
This is what would happen if someone decided to port WorkBench to the PC. I say great job i miss my OS on a disk days
I’d REALLY like to see Java running on such a platform. Between sub-floppy storage requirements, an IP stack, and a JVM running we’d have a no-bloat system that could run nicely off web servers.
This is because you probably use a Voodoo card. If you read the comments here or the Slashdot article I clearly state that Voodoos won’t work because they don’t support the VESA the way Menuet uses it.
It’s a Diamond Stealth II G460 which afaik is not a Voodoo. I’m at work now though so I will try it on my computer at home later and see if I have better luck.
It is cached at google:
http://www.google.com/search?q=cache:AFWnmgTAVjo:www.menuetos.org/+…
http://www.geocities.com/placebic/2001-09-06-menuet.html
From what I remember, V2OS was the first assembler OS, NOT Munuet.
By the way… whatever happened to V2OS?
MenuetOS! The Fresh Maker!
It would be a pleasure to see what this OS is like on my computer, but when I go to the website, all I get is a stupid gambling ad link at the top of the page. *sigh*.
I’m only seeing the ad at the top, the rest of the page is blank. I’m using IE5.0 with SP1 and hotfixes.
try this
http://www.menuetos.org/left.htm
the page is coded funny.
(IP: —.boeing.com) wrote on 2001-09-06 05:04:43: Stupid
———————————————————————- ———-
Very impressive.
Given that CPUs are so slow these days, and the over-hyping of the usefulness of harddisks, it’s about time we had such an OS.
All those C++ and Java developers out there must be really silly not to see the benefits of writing everything in assembly.
Oh wait…
I really meant to say it’s the most stupid project I’ve every heard of! Get a life!!!
What are you a MORON Most of Our Software Problems these days are Due to “BLOATED” Code.
Get a Real Life
(IP: —.boeing.com) wrote on 2001-09-06 05:04:43: Stupid
———————————————————————- ———-
Very impressive.
Given that CPUs are so slow these days, and the over-hyping of the usefulness of harddisks, it’s about time we had such an OS.
All those C++ and Java developers out there must be really silly not to see the benefits of writing everything in assembly.
Oh wait…
I really meant to say it’s the most stupid project I’ve every heard of! Get a life!!!
What are you Nuts…… The problem today is that the “BLOATWARE” out there really insnt necessary even M$ Windoze contains probably 35% actual do nothing ?BLOAT.
Just my 2@
GREAT JOB DEWD!!
Hasn’t anyone here bothered to see the code? I for one have, though I haven’t really analysed it in depth yet.
Still, I haven’t notice any code or data protection, despite statements to the contrary in the article. It seems that any process runs at priviledge level 0, and effectively can do whatever it wants — including hanging or crashing entire system. Further, it seems that memory available to the process is limited to 1Mb, and no more than 20-something processes can run simultaneously. Further still, it isn’t pure 32-bit code. There is 16-bit startup code, and unlike Linux, it isn’t jettisoned after starup.
The code itself is horribly un-structured, and seems to be a nightmare to maintain and extend. And putting all the source of the kernel in 200+ KB file is hardly a good idea.
Anyway, writing an entire OS in assembler is pretty stupid idea. HLL were developed specifically to combat emerging complexities of software through the use of decomposition, i.e. dividing programs into smaller parts with well-defined and clean interfaces between them, so that at any given time developer can concentrate on just one of those parts.
Why is it that every time somebody writes something cool – in this case a FULL GUI ASM OS that fits on a floppy, people feel the need to pick it to peices. This guy rocks. Anybody that can have the dedication to write that much, and release it to the public, for public consumption, rocks. You can whine about it not being something, or having design characteristics, but I don’t see you doing anything better. How many people can say they wrote a whole OS, in ASM nonetheless. Not very many. You people need to get a life. bah.
Nice job! I’m admired! But there are no base ideas about structure of operating system, its concepts, assignment. It was made on the Assembler!!! – and nothing more. I do not think that such a system has any future except to be a toy. (Sorry for my English)
Surely most of the code speed comes from using the most efficient
algorithms, but assembly itself is hardly the obstacle.
Why not have best of the both worlds ?
But if you’re critizising Menuet for being ‘non-portable’ assembly,
you might as well take down AMD and Transmeta.
Some people can code faster in asm than in C. To good programmers, writting code isn’t the hard part it’s figuring out what to write. The asm programer has the added difficulty of figuring out how to optimize code (not only algorithms) but that isn’t that much difficult for a skilled and talented programmer.
And, assembly files can be split and compiled seperately like in C. FASM(the assembler used) is an assembler that was made by a single person instead of a multinational corporation like SUN or MICROSOFT.
The program will obviously never be mainstream (which was not his intensions anyways). Making it fully protected system will obviously slow it down significantly. And calling interrupts in a protected environment doesn’t help either. But it looks like a nice addition to a MULTI-OS computer since it’s small, and it seems like a nice environnment for other assembly programmers to play around with.
I read the comments about MenuetOS on slashdot a few weeks go, and its nice to see finally a site where ppl applaud asm coders. Assembly is an art, someone that can master this art should NEVER be put down. I have yet to try menuetos, as i have no available computer with vesa support and am too lazy to reboot this machine. I have read alot about MenuetOS, and i personally applaud its creator, for doing so much with assembly. For all you ASM loving OS followers, you should keep your eyes peeled for Unununium. Within a few weeks, possibly up to a month or so from now, we (yes we, i work on it also) are gonna release 0.2a of the FRuSTRaTiON distro of it. It will feature a damned nice shell, ext2fs support, VGA driver, serial driver, ps2 driver, (we used to have SB16 support, dunno what happened to it), ramdisk support, our own ramdisk fs, a devfs, and whole lot more. All coded in x86 Assembly, this os not only fits on a disk, it will require less than 50kb on that disk (no, thats no typo, you read right, 50kb). We dont have a GUI just yet, but its in the works (a GUI is hard to code ya know).
http://uuu.sf.net for those that want to see what we have to offer.
I read the comments about MenuetOS on slashdot a few weeks go, and its nice to see finally a site where ppl applaud asm coders. Assembly is an art, someone that can master this art should NEVER be put down. I have yet to try menuetos, as i have no available computer with vesa support and am too lazy to reboot this machine. I have read alot about MenuetOS, and i personally applaud its creator, for doing so much with assembly. For all you ASM loving OS followers, you should keep your eyes peeled for Unununium. Within a few weeks, possibly up to a month or so from now, we (yes we, i work on it also) are gonna release 0.2a of the FRuSTRaTiON distro of it. It will feature a damned nice shell, ext2fs support, VGA driver, serial driver, ps2 driver, (we used to have SB16 support, dunno what happened to it), ramdisk support, our own ramdisk fs, a devfs, and whole lot more. All coded in x86 Assembly, this os not only fits on a disk, it will require less than 50kb on that disk (no, thats no typo, you read right, 50kb). We dont have a GUI just yet, but its in the works (a GUI is hard to code ya know).
http://uuu.sf.net for those that want to see what we have to offer.
stupid freaking opera….(always double posts EVERYTHING). I read a post saying that V2_OS was the first assembly os, whoever believes this should be smaked. Entire Operating Systems were once coded in pure asm, before the days of C. V2_OS is just another OS coded in assembly (a nice one, but the project is sorta dead now). Alot of the coders from V2_OS now help with the Unununium project.
Yeah, you read right! V2_OS, the assembly project written in 100% 32bit assembly code, is still alive. We have many updates a week right now, so there is no need to say it is dead. The only reason i can think of here, why Raptor claims it is dead, is that he’s working on another assembly OS project. V2_OS is available at http://v2os.v2.nl/ and rappie’s project is available at http://uuu.sf.net/.
i bet you want to have a look on a fully working operating system in only 9kB!
I said its dead because in over a year, its gone from 0.64b to 0.64c. 0.7 is like a bootloader and hardly anything else from what i hear. Not trying to flame the V2 community, as i was once a proud member of it.
9kb?? that must be 0.7 cause well 0.6x was like 40kb by the time you added system16 and system32 and all that stuff.
<cough> ebx + offset </cough>
/me whistles and walks away looking innocent
I want to stand up and applaud the effort of the author of MenuetOS. I have been dreaming of just such a project for many years.
Looking at the messages from some of the others here I’m astonished. How can anyone bitch and complain about the lack of “C” (Better graded as F-) when you can put an entire OS, Assembler, Editor and misc files and source on a floppy with space to spare? And how about that faster to develop in C when this project was done by ONE GUY in a year and a half??? Well it’s clear they can say anything they want but to me it just proves that C / F- is a “religion.”
Bravo MenuetOS! I’m looking forward to the inclusion of a real file system not just FAT32 & DOS.
Man whu did this the bebst alternatywe the Bbbbil cA^E^o'O'O'O'O'O'O'O'O'O
men thu did this is are best alternative ^a'E`I~O cA^E^o- 'O'O'O'O'O'O'O'O'O'O'O'O'O'O~O