muta...@gmail.com
2021-03-03 12:26:30 UTC
If I have a hard disk image burnt to USB and use
the BIOS to boot from USB in legacy mode, is
there some dependency for this to actually work,
specifically is INT 13H detected and redirected
by "the hardware"?
Such that if I copy the interrupt vector from
INT 13H to some other location, such as
INT 80H, and then attempt to do an INT 80H,
that won't work? Since it isn't the code at that
location that is so important, it is the interrupt
number itself? (not true of Bochs though).
If so, that would explain why PDOS/386 is not
booting from USB stick currently. It's just a theory
so far, I haven't isolated that yet. Here is the code
I am suspicious of, and the PIC remapping is
suspicious too (since I don't know what it is
doing).
#ifdef PDOS32
/* Copies BIOS interrupt vectors and remaps IRQs
* so they do not conflict with protected mode exceptions. */
{
disable();
/* 16 vectors from 0x10 to 0xA0. (BIOS calls) */
ivtCopyEntries(0xA0, 0x10, 16);
/* 8 vectors from 0x08 to 0xB0. (BIOS IRQ handlers 0 - 7) */
ivtCopyEntries(0xB0, 0x08, 8);
/* 8 vectors from 0x70 to 0xB8. (BIOS IRQ handlers 8 - 15) */
ivtCopyEntries(0xB8, 0x70, 8);
picRemap(0xB0, 0xB8);
enable();
}
#endif
Thanks. Paul.
the BIOS to boot from USB in legacy mode, is
there some dependency for this to actually work,
specifically is INT 13H detected and redirected
by "the hardware"?
Such that if I copy the interrupt vector from
INT 13H to some other location, such as
INT 80H, and then attempt to do an INT 80H,
that won't work? Since it isn't the code at that
location that is so important, it is the interrupt
number itself? (not true of Bochs though).
If so, that would explain why PDOS/386 is not
booting from USB stick currently. It's just a theory
so far, I haven't isolated that yet. Here is the code
I am suspicious of, and the PIC remapping is
suspicious too (since I don't know what it is
doing).
#ifdef PDOS32
/* Copies BIOS interrupt vectors and remaps IRQs
* so they do not conflict with protected mode exceptions. */
{
disable();
/* 16 vectors from 0x10 to 0xA0. (BIOS calls) */
ivtCopyEntries(0xA0, 0x10, 16);
/* 8 vectors from 0x08 to 0xB0. (BIOS IRQ handlers 0 - 7) */
ivtCopyEntries(0xB0, 0x08, 8);
/* 8 vectors from 0x70 to 0xB8. (BIOS IRQ handlers 8 - 15) */
ivtCopyEntries(0xB8, 0x70, 8);
picRemap(0xB0, 0xB8);
enable();
}
#endif
Thanks. Paul.