diff options
Diffstat (limited to 'dev/ZKA/HALKit')
| -rw-r--r-- | dev/ZKA/HALKit/AMD64/HalDescriptorLoader.cxx | 16 | ||||
| -rw-r--r-- | dev/ZKA/HALKit/AMD64/HalInterruptAPI.asm | 8 | ||||
| -rw-r--r-- | dev/ZKA/HALKit/AMD64/HalKernelMouse.cxx | 24 |
3 files changed, 22 insertions, 26 deletions
diff --git a/dev/ZKA/HALKit/AMD64/HalDescriptorLoader.cxx b/dev/ZKA/HALKit/AMD64/HalDescriptorLoader.cxx index 0339dd7f..678b0896 100644 --- a/dev/ZKA/HALKit/AMD64/HalDescriptorLoader.cxx +++ b/dev/ZKA/HALKit/AMD64/HalDescriptorLoader.cxx @@ -16,14 +16,14 @@ namespace Kernel::HAL STATIC ::Kernel::Detail::AMD64::InterruptDescriptorAMD64 kInterruptVectorTable[kKernelIdtSize]; - STATIC Void RemapPIC(Void) noexcept + STATIC Void hal_remap_intel_pic_ctrl(Void) noexcept { // Remap PIC. - HAL::Out8(0x20, 0x10 | 0x01); - HAL::Out8(0xA0, 0x10 | 0x01); + HAL::Out8(0x20, 0x11); + HAL::Out8(0xA0, 0x11); - HAL::Out8(0x21, 32); - HAL::Out8(0xA1, 40); + HAL::Out8(0x21, 40); + HAL::Out8(0xA1, 32); HAL::Out8(0x21, 4); HAL::Out8(0xA1, 2); @@ -31,8 +31,8 @@ namespace Kernel::HAL HAL::Out8(0x21, 0x01); HAL::Out8(0xA1, 0x01); - HAL::Out8(0x21, 0x00); - HAL::Out8(0xA1, 0x00); + HAL::Out8(0x21, 0xFD); + HAL::Out8(0xA1, 0xFF); } } // namespace Detail @@ -55,7 +55,7 @@ namespace Kernel::HAL MUST_PASS(baseIdt); - Detail::RemapPIC(); + Detail::hal_remap_intel_pic_ctrl(); for (UInt16 i = 0; i < kKernelIdtSize; ++i) { diff --git a/dev/ZKA/HALKit/AMD64/HalInterruptAPI.asm b/dev/ZKA/HALKit/AMD64/HalInterruptAPI.asm index 093da0db..12c71663 100644 --- a/dev/ZKA/HALKit/AMD64/HalInterruptAPI.asm +++ b/dev/ZKA/HALKit/AMD64/HalInterruptAPI.asm @@ -35,7 +35,7 @@ __NEW_INT_%1: global ke_handle_irq global kInterruptVectorTable -extern _hal_handle_mouse +extern hal_handle_mouse extern idt_handle_gpf extern idt_handle_pf extern ke_io_write @@ -136,11 +136,7 @@ IntNormal 43 __NEW_INT_44: cli - ;; TODO: CoreEvents dispatch routine. - - push rax - call _hal_handle_mouse - pop rax + call hal_handle_mouse sti iretq diff --git a/dev/ZKA/HALKit/AMD64/HalKernelMouse.cxx b/dev/ZKA/HALKit/AMD64/HalKernelMouse.cxx index bff5e5ee..06cdc81b 100644 --- a/dev/ZKA/HALKit/AMD64/HalKernelMouse.cxx +++ b/dev/ZKA/HALKit/AMD64/HalKernelMouse.cxx @@ -19,7 +19,6 @@ STATIC Kernel::Int32 kPrevY = 10; STATIC Kernel::Int32 kX = 10; STATIC Kernel::Int32 kY = 10; STATIC Kernel::Int32 kMouseCycle = 0; -STATIC Kernel::PS2MouseInterface kMousePS2; STATIC Kernel::Char kMousePacket[4] = {}; STATIC Kernel::Boolean kMousePacketReady = false; @@ -35,7 +34,7 @@ STATIC CGInit(); using namespace Kernel; -Void hal_handle_mouse() +EXTERN_C Void hal_handle_mouse() { Kernel::UInt8 data = HAL::In8(0x60); @@ -70,12 +69,6 @@ Void hal_handle_mouse() Kernel::HAL::Out8(0xA0, 0x20); } -/// @brief Interrupt handler for the mouse. -EXTERN_C Void _hal_handle_mouse() -{ - hal_handle_mouse(); -} - EXTERN_C Boolean _hal_left_button_pressed() { return kMousePacket[0] & kPS2Leftbutton; @@ -176,6 +169,8 @@ EXTERN_C Boolean _hal_draw_mouse() kPrevX = kX; kPrevY = kY; + CGDrawBitMapInRegionA(Cursor, cCurHeight, cCurWidth, kY, kX); + kMousePacketReady = false; return true; } @@ -183,8 +178,13 @@ EXTERN_C Boolean _hal_draw_mouse() /// @brief Init kernel mouse. EXTERN_C Void _hal_init_mouse() { - kMousePS2.Init(); - - HAL::Out8(0x21, 0b11111001); - HAL::Out8(0xA1, 0b11101111); + kPrevX = 10; + kPrevY = 10; + kX = 10; + kY = 10; + kMouseCycle = 0; + kMousePacketReady = false; + + Kernel::PS2MouseInterface ps2_mouse; + ps2_mouse.Init(); } |
