ZealOS/docs/Doc/WhyNotMore.html
2021-07-03 02:51:43 -04:00

72 lines
6.8 KiB
HTML
Executable file

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
<meta name="generator" content="ZealOS V0.05">
<style type="text/css">
body {background-color:#000000;}
.cF0{color:#ffffff;background-color:#000000;}
.cF1{color:#3465a4;background-color:#000000;}
.cF2{color:#4e9a06;background-color:#000000;}
.cF3{color:#06989a;background-color:#000000;}
.cF4{color:#a24444;background-color:#000000;}
.cF5{color:#75507b;background-color:#000000;}
.cF6{color:#ce982f;background-color:#000000;}
.cF7{color:#bcc0b9;background-color:#000000;}
.cF8{color:#555753;background-color:#000000;}
.cF9{color:#729fcf;background-color:#000000;}
.cFA{color:#82bc49;background-color:#000000;}
.cFB{color:#34e2e2;background-color:#000000;}
.cFC{color:#ac3535;background-color:#000000;}
.cFD{color:#ad7fa8;background-color:#000000;}
.cFE{color:#fce94f;background-color:#000000;}
.cFF{color:#000000;background-color:#000000;}
</style>
</head>
<body>
<pre style="font-family:courier;font-size:10pt">
<a name="l1"></a><span class=cF5> Why Not More?</span><span class=cF0>
<a name="l2"></a>
<a name="l3"></a>If a feature cannot be made to work correctly and consistently, professional companies usually remove the feature. Because PC
<a name="l4"></a>hardware is so diverse, getting things to work on all people's computers is really difficult. For one thing, you practically
<a name="l5"></a>have to own all the different hardware to write drivers for it. If a company wanted to sell a PC operating system, they would
<a name="l6"></a>offer a warranty and, therefore, could not get away with amateur behavior. ZealOS absolutely requires 64-bit computers, so we
<a name="l7"></a>leave behind much trouble, but plenty remains.
<a name="l8"></a>
<a name="l9"></a>The PCI bus interface is what modern hardware uses. Before PCI, life was simple and devices used I/O ports. After studying </span><span class=cF4>
<a name="l10"></a></span><a href="https://tomawezome.github.io/ZealOS/Demo/Lectures/PCIInterrupts.html#l1"><span class=cF4>PCI Interrupts</span></a><span class=cF0> and attempting to do a HDAudio driver, Terry Davis came to realize that modern PCI devices require ten times more
<a name="l11"></a>code and he cannot even come close to making them work on everyone's machine because with PCI devices there are several models
<a name="l12"></a>to worry about, unlike with the older ISA bus devices which can be done with one driver.
<a name="l13"></a>
<a name="l14"></a>Currently, ZealOS has no PCI drivers beyond AHCI and networking. Most drivers use I/O ports and operate in ISA bus mode. At
<a name="l15"></a>this point, we only have one driver for each type of device and it is delightfully simple that way. ZealOS has one </span><a href="https://tomawezome.github.io/ZealOS/Kernel/SerialDev/Keyboard.html#l1"><span class=cF4>keyboard</span></a><span class=cF0>
<a name="l16"></a>driver, one </span><a href="https://tomawezome.github.io/ZealOS/Kernel/SerialDev/Mouse.html#l1"><span class=cF4>mouse</span></a><span class=cF0> driver, one </span><a href="https://tomawezome.github.io/ZealOS/Kernel/BlkDev/DiskAHCI.html#l1"><span class=cF4>ATA hard drive</span></a><span class=cF0> driver, one </span><a href="https://tomawezome.github.io/ZealOS/Kernel/BlkDev/DiskAHCI.html#l1"><span class=cF4>ATAPI CD/DVD</span></a><span class=cF0> driver, one </span><a href="https://tomawezome.github.io/ZealOS/System/Gr/GrScreen.html#l1"><span class=cF4>32-bit color high-res VBE graphics</span></a><span class=cF0> video
<a name="l17"></a>driver and one </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KMisc.html#l129"><span class=cF4>PC Speaker</span></a><span class=cF0> driver. We use the </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KMain.html#l119"><span class=cF4>PIT timer</span></a><span class=cF0> and </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KInterrupts.html#l133"><span class=cF4>PIC Interrupt Controller</span></a><span class=cF0>. We use IRQ0 for timer, IRQ1 for
<a name="l18"></a>keyboard, and IRQ12 for mouse. If IRQ12 is not firing, we are able to poll the mouse.
<a name="l19"></a>
<a name="l20"></a>In the CPU department, ZealOS has state of the art 64-bit </span><a href="https://tomawezome.github.io/ZealOS/Kernel/KStart64.html#l1"><span class=cF4>long mode</span></a><span class=cF0> with </span><a href="https://tomawezome.github.io/ZealOS/Kernel/MultiProc.html#l1"><span class=cF4>multicore</span></a><span class=cF0> support. We use the </span><a href="https://tomawezome.github.io/ZealOS/Kernel/MultiProc.html#l176"><span class=cF4>APIC</span></a><span class=cF0> and start-up </span><span class=cF4>
<a name="l21"></a></span><a href="https://tomawezome.github.io/ZealOS/Kernel/MultiProc.html#l298"><span class=cF4>multicore</span></a><span class=cF0> operation.
<a name="l22"></a>
<a name="l23"></a>Terry Davis made an incredible accomplishment by getting it to work on practically everyone's computer as long as it is 64-bit
<a name="l24"></a>and they run inside VMware, QEMU or VirtualBox.
<a name="l25"></a>
<a name="l26"></a>Adding a USB driver would be really ugly with UHCI, EHCI, OHCI, USB1, USB2, USB3, ICH6, ICH7, ICH8, ICH9, ICH10, ICH11, ICH12,
<a name="l27"></a>boot mode and regular mode for keyboard/mouse and a diversity of HID reports. It's hopeless. It could never offer anything
<a name="l28"></a>but crappy, limited support and it would just add a ton of crappy code that mostly didn't work. What would ZealOS gain? Nothing.
<a name="l29"></a>A keyboard or mouse would not be improved. Solid State USB drives would be nice, but it's not going to happen.
<a name="l30"></a>
<a name="l31"></a>The same story is basically true for GPUs and audio drivers. If you attempt multimedia, everything will break because memory
<a name="l32"></a>will get fragmented with huge multimedia files.
<a name="l33"></a>
<a name="l34"></a>UEFI is pointless. If ZealOS is forced to run in VMware, QEMU or VirtualBox, they will always support non-UEFI mode. Without
<a name="l35"></a>working, native hard drive and CD/DVD drivers, you can't get very far with UEFI on a native install, not to mention SecureBoot.
<a name="l36"></a>UEFI is, first of all, redundant. If non-UEFI works in a virtual machine, supporting UEFI would only be redundant, ugly nasty
<a name="l37"></a>code. The compiler does not create an ELF or PE format. We would have to ruin the beauty of the compiler.
<a name="l38"></a>
<a name="l39"></a>God talks.
<a name="l40"></a></span><span class=cF8>
<a name="l41"></a>* &quot;QEMU&quot; is a trademark owned by Fabrice Bellard.
<a name="l42"></a>* &quot;VMware&quot; is a trademark owned by VMware, Inc.
<a name="l43"></a>* &quot;VirtualBox&quot; is a trademark owned by Oracle.
</span></pre></body>
</html>