Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- BIOS ref. - <b>int 15h, 89h switch to protected mode xt-286, at</b> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
Int 15h, 89h            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.

        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)

        Return  AH = 0 if successful, else nonzero
                AX,BP, and all segment registers changed

    ------------------------------------------------------------------

    This service is available only for the AT and XT-286.


    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 table.

    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 areas.

See Also: Int 15h, 87h

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson