INT 15h,  89h (137)      Switch to Protected Mode                  XT-286, AT

Switches into Protected (virtual address) mode. Also transfers control
to the code segment in the protected mode specified by the user.

On entry:      AH         89h
BH         Index into Interrupt Descriptor Table (IDT)
stating start of first 8 hardware interrupts
(Interrupt Level 1)
BL         Index into Interrupt Descriptor Table (IDT)
stating start of second 8 hardware interrupts
(Interrupt Level 2)
ES:SI      Pointer to a Global Descriptor Table (GDT)
(see below)

Returns:       AH         0 if successful, else nonzero

Registers destroyed:      AX, BP, and all segment registers


Notes:         This service is available only for the AT and XT-

ES:SI points to a list of eight descriptors. Each
descriptor is 8 bytes long. A descriptor is
formatted as follows:

Offset    Bytes     Description
00h       2       Word containing segment limit
02h       2       Low word of 24-bit address
04h       1       High byte of 24-bit address
05h       1       Access rights byte
06h       2       Reserved (must be 0)

The Global Descriptor Table (GDT) pointed to by
ES:SI consists of a list of eight descriptors. The
descriptors are defined below, appearing in the same
order as they appear in memory.

Offset   Bytes    Description
00h      8      Dummy Descriptor. Initialized by
user to 0.
08h      8      Descriptor of this GDT as a data
segment. Initialized by user.
10h      8      Descriptor of Interrupt Descriptor
Table (IDT).  Initialized by user.
18h      8      Descriptor of Data Segment.
Initialized by user.
20h      8      Descriptor of Extra Segment.
Initialized by user.
28h      8      Descriptor of Stack Segment.
Initialized by user.
30h      8      Descriptor of Code Segment.
Initialized by user.
38h      8      Descriptor of Temporary BIOS Code
Segment. Initialized by user to 0.

The six descriptors that must be initialized by the
user must have the segment limit, base address, and
access rights byte fields initialized.

The BIOS is not available to the user; thus the user
must perform all I/O.

The user must initialize an exception handler and

There can't be any overlap between the Interrupt
Descriptor Table (IDT) and the Real Mode BIOS
Interrupt Descriptor Table (IDT).

Because of to the 80286's reserved areas, the user
must move the interrupt vector locations.

Reinitialization of the hardware interrupt
controllers is needed in order to define those
locations that do not exist in the 80286 reserved

See also: INT 15h, 87h

INT 15h, 89h (137) Switch to Protected Mode XT-286, AT