6

Did BIOS on 286 systems provide support for the Protected Mode? On a 386, the BIOS can be fairly easily accessed from protected mode using the Virtual 86 mode, but since 286 did not officially support switching back from PM in any way, would a 286 Protected Mode OS be limited to accessing HW directly, or was there a way to use BIOS calls from Protected Mode?

0

1 Answer 1

14

“Regular” BIOS only provides a function to switch to protected mode (interrupt 15h, service 89h), and can’t be called from protected mode in general.¹ BIOS services can use protected mode, for example the service which copies to/from extended memory (interrupt 15h, service 87h) but such services can’t be called from protected mode.

Some IBM PS/2 systems’ firmware included an “Advanced BIOS” which provided an API callable from real mode and protected mode. This is described in detail in IBM’s PS/2 and PC BIOS Interface Technical Reference. Later PS/2s shipped this as a loadable extra.

Note that while the 286 CPU didn’t provide a simple way of switching from protected mode to real mode, real-world constraints meant that actual 286 PCs were designed with various mechanisms to do so. 286 protected-mode operating systems could therefore still use the real mode BIOS, although performance would be much better with direct hardware access using protected-mode drivers. This is true on the 386 as well; calling the BIOS in V86 mode is really a worst-case fallback.


¹ It also provides some support for returning from protected mode, but not as an easy-to-use function: the reset code checks the shutdown status byte in the CMOS, and resumes execution from a modifiable vector if this is equal to 5. That’s how the CPU can be reset without rebooting the entire system. See How to switch an 80286 from protected to real mode? and Robert Collins’ “Protected Mode Basics” for details.

6
  • IIRC there is also a memcpy function from/to protected mode (88h?) so some use is possible, but yeah, not much.
    – Raffzahn
    Commented Jun 19 at 12:05
  • @Raffzahn copy to/from extended memory, but it’s useless if you’re already in protected mode ;-). Commented Jun 19 at 12:10
  • Yes, it is. But hey, it allows a pretty easy RAM disk implementation :)) Beside this being fun, it also shows why the return via reset was implemented in the first place: to allow usage of memory above 1 MB with DOS (and BIOS was made for DOS(alike) systems, nothing else). The very same way as Visicalc or Lotus used banked memory cards with the PC/PC-XT or other machines like the Apple II.
    – Raffzahn
    Commented Jun 19 at 12:16
  • 2
    It does (although MS-DOS RAMDRIVE.SYS used LOADALL, not this service!). I’m not sure we can categorically say that 286 services in the BIOS were designed primarily with DOS in mind; the shutdown status byte was added in PS/2s IIRC, and many of their features were designed with OS/2 in mind... (/me goes off to check the AT Tech Ref.) Commented Jun 19 at 12:21
  • 1
    OK, it was supported in the AT too. Commented Jun 19 at 12:29

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .