MenuetOS is an Operating System in development for the PC written entirely in 32/64 bit assembly language.
Menuet64 is released under License and Menuet32 under GPL. Menuet supports 32/64 bit x86 assembly programming for smaller, faster and less resource hungry applications.
Menuet isn't based on other operating system nor has it roots within UNIX or the POSIX standards. The design goal, since the first release in year 2000, has been to remove the extra layers between different parts of an OS, which normally complicate programming and create bugs.
Menuet's application structure isn't specifically reserved for asm programming since the header can be produced with practically any other language. However, the overall application programming design is intended for 32/64 bit asm programming. Menuet programming is fast and easy to learn. Menuet's responsive GUI is easy to handle with assembly language. And Menuet64 is capable of running Menuet32 applications.
Features.
- Pre-emptive multitasking with 1000hz scheduler, multithreading, multiprocessor, ring-3 protection
- Responsive GUI with resolutions up to 1280x1024, 16 million colours
- Free-form, transparent and skinnable application windows, drag'n drop
- SMP multiprocessor support with currently up to 8 cpus
- IDE: Editor/Assembler for applications
- USB 2.0 Hi-speed storage, webcam, printer class and TV/Radio support
- USB 1.1 Keyboard and mouse support
- TCP/IP stack with Loopback & Ethernet drivers
- Email/ftp/http/chess clients and ftp/mp3/http servers
- Hard real-time data fetch
- Fits on a single floppy, boots also from CD and USB drives
Recent releases:
Screenshots.
An interview with Ville Turjanmaa and Madis Kalme, two of the MenuetOS developers
Menuet64 is released under License and Menuet32 under GPL. Menuet supports 32/64 bit x86 assembly programming for smaller, faster and less resource hungry applications.
Menuet isn't based on other operating system nor has it roots within UNIX or the POSIX standards. The design goal, since the first release in year 2000, has been to remove the extra layers between different parts of an OS, which normally complicate programming and create bugs.
Menuet's application structure isn't specifically reserved for asm programming since the header can be produced with practically any other language. However, the overall application programming design is intended for 32/64 bit asm programming. Menuet programming is fast and easy to learn. Menuet's responsive GUI is easy to handle with assembly language. And Menuet64 is capable of running Menuet32 applications.
Features.
- Pre-emptive multitasking with 1000hz scheduler, multithreading, multiprocessor, ring-3 protection
- Responsive GUI with resolutions up to 1280x1024, 16 million colours
- Free-form, transparent and skinnable application windows, drag'n drop
- SMP multiprocessor support with currently up to 8 cpus
- IDE: Editor/Assembler for applications
- USB 2.0 Hi-speed storage, webcam, printer class and TV/Radio support
- USB 1.1 Keyboard and mouse support
- TCP/IP stack with Loopback & Ethernet drivers
- Email/ftp/http/chess clients and ftp/mp3/http servers
- Hard real-time data fetch
- Fits on a single floppy, boots also from CD and USB drives
- 16.05.2011 M64 0.96M released - More bootup configuration options, GUI improvements
- 12.03.2011 M64 0.95Z released - Updates, bugfixes, improvements (usb,smp,tcp,..)
- 12.10.2010 M64 0.94H released - Fourier transform, sinc and resampler from A.Mogyorosi
- 24.06.2010 M64 0.94B released - More supported TV-tuners & MPlayer 0.51
- 12.06.2010 M64 0.93X released - Multi-Processor support
- 10.01.2010 M64 0.92H released - Digital TV support (dvb-t)
- 02.09.2009 M64 0.91J released - New bootup desktop (transparency, background)
- 14.08.2009 M64 0.90U released - Improved HTTP client & GUI transparency
- 03.08.2009 M64 DVD/MP3 player v0.20 by V.Turjanmaa & A.Mogyorosi
- 29.12.2007 CD available for download
- 15.07.2010 M32 0.85B released
MenuetOS C LibraryDocuments.
Programming II | News | ||
- FASM - C library - TCP/IP interface - Driver programming: - Fourier transform and resampler | - OSnews.com - Slashdot.org - DrDobbs Journal - Computer Power User - Goodgearguide (interview) |
64 bit development | Menuet sites | ||
- DrDobbs 64bit forums | - MenuetOS Belgium - MenuetOS Germany - MenuetOS Brazil |
Screenshots.
USB 2.0 devices webcam storage printer TV/Radio | Window transparency, preview, freeform Pic1 Pic2 Pic3 |
DVD/MP3 players Pic1 Pic2 | Imaging (png/gif/jpg/bmp..) Pic1 Pic2 |
SMP & Dev with Fasm Pic1 Pic2 Pic3 | C-lib/Menuet CD (Quake, Doom, ..) Pic1 Pic2 Pic3 |
Digital TV (dvb-t) Pic1 Pic2 Pic3 | Network Pic1 Pic2 Pic3 Pic4 |
An interview with Ville Turjanmaa and Madis Kalme, two of the MenuetOS developers
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.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.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 thatVille: 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.Is either version of Menuet used in any production environments? Do you see this as a hobby/educational exercise or are you aiming for a system that will fill a particular niche in the operation system ecosystem? That is, is there a target audience for Menuet, or is it all about the development process?Madis: The most important about Menuet is its small footprint as it still fits on a floppy. The niche can be some embedded device. What is also important is that its x86-based and therefore portable to most compatible devices. Now that Mac is using Intel CPUs and future Larrabees from Intel will also be using a subset of x86 ISA.Ville: Menuet is used in environments that require real-time control over other devices. Currently Menuet is mainly used among hobbyists who are interested in assembly language. And assembly niche is actually a pretty sweet one. There are new exiting features to learn and most importantly, you never know what kind of usages people come up with. Our team's current goal is to get the version 1.0 out.Do you think there is still a role for assembler language beyond MenuetOS? Most computer science courses these days seem to concentrate on high-level languages like Java and C++, and most job openings seem to be for people with training in those languages (or other high-level languages like PHP and Visual Basic).Madis: There are parts in code where ASM is still needed. Of course rare are the cases where a whole program is coded in the dialect, but optimisation today is increasingly important and I think a role for assembler is exactly that. Higher languages fit perfectly for quick prototyping where speed isn't crucial.Ville: Some courses are also restricted by funding reasons. Teaching must be neutral and manufacturer independent. And assembly languages have been clearly manufacturer dependent. But assembly coding itself with Menuet's high-level system calls is actually quite fast and easy to learn.What development tools could you not live without when working on MenuetOS?Madis: Firstly Flat Assembler (FASM), which generates code for MenuetOS. FASM's macro capabilities also help dealing with images and raw binary data. Hex-editor is also a valuable tool and an OS-debugger to test quickly the changes made on-the-fly.Is there a reason you chose FASM as your assembler?Ville: FASM was the first feature-rich assembler for 32 bit x86 written itself in assembly. Before FASM we used an assembler written in C. Today FASM supports multiple platforms from Windows to Linux and Macintosh.Why a monolithic kernel?Ville: When you look at process execution at a more detailed level, Menuet kernel has features from both micro- and monolithic scheduling. For example, applications graphics access is implemented monolithic style and networking is implemented like in microkernels. Monolithic kernel is a reliable backbone for all the other features.Why a real-time OS? That seems unusual for something with a GUI.Ville: Menuet task-switching is a combination of pre-emptive and event-based scheduling. Every process has a maximum execution time which is interrupted by the timer scheduler. With a built-in GUI, this doesn't have any down-sides, since the amount of processing doesn't really change whether the multitasking is real-time or something else. So it really comes down to the actual GUI design, not that much to the scheduling type.One of the main hassles of writing an operating system is the driver support. How did you pick the devices you support?Ville: In general, we try to support the most popular device types first. For example, we support USB video, storage and printer device classes, which gives us the widest range of support. But more drivers are needed before hitting the 1.0 mark. Currently we just have a minimal set of drivers to add network applications, for example.How well does Menuet deal with multi-core systems, given they seem increasingly common?Madis: MenuetOS is still using a single core or a thread of a multicore system. There have been tests to enable the additional cores and threads, but this needs some work with the kernel before we get it working.Menuet has Ring 3 support. What exactly is running in Ring 3? Just applications?Ville: Only applications are running in Ring 3. Kernel and drivers are running at Ring 0.How do you debug when working on Menuet?Madis: My personal favourite is QEMU, which runs MenuetOS nicely. For single applications there are some approaches. One is IPC, in which case the other program listens to the debug-strings or numbers sent. Another possibility is to halt the program's execution (jmp $) at the interested spot and use QEMU to inspect the registers and memory at that time.Ville: I actually prefer simplifying the code when I encounter a difficult situation. We need to be certain about the functionality of the code, no matter how intelligent our tools are.It looks like there's a brk (system call 64) but not a malloc? Isn't that a little cruel, especially when you have some pretty high-level system calls? How does memory allocation work in general?Ville: Currently Menuet applications have a continuous memory area, which you can resize with a system call. The program binary is located at the beginning of the area and the rest is usable for data. This simplifies greatly any kind of garbage collection after application exit. The OS just needs to free the devices which the application may have been using. However, malloc is in our to-do list.There has been some work on porting C libraries to Menuet. What's the current status of this effort?Ville: The C library is released under GPL and it is mainly compiled as 32-bit code. Menuet64 is fully capable of running 32-bit libraries and applications. Currently there are Quake, Doom, Dosbox and other C-based applications that run in both Menuet32 and Menuet64.Will we ever see a POSIX layer on top?Ville: POSIX is no doubt a very powerful solution. However, with Menuet we try to keep the system calls at a relatively high level, like create_window and putimage, which generally results to easier and faster application development with assembly language.
Images: www.menuetos.net
Custom Search
0 commenti:
Post a Comment