Well actually that was almost my exact idea. Even down to the kernel code. Since we have a C++ kernel project booting in Bochs there's no reason that we have to adhere to all the posix and 'standard' C/C++ conventions.01000101 wrote:This reminds me a lot of the AS/400 OS. It's files, 'folders', and libraries are all objects and so are programs and objects that compile them.
If you go the route of objects, please look at that OS and do 'almost' everything aesthetically different! It takes the complexity of a command line, and increases it 10-fold due to the odd sentence-like commands and object-based everything.
For example, instead of code like this:
Code: Select all
char tmp[256];
sprintf(tmp, "%d", myNum);
puts(tmp);
gets(tmp);
if (!strcmp(tmp, "EXIT"))
_kexit();
Code: Select all
char tmp[256];
FormatToBuffer(tmp, "{0:%d}{0:%02d}", Arg(myNum));
PrintString(tmp);
GetString(tmp);
if (!Compare(tmp, "Exit"))
KernelExit();
Code: Select all
PortOut(...);
PortIn(...);
// or this
OS::Port *OpenPort(...);
p->In();
p->Out();
// some threading code
OS::Thread *CreateThread(...);
OS::Thread *CallingThread(...);
thread->Terminate();
thread->Sleep();
if (thread->DidAwaken())
scheduler->Schedule(thread);
// some console code
OS::Console *CreateConsole(...);
console->PrintFormat(...);
console->Clear();
OS::Stream *stdout = console->GetOutStream();