Interview With Ville Turjanmaa, the Creator of MenuetOS

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.

Click for a larger version

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 🙂


  1. 2001-09-05 10:12 pm
  2. 2001-09-05 10:21 pm
  3. 2001-09-05 11:05 pm
  4. 2001-09-06 2:18 am
  5. 2001-09-06 3:47 am
  6. 2001-09-06 3:54 am
  7. 2001-09-06 5:04 am
  8. 2001-09-06 5:07 am
  9. 2001-09-06 5:39 am
  10. 2001-09-06 8:44 am
  11. 2001-09-06 8:59 am
  12. 2001-09-06 10:39 am
  13. 2001-09-06 12:14 pm
  14. 2001-09-06 12:44 pm
  15. 2001-09-06 12:52 pm
  16. 2001-09-06 1:07 pm
  17. 2001-09-06 1:33 pm
  18. 2001-09-06 1:46 pm
  19. 2001-09-06 2:51 pm
  20. 2001-09-06 2:55 pm
  21. 2001-09-06 3:00 pm
  22. 2001-09-06 3:43 pm
  23. 2001-09-06 3:49 pm
  24. 2001-09-06 4:47 pm
  25. 2001-09-06 5:03 pm
  26. 2001-09-06 5:08 pm
  27. 2001-09-06 5:18 pm
  28. 2001-09-06 5:32 pm
  29. 2001-09-06 5:32 pm
  30. 2001-09-06 5:32 pm
  31. 2001-09-06 5:44 pm
  32. 2001-09-06 7:47 pm
  33. 2001-09-06 8:50 pm
  34. 2001-09-06 9:54 pm
  35. 2001-09-06 10:11 pm
  36. 2001-09-06 11:01 pm
  37. 2001-09-07 1:48 am
  38. 2001-09-07 1:55 am
  39. 2001-09-07 8:51 am
  40. 2001-09-07 2:40 pm
  41. 2001-09-07 5:43 pm
  42. 2001-09-09 2:06 am
  43. 2001-09-09 1:01 pm
  44. 2001-10-09 1:28 am
  45. 2001-10-09 1:32 am
  46. 2001-10-10 4:10 am
  47. 2001-10-10 10:02 pm
  48. 2001-10-16 9:38 pm
  49. 2002-01-03 9:20 pm
  50. 2002-01-08 5:30 am
  51. 2002-01-08 5:36 am