MenuetOS Debuts
Eugenia Loli-Queru writes: "OSNews is hosting an interview with Ville Turjanmaa, the creator of the Menuet Operating System. Menuet is a new, 32-bit OS under the GPL and 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 (except with 3Dfx Voodoo cards), sound at 44.1 khz stereo etc. And the most important and notable feature? The whole OS was written in 100%, pure 32-bit x86 assembly code!"
Anybody remember GEOS?
That's another OS that was written entirely in assembly... by the time they finished, Windows had ALL of the marketshare...
Why would anyone name an OS after (or any name even simlar) to a 80's boy band... (That is, if anyone even remebers them except for me)
Firstly I've got to say congratz for knocking this one out. But to be honest how many more Operating Systems do we need?
I'd settle for Application software that worked the way I like to work.
This sounds exactly like v2 OS... last I heard v2 had finished its C libraries and TCP/IP...
This sounds incredibly cool, but with all these new OS'es popping up like QNX, AtheOS, and my alltime favorite BeOS. The only problem is, that theres too many showing up, and too little support for them. Sure, this is a great example of what you can do with Assembly, but are you gonna make a full fledged OS out of it? Is anyone working on a brand new OS that they think will actually go someplace? Personally, i'm still holding out that BeOS doesn't sink like the Titanic..
--
Insert Witty Sig Here
An operating system in assembler? Bah! Such high level languages are tools for the weak, macros be damned! You know what I have to say about that? Reminds me of an old joke by Alan Turing : 11100101010100100111010100101010010100101001111 ? 10011010100111011100001 !!! HA!
That joke is as funny as Stephen Hawkings crawling...
os written in lisp? done.
os written in C? done.
os written in asm? done.
os written in java? "done"
my remaining options are perl, tcl or awk.... hmmm.
With all the different OS's coming out with various different things in it, like beOS, Debian, and so on having different things to be supported within it.. wont that split the support even further apart? I've got to admit that its cool that they're still making new OS's and having different features in it but there's also the inherent problem of supporting it.. Will this OS get enough support from people nowdays that are coming from picking their OS from a wide range of currently available ones? Windows.. DOS ( does anybody actually use it anymore? ).. Mac.. Linux.. and all of the distributions.. BSD.. Solaris.. and so on..
I know there's a hell lot more of different OS's out there so shouldnt there be some kind of standard set now so that support would be easily gotten across a wider range of platforms?
It's finally good to see os's and applications that are small and efficient
if you want people to think you know what you are talking about, just put ".com" at the end of everything you say.com
There are ton of pet project operating systems like this. Some simple searching revelas a huge community of these DIY operating systems. :)
Jeremy
when can i get anti-aliased fonts for it?
x86 assembly? Now that's what I call portability!
But hey, who's gonna criticize a sexy new piece of free software? Could be the start of something great, you never know...
They can't code a damn web page right, do we trust their OS ?
Ville Turjanmaa: Parts of Linux was rewritten in assembly and the speed gain was 10-40%. That will give an idea.
I don't mean to flame here, but one of the first things you learn in a computer architecture class is to "make the common case fast." The parts of Linux that were rewritten in asm that improved performance by 10-40% were most likely primitives that were executed hundreds of times a second - like bcopy() and maybe some parts of the VM subsystem. Ville's response draws no distinction between rewriting bcopy() in asm, and rewriting printk() (which is slow, but rarely executed) in asm. Unfortunately, I see no point in rewriting them both if it's not necessary. Sometimes it matters but often it doesn't.
The space advantage to hand-optimized asm is clear, but the cost in portability and time almost certainly outweighs it. I really don't see what this OS offers that Linux doesn't have.
-all dead homiez
From the FAQ:
And the benefit of asm coding is that if you make a mistake in programming, you notice it immediately. You dont get warnings, things just wont work.
Anyone else have serious doubts about this thinking?
What crazy reasoning drives a project to write something complicated and difficult in a lower-level language than the current best practice?
The only thing I can think of is the idea that it will be leaner and faster, which are seriously misguided notions given the trend of faster and faster hardware. What we care about now are scalable algorithms, stable and robust kernels and drivers, and appropriate abstractions to allow easy extensions. All of these are made easier by high-level languages. They are made more difficult by machine language.
What I'd like to see is a powerful kernel mostly written in a very high level safe language like O'Caml or even Java. That would be a feat with some important consequences.
...to those of you who ask "How many OS'es do we need?"
Think about when linux first came out, and everyone said "How many frickin' OS'es do we need? We've already got DOS, MacOS, and Unix (variants, etc.)"
New OS'es are good for the market, people! They provide a fresh perspective on the way things should be done and facilitate ingenuity and competition. They may not all become famous or provide new tools or inventions to the OS market, but some of them do - and that's exactly why we need 'em.
In that light, i must say i've yet to see someone bitch "Jesus, how many different types of cars do we need?"
"It is seldom that liberty of any kind is lost all at once." -David Hume
Are you sure you don't want to write one in emacs? God only knows that all that monstrosity needs is to be able to boot itself. lol.
The speed up achieved by writing the whole OS in assembly isn't much. you just can't compare it saying parts of linux was written in assembly and that got 10-40% speedup. That doesn't mean it'll scale up in propotion.
Turjanmaa doesn't even have an estimate on how much speed up he's achieved. but my guess would be not more that 10% over linux. cuz the most accesed part of linux is already in assembly, so you won't have huge speedups.
my remaining options are tcl, awk or bash :)
"it fits to a single floppy"
What is this floppy thing they keep mentioning?
Is is like CDROM or DVD disk from eighties? Have not seen much of them around.
This is a discussion of Menuet, not FreeBSD.
If this is GPLed, where's the source? I couldn't find it. I downloaded the OS and tried it out a bit, and it actually seems quite good. Mind you, without a TCP/IP stack and such, it's pretty useless, of course, but whomever was behind this is clearly pretty good with the assembly. I'd love to see if the code is even remotely maintainable.
The whole OS was written in 100%, pure 32-bit x86 assembly code
Meanwhile:
We are now focusing in compatibility
Ouch, how can you suppose to provide more compatibility when you code 100% in asm? Compatibility of what sense? Hardware platforms like in UltraSparc and stuff? No way!
--
Error 500: Internal sig error
So true -- I bought my first copy of QNX in the mid 1980's and I think it was launched several years before that.
It's one heap-cool OS -- just a shame that they didn't have the marketing muscle to launch it into the mainstream before MS took over.
Mind you -- I suspect that if they'd tried to make it "yet another desktop OS" it wouldn't be the excellent product that it is today. They focused on the product's strengths and didn't sell out to the marketing droids -- and it shows.
... any performance advantages it might offer are not even "portable" to all the different x86 variants.
Anyone doing assembly optimization work must not only take into account the architectural differences between the recent Intel and AMD cores (P5, P6 and its variants, K5, K6, K7, Pentium IV), but the presence of additional instruction sets (MMX, SSE, 3DNow). It makes sense to go to this kind of trouble only if there are serious benefits to be had, e.g., in places like OpenGL/D3D drivers and the miniscule percentage of OS code that must provide low-latency interrupt service.
Writing 100% assembly language just for the sake of saying "mov eax,1" instead of "int a=1" is the mark of the true amateur programmer. Your code won't run any faster in the general case just because it's "100% assembly," so unless you're just trying to impress girls or something, assembly is best left to the half-dozen driver programmers on the planet who still need it. Especially the Balkanized array of proprietary hacks that x86 assembly has become.
If you are having trouble with the link, try this one.
Need to whore me some karma....
Viv
Gmail invites for ip
...does that mean it'll be a pain in the ass to fix "LENGHT" to "LENGTH" in the editor picture on the website?
but seriously, this is pretty sweet. i'm going to load it up at work tomorrow.
Something that's apparently not appreciated enough these days.
Why is this modded as funny?! I know I'm being a jerk, but those binary strings don't translate to anything in ascii.
A musician without the RIAA, is like a fish without a bicycle.
Best Keanu Reeves voice: "Whoah..."
Carousel is a lie!
Actually, if you had a couple of years of experience (ie non-university) CompSci or EE under your belt then you'd realize just how correct the original poster is.
Saying that it simply won't work and therefore is easier to debug is foolish on a grand scale. If anything, writing in assembly code gives you FAR more failure modes because you don't have a compiler which is running at least some sanity checks on your code. If anything, you'll find that it is higher level languages that "won't work" and assembly code that will do something obscurely weird when you trash the wrong memory address.
If there is anyone humiliated, it should be the previous poster who obviously has no idea about the complexity added in writing something directly in assembly rather than a higher level language. All you end up doing is trading portability for increased development time. There is even no guarantee that the code will run faster - C compilers are pretty good these days and can do magical things with intrinsic functions with superscalar scheduling.
To sum it up, YES!! You are not 100% correct. You are actually 100% incorrect.
Fear: When you see B8 00 4C CD 21 and know what it means
I don't mean to be a "flamer" but, please let us think about this in a broader perspective.
Lately I have been seeing a lot of OS announcements (as may posters pointed out before me) everything from BeOS, to FreeDOS and Linux, et. al. -- and all of those OSs seem to be centered around taking on Windows of the evil M$.
If that is the intention, may I suggest that the OS war is over and that M$ is the clear winner and that any continues battle on this ground is just a step backward.
Lets face it, in few more years, we will care less about the OS and wary more about the user interaction and front-end applications. Even Linus Torvalds realizes this as his new focuse for Linux is now on: Making Linux usable tops Torvalds' list
Karma stuck at 50? Add 2-5 inches.. err.. 2-5x Karmas Count to your pen1es.. err.. Karma all naturally and private
Firstly I've got to say congratz for knocking this one out. But to be honest how many more Operating Systems do we need?
It's not really a matter of need, as in how many Operating Systems do we need to try and push on people's desktops. Instead, it becomes a matter of people trying different methods of OS Development and different design philosophies. Think about it for a minute - if only 4 or 5 groups created all Operating Systems that are out there, it would be unlikely that new ideas in OS development would be fully explored.
You might want to look around and check out all the Operating Systems there are out there that researchers and hobbiests (sometimes there doesn't seem to be THAT much of a jump between the two ;-) have spent tons of time on. Sometimes they are developed just to 'scratch an itch', sometimes they are developed to see an idea all the way to completion to see how well it works out.
Don't knock these guys for trying to develop a new OS - sometime or another the ideas they come up with may end up in Linux, *BSD, etc. (Of course, in the interest of full disclosure, I work with an alternative OS project that somewhat died, and just got resurected this week. ;-)
Davis Ray Sickmon, Jr - looking for something to read? Check out my three free novels at MidnightRyder.org
I'll stick with Penix, thanks.
The Penix system uses interpreted BASIC for "Ease of Modification". Good move in my book. BASIC programmers are plentiful.
Wasting your time since 1997.
This is done for fun. Lighten up, man.
And if it's done right, it could even protect the system from being damaged.
Just a thought.
OS/2 - because choice is a terrible thing to waste.
From the GPL: "The source code for a work means the preferred form of the work for making modifications to it."
Guess that means he has to distribute the C version, too.
ok then your [sic] infringing on my copyright! Could you as [sic] me next time before STEALING my comments for your own?
I just upgraded my entire company to this OS and we are blazing ahead into the early 90's. Some of my 'less-educated' users are complaining about the lack of support for StarOffice but I'm assuring them that it will come with time. In the meantime I'm working on a Lynx port. I never knew I could get 10% (!!!) improvement on my existing Pentium II 1 Ghz machines!
MenuetOS has been floating around for a while now. I briefly looked at the website a while ago, it looks tres cool, but I don't know much about it. Even without knowing the details, I can say that for a hobby project, this is a staggering accomplishment. As well, there other operating systems in development that are 100% ASM, Unununium comes to mind. http://uuu.sourceforge.net/
:)
The fact that the operating system was made in ASM is bringing up the low-level language versus high-level language war. I will admit that Linux and MenuetOS aren't really comparable. But ignoring differences, the end result: MenuetOS makes Linux look MEGA bloated, slow, and laughable. You guys should be taking 2nd, 3rd, and 4th looks at QNX RTP, BeOS, and AtheOS. This should serve as a big kick in the ass for you all Linux-fans. It's really nothing "that great." Sure it's free, but you sacrificed quality.
People claim that C compilers can generate code that is similar to what an ASM programmer is capable of. This is not true. A well-planned and pain-stakingly optimized C program can approach a novice ASM programmer. But this is almost never the case. Plus, there is also the inherent "beauty" of well-designed ASM code that most high level languages will never reproduce.
Anyway, I could go on forever. If you want to address anything I said, I am ready prepared for retaliation.
Well.. just a thought..
:)
Was trying to think of maybe how this would be good for anything other than rootdisks and novelty value.. and then i started thinking.. well.. 44-khz stereo sound, workable gui, MIDI support..
I can't get the thought out of my head that something-- maybe not this specific OS, because this specific OS is tied to the x86, but maybe something patterned on the same general system design-- like this would maybe be actually useful as an embedded OS for a sampler.
Am i just completely on crack, or would a sampler/synthesiser with a small lcd screen and an os like this one be as cool as it seems to me it would be?
Then again, any really cool stuff you could do with such a system-- say, letting you program your own midi synths in realtime-- would *demand* that it have an interpreter for something more high-level than assembly built in, and doing, say, a LISP/Python interpreter in an environment written wholly in assembly could maybe get messy. Maybe we'd rather have an OS written in LISP in our samplers....?
Oh, the hell with it. Forget i brought it up
Irritable, left-wing and possibly humorous bumper stickers and t-shirts
Of course it doesn't translate to ASCII. Alan Turing died in 1954 and ASCII was created in 1963.
The joke is probably a Turing machine tape anyway. We don't know how to interpret the symbols without the state machine specification to give it context. Many jokes are not funny out of context.
I wish I were this clever. Unfortunately I was limited by slashcode's interpretation of 10010101... as a post entirely in CAPS (even the ascii was not in caps, har har), which forbids its posting. Many criticisms also make no sense when made without proper context.
ASCII? Hah, your obviously not old enough! Try EBCDIC, and if that don't work try FIELDATA.
;)
Work hard young one!
Need help treating your acne? Come here!
...so unless you're just trying to impress girls or something, assembly is best left to the half-dozen driver programmers on the planet who still need it...
But if you ARE trying to impress girls, WOW, I can't think of a better -- oh, wait. Nevermind. Someone already found a better way, a webserver coded in PostScript.
You are far from 100% correct too, but I will forgive you because your post wasn't nearly as condescending as his. :)
Yes, there are more "failure modes" in a low level language than a high level language, but that is a simple trade-off for more control.
As with any language, if you know what you are doing, you are less likely to make errors. If you have a high degree of control, it does not necessarily mean you will make proportionately more errors if you know what you are doing.
To be honest, I find it easier to debug an ASM program. You write the code, you know what precisely what is going on. And the capability of C compilers compared to ASM programmers is over-exaggerated. I have seen well-written C code approach novice written ASM code. C compilers can (depending on the programmer) generate some really impressive, logical, clean code - but not usually something that can compete with an ASM programmer.
If your definition means extremely well optimized at the expense of long dev time and completely unportable, so be it.
Indy cars have exceptional quality for that particular track; aren't they even optimized for left hand turns? But most people would choose to own a well done street car.
The parallels in dev time and portability say enough.
Infuriate left and right
Actually, GEOS was *purchased* by a zealous group of GEOS users and renamed to NewDeal... www.newdealinc.com
Well, I tried to download the demo, and they aparently are having some MS-SQL problems. Ya know, I'm going to have to play with this a bit - I always liked GEOS the first time around. NewDeal may be worth a look. Unluckly, that's probably all it's going to be worth. :-( I can't exactly see there being much support for it, application wise.
But, you HAVE to love the requirements for running it:
Davis Ray Sickmon, Jr - looking for something to read? Check out my three free novels at MidnightRyder.org
Ok, most of the responses to this so far have been "assembler doesn't give you that much improvement" , "assembler is a bad way to do things if you're trying to do them The Right Way".
:)
Well, why can't he use asm? If I want to write an OS is BINARY that's a cool-ass hack, even if it is not The Right Way to do it. Come on guys, give the guy a break... he did something *awsome* and something probably 98% of us can't do (I know I certainly can't) and he should be credited for that. I'm not saying that this OS is something that should be taught in OS design courses, but it's still very very VERY cool
Sure, there's a plethora of other OS choices these days, but a small, efficient, graphically based OS would lend itself very nicely to the embedded / handheld market.
Sure Linux is cool, but once you slap X on top of it, it's not nearly as efficient on slow machines.
Who knows... you could have a Menuet based PDA or phone next year.
MadCow
I used to have a sig, but I set it free and it never came back.
Lunix. Let's go home boys.
Or does the link go to an almost-blank page with only a single banner ad flashing at the top? What gives?
I'm a big complainer about how fast our CPU's have gotten these days, yet I cannot word process any faster than on my 1MHz Commodore 64 -- there are just a ton of extra features that I never use. Don't forget the benchmark that someone did (Ars Technica IIRC) that showed WinblozeXP/OfficeXP would require 33% more cpu to remain at the same performance level as Win2K/Office2K.
Were you planning on dropping wads of cash on the latest and greatest CPU/system only to see it run only as fast as your old system?
Anyway, imagine if someone would write a full-blown assembly version of the Dnet client for this OS -- I'll bet that keyrates would just be obscene compared to Windows/Linux/etc. Of course, this OS is probably still missing the essential networking code, but it's still fun to imagine...
Pinball, arcade video, tech and more: www.micsaund.com
everyone says, "It's most bestest around!" I try it, I sit around and wait for it to do stuff, I dislike the interface. It sucks. I don't recommend.
Go ahead and try though, just don't expect it to be the "most bestest!"
Until he writes the 64bit 3D gui OS in pure binary (hex is for wimps) machine code. And it fits on a audio cassette tape, to boot.
Congrats to the guy though, this sounds incredibly cool.
What about some company or another making some 486 CPUs with the latest .13micron technology, and making a highly integrated motherboard with 8 or so megs of ram on it plus another 4 or so megs of static ram for application storage purposes and calling it one kick ass integrated computer?
Thanks to using yee old technology along with the latest state of the art manufacturing proccesses, the entire system would be insanly small. Since the motherboard wouldn't have to control alot of various devices (IDE interface, more then just a few megs or am, ISA/PCI/AGP ports, etc) your overall system profile would be very tiny. Whats more, once a proper C compiler was made for the system, alot of older code could be ported over to it. Heck, alot of companies have some nifty old games back from the DOS days that totaly rock and are very small in size. Heck, I even still today play an old CGA volly ball game.
Of course it isn't going to happen, but it'd still be cool if it did, heh.
Need help treating your acne? Come here!
ASM is unnecessary in most cases, so it all depends on what the goals of the project are. I think you could make a really good thin client out of it for example, but not a full desktop OS. Making a neet little internet appliance or something like that, would be good. In fact, a company did just that. I remember seeing it one time. This co. made everything in x86 ASM, and they had an OS, web browser, office suite (for reals!) and all that jazz for older x86 computers (pre i386 I believe). There is an example of a good use of ASM, and that is the type of thing MenuetOS could do, and it would be all worthwhile.
Ofcourse 100% CSS-compliant and written in assembly.
Anyone?
Please?
Me
mod parent up please
Use w3m. It's in the FreeBSD ports collection. A rocking text browser that I actually often prefer to Netscape since it doesn't crash.
Frames, tables, ssl, it's all there in w3m, in text! And, it will call XV to load at image on command.
That way, it allows *everyone* to advance the code. And the newer BSD license don't have that dreaded advertising clause. Rock!
Really, because all you need is some good desktop-connection software and all palmtops are basically the same, its an OS free-for-all. And those iPaqs with QNX look damn sweet.
Nah, the variable names and the comments are what is important in assembly. But I guess I'm talking to someone who know as much about assembly programming as I know about greek literature.
An OS from Finland? Does this come from the frozen small hellhole next to North Pole? Do they even have electricity there? World domination? Yeah right. Won't happen in a million years!
...said people 10 years ago and went on with their life. Boy, were they wrong.
Never underestimate an OS that comes from Finland.
Of course who knows? Maybe the guy is some mad obsessive genius. But from my experience with mad geniuses, they are great that the 10% inspiration part, but not so hot on the 90% perspiration part.
Get an account, post some comments, get some karma and then you get some mod points.
While you're at it, get a god damned life, willya?
i just tried running this with a (very) old version of bochs (991012) and crash after the booter loads the floppy. anyone have any luck running it in bochs?
If you don't like squeak, try Visualworks. It's a very nice commercial smalltalk that I worked with extensively when I was in grad school.
I've linked to the downloadable non-commercial-development version.
Smalltalk is very addictive once you start using it. I love the flexability that multiple polymorphism (selecting a method based on the name, and the types of all of the arguments, rather than on just the name, and maybe the first argument) offers, as well as the convience of being able to work on the same image from whatever platform (sun, windows, mac) that I happened to have access to.
You could get the asm out of the binaries, but it would lose all formatting, comments, macros, separation into different files, and various other things. It would be *very* hard to read; not at all the "preferred form of the work for making modifications to it."
main(c,r){for(r=32;r;) printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}
Or, if you're really hardcore, DAEHTIHS.
--
I like to watch.
In this case, the form prefered by the author. Trying to force someone to use a programming language is not likely to happen any time in a free software license. This post should NOT be at 3.
They that quote Benjamin Franklin on liberty and safety deserve neither.
Photoshop? (or the GIMP for you free software types) If not... well, who really cares except from a techincal perspective?
Not too bag, but if Intel isn't a monopoly as much as M$, I can't think of another.
Pooty tweet
I can't open the page with a browser(/. effect?), but the following result speaks for itself:
$ telnet www.menuetos.org 80
Trying 213.188.129.77...
Connected to web-is-s007.activeisp.com.
Escape character is '^]'.
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Thu, 06 Sep 2001 06:07:47 GMT
Content-Type: text/html
Content-Length: 87
May be in the later stage of development when we've two floppies version....
They are not binary strings, they are the states of an infinite length state machine (aka a Turing machine). The joke describes the Pope, Fidel Castro, and Bill Clinton in a life boat with only one life jacket ... it is hilarious.
Hell, until it can support my video card, I will not be impressed.
ok, when I can buy a GIGABYTE of RAM for under 200 dollars, am I worried about something written in x86 assembler? wtf does it matter if it fits on a floppy?
i have a new name for it: BS-OS
An operating system in assembler? Bah! Such high level languages are tools for the weak, macros be damned!
Heh. Interesting perspective. I suppose all the nasty compatibility issues imposed by assemblers are all but erased, are they?
Never mind the debugging you'll have to spend with machine language. Assembly has its own issues, of course - mistyped register numbers, wrong hardware addresses, then the usual programming errors you get in any other language. But with machine language, you have to count your zeros and ones very carefully... of course, you'll eschew the bourgeois luxury of hexadecimal, won't you?
:)
I love Assembly. Back in high school, I was ordered to write a program that made a computer play music. Everyone else wrote little Pascal and structured BASIC programs to play Chopsticks on the school's Macs 512s.
I wrote a TMS9900 Assembly program which played Flight of the Bumblebees in three-part harmony with the stepper motors of my TI-99/4A's three 5.25" full-height SSSD diskette drives. Percussion was achieved by toggling the head pad solenoids.
My Computer Studies teacher didn't like it because he couldn't understand it to critique it. But he gave me an A+ anyway, probably because the source code was about 30 pages long.
Ahhh... High school.
While I haven't programmed in Assembly in about ten years, you can check out my resume here, since I'm looking for work!
Fire and Meat. Yummy.
What about the (IMHO) famous programmer Steve Gibson, author of Spinrite (sorry /.ers, may be before your time) who writes all his stuff in assembler? His utilities and more would easily be fit onto a floppy disk - even though some use the Windows API (AFAIK). This dude is a guru to anyone using and appreciating the x86 platform! When MFM hard drives were all we had, he provided us a way to keep them working well beyond the MTBF the manufacturers had planned (or promised). A purist beyond belief - and a blowhard in rhetoric, (if you check out his website), yet, a genius in assembler (we're not worthy!)(sorry; tried for a link and was overwhelmed)
Can you say "change my interleave without FDISK first?"
This guy rules! Don't forget him! He's at least as important as Peter Norton. Maybe more...
db
Cig:
ôô
Writing 100% assembly language just for the sake of saying "mov eax,1" instead of "int a=1" is the mark of the true amateur programmer.
Unfortunately, today's trend is just letting the compilers do the work for you. I'm not saying that C development tools are not good (sometimes they really surprise me) but blaming a guy for making an entire OS in assembler is a stupid thing to do. You're calling this guy an amateur but think of all the dudes that are dragging items with the mouse saying that they are programming..
Learning assembler leads to a better understanding of the programs that one is making, but the visual programmers too often forget about this. We reached the point where we consider that the MHz race is going to save our products but why today's Java programs are running slower on a P4 than a (let's say) C one on a 486?
This sentence marks the end of the text.
If this had a web browser, I could see very practical applications for providing on site tech support to single PCs that won't boot. An OS on a floppy that allows me do download whatever foo I needed for a full system install (which were of course provided but promptly lost) and dumping them to the HDD would rock.
Rather than write assembly code targetting for platform X, what do people think of taking a more portable approach and writing a translating assembler which uses basic assembly instructions (jump, load, mul, add, comp, etc.) but translates them into actual platform assembly code which can be turned into native machine code for all supported platforms? Where an instruction (say, 'div') isn't supported by a platform's microcode, it can be implemented using several simpler instructions.
An approach like that should keep things at a low level allowing slim code and fast execution times, but not lock the end product onto a single platform.
Does an assembly product like this already exist? I tried searching freshmeat, but gave up after browsing through several pages of disassemblers, regular assemblers, etc.
And the most important and notable feature? The whole OS was written in 100%, pure 32-bit x86 assembly code!
Hello? Writing the whole of anything in assembler was obsolete when I was an undergrad, nigh thirty years ago. You write it in a high level language first, and perhaps then you recode a very few percent in assembler for speed. Over the vast mass of the code for any significant system, you cannot beat a decent HLL for readability, debuggability, modifiability, and speed. The HLL compiler writer has blown it badly if you can sustain the same level of tenseness for every routine as the compiler will exhibit every time. For well-studied languages such as C, there is just not any question that you will lose. (John Henry, meet the steam hammer.)
This does not even begin to address the issue of portability. Hint: 32-bit Intel is not the universe; you've lost the interest of this reader already with that restriction.
Humm, only good good answer to the post above.
1 01 0110010100001
10010001000001010000010001101010101100111010011
The correct name is GNU/MenuetOS.
Sorry couldnt resist.
I seem to remember a lot of Amiga programmers were into asm. Oddly enough most of Amiga DOS was written in C.
Oh yes, I forgot he was a visionary !
I'm fairly confident GEOS came out after the Macintosh. The Mac was released in January of 1984, or at least that's when the Superbowl ad ran. I first saw one at a computer show in the spring of that year.
h tm l
1984 was a pretty important year for Commodore, as it was when the C-64 dominated sales.
I'm fairly certain GEOS was released towards the end of 1984. I remember first seeing it in around that time frame, and I was fairly in tuned with the Commodore scene at the time. (founded local Commodore user group and was friends with a number of magazine authors, etc.)
This history of the GUI sounds about right:
http://pla-netx.com/linebackn/guis/guitimeline.
It talks about GEOS being released in 1985. I think it was early 1985, just before the Amiga launch. It was a pretty big thing at the time.
The Casio Z-7000 was most certainly not the first PDA. First of all the Newton was released before the Zoomer. The term PDA was coined by Apple.
But there were many small handheld computers dating back many years prior to this. Radio Shack, Sharp etc. had handhelds back in '81. The PC-2, etc.
Granted they didn't keep your schedule and contacts, but. The first computer I saw performing that task was the Atari Portfolio in '89. As I recall it was the first handheld that ran MS-DOS and had a small spreadsheet, etc. The father of a friend of mine purchased one, and it was quite cool at the time.
That's not to say GEOS wasn't cool, because it was. GeoWorks for the PC came out at a particularly turbulent time, but I recall it being reasonably popular for a period of time.
You're absolutely right. Even outside the scope of business, it's important to consider context when making comparisons.
Obviously, it is practical to code in assembler for some, because otherwise we would never have seen the amazing ASM demos of the last two decades, fast graphics libraries like Hercules, and of course all the embedded devices we unconsciously depend on in our daily life.
Personally, I think writing ASM is a pain in the ass, but I have much respect for this guy and his accomplishment.
Ok, so maybe cp wasn't the best example. 350 lines of assembler is pretty impressively small for such a program. Of course, you ignore the 800 or so lines of assembly that it %includes for doing system calls and the like. :-) (If this were a standard system header, I'd ignore it, but it's
part of the application's source code.)
Still, it's hard to have any bugs in the original line cp file1 file2, unless you plain and simply get the filenames wrong. If you get those wrong, and the filenames are fixed filenames (no variable substitution), then you have other problems. :-)
My point is that you can say a lot more in 1
shell script statement than you can in 1 assembler statement.
--JoeProgram Intellivision!
*ding* *ding* *ding* We have a winner!
That's right, it clicks the speaker. One of my favorite hacks was to query the cassette input port ($C020, as I recall), and toggle the speaker to match the current input level on the cassette port. You get essentially a distortion box effect, changing the analog cassette input into a squarewave output.
A later hack took that a step further, capturing from the cassette port into RAM with one program, and playing back from RAM to the speaker with another. From what I recall, the sampling rate was approximately 30kHz with 1 bit per sample. That means you could store about 6 seconds of audio in the three hires pages ($2000 - $7FFF). (Yes, I realize only two of the hires pages were actual hires pages. The third one was a software convention only. $2000-$3FFF is the HGR page, and $4000-$5FFF is the HGR2 page.) Ah yes, such a fun little machine. Was great for hacking around, wasn't it?
As for the joystick -- that was another lovely hack, wasn't it? The ol' RC time-delay w/ a CPU timing loop. That wouldn't fly real far these days, now would it? ;-)
Nor would the floppy disk drive that requires a CPU-speed-dependent timing loop to read correctly.
--JoeProgram Intellivision!
Does the term "VM" mean anything to you ? This is why talk of java's portability is non-sensical, java programs only run on a single OS - the java VM. "I can write an OS, first of all, give me an OS..."
Besides, the point of an OS is to manage low level system resources, like registers, cache, memory, devices. You can do the meta-level stuff in a high-level language if you like, but at some stage you're going to have to go low level. Plenty of OS's have been written (as far as possible) in higher level languages than java.
http://rareformnewmedia.com/
Wouldn't you all probably, rather possibly maybe, ok, just might rather have one of these.
form of the work
C isn't a form of the work, if he had also written or ported it to C then that would be a fair comment, but as he hasn't then it's not a form of the work.
NZ Electronics Enthusiasts: Check out my Trade Me Listings
/. was fun, people would have been posting _complimentary_ comments because Menuet is a cool fuckin hack.
Now all we get is trash talk from stunted diploma-mill widgets.
-- "It was as if the paint factories had decided to deal direct with the art galleries." - Thursday Next
on first look this thing seems to be quite c00l... i haven't seen a similar OS written in C or some other higher level languages though
for those who think the guy shouldn't write the OS in assembly, i couldn't see why he shouldn't. Perhaps you were thinking: he'd be better off spending the load of time working on MY favorite project...
just because he wrote an OS in assembly does not imply he is obligated to code anything for you
(of course it's always a good thing to have a few big projects to fight against the evil than to have a million tiny programs scattered around...)
Don't quote me on this.
Ah, but if he'd faked the browser headers, those of us who managed to read the article might have been a little suspicious of someone running a web server on an OS that doesn't have any networking support at all....
~~~~~ BigLig2? You mean there's another one of me?
Can you remember the V2 Operating System? It was also posted on Slashdot some times ago. It was very promizing, written in full asm, had a nice GUI, a nice shell, a nice debugging console, etc. A very similar project.
Does anyone know what V2 OS has become nowadays ?
{{.sig}}
Just imagine where Linux would be if we took all these people working on an OS by themselves (or in small teams) and got them working on Linux or BSD with everyone else...
Instead, the efforts of a mighty few are wasted on nearly useless projects like this. Couldnt' their talent be put to better use elsewhere???
Geez, if they wanna code assembly, that's awesome -- let's have them optimize Linux or BSD kernels and other apps (like XFree) for x86 and make them even faster, smaller, more reliable, and more efficient! We don't need another half-assed OS that all of 3 people on Earth will actually *use* for a total of 30 minutes...
Sure it may be fun, and that's great. But if they're trying to accomplish anything *useful*, then they're failing here...
"CompSci"?
"EE"
Heh heh.
; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
Try either of those :-) although I did here of some Swedish Psycopaths trying to write Quake in Haskell - so what would you do on those long winter nights?
An absolutely brilliant tool for hardware verification, all on a single floppy. I predict that this will save my bacon on several occasions. Thank you!
kudos to the pure hacker soul that made the 100% asm OS. all praise to him. i am impressed.
what hurts me, on the other hand, is the justification for it: faster code. i see a lot of badly written code in my professional life - and a sizeable portion of it suffers from one of two related syndromes:
1 - the "i am super-smart" syndrome. people think they are super smart and to prove it they write code that is very hard to understand. the gain is sometimes a loop that gets executed n - 1 instead of n times.
2 - the "early optimization" syndrome. the common but false conception that a program is fast if all it's part are really fast. never mind that there may be another solution with fewer parts.
both syndromes lead to error prone code: code that is both hard to get right in the first place and hard to debug later on. my current strategy of dealing with bugs in code like this is to completely throw it out and rewrite it. good code is simple, or, to paraphrase einstein, good code is as simple as possible, but not simpler.
the other experience with slow vs fast code i have is that slow code is always - yep, 100% of the time - the result of bad design. so using asm will not fix the problem.
http://www.cnn.com/cnnfn/2001/09/06/technology/mic rosoft/
====
No Microsoft breakup: U.S.
Justice Department says it is open to an alternative remedy
September 6, 2001: 10:30 a.m. ET
NEW YORK (CNNfn) - The U.S. Justice Department said Thursday it would not seek to break Microsoft in two during the next phase of the software maker's landmark antitrust case.
The U.S. Court of Appeals for the District of Columbia in late June had overturned a lower court's order by U.S. District Court Judge Thomas Penfield Jackson that Microsoft be broken into two companies as a remedy for anticompetitive practices.
At the same time, it upheld the lower court's conclusion that Microsoft has a monopoly in the market for computer operating systems and maintains that monopoly power by anti-competitive means in violation of U.S. antitrust laws.
Late last month, the case was sent back to U.S. District Court in Washington for further review on the remedy as well as other aspects of the original order, including whether Microsoft acted illegally by tying the software code for its Internet Explorer Web browser to its dominant Windows operating system.
The Justice Department said Thursday it will not pursue a break-up, nor will it pursue further proceedings on the tying count of the original complaint. Instead, it said it wants to investigate developments in the industry since the trial concluded and evaluate whether additional conduct-related provisions are necessary, especially in the absence of a break-up
There are a good number of alternative OSes out there, similar to this one. They don't get much attention, however, as they're all (1) short on useful applications, and (2) not Linux. But remember that being UNIX-like is not necessarily the end goal of operating systems, so I'm happy to see alternatives being developed.
As for the negative comments about this OS being written in assembly:
Remember, the rule of optimization has always been "make it work, then make it fast." Low-level OS details--multitasking, memory protection, resource handling, memory management--have been solved problems for 30 years or more. So we know how to make it work; it's okay to focus on making it fast. And, yes, to an experienced programmer with the right mindset, assembly is still faster than C++, everything else being equal. That's just been accepted as a truism, though it was once heresy (much as programmers now accept that object-orientedness is not the panacea that everyone once thought it to be).
So in other words: it's not portable and a bitch to maintain. Yeah, I'm sure this will be a huge success. Watch out linux...
the whole %includes thing is why a prof at UC Riverside, a big assembly freak, has a set of essays about HLL vs. ASM, and one of his arguments is that HLL's have an unfair advantage because of the standard libraries available. So he wrote an "standard" ASM library for use.
I would give his website but I don't remember it. It's a good website though, has a copy of his book, "Art of Assembly." Look for Randall Hyde in google.
MenuetOS Installer Mirror:e t.html
http://www.geocities.com/placebic/2001-09-06-menu
Speak truth to power.
Haven't been done before? When I got out of college in 1975 I went to work for a minicomputer manufacturer whose entire OS was written in assembler. And that was not uncommon, most OSs of that era were in assembler.
I'm going to write an OS in VB!
with one hand tied behind my back...
The Kruger Dunning explains most post on
I have ad blockers in my machine, and I only saw an X where the big, ugly banner should be. I then saw the source of the page and found this addresses:
Index
General info
Screen shots
Kilroy was here!
He doesn't have to do anything.
Neat!!! How long until someone writes the first PostScript viruses? :)
This space for rent. All reasonable inquiries will be entertained at proprietors discretion.
MenuetOS: The Fresh Maker!
It's great that people wish to write applications and operating systems in assembly. They possess a greater knowledge of the hardware layer of the computer than I, and a greater need for the abstract. Given the choice, C is my preferred language. It allows me to concentrate on the application side of things, yet gives me enough low-level control that I can do hardware specific instructions w/o having to enter the assembler.
Assembly has its uses, especially in code optimization, and it will probably never go away for that same reason. It is certainly a "no nonsense" approach to programming, and ideal for embedded applications.
assert(expired(knowledge));
Well, I suppose this guy deserves praise for having achieved something unusual, but as far as I am concerned, this is of the order of building a 50ft Statue of Liberty replica in one's back garden using beer cans. Difficult, possibly absorbing, oddly impressive, and utterly useless.
There are a whole bunch of reasons not to do this.
1. It's not efficient, even in the limited sense "producing code that runs faster than the opposition". On modern architectures, using pure handcoded assembly only tends to have a performance benefit when you know something the compiler doesn't (say, some kind of aliasing relationship among variables in a function) or when you can use instructions that a compiler can't. Rewriting a hot-spot in pure asm is one thing, but trying to beat the compiler overall is quite another. This disparity is even more pronounced in the world of RISC/EPIC... if you doubt me, try beating global register allocation for a function with 200 basic blocks and a thousand live ranges. By hand. Good luck...
2. It's not in the slightest bit portable. Not to other architectures (obviously) - and it's liable to suffer from immense performance problems even moving to other implementations of the same architecture with different latencies and numbers of functional units.
3. It's been done already, ages ago. This is how people used to build operating systems. There are good reasons why they stopped. There is nothing innovative about doing another Commodore 64 operating system almost 20 years after the fact. The constant and strange references to color and sound sort of reinforce this impression, too.
4. It doesn't illustrate any particularly interesting principle. Using a medium-level language (or even a high-level language) to build a toy OS from the ground up allows you to concentrate on OS principles, while still getting down to the bare metal for the code that has to be written in asm. Writing a boot-loader or a well-optimized string copy function is an illuminating task (well, at least the first time you have to write one, anyhow). However, once you are a competant asm programmer, writing merge sort in asm instead of C will teach you nothing about asm or merge sort that you didn't already know. And one could use the time saved to learn the basic principles of optimization, which, based on his remarks about Linux, the author of this system clearly doesn't know.
5. Asm is difficult to write and debug. No compiler to catch obvious errors. This is so obvious to require no discussion.
6. (addressed only to those people who think that this leads somewhere practical - if you merely admire it as a beer-can-Statue-of-Liberty, ignore this one) It'll Never Work. I'm sure it does just fine as a toy system, but a POSIX layer? A TCP/IP stack? Ummn, no. It's simply never going to happen. There are plenty of tiny OS's around on which lean systems could be based, but they were written and designed to be dense and elegant, not to prove some weird point about asm programming.
An assembly language OS takes a lot of resources to debug and develop. It's a shame, therefore, that it is licensed under the GPL, because it will not be as likely to see commercial investment. Because companies will not be able to sell value-added versions of the product before contributing the code back to the project, they will be less likely to develop for it and more likely to use software that's licensed in a more business-friendly way, such as FreeBSD, NetBSD, and PicoBSD. The author should reconsider licensing the software under the GPL and move to a license which is truly free and is open source. (The GPL, as stated by the FSF, is not.)
Assembly is not high level, it's low level.
Uh, he was poking fun at the fact that we don't know what the joke means and was being fecitious. Do you honestly think someone could tell a joke about 3 ppl in a few binary digits?
man RTFM
No manual entry for RTFM.
Moving to a high level language certainly wouldn't slow your computer down to the speed of a 486. A highly conservative estimate would be that it is about twice as slow. (Java is pretty inefficient, but O'Caml is literally as fast as C.) Of course, this only applies to kernel stuff, which is not where your computer spends most of its time. But, since it is a higher-level language we get the following interesting benefits:
- faster to write the code, so can spend more time optimizing what matters (and easier to implement more difficult algorithms). This could lead to a faster system, since
- NO MORE BUFFER OVERFLOWS, meaning that it will be way more secure than linux or windows
- More portable
- More modular, meaning that it is easier to extend by people who don't understand the whole system, and more easily managed by those who do
- along with all the other benefits of high-level languages
Admittedly there would be a significant challenge integrating the hardware stuff with the high-level stuff. That's why I said it would be a feat. In other respects, doing programming in advanced high level languages tends to be quite enjoyable!
Even more difficult, though, is convincing slashdot kids that C and lots of eyeballs just doesn't scale well. I think we will have to do this to compete with microsoft in the next decade, so hopefully we will be mature enough to manage it! (Microsoft has hired up a bunch of great programming language researchers, and they are as we speak working on language technologies for their operating systems stuff. As the open source projects and their own projects grow too large to be understood and debugged by humans, machine-checking will become the technology that separates the crashy software from the robust.)
http://www.norcliffe.com/menuetos/
While I guess I agree it shouldn't be at +1 Interesting, the post was more of an attempt at humor than seriousness.
ok then your [sic] infringing on my copyright! Could you as [sic] me next time before STEALING my comments for your own?
if he had also written or ported it to C then that would be a fair comment
No it wouldn't. The copyright holder of a program can do anything s/he wants with it, including violating eir own copyright. YLBTYHLHAND.
ok then your [sic] infringing on my copyright! Could you as [sic] me next time before STEALING my comments for your own?
It must have been the previous threads that made me think he was serious - some people were complaining pretty loudly because some guy is giving away an OS he wrote for himself! It's like the whole "Konqueror developers should quit their rebellion and go work on mozilla" argument.
They that quote Benjamin Franklin on liberty and safety deserve neither.
We do not support Small Linux
We do not promise that Small Linux does anything
Small Linux may distroy (sic) all your data
Sounds like the typical demo-type assembler programmer, that in addition to Music/GFX wants to have a file system. :)
Imagine a Beowolf Cluster of THESE!!!
That is the most clever play on words that I have seen/heard all week! Thank you!
Is your company running tools written by ma
You're thinking of C. Assembly isn't meant to be portable. The idea of writing assembly code is to tune some very efficiency-critical code for a particular platform.
What portable code would you write, which wouldn't be easier (and probably faster, since the compiler could do more optimization) in C? (Or -- god forbid -- a high level language?)
Ah, but if he'd faked the browser headers, those of us who managed to read the article might have been a little suspicious of someone running a web server on an OS that doesn't have any networking support at all....
:)
I hadn't managed to read the article (/.-ed)
Just pointing out the folly of trusting a web server...
deus does not exist but if he does
First off, the url redirect isn't working too well so go here for a mirror of the download page, which includes the installer and the instructions of how to create a floppy image for *nix. ;)
Having used the OS, I wanted to offer an opinion. The kernel, the author writes in his faq, is "real-time which is mainly monolithic, but some operations are done like in microkernel." For its small size, it is quite impressive to see how elaborate the gui and such are, especially being programmed in assembler. However, the OS itself isn't very powerful per se, and the memory requirement (32mb) is fairly large for such a small OS, which does not allow it to be used as a microkernel OS like mkLinux. Sure it has sound, but for the most part all that it does so far is edit text files, play music, and show pretty lights. Also, the HD interaction is, for now, limited to FAT and FAT32, so don't expect to use it as a Linux/Unix rescue disk.
On the plus side, the gui is impressive, along with the sound capabilities. Plus it's one of the most compact gui-based mini-OSes around, and being programmed in assembler it's fairly fast.
Pretty much I'm just saying that while it's an extremely interesting toy, I don't think it's "the next Linux" or anything close to it.
Even if it is from Finland
heh, sorry had to say it..
I cant think of anything more simple and beatiful than a nice x86 asm program...
"High-level", being a relative term, is an arguably acceptable description of assembly language when compared to direct machine code.
Also, it may have escaped your razor-sharp senses that the guy was being sarcastic.
See? Quiche.
this is a sig.
It's written in asm, so disassemble it! :)
It'll probably be just as understandable
as the original code
Does the system lock you out once you turn 16?
e x p e c t d e l a y . c o m