#include "output.h" // dprintf
#include "romfile.h" // romfile_loadfile
#include "stacks.h" // call16_int
+#include "std/vbe.h" // struct vbe_info
#include "string.h" // memset
#include "util.h" // enable_bootsplash
-#include "vbe.h" // struct vbe_info
/****************************************************************
--- /dev/null
+#ifndef __VBE_H
+#define __VBE_H
+
+#include "types.h" // u8
+
+#define VESA_SIGNATURE 0x41534556 // VESA
+#define VBE2_SIGNATURE 0x32454256 // VBE2
+
+struct vbe_info {
+ u32 signature;
+ u16 version;
+ struct segoff_s oem_string;
+ u32 capabilities;
+ struct segoff_s video_mode;
+ u16 total_memory;
+ u16 oem_revision;
+ struct segoff_s oem_vendor_string;
+ struct segoff_s oem_product_string;
+ struct segoff_s oem_revision_string;
+ u8 reserved[222];
+} PACKED;
+
+struct vbe_mode_info {
+ /* VBE */
+ u16 mode_attributes;
+ u8 winA_attributes;
+ u8 winB_attributes;
+ u16 win_granularity;
+ u16 win_size;
+ u16 winA_seg;
+ u16 winB_seg;
+ struct segoff_s win_func_ptr;
+ u16 bytes_per_scanline;
+ /* VBE 1.2 */
+ u16 xres;
+ u16 yres;
+ u8 xcharsize;
+ u8 ycharsize;
+ u8 planes;
+ u8 bits_per_pixel;
+ u8 banks;
+ u8 mem_model;
+ u8 bank_size;
+ u8 pages;
+ u8 reserved0;
+ /* Direct Color */
+ u8 red_size;
+ u8 red_pos;
+ u8 green_size;
+ u8 green_pos;
+ u8 blue_size;
+ u8 blue_pos;
+ u8 alpha_size;
+ u8 alpha_pos;
+ u8 directcolor_info;
+ /* VBE 2.0 */
+ u32 phys_base;
+ u32 reserved1;
+ u16 reserved2;
+ /* VBE 3.0 */
+ u16 linear_bytes_per_scanline;
+ u8 bank_pages;
+ u8 linear_pages;
+ u8 linear_red_size;
+ u8 linear_red_pos;
+ u8 linear_green_size;
+ u8 linear_green_pos;
+ u8 linear_blue_size;
+ u8 linear_blue_pos;
+ u8 linear_alpha_size;
+ u8 linear_alpha_pos;
+ u32 pixclock_max;
+ u8 reserved[190];
+} PACKED;
+
+struct vbe_crtc_info {
+ u16 horiz_total;
+ u16 horiz_sync_start;
+ u16 horiz_sync_end;
+ u16 vert_total;
+ u16 vert_sync_start;
+ u16 vert_sync_end;
+ u8 flags;
+ u32 pixclock;
+ u16 refresh_rate;
+ u8 reserved[40];
+} PACKED;
+
+/* VBE Return Status Info */
+/* AL */
+#define VBE_RETURN_STATUS_SUPPORTED 0x4F
+#define VBE_RETURN_STATUS_UNSUPPORTED 0x00
+/* AH */
+#define VBE_RETURN_STATUS_SUCCESSFULL 0x00
+#define VBE_RETURN_STATUS_FAILED 0x01
+#define VBE_RETURN_STATUS_NOT_SUPPORTED 0x02
+#define VBE_RETURN_STATUS_INVALID 0x03
+
+/* VBE Mode Numbers */
+
+#define VBE_MODE_VESA_DEFINED 0x0100
+#define VBE_MODE_REFRESH_RATE_USE_CRTC 0x0800
+#define VBE_MODE_LINEAR_FRAME_BUFFER 0x4000
+#define VBE_MODE_PRESERVE_DISPLAY_MEMORY 0x8000
+
+#define VBE_VESA_MODE_END_OF_LIST 0xFFFF
+
+/* Capabilities */
+
+#define VBE_CAPABILITY_8BIT_DAC 0x0001
+#define VBE_CAPABILITY_NOT_VGA_COMPATIBLE 0x0002
+#define VBE_CAPABILITY_RAMDAC_USE_BLANK_BIT 0x0004
+#define VBE_CAPABILITY_STEREOSCOPIC_SUPPORT 0x0008
+#define VBE_CAPABILITY_STEREO_VIA_VESA_EVC 0x0010
+
+/* Mode Attributes */
+
+#define VBE_MODE_ATTRIBUTE_SUPPORTED 0x0001
+#define VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE 0x0002
+#define VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT 0x0004
+#define VBE_MODE_ATTRIBUTE_COLOR_MODE 0x0008
+#define VBE_MODE_ATTRIBUTE_GRAPHICS_MODE 0x0010
+#define VBE_MODE_ATTRIBUTE_NOT_VGA_COMPATIBLE 0x0020
+#define VBE_MODE_ATTRIBUTE_NO_VGA_COMPATIBLE_WINDOW 0x0040
+#define VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE 0x0080
+#define VBE_MODE_ATTRIBUTE_DOUBLE_SCAN_MODE 0x0100
+#define VBE_MODE_ATTRIBUTE_INTERLACE_MODE 0x0200
+#define VBE_MODE_ATTRIBUTE_HARDWARE_TRIPLE_BUFFER 0x0400
+#define VBE_MODE_ATTRIBUTE_HARDWARE_STEREOSCOPIC_DISPLAY 0x0800
+#define VBE_MODE_ATTRIBUTE_DUAL_DISPLAY_START_ADDRESS 0x1000
+
+#define VBE_MODE_ATTTRIBUTE_LFB_ONLY ( VBE_MODE_ATTRIBUTE_NO_VGA_COMPATIBLE_WINDOW | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE )
+
+/* Window attributes */
+
+#define VBE_WINDOW_ATTRIBUTE_RELOCATABLE 0x01
+#define VBE_WINDOW_ATTRIBUTE_READABLE 0x02
+#define VBE_WINDOW_ATTRIBUTE_WRITEABLE 0x04
+
+/* Memory model */
+
+#define VBE_MEMORYMODEL_TEXT_MODE 0x00
+#define VBE_MEMORYMODEL_CGA_GRAPHICS 0x01
+#define VBE_MEMORYMODEL_HERCULES_GRAPHICS 0x02
+#define VBE_MEMORYMODEL_PLANAR 0x03
+#define VBE_MEMORYMODEL_PACKED_PIXEL 0x04
+#define VBE_MEMORYMODEL_NON_CHAIN_4_256 0x05
+#define VBE_MEMORYMODEL_DIRECT_COLOR 0x06
+#define VBE_MEMORYMODEL_YUV 0x07
+
+/* DirectColorModeInfo */
+
+#define VBE_DIRECTCOLOR_COLOR_RAMP_PROGRAMMABLE 0x01
+#define VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE 0x02
+
+#endif
+++ /dev/null
-#ifndef __VBE_H
-#define __VBE_H
-
-#include "types.h" // u8
-
-#define VESA_SIGNATURE 0x41534556 // VESA
-#define VBE2_SIGNATURE 0x32454256 // VBE2
-
-struct vbe_info {
- u32 signature;
- u16 version;
- struct segoff_s oem_string;
- u32 capabilities;
- struct segoff_s video_mode;
- u16 total_memory;
- u16 oem_revision;
- struct segoff_s oem_vendor_string;
- struct segoff_s oem_product_string;
- struct segoff_s oem_revision_string;
- u8 reserved[222];
-} PACKED;
-
-struct vbe_mode_info {
- /* VBE */
- u16 mode_attributes;
- u8 winA_attributes;
- u8 winB_attributes;
- u16 win_granularity;
- u16 win_size;
- u16 winA_seg;
- u16 winB_seg;
- struct segoff_s win_func_ptr;
- u16 bytes_per_scanline;
- /* VBE 1.2 */
- u16 xres;
- u16 yres;
- u8 xcharsize;
- u8 ycharsize;
- u8 planes;
- u8 bits_per_pixel;
- u8 banks;
- u8 mem_model;
- u8 bank_size;
- u8 pages;
- u8 reserved0;
- /* Direct Color */
- u8 red_size;
- u8 red_pos;
- u8 green_size;
- u8 green_pos;
- u8 blue_size;
- u8 blue_pos;
- u8 alpha_size;
- u8 alpha_pos;
- u8 directcolor_info;
- /* VBE 2.0 */
- u32 phys_base;
- u32 reserved1;
- u16 reserved2;
- /* VBE 3.0 */
- u16 linear_bytes_per_scanline;
- u8 bank_pages;
- u8 linear_pages;
- u8 linear_red_size;
- u8 linear_red_pos;
- u8 linear_green_size;
- u8 linear_green_pos;
- u8 linear_blue_size;
- u8 linear_blue_pos;
- u8 linear_alpha_size;
- u8 linear_alpha_pos;
- u32 pixclock_max;
- u8 reserved[190];
-} PACKED;
-
-struct vbe_crtc_info {
- u16 horiz_total;
- u16 horiz_sync_start;
- u16 horiz_sync_end;
- u16 vert_total;
- u16 vert_sync_start;
- u16 vert_sync_end;
- u8 flags;
- u32 pixclock;
- u16 refresh_rate;
- u8 reserved[40];
-} PACKED;
-
-/* VBE Return Status Info */
-/* AL */
-#define VBE_RETURN_STATUS_SUPPORTED 0x4F
-#define VBE_RETURN_STATUS_UNSUPPORTED 0x00
-/* AH */
-#define VBE_RETURN_STATUS_SUCCESSFULL 0x00
-#define VBE_RETURN_STATUS_FAILED 0x01
-#define VBE_RETURN_STATUS_NOT_SUPPORTED 0x02
-#define VBE_RETURN_STATUS_INVALID 0x03
-
-/* VBE Mode Numbers */
-
-#define VBE_MODE_VESA_DEFINED 0x0100
-#define VBE_MODE_REFRESH_RATE_USE_CRTC 0x0800
-#define VBE_MODE_LINEAR_FRAME_BUFFER 0x4000
-#define VBE_MODE_PRESERVE_DISPLAY_MEMORY 0x8000
-
-#define VBE_VESA_MODE_END_OF_LIST 0xFFFF
-
-/* Capabilities */
-
-#define VBE_CAPABILITY_8BIT_DAC 0x0001
-#define VBE_CAPABILITY_NOT_VGA_COMPATIBLE 0x0002
-#define VBE_CAPABILITY_RAMDAC_USE_BLANK_BIT 0x0004
-#define VBE_CAPABILITY_STEREOSCOPIC_SUPPORT 0x0008
-#define VBE_CAPABILITY_STEREO_VIA_VESA_EVC 0x0010
-
-/* Mode Attributes */
-
-#define VBE_MODE_ATTRIBUTE_SUPPORTED 0x0001
-#define VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE 0x0002
-#define VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT 0x0004
-#define VBE_MODE_ATTRIBUTE_COLOR_MODE 0x0008
-#define VBE_MODE_ATTRIBUTE_GRAPHICS_MODE 0x0010
-#define VBE_MODE_ATTRIBUTE_NOT_VGA_COMPATIBLE 0x0020
-#define VBE_MODE_ATTRIBUTE_NO_VGA_COMPATIBLE_WINDOW 0x0040
-#define VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE 0x0080
-#define VBE_MODE_ATTRIBUTE_DOUBLE_SCAN_MODE 0x0100
-#define VBE_MODE_ATTRIBUTE_INTERLACE_MODE 0x0200
-#define VBE_MODE_ATTRIBUTE_HARDWARE_TRIPLE_BUFFER 0x0400
-#define VBE_MODE_ATTRIBUTE_HARDWARE_STEREOSCOPIC_DISPLAY 0x0800
-#define VBE_MODE_ATTRIBUTE_DUAL_DISPLAY_START_ADDRESS 0x1000
-
-#define VBE_MODE_ATTTRIBUTE_LFB_ONLY ( VBE_MODE_ATTRIBUTE_NO_VGA_COMPATIBLE_WINDOW | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE )
-
-/* Window attributes */
-
-#define VBE_WINDOW_ATTRIBUTE_RELOCATABLE 0x01
-#define VBE_WINDOW_ATTRIBUTE_READABLE 0x02
-#define VBE_WINDOW_ATTRIBUTE_WRITEABLE 0x04
-
-/* Memory model */
-
-#define VBE_MEMORYMODEL_TEXT_MODE 0x00
-#define VBE_MEMORYMODEL_CGA_GRAPHICS 0x01
-#define VBE_MEMORYMODEL_HERCULES_GRAPHICS 0x02
-#define VBE_MEMORYMODEL_PLANAR 0x03
-#define VBE_MEMORYMODEL_PACKED_PIXEL 0x04
-#define VBE_MEMORYMODEL_NON_CHAIN_4_256 0x05
-#define VBE_MEMORYMODEL_DIRECT_COLOR 0x06
-#define VBE_MEMORYMODEL_YUV 0x07
-
-/* DirectColorModeInfo */
-
-#define VBE_DIRECTCOLOR_COLOR_RAMP_PROGRAMMABLE 0x01
-#define VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE 0x02
-
-#endif
#include "hw/pci.h" // pci_config_readl
#include "hw/pci_regs.h" // PCI_BASE_ADDRESS_0
#include "output.h" // dprintf
+#include "std/vbe.h" // VBE_CAPABILITY_8BIT_DAC
#include "stdvga.h" // VGAREG_SEQU_ADDRESS
-#include "vbe.h" // VBE_CAPABILITY_8BIT_DAC
#include "vgabios.h" // struct vbe_modeinfo
#include "bregs.h" // struct bregs
#include "config.h" // CONFIG_*
#include "output.h" // dprintf
+#include "std/vbe.h" // struct vbe_info
#include "string.h" // memset_far
-#include "vbe.h" // struct vbe_info
#include "vgabios.h" // handle_104f
#include "vgahw.h" // vgahw_set_mode
#include "hw/pci_regs.h" // PCI_VENDOR_ID
#include "output.h" // dprintf
#include "std/optionrom.h" // struct pci_data
+#include "std/vbe.h" // VBE_RETURN_STATUS_FAILED
#include "stdvga.h" // stdvga_set_cursor_shape
#include "string.h" // memset_far
#include "util.h" // VERSION
-#include "vbe.h" // VBE_RETURN_STATUS_FAILED
#include "vgabios.h" // calc_page_size
#include "vgahw.h" // vgahw_set_mode