Okay this is a wickedly weird dream but I wanna do it.

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
Crazya$$whiteguy

Okay this is a wickedly weird dream but I wanna do it.

Post by Crazya$$whiteguy »

Here's the idea an OS that is compatible with software written for Windows, Linux,
and Mac OS; it has to be small, and written entirely in assembler language. The biggest hurdle for me is that the best I've done so far is a few unposted webpages, a KDE widget, a WinX widget, and three "Hello world!" Programs in C++,VB,and Perl. What I want to know is where to start? I'm having a hard time finding anything on assembly other than those sites that incorperate it into C++  which I have no problem with its just I want it entirely in assembly. Oh here's a real kicker I want the GUI to be so customisible that the "look and feel" if one wanted to one could build with any image, sound, or small script that is as simple as load, drag, drop, lock. Like I said a dream but if I could do it the entire thing would become open source. Pissing off the Corperates, for whom, the software running on my OS, was designed for, is my goal.    
Gnome

RE:Okay this is a wickedly weird dream but I wanna do it.

Post by Gnome »

Well... you've got a good dream, I'll give you that.

You *can* accomplish this compatibility with the three platforms you mentioned. It would require you to have one ABI for each platform you want to emulate, then recreate the three APIs as mappings to the native interface. That's how Wine works for Windows. At least the Linux and Mac OSX ABI/APIs are very similar. I believe OSX uses ELF images, like Linux does. That whole compatibility thing is three huge projects in itself.

As for the assembly thing, that shouldn't be much of a problem. If you're proficient in assembly, you should be able to translate C to assembly fairly well. The important parts are written in assembly anyways. Of course, this begs the question of why you're doing the whole thing in assembly in the first place.

As for the GUI, you're right. It should be customizable. Get a working kernel though, before you start worrying about a GUI.
Crazya$$whiteguy

RE:Okay this is a wickedly weird dream but I wanna do it.

Post by Crazya$$whiteguy »

Well the reason for the assembly thing is that from what exposure I've had to it through other peoples work the end result takes up less space than anything I've ever written. For intance menuetOS is a complete OS that in and of itself runs on a floppy when that widget I wrote in C++(which perfoms less operations but still quite a few) would require me to break it down into parts and put it on two seperate floppies. Speaking of ABI's and the kernel do you think I could write the ABI's into the kernel or do you think that'd would be a bad idea. With help from some of the links on this page I've started to lay down its skeleton but I really don't know what to put in it and what not to. So anyway thanks for the advice.
rexlunae

RE:Okay this is a wickedly weird dream but I wanna do it.

Post by rexlunae »

Compilers nowadays are pretty good at making code.  I would be really surprised if you can produce substantially smaller code for a large project in assembly yourself than a good C compiler.  If you are really sure you need the space efficiency so much, why don't you write the code in C, and then compile to assembly and optimize by hand to your heart's content?  I would be willing to bet that after the first few times you do this, you will just give up entirely on the hand-optimization because you will not see enough improvement.  Also, comparing a widget for a windowing system to an OS is like comparing apples to oranges.  I don't have any idea what your widget does, but there are a lot of reasons it would be several megs in size.  I have written a significant part of a kernel in mostly C, and it measures in the 10s of kilobytes when compiled, and although not finished yet, it is probably at least half way there.  That would certainly fit on a floppy.

Also, I wonder if you are aware of the problems with your original suggestion. An OS that can run Windows, Linux, and MacOS software is not a new idea, it is obvious.  The reason it does not exist is that it is not easy, even if you are using an appropriate high-level language.  The Wine project has been trying to just clone the APIs for Windows for over ten years now, and that is only one of three that you would need, and they still aren't terribly close to being able to run most Windows software.  I recommend that you look into the Wine project (http://www.winehq.org/) to get a better idea how much work you are looking at before you set such lofty goals for yourself.
Guest

RE:Okay this is a wickedly weird dream but I wanna do it.

Post by Guest »

>Well the reason for the assembly thing is that from what exposure
>I've had to it through other peoples work the end result takes
>up less space than anything I've ever written.

This is more a matter of careful design and programmer skill than the programming language used. Try downloading and running the QNX demo disk:
http://toastytech.com/guis/qnxdemo.html

POSIX kernel, TCP/IP networking, dial-up networking (PPP), GUI, and graphical browser -- all on one 1.44 meg floppy.
Post Reply