/* Called before platform-independent kernel initialization */ void arch_init(void) { gdt_init(); idt_init(); timer_init(TIMER_HZ); kbc_init(); }
int main(int argc, char *argv[]) { //>>>>>>>>>> carregament da codepage <<<<<<<<<< load_char_table(codepage); //>>>>>>>>>> init kbc <<<<<<<<< Bool mouse_detected = kbc_init(0); //>>>>>>>>>> init kbd <<<<<<<<<< kbd_init(); //>>>>>>>>>> init mouse <<<<<<<<<< if (mouse_detected == true) mouse_init((int) 0); //>>>>>>>>>> init rtc <<<<<<<<<< rtc_init(); drawDate(); drawTime(); drawCounter(); //>>>>>>>>>> init timer <<<<<<<<<< timer0_init(); timer_init(TIMER_2, LSBMSB | MODE3); //################# menu_start(); //################# //>>>>>>>>>> restore kbd isr <<<<<<<<<< restore_keyboard_isr(); //>>>>>>>>>> restore mouse isr <<<<<<<<<< if (mouse_detected == true) restore_mouse_isr(); //>>>>>>>>>> restore rtc isr <<<<<<<<<< restore_rtc_isr(); //>>>>>>>>>> init timer isr <<<<<<<<<< restore_timer0(); return 0; }
int mouse_init(void(*isr)(void), _go32_dpmi_seginfo *prev_isr) { disable_irq(KBD_IRQ); disable_irq(MOUSE_IRQ); int sucesso = kbc_init(1); _go32_dpmi_lock_code(mouse_isr, (end_mouse_isr - mouse_isr)); _go32_dpmi_lock_data((void*) &b3, sizeof(b3)); set_isr(MOUSE_IRQ, mouse_isr, prev_isr); enable_irq(KBD_IRQ); enable_irq(MOUSE_IRQ); return sucesso; }