Comments
Loading Dream Comments...
You must be logged in to write a comment - Log In
In order to avoid needing to rewrite the PC disk, video, and keyboard routines (INT $13, INT $10, and INT $09) we set up a VM86 monitor in protected mode. Using the interrupt entry points in the base RAM ($0000:0000 through $0000:0400) we create the appropriate interrupt gates (IDT), including one to call ::SHE:: (INT $48). We also add hardware exception handlers (including GPF INT $0D and stack overflow INT $0C). We remap the interrupt controller chips to use INT $70 through INT $7F, in order to avoid IBM's blunder of mapping them to INT $08 through INT $0F (over the protected mode hardware exceptions). We then set up a GDT (global descriptor table) ... this is somewhat like our GHOST (global host online segment table) and serves rather the same purpose. And switch into VM86 mode by MOVing whatever into CR0. This whole setup has been somewhat more complicated than on the Apple ][ where you just access address $C081 twice in a row to enable the language card (which overlays the ROM address space). But at least we get to call the BIOS from protected mode, without single-stepping the whole thing :)
P.S. Remember to allocate INT $6D as well, as the VGA uses it internally ... :)