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.
Okay this is a wickedly weird dream but I wanna do it.
RE:Okay this is a wickedly weird dream but I wanna do it.
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.
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.
RE:Okay this is a wickedly weird dream but I wanna do it.
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.
RE:Okay this is a wickedly weird dream but I wanna do it.
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.
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.
RE:Okay this is a wickedly weird dream but I wanna do it.
>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.
>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.