MenuetOS 0.78 is released. Changes: New Panel and Menu system, new options for Windows, automatic memory detection, .ICO support, and faster rendering, updated JPEGVIEW application; Displays jpeg image as backgound, new launcher application; Startup applications, PCNET32 Ethernet Driver, it now works with VMWare, TCP/IP bug fixes to TCP retransmissions, window resizing/moving.
I guess everyone has a different idea of fun.
yep, 100% assem. To each his own I guess. Some people still swear by assembly.
Heh, I wonder if they ever query Michael Abrash for advice.
They managed to port Doom over?! That’s _awesome_.
As for being in assembly, that’s cool. Most people think of assembly as some god awful machine language that no one should have to code. But in reality, when an OS is coded from the ground up to be used with assembly it can be quite nice. I wish them the best of luck.
I always hear how x86 assembly is such a pain compared to MIPS or even PPC asm. If they started Menuet from scratch, why not go with something other than x86? Especially if they’re doing this for fun…
The answer to that is quite simple: x86 is usually what’s available. It’s also what others have, so you have more potential users. I hate the x86 as much as the next guy, but if I were to start an OS right now, I’d be crazy not to support it. Though that’d pose a problem for me, as I sold all my PCs a while back, I’ll stick to other architectures thank you.
Richard, what about Unununium ?
How about some kind of pseudo-assembly, lower-level than C but with loops and structures etc, but the accuracy of assembly.
In that way it would be portable or semi-portable to different chip architectures.
I used to do a lot of 680×0 coding back on Ataris and Amigas and now do low level C, so I have often thought about that.
Anyone know of such a language?
PS. x86 assembly is terrible compared to PPC assembly which is not so good compared to the wonderful 680×0 assembly.
I have to agree with johnMG here. x86 is a platform you find everywhere, so you get the biggest possible user base to start with. But should you ever decide to port to another platform, the porting effort would be huge. Besides, x86 is ugly.
Coding in assembly on the other hand, isn’t as hard or programmer-unfriendly as you might think. I would have used a low-level language, but a platform-independent one. Don’t like C? Then why not design your own virtual machine (or use an existing one), and build everything on top of that?
Then you’d have the virtual machine written in x86 assembly. Coding would be very much like writing in assembly. And if you decide to make a port, you just need to port the virtual machine, not everything you built on top.
Nice project anyway though…
Heh, I had a feeling someone would mention Unununium. There’s little that ties Uuu to the x86 architecture now days. It’s not the same beast it once was, I’m not sure if that’s a good thing or bad. It probably wouldn’t take very long to port it to other architectures. Uuu development didn’t stop for me when I got rid of my PCs, it just made it a bit tougher. I used Bochs, and when I needed real hardware I’d use my roommate’s PC or others. There’s not much assembly left in Uuu, mostly it’s C (OSKit), and python.
Now days I don’t do any real Uuu development unfortunately. Indigo asked me last week if I’d consider building a few utilities for it, and I may do that.
The problem with the idea of pseudo-assembly is that you get the worst of all worlds. Not all architectures are created equal. How many registers do you give the pseudo-assembler? Too few and you’re not taking advantage of *cough*better*cough* architectures, too few and you’re going to be raping the stack on the lesser ones.
They also dont have the same instructions. You’d be stuck coding hack solutions to lack of instructions.
The closest thing to a pseudo-assembler that we have today that doesn’t _totally_ suck would be C. As much as I dislike the language, it has a consistency throughout architectures (as long as you use the same compiler), yet manages to optimize for each one. C structures are much like the ones you’d build with an assembler, pointers are the same (only C makes a mess of them, it’s the only language that makes me think about that every time I need to reference something), data types are roughly the same, etc…
As Alwin Henseler mentioned, a nice approach is the idea of a VM, where you can code stuff in assembly for the VM, then just make an optimized VM interpreter for each architecture.
This new looks kinda fun next to the ,,Lets fix the GTK issues” item. An OS on a floppy vs. a toolkit on a 40 floppies. Yeah, I’m trolling here. Mod me down. 🙂
I once had to use something called Occam, somewhere between assembler and C. But it was machine-specific, so that project was hard to maintain.
Might be worth considering BCPL, though. That one was designed to be portable, there is a lot of it about in various archives. Google knows, you know!
How fast is this thing? I want to try it in a old 486 box
How fast is it… I’ve run it on a P120 a while back and it was quite fast. However, the VESA video driver is _slow_. That seemed to be the bottleneck for it. Maybe things have changed, but VESA drivers are rarely fast.
It’d be neat if they’d start using Scitech SNAP video drivers, but those don’t really fit on a floppy.
…or maybe still is out there somewhere… It was called BAL (Basic Assembly Language)
What is a floppy? Seriously, I don’t even have any floppy drives any more. Sure it is very neat that the whole sysem fits in 1.4MB, but really – what is the use of an OS that cannot install on, or even access hard disks? Menuetos has been in development for quite a while now, and I’m rather suprised they are still stuck without HD support (please correct me if I’m wrong!)
the answer is hla, high level assembler
http://webster.cs.ucr.edu/AsmTools/HLA/index.html
Make a bootable CD and use the floppy image as the boot image (it should work, I haven’t tested it).
Lemick version 0.9.0alpha2 released – – 2004-Apr-06 10:39:32 – Lemick Basic
Lemick is a programming language with BASIC syntax, it’s a typed and a compiled language, its source is compiled into a platform-independent virtual machine assembler that is later transformed into a platform-dependent representation by the just-in-time compiler.
This version includes complete support for virtual methods, property get/set routines, safe run-time type casting, built-in classes (string operations, local threads and others) and more robust packages handling. Just-in-time compiler became approx. 20% faster and includes a number of new virtual machine instructions, like co-routines call and type casting. And also a great number of bug fixes and various minor changes to compiler and run-time. Lemick is an open source project which aim is to produce a modern implementation of Basic programming language, with such features as clean OOP, exception handling, concurrency and distributed execution.
Found it at Sourceforge Basic Foundry.