<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="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#l124"><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="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>