VESA.TXT

The VESA BIOS interface is a software interface for detection capabilities,
setting modes and setting the bank register.

VESA 1.0   VESA Standard #VS
VESA 1.1   VESA Standard #VS900602
VESA 1.2   VESA Standard #VS911022

----------104F00-----------------------------
INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
        AX = 4F00h
        ES:DI -> 256-byte buffer for SuperVGA information (see below)
Return: AL = 4Fh function supported
        AH = status
             00h successful
             01h failed

Format of SuperVGA information:
Offset  Size      Description
 00h   4 BYTEs    signature ('VESA')
 04h    WORD      VESA version number
 06h    DWORD     pointer to OEM name
 0Ah   4 BYTEs    capabilities
 0Eh    DWORD     pointer to list of supported VESA and OEM video modes
                  Terminated with 0FFFFh.
 12h    WORD      Video memory in 64k blocks
 14h   236 BYTEs  reserved
Note: Some VESA drivers will write more than the expected 256 bytes.
----------104F01-----------------------------
INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
        AX = 4F01h
        CX = SuperVGA video mode
        ES:DI -> 256-byte buffer mode information (see below)
Return: AL = 4Fh function supported
        AH = status
             00h successful
             01h failed

Format of mode information:
Offset Size   Description
 00h   WORD   mode attributes
              bit 0: mode supported
              bit 1: optional information available
              bit 2: BIOS output supported
              bit 3: set if color, clear if monochrome
              bit 4: set if graphics mode, clear if text mode
 02h   BYTE   window A attributes
              bit 0: exists
              bit 1: readable
              bit 2: writable
              bits 3-7 reserved
 03h   BYTE   window B attributes (as for window A)
 04h   WORD   window granularity in K
 06h   WORD   window size in K
 08h   WORD   start segment of window A
 0Ah   WORD   start segment of window B
 0Ch   DWORD -> FAR window positioning function (equivalent to AX=4F05h)
 10h   WORD   bytes per scan line
---remainder is optional for VESA modes, needed for OEM modes---
 12h   WORD   width in pixels
 14h   WORD   height in pixels
 16h   BYTE   width of character cell in pixels
 17h   BYTE   height of character cell in pixels
 18h   BYTE   number of memory planes
 19h   BYTE   number of bits per pixel
 1Ah   BYTE   number of banks
 1Bh   BYTE   memory model type
                 0 Text
                 1 CGA graphics
                 2 Hercules Graphics
                 3 EGA 16 color
                 4 Packed pixels
                 5 Non chain 4 256 color modes
                 6 Direct 15/16/24 bit
                 7 YUV
             8-0Fh Reserved for VESA
          10h-0FFh Reserved for OEM  
 1Ch   BYTE   size of bank in K
 1Dh   BYTE   number of image pages
 1Eh   BYTE   reserved(0)
------VBE v1.2+ --------------------------
 1Fh   BYTE   Red mask size
 20h   BYTE   Red mask position
 21h   BYTE   Green mask size
 22h   BYTE   Green mask position
 23h   BYTE   Blue mask size
 24h   BYTE   Blue mask position
 25h   BYTE   Reserved mask size
 26h   BYTE   Reserved mask position
 27h   BYTE   Direct Screen mode info
 28h   BYTE   Res(0)  
     
----------104F02-----------------------------
INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
        AX = 4F02h
        BX = mode
             bit 15 set means don't clear video memory
Return: AL = 4Fh function supported
        AH = status
             00h successful
             01h failed

Values for VESA video mode:
  00h-FFh OEM video modes (see AH=00h)
 100h 640x400x256
 101h 640x480x256
 102h 800x600x16
 103h 800x600x256
 104h 1024x768x16
 105h 1024x768x256
 106h 1280x1024x16
 107h 1280x1024x256
 108h 80x60 text
 109h 132x25 text
 10Ah 132x43 text
 10Bh 132x50 text
 10Ch 132x60 text
 ------------ VBE v1.2+ ------------------
 10Dh 320x200 32k
 10Eh 320x200 64k
 10Fh 320x200 16M
 110h 640x480 32k
 111h 640x480 64k
 112h 640x480 16M
 113h 800x600 32k
 114h 800x600 64k
 115h 800x600 16M
 116h 1024x768 32k
 117h 1024x768 64k
 118h 1024x768 16M
 119h 1280x1024 32k
 11Ah 1280x1024 64k
 11Bh 1280x1024 16M

----------104F03-----------------------------
INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
        AX = 4F03h
Return: AL = 4Fh function supported
        AH = status
             00h successful
             01h failed
        BX = video mode (see AX=4F02h)
----------104F04-----------------------------
INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
        AX = 4F04h
        DL = subfunction
             00h get state buffer size
                 Return: BX = number of 64-byte blocks needed
             01h save video states
                 ES:BX -> buffer
             02h restore video states
                 ES:BX -> buffer
        CX = flags for states to save/restore
              bit 0: video hardware state
              bit 1: video BIOS data state
              bit 2: video DAC state
              bit 3: SuperVGA state
Return: AL = 4Fh function supported
        AH = status
             00h successful
             01h failed
----------104F05-----------------------------
INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
        AX = 4F05h
        BH = subfunction
             00h select video memory window
                 DX = window address in video memory (in granularity units)
             01h get video memory window
                 Return: DX = window address in video memory (in gran. units)
        BL = window number
             00h window A
             01h window B
Return: AL = 4Fh function supported
        AH = status
             00h successful
             01h failed
----------104F06-----------------------------
INT 10 - VESA SuperVGA BIOS 1.1 - GET/SET LOGICAL SCAN LINE LENGTH
        AX = 4F06h
        BL = function
             00h set scan line length
                 CX = desired width in pixels
             01h get scan line length
Return: AL = 4Fh if function supported
        AH = status
             00h successful
             01h failed
        BX = bytes per scan line
        CX = number of pixels per scan line
        DX = maximum number of scan lines
Notes: if the desired width is not achievable, the next larger width will be
       set. The scan line may be wider than the visible area of the screen
       this function is valid in text modes, provided that values are
       multiplied by the character cell width/height
----------104F07BH00-------------------------
INT 10 - VESA SuperVGA BIOS 1.1 - GET/SET DISPLAY START
        AX = 4F07h
        BH = 00h (reserved)
        BL = 00h set display start
                 CX = leftmost displayed pixel in scan line
                 DX = first displayed scan line
           = 01h get display start
                 Return: BH = 00h
                         CX = leftmost displayed pixel in scan line
                         DX = first displayed scan line
Return: AL = 4Fh if function supported
        AH = status
             00h successful
             01h failed
Note: this function is valid in text modes, provided that values are
      multiplied by the character cell width/height
----------104F08-----------------------------
INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
        AX = 4F08h
        BL = function
             00h  Set DAC palette width
                  BH = desired number of bits per primary color.
             01h  Get DAC palette width
Return: AL = 4Fh if function supported
        AH = status
        BH = Current number of bits per primary color (6 = Standard VGA)  
----------104FFF-----------------------------
INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
        AX = 4FFFh
        DL = new state (00h off, 01h on)