Quote:
As Pype pointed out, it's amazing that you can get that much done in 1.5 years . How much time do you spend writing your operating system every day
(approx.)? Just out of curiosity. And what motivates you the most? Because I myself am pretty short on motivation for operating system development, it just seems like one huge job with no real reward at the end - besides the operating system itself...
It changes from time to time, sometimes i don't sleep to finish a component of the OS, sometimes i don't write a simple line of code for 3-4 days.
Quote:
Do you have a compiled binary version of your operating system available on the internet so we can download and test it?
I have partition images of the OS ( also available to use in Bochs, where most of the development is made ) I'm going to upload a use-able, functional version of the OS after I finish the Windowing subsystem. but at least a notepad ( an editor ), and a file manager, file browser will be included in the binary.
About the motivation: This project previously was an amateur attempt to learn the basics of OS and hardware programming. At first times, the code would completely change every day, week. Soon after, the components were so stabilized that the basics and the design of the OS didn't change in major level. And I thought that "God, i AM doing something more than an amateur project, this thing has really developped much".
Actually this project just makes me feel good, makes me feel I'm doing something big.
Anyway, this much about the motivation, it's just not completely tell-able, but again, it makes me feel that I am important.
About the GUI now...
I'm going to use c++ to develop the windowing system since it sounds more suitable for an OOP design. every button, window, menu, checkbox etc will extend a base "GuiObject" class inside which "draw" method is declared "virtual". ( as speaking for a Java jargon, every class will implement a GuiObject interface, but of course the c++ way ) the "Widget" keyword reminds me my days of KDE, Gnome, X-Window linux programming.
I will also have to find a way to handle the order of "draw" sequences for a total screen refresh.
The message handling mechanism is similar to what we do in windows, there exists message boxe per every thread in the OS. the "GetMessage", "SendMessage" and "Find/WaitMessage" system calls will handle it.
typedef struct {
int Message;
int Parameter;
int Sender; // sender thread id
int SysPar; // reserved for messages sent by the system
} Message;
Message msg;
do {
GetMessage ( &msg , true /* block until arrival of new msg */ );
switch ( msg.Message ) {
...
};
} while ( true );
etc...
Thanks about the talk about developing a new end user licence agreement, I completely agree with "Solar", He is just as a good advocate of mine
a new licence must be developed to protect the programmer from being overpassed ( or bypassed, if this is the right word for it ). GPL is not enough for this.