diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-11-08 07:54:02 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-11-08 07:54:02 +0800 |
| commit | e939a810a401b389a398aa10499e7be142bf45ca (patch) | |
| tree | 1b84fbac69be10f9385f62fd4dc04975b4bfd493 /mubios/services/int13.c | |
| parent | bb20921d00c770cb30bb85a300423d9062a94d91 (diff) | |
| download | rcc-project-e939a810a401b389a398aa10499e7be142bf45ca.tar.gz rcc-project-e939a810a401b389a398aa10499e7be142bf45ca.tar.xz | |
[mubios] Extend registers from 16-bit to 32-bit
Signed-off-by: Richard Qin <richard.qin.x@gmail.com>
Diffstat (limited to 'mubios/services/int13.c')
| -rw-r--r-- | mubios/services/int13.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/mubios/services/int13.c b/mubios/services/int13.c index e5cef43..2c12261 100644 --- a/mubios/services/int13.c +++ b/mubios/services/int13.c @@ -38,7 +38,7 @@ struct edd_packet static void int13_fail (struct bios_regs *regs) { - regs->ax = 0x0100u; + regs->eax = 0x0100u; regs->flags |= BIOS_CF; } @@ -47,7 +47,7 @@ get_edd_packet (struct bios_regs *regs) { u32 address; - address = ((u32)regs->ds << 4) + regs->si; + address = ((u32)regs->ds << 4) + (u16)regs->esi; return (struct edd_packet *)address; } @@ -58,19 +58,19 @@ int13_service (struct bios_regs *regs) struct edd_packet *packet; u32 buffer_address; - function = (u8)(regs->ax >> 8); + function = (u8)(regs->eax >> 8); if (function == 0x41u) { - if (regs->bx != 0x55AAu) + if (regs->ebx != 0x55AAu) { int13_fail (regs); return; } - regs->ax = 0x3000u; - regs->bx = 0xAA55u; - regs->cx |= 0x0001u; + regs->eax = 0x3000u; + regs->ebx = 0xAA55u; + regs->ecx |= 0x0001u; regs->flags &= (u16)~BIOS_CF; return; } @@ -98,7 +98,7 @@ int13_service (struct bios_regs *regs) return; } - regs->ax = 0; + regs->eax = 0; regs->flags &= (u16)~BIOS_CF; return; } |
