diff options
Diffstat (limited to 'mubios')
| -rw-r--r-- | mubios/core/interrupt.c | 43 | ||||
| -rw-r--r-- | mubios/include/bios.h | 1 |
2 files changed, 44 insertions, 0 deletions
diff --git a/mubios/core/interrupt.c b/mubios/core/interrupt.c new file mode 100644 index 0000000..3f5bbb9 --- /dev/null +++ b/mubios/core/interrupt.c @@ -0,0 +1,43 @@ +/* + RCC-Project + + Copyright (C) 2026 Richard Qin + + This file is part of RCC-Project. + + RCC-Project is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your option) any + later version. + + RCC-Project is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + RCC-Project; see the file COPYING. If not see + <http://www.gnu.org/licenses/>. + */ + +#include "bios.h" +#include "regs.h" + +void +bios_service_dispatch (u8 vector, struct bios_regs *regs) +{ + switch (vector) + { + case 0x10u: + int10_service (regs); + break; + + case 0x13u: + int13_service (regs); + break; + + default: + regs->ax = 0x0100u; + regs->flags |= 0x0001u; + break; + } +} diff --git a/mubios/include/bios.h b/mubios/include/bios.h index 4c9cd59..29743e0 100644 --- a/mubios/include/bios.h +++ b/mubios/include/bios.h @@ -54,6 +54,7 @@ u8 ata_read_sector28 (u32 lba, u16 *buffer); struct bios_regs; +void bios_service_dispatch (u8 vector, struct bios_regs *regs); void int10_service (struct bios_regs *regs); void int13_service (struct bios_regs *regs); |
