ZealOS/docs/Doc/WhyNotMore.DD.html
2021-10-27 03:28:16 -04:00

73 lines
6.9 KiB
HTML
Executable file

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
<meta name="generator" content="ZealOS V1.04">
<style type="text/css">
body {background-color:#1f1f1f;}
.cF0{color:#e3e3e3;background-color:#1f1f1f;}
.cF1{color:#4f84a6;background-color:#1f1f1f;}
.cF2{color:#73a255;background-color:#1f1f1f;}
.cF3{color:#297582;background-color:#1f1f1f;}
.cF4{color:#b34f4b;background-color:#1f1f1f;}
.cF5{color:#8a52c3;background-color:#1f1f1f;}
.cF6{color:#b7822f;background-color:#1f1f1f;}
.cF7{color:#444444;background-color:#1f1f1f;}
.cF8{color:#6d6d6d;background-color:#1f1f1f;}
.cF9{color:#94bfde;background-color:#1f1f1f;}
.cFA{color:#a1ce97;background-color:#1f1f1f;}
.cFB{color:#6db4be;background-color:#1f1f1f;}
.cFC{color:#e88e88;background-color:#1f1f1f;}
.cFD{color:#ca94e8;background-color:#1f1f1f;}
.cFE{color:#d4b475;background-color:#1f1f1f;}
.cFF{color:#1f1f1f;background-color:#1f1f1f;}
</style>
</head>
<body>
<pre style="font-family:monospace;font-size:12pt">
<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://zeal-operating-system.github.io/ZealOS/Demo/Lectures/PCIInterrupts.CC.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
<a name="l11"></a>more code and he cannot even come close to making them work on everyone's machine because with PCI devices there are several
<a name="l12"></a>models 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://zeal-operating-system.github.io/ZealOS/Kernel/SerialDev/Keyboard.CC.html#l1"><span class=cF4>keyboard</span></a><span class=cF0>
<a name="l16"></a>driver, one </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/SerialDev/Mouse.CC.html#l1"><span class=cF4>mouse</span></a><span class=cF0> driver, one </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/BlkDev/DiskAHCI.CC.html#l1"><span class=cF4>ATA hard drive</span></a><span class=cF0> driver, one </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/BlkDev/DiskAHCI.CC.html#l1"><span class=cF4>ATAPI CD/DVD</span></a><span class=cF0> driver, one </span><a href="https://zeal-operating-system.github.io/ZealOS/System/Gr/GrScreen.CC.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://zeal-operating-system.github.io/ZealOS/Kernel/KMisc.CC.html#l129"><span class=cF4>PC Speaker</span></a><span class=cF0> driver. We use the </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KMain.CC.html#l116"><span class=cF4>PIT timer</span></a><span class=cF0> and </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KInterrupts.CC.html#l149"><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://zeal-operating-system.github.io/ZealOS/Kernel/KStart64.CC.html#l1"><span class=cF4>long mode</span></a><span class=cF0> with </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/MultiProc.CC.html#l1"><span class=cF4>multicore</span></a><span class=cF0> support. We use the </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/MultiProc.CC.html#l181"><span class=cF4>APIC</span></a><span class=cF0> and start-up </span><span class=cF4>
<a name="l21"></a></span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/MultiProc.CC.html#l303"><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? Nothin
<a name="l29"></a>g. 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. Withou
<a name="l35"></a>t working, native hard drive and CD/DVD drivers, you can't get very far with UEFI on a native install, not to mention
<a name="l36"></a>SecureBoot. UEFI is, first of all, redundant. If non-UEFI works in a virtual machine, supporting UEFI would only be
<a name="l37"></a>redundant, ugly nasty code. The compiler does not create an ELF or PE format. We would have to ruin the beauty of the
<a name="l38"></a>compiler.
<a name="l39"></a>
<a name="l40"></a>God talks.
<a name="l41"></a></span><span class=cF8>
<a name="l42"></a>* &quot;QEMU&quot; is a trademark owned by Fabrice Bellard.
<a name="l43"></a>* &quot;VMware&quot; is a trademark owned by VMware, Inc.
<a name="l44"></a>* &quot;VirtualBox&quot; is a trademark owned by Oracle.
</span></pre></body>
</html>