<aname="l7"></a>leave behind much trouble, but plenty remains.
<aname="l8"></a>
<aname="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><spanclass=cF4>
<aname="l10"></a></span><ahref="https://tomawezome.github.io/ZealOS/Demo/Lectures/PCIInterrupts.CC.html#l1"><spanclass=cF4>PCI Interrupts</span></a><spanclass=cF0> and attempting to do a HDAudio driver, Terry Davis came to realize that modern PCI devices require ten times more
<aname="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><ahref="https://tomawezome.github.io/ZealOS/Kernel/SerialDev/Keyboard.CC.html#l1"><spanclass=cF4>keyboard</span></a><spanclass=cF0>
<aname="l16"></a>driver, one </span><ahref="https://tomawezome.github.io/ZealOS/Kernel/SerialDev/Mouse.CC.html#l1"><spanclass=cF4>mouse</span></a><spanclass=cF0> driver, one </span><ahref="https://tomawezome.github.io/ZealOS/Kernel/BlkDev/DiskAHCI.CC.html#l1"><spanclass=cF4>ATA hard drive</span></a><spanclass=cF0> driver, one </span><ahref="https://tomawezome.github.io/ZealOS/Kernel/BlkDev/DiskAHCI.CC.html#l1"><spanclass=cF4>ATAPI CD/DVD</span></a><spanclass=cF0> driver, one </span><ahref="https://tomawezome.github.io/ZealOS/System/Gr/GrScreen.CC.html#l1"><spanclass=cF4>32-bit color high-res VBE graphics</span></a><spanclass=cF0> video
<aname="l17"></a>driver and one </span><ahref="https://tomawezome.github.io/ZealOS/Kernel/KMisc.CC.html#l129"><spanclass=cF4>PC Speaker</span></a><spanclass=cF0> driver. We use the </span><ahref="https://tomawezome.github.io/ZealOS/Kernel/KMain.CC.html#l124"><spanclass=cF4>PIT timer</span></a><spanclass=cF0> and </span><ahref="https://tomawezome.github.io/ZealOS/Kernel/KInterrupts.CC.html#l133"><spanclass=cF4>PIC Interrupt Controller</span></a><spanclass=cF0>. We use IRQ0 for timer, IRQ1 for
<aname="l20"></a>In the CPU department, ZealOS has state of the art 64-bit </span><ahref="https://tomawezome.github.io/ZealOS/Kernel/KStart64.CC.html#l1"><spanclass=cF4>long mode</span></a><spanclass=cF0> with </span><ahref="https://tomawezome.github.io/ZealOS/Kernel/MultiProc.CC.html#l1"><spanclass=cF4>multicore</span></a><spanclass=cF0> support. We use the </span><ahref="https://tomawezome.github.io/ZealOS/Kernel/MultiProc.CC.html#l176"><spanclass=cF4>APIC</span></a><spanclass=cF0> and start-up </span><spanclass=cF4>