summaryrefslogtreecommitdiffstats
path: root/qemu/roms/vgabios/vbe_display_api.txt
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/vgabios/vbe_display_api.txt')
-rw-r--r--qemu/roms/vgabios/vbe_display_api.txt237
1 files changed, 0 insertions, 237 deletions
diff --git a/qemu/roms/vgabios/vbe_display_api.txt b/qemu/roms/vgabios/vbe_display_api.txt
deleted file mode 100644
index fddb78b4b..000000000
--- a/qemu/roms/vgabios/vbe_display_api.txt
+++ /dev/null
@@ -1,237 +0,0 @@
-VBE Display API
--------------------------------------------------------------------------------------------------------------
- This document is part of the Bochs/VBEBios documentation,
- it specifies the bochs host <-> vbebios client communication.
-
- That means, the display code implementation and the vbebios code depend
- very heavily on each other. As such, this documents needs be synchronised
- between bochs CVS and the vgabios CVS.
-
- This document does not describe how the VBEBios implements the VBE2/3 spec.
- This document does not describe how the Bochs display code will display gfx based upon this spec.
-
-
-API History
------------
-0xb0c0 supports the following VBE_DISPI_ interfaces (present in Bochs 1.4):
- VBE_DISPI_INDEX_ID
- VBE_DISPI_INDEX_XRES
- VBE_DISPI_INDEX_YRES
- VBE_DISPI_INDEX_BPP
- VBE_DISPI_INDEX_ENABLE
- VBE_DISPI_INDEX_BANK
-
- Bpp format supported is:
- VBE_DISPI_BPP_8
-
-0xb0c1 supports 0xb0c0 VBE_DISPI_ interfaces, additional interfaces (present in Bochs 2.0):
- VBE_DISPI_INDEX_VIRT_WIDTH
- VBE_DISPI_INDEX_VIRT_HEIGHT
- VBE_DISPI_INDEX_X_OFFSET
- VBE_DISPI_INDEX_Y_OFFSET
-
-0xb0c2 supports 0xb0c1 VBE_DISPI_ interfaces, interfaces updated for
- additional features (present in Bochs 2.1):
- VBE_DISPI_INDEX_BPP supports >8bpp color depth (value = bits)
- VBE_DISPI_INDEX_ENABLE supports new flags VBE_DISPI_NOCLEARMEM and VBE_DISPI_LFB_ENABLED
- VBE i/o registers changed from 0xFF80/81 to 0x01CE/CF
-
-0xb0c3 supports 0xb0c2 VBE_DISPI_ interfaces, interfaces updated for
- additional features:
- VBE_DISPI_INDEX_ENABLE supports new flags VBE_DISPI_GETCAPS and VBE_DISPI_8BIT_DAC
-
-0xb0c4 VBE video memory increased to 8 MB
-
-
-History
--------
- Version 0.6 2002 Nov 23 Jeroen Janssen
- - Added LFB support
- - Added Virt width, height and x,y offset
-
- Version 0.5 2002 March 08 Jeroen Janssen
- - Added documentation about panic behaviour / current limits of the data values.
- - Changed BPP API (in order to include future (A)RGB formats)
- - Initial version (based upon extended display text of the vbe bochs display patch)
-
-
-Todo
-----
- Version 0.6+ [random order]
- - Add lots of different (A)RGB formats
-
-References
-----------
- [VBE3] VBE 3 Specification at
- http://www.vesa.org/vbe3.pdf
-
- [BOCHS] Bochs Open Source IA-32 Emulator at
- http://bochs.sourceforge.net
-
- [VBEBIOS] VBE Bios for Bochs at
- http://savannah.gnu.org/projects/vgabios/
-
- [Screenshots] Screenshots of programs using the VBE Bios at
- http://japj.org/projects/bochs_plex86/screenshots.html
-
-Abbreviations
--------------
- VBE Vesa Bios Extension
- DISPI (Bochs) Display Interface
- BPP Bits Per Pixel
- LFB Linear Frame Buffer
-
-
-#defines
---------
-vbetables-gen.c
- #define VBE_DISPI_TOTAL_VIDEO_MEMORY_MB 8
-
-vbe.h
- #define VBE_DISPI_BANK_ADDRESS 0xA0000
- #define VBE_DISPI_BANK_SIZE_KB 64
-
- #define VBE_DISPI_MAX_XRES 1024
- #define VBE_DISPI_MAX_YRES 768
-
- #define VBE_DISPI_IOPORT_INDEX 0x01CE
- #define VBE_DISPI_IOPORT_DATA 0x01CF
-
- #define VBE_DISPI_INDEX_ID 0x0
- #define VBE_DISPI_INDEX_XRES 0x1
- #define VBE_DISPI_INDEX_YRES 0x2
- #define VBE_DISPI_INDEX_BPP 0x3
- #define VBE_DISPI_INDEX_ENABLE 0x4
- #define VBE_DISPI_INDEX_BANK 0x5
- #define VBE_DISPI_INDEX_VIRT_WIDTH 0x6
- #define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7
- #define VBE_DISPI_INDEX_X_OFFSET 0x8
- #define VBE_DISPI_INDEX_Y_OFFSET 0x9
-
- #define VBE_DISPI_ID0 0xB0C0
- #define VBE_DISPI_ID1 0xB0C1
- #define VBE_DISPI_ID2 0xB0C2
- #define VBE_DISPI_ID3 0xB0C3
- #define VBE_DISPI_ID4 0xB0C4
-
- #define VBE_DISPI_DISABLED 0x00
- #define VBE_DISPI_ENABLED 0x01
- #define VBE_DISPI_VBE_ENABLED 0x40
- #define VBE_DISPI_NOCLEARMEM 0x80
-
- #define VBE_DISPI_LFB_PHYSICAL_ADDRESS 0xE0000000
-
-API
----
- The display api works by using a index (VBE_DISPI_IOPORT_INDEX) and
- data (VBE_DISPI_IOPORT_DATA) ioport. One writes the index of the parameter to the index port.
- Next, the parameter value can be read or written.
-
-[0xb0c0]
- * VBE_DISPI_INDEX_ID : WORD {R,W}
- This parameter can be used to detect the current display API (both bochs & vbebios).
- The bios writes VBE_DISPI_ID0 to the dataport and reads it back again.
- This way, the display code knows the vbebios 'ID' and the vbebios can check if the correct
- display code is present.
- As a result, a PANIC can be generated if an incompatible vbebios/display code combination is detected.
- This panic can be generated from the bochs display code (NOT the bios, see Notes).
-
- Example values: VBE_DISPI_ID0
-
- * VBE_DISPI_INDEX_XRES : WORD {R,W}
- This parameter can be used to read/write the vbe display X resolution (in pixels).
- It's illegal to set the XRES when the VBE is enabled (display code should generate PANIC).
-
- If the value written exceeds VBE_DISPI_MAX_XRES, the display code needs to generate a PANIC.
-
- Example values: 320,640,800,1024
-
- * VBE_DISPI_INDEX_YRES : WORD {R,W}
- This parameter can be used to read/write the vbe display Y resolution (in pixels).
- It's illegal to set the YRES when the VBE is enabled (display code should generate PANIC).
-
- If the value written exceeds VBE_DISPI_MAX_YRES, the display code needs to generate a PANIC.
-
- Example values: 200,400,480,600,768
-
- * VBE_DISPI_INDEX_BPP : WORD {R,W}
- This parameter can be used to read/write the vbe display BPP.
- It's illegal to set the BPP when the VBE is enabled (display code should generate PANIC).
-
- If the value written is an incompatible BPP, the display code needs to generate a PANIC.
-
- Example values: VBE_DISPI_BPP_8
-
- * VBE_DISPI_INDEX_ENABLE : WORD {R,W}
- This parameter can be used to read/write the vbe ENABLED state.
- If the bios writes VBE_DISPI_ENABLED then the display code will setup a hostside display mode
- with the current XRES, YRES and BPP settings.
- If the bios write VBE_DISPI_DISABLED then the display code will switch back to normal vga mode behaviour.
-
- Example values: VBE_DISPI_ENABLED, VBE_DISPI_DISABLED
-
- * VBE_DISPI_INDEX_BANK : WORD {R,W}
- This parameter can be used to read/write the current selected BANK (at 0xA0000).
- This can be used for switching banks in banked mode.
-
-[0xb0c1]
- * VBE_DISPI_INDEX_VIRT_WIDTH : WORD {R,W}
- This parameter can be used to read/write the current virtual width.
- Upon enabling a mode, this will be set to the current xres
- Setting this field during enabled mode will result in the virtual width to be changed.
- Value will be adjusted if current setting is not possible.
-
- * VBE_DISPI_INDEX_VIRT_HEIGHT : WORD {R}
- This parameter can be read in order to obtain the current virtual height.
- This setting will be adjusted after setting a virtual width in order to stay within limit of video memory.
-
- * VBE_DISPI_INDEX_X_OFFSET : WORD {R,W}
- The current X offset (in pixels!) of the visible screen part.
- Writing a new offset will also result in a complete screen refresh.
-
- * VBE_DISPI_INDEX_Y_OFFSET : WORD {R,W}
- The current Y offset (in pixels!) of the visible screen part.
- Writing a new offset will also result in a complete screen refresh.
-
-
-[0xb0c2]
- * VBE_DISPI_INDEX_BPP : WORD {R,W}
- The value written is now the number of bits per pixel. A value of 0 is treated
- the same as 8 for backward compatibilty. These values are supported: 8, 15,
- 16, 24 and 32. The value of 4 is not yet handled in the VBE code.
- * VBE_DISPI_INDEX_ENABLE : WORD {R,W}
- The new flag VBE_DISPI_NOCLEARMEM allows to preserve the VBE video memory.
- The new flag VBE_DISPI_LFB_ENABLED indicates the usage of the LFB.
-
-[0xb0c3]
- * VBE_DISPI_INDEX_ENABLE : WORD {R,W}
- If the new flag VBE_DISPI_GETCAPS is enabled, the xres, yres and bpp registers
- return the gui capabilities.
- The new flag VBE_DISPI_8BIT_DAC switches the DAC to 8 bit mode.
-
-[0xb0c4]
- * VBE_DISPI_TOTAL_VIDEO_MEMORY_MB set to 8 (moved to auto-generated vbetables.h)
-
-Displaying GFX (banked mode)
---------------
- What happens is that the total screen is devided in banks of 'VBE_DISPI_BANK_SIZE_KB' KiloByte in size.
- If you want to set a pixel you can calculate its bank by doing:
-
- offset = pixel_x + pixel_y * resolution_x;
- bank = offset / 64 Kb (rounded 1.9999 -> 1)
-
- bank_pixel_pos = offset - bank * 64Kb
-
- Now you can set the current bank and put the pixel at VBE_DISPI_BANK_ADDRESS + bank_pixel_pos
-
-Displaying GFX (linear frame buffer mode)
---------------
- NOT WRITTEN YET
-
-Notes
------
- * Since the XRES/YRES/BPP may not be written when VBE is enabled, if you want to switch from one VBE mode
- to another, you will need to disable VBE first.
-
- * Note when the bios doesn't find a valid DISPI_ID, it can disable the VBE functions. This allows people to
- use the same bios for both vbe enabled and disabled bochs executables.