Strategic Decisions Making
                                LoseThos Simple

The trivial solution in math is the simple, obvious answer.  LoseThos has many 
examples of using trivial solutions.

* Everything runs in kernel, ring 0, mode.

* One memory map for all tasks on all cores with virtual addresses set equal to 
physical.  See LoseThos Memory.

* One platform, 64-bit or better x86_64 PC's, such as Core i7's, Core 2 Duo's, 
Pentium D's, etc.  Nothing worse than a Pentium 4 Extreme Edition.  No 32-bit 
code.

* No security.

* No networking.

* Least (greatest) common denominator hardware support.  Mostly, one driver for 
each device class.  I can't be in the business of different drivers.  
Compatibility is the greatest challenge for PC operating systems.  Disk code 
does not use interrupts, avoiding compatibility risks.  See LoseThos Interrupts. 
 PS/2 keyboard/mouse is used instead of USB, also more compatible.

* 640x480 16 colors.  Updates whole screen at 60 Hz, optimized for full screen 
games where "invalid rectangles" are counter-productive.  See LoseThos Graphics.

* One font, 8x8.  Text and graphic layers done in software with text normally on 
an 8x8 grid.  It can run in Text mode if graphic initialization fails.

* Compiler extends all values to 64-bit when fetched and does only 64-bit 
computations intermediately.  Assembler has minimal 16-bit support, good enough 
for compiling boot loaders.

* No object files.  Linking can be done at Load() time for static modules, if 
you insist on not using JIT.  Modules have imports and exports.

* Whole files are processed almost exclusively, allowing compression.

* One language and compiler for command-line, scripts, and code.

* One editor/word processor/browser for the command-line window, source code, 
documentation browser, dialog forms.

* No child windows.  One window per task.  Buttons are widgets, not child 
windows.  There are child tasks, however.

* No distinction between "thread", "process" or "task".

* The Scheduler is mostly for home systems, not servers or mainframes.  The 
focus task is all important.  Disk requests are not broken-up, so sharing is 
bad, however.

* MultiCore is done master/slave, instead of SMP.  Core zero explicitly assigns 
jobs.  Locks are present allowing multicore file, heap, and hardware access, 
though.

* Music is done with an elegant one-voice notation.

* All tasks have a heap and a symbol table.  Scope is that of environment 
variables in other operating systems.  As text is typed at the command line or 
you run programs by #includeing them, the symbols go in the table.  If a symbol 
is not found, the parent task's table is checked.  The father of all tasks has 
the API symbols you'll need waiting in it's table.  No need to #include headers.

* No need for namespaces -- scoping occurs automatically.

* LoseThos SSE/MMX.



* "Core i7", "Core 2 Duo", "Pentium D" and "Pentium 4 Extreme Edition" are 
trademarks of Intel Corp.