mirror of
https://github.com/0Nera/BMOSP.git
synced 2024-11-25 18:09:38 +03:00
Исправлена обработка нажатий PS/2
This commit is contained in:
parent
9deba0b828
commit
e21551f008
@ -1,3 +1,3 @@
|
|||||||
#define VERSION_MAJOR 0
|
#define VERSION_MAJOR 0
|
||||||
#define VERSION_MINOR 2
|
#define VERSION_MINOR 2
|
||||||
#define VERSION_BUILD 14
|
#define VERSION_BUILD 34
|
||||||
|
@ -89,7 +89,7 @@ static void exception_handler(struct frame state) {
|
|||||||
void isr_generic(struct frame state) {
|
void isr_generic(struct frame state) {
|
||||||
if (state.int_number > 255) { return; }
|
if (state.int_number > 255) { return; }
|
||||||
|
|
||||||
// if (state.int_number != 32) { LOG("Обработка прерывания %u\n", state.int_number); }
|
if (state.int_number != 32) { LOG("Обработка прерывания %u\n", state.int_number); }
|
||||||
|
|
||||||
if (state.int_number < 32) {
|
if (state.int_number < 32) {
|
||||||
exception_handler(state);
|
exception_handler(state);
|
||||||
|
@ -33,7 +33,7 @@ static void *elf_entry(elf64_header_t *module_bin) {
|
|||||||
// Приводим заголовок ELF файла к типу elf64_header_t
|
// Приводим заголовок ELF файла к типу elf64_header_t
|
||||||
elf64_header_t *elf_header = (elf64_header_t *)module_bin;
|
elf64_header_t *elf_header = (elf64_header_t *)module_bin;
|
||||||
|
|
||||||
// LOG("(uint64_t)elf_header->e_entry = 0x%x, type = %u\n", (uint64_t)elf_header->e_entry, elf_header->e_type);
|
LOG("(uint64_t)elf_header->e_entry = 0x%x, тип = %u\n", (uint64_t)elf_header->e_entry, elf_header->e_type);
|
||||||
|
|
||||||
if (elf_header->e_type != 2) {
|
if (elf_header->e_type != 2) {
|
||||||
LOG("\t\tОшибка! Модуль неправильно собран!\n");
|
LOG("\t\tОшибка! Модуль неправильно собран!\n");
|
||||||
@ -92,6 +92,7 @@ void mod_init( ) {
|
|||||||
LOG("Ошибка выделения памяти для массива module_list\n");
|
LOG("Ошибка выделения памяти для массива module_list\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
LOG("module_list = 0x%x\n", module_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint64_t i = 0; i < module_count; i++) {
|
for (uint64_t i = 0; i < module_count; i++) {
|
||||||
|
@ -22,7 +22,7 @@ static void main( ) {
|
|||||||
|
|
||||||
for (uint64_t i = 0; i < *mod_count; i++) {
|
for (uint64_t i = 0; i < *mod_count; i++) {
|
||||||
if (str_contains(mod_list[i].name, "[APP]")) {
|
if (str_contains(mod_list[i].name, "[APP]")) {
|
||||||
//fb_printf("%u. %s\n", app_count, mod_list[i].name);
|
// fb_printf("%u. %s\n", app_count, mod_list[i].name);
|
||||||
app_list[app_count] = mod_list[i];
|
app_list[app_count] = mod_list[i];
|
||||||
app_count++;
|
app_count++;
|
||||||
}
|
}
|
||||||
|
@ -8,9 +8,6 @@ static char c_char = '\0';
|
|||||||
static key_event_t keyboard_buffer;
|
static key_event_t keyboard_buffer;
|
||||||
|
|
||||||
void virt_exit( ) {
|
void virt_exit( ) {
|
||||||
fb_printf("Выход для Bochs\n");
|
|
||||||
outw(0xB004, 0x2000);
|
|
||||||
|
|
||||||
fb_printf("Выход для Qemu\n");
|
fb_printf("Выход для Qemu\n");
|
||||||
outw(0x604, 0x2000);
|
outw(0x604, 0x2000);
|
||||||
|
|
||||||
@ -80,8 +77,7 @@ static int is_ctrl(uint8_t scancode) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void handler(struct frame *state) {
|
static void handler( ) {
|
||||||
(void)state;
|
|
||||||
while (!(inb(0x64) & 1)) { asm volatile("pause"); }
|
while (!(inb(0x64) & 1)) { asm volatile("pause"); }
|
||||||
|
|
||||||
uint8_t scancode = inb(0x60);
|
uint8_t scancode = inb(0x60);
|
||||||
@ -169,6 +165,6 @@ module_info_t __attribute__((section(".minit"))) init(env_t *env) {
|
|||||||
.err_code = 0,
|
.err_code = 0,
|
||||||
.module_id = 0,
|
.module_id = 0,
|
||||||
.irq = 33,
|
.irq = 33,
|
||||||
.irq_handler = handler,
|
.irq_handler = &handler,
|
||||||
.get_func = __get_func };
|
.get_func = __get_func };
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user