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.