One unfortunate side effect of protected mode is the inaccessibility
of the BIOS. The BIOS provide services such as writing to the screen,
reading from the keyboard, and accessing the disk subsystem. Given
the time constraints of a semester, we were unable to write protected
mode interfaces to these hardware services. Instead, we rely on
routines to switch the processor in and out of protected mode long
enough for BIOS services to be used. This is dangerous, and should be
removed when possible. (See section 4 on page
for more about that) It also has the unfortunate side-effect of
rendering all I/O operations completely synchronous. All processing
halts while the BIOS has control of the CPU.
There are two routines, prot_to_real and real_to_prot, which take the processor in and out of protected mode. Before any call to the BIOS, we must call prot_to_real; and we call real_to_prot before returning.