summaryrefslogtreecommitdiffstats
path: root/qemu/roms/seabios/vgasrc
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/seabios/vgasrc')
-rw-r--r--qemu/roms/seabios/vgasrc/Kconfig187
-rw-r--r--qemu/roms/seabios/vgasrc/bochsvga.c446
-rw-r--r--qemu/roms/seabios/vgasrc/bochsvga.h57
-rw-r--r--qemu/roms/seabios/vgasrc/cbvga.c193
-rw-r--r--qemu/roms/seabios/vgasrc/cbvga.h20
-rw-r--r--qemu/roms/seabios/vgasrc/clext.c627
-rw-r--r--qemu/roms/seabios/vgasrc/clext.h20
-rw-r--r--qemu/roms/seabios/vgasrc/geodevga.c433
-rw-r--r--qemu/roms/seabios/vgasrc/geodevga.h89
-rw-r--r--qemu/roms/seabios/vgasrc/stdvga.c479
-rw-r--r--qemu/roms/seabios/vgasrc/stdvga.h111
-rw-r--r--qemu/roms/seabios/vgasrc/stdvgaio.c185
-rw-r--r--qemu/roms/seabios/vgasrc/stdvgamodes.c523
-rw-r--r--qemu/roms/seabios/vgasrc/vbe.c426
-rw-r--r--qemu/roms/seabios/vgasrc/vgabios.c1182
-rw-r--r--qemu/roms/seabios/vgasrc/vgabios.h151
-rw-r--r--qemu/roms/seabios/vgasrc/vgaentry.S161
-rw-r--r--qemu/roms/seabios/vgasrc/vgafb.c695
-rw-r--r--qemu/roms/seabios/vgasrc/vgafonts.c785
-rw-r--r--qemu/roms/seabios/vgasrc/vgahw.h143
-rw-r--r--qemu/roms/seabios/vgasrc/vgainit.c196
-rw-r--r--qemu/roms/seabios/vgasrc/vgalayout.lds.S23
-rw-r--r--qemu/roms/seabios/vgasrc/vgaversion.c6
23 files changed, 0 insertions, 7138 deletions
diff --git a/qemu/roms/seabios/vgasrc/Kconfig b/qemu/roms/seabios/vgasrc/Kconfig
deleted file mode 100644
index f5098a4bd..000000000
--- a/qemu/roms/seabios/vgasrc/Kconfig
+++ /dev/null
@@ -1,187 +0,0 @@
-# Kconfig SeaBIOS VGA BIOS configuration
-
-menu "VGA ROM"
- choice
- prompt "VGA Hardware Type"
- default NO_VGABIOS
-
- config NO_VGABIOS
- bool "None"
- help
- Do not build a VGA BIOS.
-
- config VGA_STANDARD_VGA
- depends on QEMU
- bool "QEMU/Bochs Original IBM 256K VGA"
- select VGA_STDVGA_PORTS
- help
- Build basic VGA BIOS support (pre Super-VGA) for use
- on emulators.
-
- config VGA_CIRRUS
- depends on QEMU
- bool "QEMU/Bochs Cirrus SVGA"
- select VGA_STDVGA_PORTS
- help
- Build support for Cirrus VGA emulation found on QEMU
- and Bochs emulators. This is for emulators; it is not
- intended for use on real Cirrus hardware.
-
- config VGA_BOCHS
- depends on QEMU
- bool "QEMU/Bochs VBE SVGA"
- select VGA_STDVGA_PORTS
- help
- Build support for Bochs DISPI interface (a custom VBE
- protocol) found on QEMU and Bochs emulators.
-
- config VGA_GEODEGX2
- bool "GeodeGX2"
- select VGA_STDVGA_PORTS
- help
- Build support for Geode GX2 vga.
-
- config VGA_GEODELX
- bool "GeodeLX"
- select VGA_STDVGA_PORTS
- help
- Build support for Geode LX vga.
-
- config VGA_COREBOOT
- depends on COREBOOT
- bool "coreboot linear framebuffer"
- select VGA_EMULATE_TEXT
- help
- Build support for a vgabios wrapper around video
- devices initialized using coreboot native vga init.
-
- endchoice
-
- choice
- depends on VGA_BOCHS
- prompt "bochs vga variant"
- default VGA_BOCHS_STDVGA
-
- config VGA_BOCHS_STDVGA
- bool "qemu stdvga / bochs svga"
-
- config VGA_BOCHS_VMWARE
- bool "qemu vmware svga"
-
- config VGA_BOCHS_QXL
- bool "qemu qxl vga"
-
- config VGA_BOCHS_VIRTIO
- bool "qemu virtio vga"
-
- endchoice
-
- choice
- depends on VGA_GEODEGX2 || VGA_GEODELX
- prompt "Output Mode"
- default VGA_OUTPUT_CRT
-
- config VGA_OUTPUT_CRT
- bool "CRT"
- help
- Use CRT for output.
-
- config VGA_OUTPUT_PANEL
- bool "Flat Panel"
- help
- Use flat panel for output.
-
- config VGA_OUTPUT_CRT_PANEL
- bool "CRT and Flat Panel"
- help
- Use CRT and flat panel for output.
- endchoice
-
- config BUILD_VGABIOS
- bool
- default !NO_VGABIOS
-
- config VGA_STDVGA_PORTS
- bool
- config VGA_EMULATE_TEXT
- bool
- help
- Support emulating text mode features when only a
- framebuffer is available.
-
- config VGA_FIXUP_ASM
- depends on BUILD_VGABIOS
- bool "Fixup assembler to work with broken emulators"
- default y
- help
- This option will cause the build to attempt to avoid
- certain x86 machine instructions that are known to confuse
- some emulators. In particular, it works around
- deficiencies in the Windows vgabios emulator and the
- x86emu vgabios emulator (frequently used in Xorg).
-
- config VGA_ALLOCATE_EXTRA_STACK
- depends on BUILD_VGABIOS
- bool "Allocate an internal stack for 16bit interrupt entry point"
- default y
- help
- Attempt to allocate (via BIOS PMM call) an internal stack
- for the legacy 16bit 0x10 interrupt entry point. This
- reduces the amount of space on the caller's stack that
- SeaVGABIOS uses.
-
- config VGA_EXTRA_STACK_SIZE
- int
- default 512
-
- config VGA_VBE
- depends on BUILD_VGABIOS
- bool "Video BIOS Extensions (VBE)"
- default y
- help
- Support VBE.
-
- config VGA_PCI
- depends on BUILD_VGABIOS && !VGA_COREBOOT
- bool "PCI ROM Headers"
- default y
- help
- Build PCI ROM headers so the vga rom can be extracted from
- a PCI device.
-
- config OVERRIDE_PCI_ID
- depends on VGA_PCI
- bool "Override PCI Vendor and Device IDs"
- help
- Specify specific values for the PCI Vendor and Device IDs.
-
- config VGA_VID
- depends on VGA_PCI
- hex
- prompt "PCI Vendor ID" if OVERRIDE_PCI_ID
- default 0x1013 if VGA_CIRRUS
- default 0x1234 if VGA_BOCHS_STDVGA
- default 0x15ad if VGA_BOCHS_VMWARE
- default 0x1b36 if VGA_BOCHS_QXL
- default 0x1af4 if VGA_BOCHS_VIRTIO
- default 0x100b if VGA_GEODEGX2
- default 0x1022 if VGA_GEODELX
- default 0x0000
- help
- Vendor ID for the PCI ROM
-
- config VGA_DID
- depends on VGA_PCI
- hex
- prompt "PCI Vendor ID" if OVERRIDE_PCI_ID
- default 0x00b8 if VGA_CIRRUS
- default 0x1111 if VGA_BOCHS_STDVGA
- default 0x0405 if VGA_BOCHS_VMWARE
- default 0x0100 if VGA_BOCHS_QXL
- default 0x1050 if VGA_BOCHS_VIRTIO
- default 0x0030 if VGA_GEODEGX2
- default 0x2081 if VGA_GEODELX
- default 0x0000
- help
- Device ID for the PCI ROM
-endmenu
diff --git a/qemu/roms/seabios/vgasrc/bochsvga.c b/qemu/roms/seabios/vgasrc/bochsvga.c
deleted file mode 100644
index aa82fc5a5..000000000
--- a/qemu/roms/seabios/vgasrc/bochsvga.c
+++ /dev/null
@@ -1,446 +0,0 @@
-// Bochs VGA interface to extended "VBE" modes
-//
-// Copyright (C) 2012 Kevin O'Connor <kevin@koconnor.net>
-// Copyright (C) 2011 Julian Pidancet <julian.pidancet@citrix.com>
-// Copyright (C) 2002 Jeroen Janssen
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // GET_GLOBAL
-#include "bochsvga.h" // bochsvga_set_mode
-#include "config.h" // CONFIG_*
-#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 "vgabios.h" // struct vbe_modeinfo
-#include "x86.h" // outw
-
-
-/****************************************************************
- * Mode tables
- ****************************************************************/
-
-static struct bochsvga_mode
-{
- u16 mode;
- struct vgamode_s info;
-} bochsvga_modes[] VAR16 = {
- /* standard modes */
- { 0x100, { MM_PACKED, 640, 400, 8, 8, 16, SEG_GRAPH } },
- { 0x101, { MM_PACKED, 640, 480, 8, 8, 16, SEG_GRAPH } },
- { 0x102, { MM_PLANAR, 800, 600, 4, 8, 16, SEG_GRAPH } },
- { 0x103, { MM_PACKED, 800, 600, 8, 8, 16, SEG_GRAPH } },
- { 0x104, { MM_PLANAR, 1024, 768, 4, 8, 16, SEG_GRAPH } },
- { 0x105, { MM_PACKED, 1024, 768, 8, 8, 16, SEG_GRAPH } },
- { 0x106, { MM_PLANAR, 1280, 1024, 4, 8, 16, SEG_GRAPH } },
- { 0x107, { MM_PACKED, 1280, 1024, 8, 8, 16, SEG_GRAPH } },
- { 0x10D, { MM_DIRECT, 320, 200, 15, 8, 16, SEG_GRAPH } },
- { 0x10E, { MM_DIRECT, 320, 200, 16, 8, 16, SEG_GRAPH } },
- { 0x10F, { MM_DIRECT, 320, 200, 24, 8, 16, SEG_GRAPH } },
- { 0x110, { MM_DIRECT, 640, 480, 15, 8, 16, SEG_GRAPH } },
- { 0x111, { MM_DIRECT, 640, 480, 16, 8, 16, SEG_GRAPH } },
- { 0x112, { MM_DIRECT, 640, 480, 24, 8, 16, SEG_GRAPH } },
- { 0x113, { MM_DIRECT, 800, 600, 15, 8, 16, SEG_GRAPH } },
- { 0x114, { MM_DIRECT, 800, 600, 16, 8, 16, SEG_GRAPH } },
- { 0x115, { MM_DIRECT, 800, 600, 24, 8, 16, SEG_GRAPH } },
- { 0x116, { MM_DIRECT, 1024, 768, 15, 8, 16, SEG_GRAPH } },
- { 0x117, { MM_DIRECT, 1024, 768, 16, 8, 16, SEG_GRAPH } },
- { 0x118, { MM_DIRECT, 1024, 768, 24, 8, 16, SEG_GRAPH } },
- { 0x119, { MM_DIRECT, 1280, 1024, 15, 8, 16, SEG_GRAPH } },
- { 0x11A, { MM_DIRECT, 1280, 1024, 16, 8, 16, SEG_GRAPH } },
- { 0x11B, { MM_DIRECT, 1280, 1024, 24, 8, 16, SEG_GRAPH } },
- { 0x11C, { MM_PACKED, 1600, 1200, 8, 8, 16, SEG_GRAPH } },
- { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, SEG_GRAPH } },
- { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, SEG_GRAPH } },
- { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, SEG_GRAPH } },
- /* BOCHS modes */
- { 0x140, { MM_DIRECT, 320, 200, 32, 8, 16, SEG_GRAPH } },
- { 0x141, { MM_DIRECT, 640, 400, 32, 8, 16, SEG_GRAPH } },
- { 0x142, { MM_DIRECT, 640, 480, 32, 8, 16, SEG_GRAPH } },
- { 0x143, { MM_DIRECT, 800, 600, 32, 8, 16, SEG_GRAPH } },
- { 0x144, { MM_DIRECT, 1024, 768, 32, 8, 16, SEG_GRAPH } },
- { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
- { 0x146, { MM_PACKED, 320, 200, 8, 8, 16, SEG_GRAPH } },
- { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
- { 0x148, { MM_PACKED, 1152, 864, 8, 8, 16, SEG_GRAPH } },
- { 0x149, { MM_DIRECT, 1152, 864, 15, 8, 16, SEG_GRAPH } },
- { 0x14a, { MM_DIRECT, 1152, 864, 16, 8, 16, SEG_GRAPH } },
- { 0x14b, { MM_DIRECT, 1152, 864, 24, 8, 16, SEG_GRAPH } },
- { 0x14c, { MM_DIRECT, 1152, 864, 32, 8, 16, SEG_GRAPH } },
- { 0x175, { MM_DIRECT, 1280, 768, 16, 8, 16, SEG_GRAPH } },
- { 0x176, { MM_DIRECT, 1280, 768, 24, 8, 16, SEG_GRAPH } },
- { 0x177, { MM_DIRECT, 1280, 768, 32, 8, 16, SEG_GRAPH } },
- { 0x178, { MM_DIRECT, 1280, 800, 16, 8, 16, SEG_GRAPH } },
- { 0x179, { MM_DIRECT, 1280, 800, 24, 8, 16, SEG_GRAPH } },
- { 0x17a, { MM_DIRECT, 1280, 800, 32, 8, 16, SEG_GRAPH } },
- { 0x17b, { MM_DIRECT, 1280, 960, 16, 8, 16, SEG_GRAPH } },
- { 0x17c, { MM_DIRECT, 1280, 960, 24, 8, 16, SEG_GRAPH } },
- { 0x17d, { MM_DIRECT, 1280, 960, 32, 8, 16, SEG_GRAPH } },
- { 0x17e, { MM_DIRECT, 1440, 900, 16, 8, 16, SEG_GRAPH } },
- { 0x17f, { MM_DIRECT, 1440, 900, 24, 8, 16, SEG_GRAPH } },
- { 0x180, { MM_DIRECT, 1440, 900, 32, 8, 16, SEG_GRAPH } },
- { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, SEG_GRAPH } },
- { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, SEG_GRAPH } },
- { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
- { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, SEG_GRAPH } },
- { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, SEG_GRAPH } },
- { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
- { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, SEG_GRAPH } },
- { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, SEG_GRAPH } },
- { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
- { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, SEG_GRAPH } },
- { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, SEG_GRAPH } },
- { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
- { 0x18d, { MM_DIRECT, 1280, 720, 16, 8, 16, SEG_GRAPH } },
- { 0x18e, { MM_DIRECT, 1280, 720, 24, 8, 16, SEG_GRAPH } },
- { 0x18f, { MM_DIRECT, 1280, 720, 32, 8, 16, SEG_GRAPH } },
- { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, SEG_GRAPH } },
- { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, SEG_GRAPH } },
- { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
-};
-
-static int dispi_found VAR16 = 0;
-
-static int is_bochsvga_mode(struct vgamode_s *vmode_g)
-{
- return (vmode_g >= &bochsvga_modes[0].info
- && vmode_g <= &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)-1].info);
-}
-
-struct vgamode_s *bochsvga_find_mode(int mode)
-{
- struct bochsvga_mode *m = bochsvga_modes;
- if (GET_GLOBAL(dispi_found))
- for (; m < &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)]; m++)
- if (GET_GLOBAL(m->mode) == mode)
- return &m->info;
- return stdvga_find_mode(mode);
-}
-
-void
-bochsvga_list_modes(u16 seg, u16 *dest, u16 *last)
-{
- struct bochsvga_mode *m = bochsvga_modes;
- if (GET_GLOBAL(dispi_found)) {
- for (; m < &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)] && dest<last; m++) {
- u16 mode = GET_GLOBAL(m->mode);
- if (mode == 0xffff)
- continue;
- SET_FARVAR(seg, *dest, mode);
- dest++;
- }
- }
- stdvga_list_modes(seg, dest, last);
-}
-
-
-/****************************************************************
- * Helper functions
- ****************************************************************/
-
-static inline u16 dispi_read(u16 reg)
-{
- outw(reg, VBE_DISPI_IOPORT_INDEX);
- return inw(VBE_DISPI_IOPORT_DATA);
-}
-static inline void dispi_write(u16 reg, u16 val)
-{
- outw(reg, VBE_DISPI_IOPORT_INDEX);
- outw(val, VBE_DISPI_IOPORT_DATA);
-}
-
-static u8
-bochsvga_dispi_enabled(void)
-{
- if (!GET_GLOBAL(dispi_found))
- return 0;
- u16 en = dispi_read(VBE_DISPI_INDEX_ENABLE);
- if (!(en & VBE_DISPI_ENABLED))
- return 0;
- return 1;
-}
-
-int
-bochsvga_get_window(struct vgamode_s *vmode_g, int window)
-{
- if (!bochsvga_dispi_enabled())
- return stdvga_get_window(vmode_g, window);
- if (window != 0)
- return -1;
- return dispi_read(VBE_DISPI_INDEX_BANK);
-}
-
-int
-bochsvga_set_window(struct vgamode_s *vmode_g, int window, int val)
-{
- if (!bochsvga_dispi_enabled())
- return stdvga_set_window(vmode_g, window, val);
- if (window != 0)
- return -1;
- dispi_write(VBE_DISPI_INDEX_BANK, val);
- if (dispi_read(VBE_DISPI_INDEX_BANK) != val)
- return -1;
- return 0;
-}
-
-int
-bochsvga_get_linelength(struct vgamode_s *vmode_g)
-{
- if (!bochsvga_dispi_enabled())
- return stdvga_get_linelength(vmode_g);
- return dispi_read(VBE_DISPI_INDEX_VIRT_WIDTH) * vga_bpp(vmode_g) / 8;
-}
-
-int
-bochsvga_set_linelength(struct vgamode_s *vmode_g, int val)
-{
- stdvga_set_linelength(vmode_g, val);
- if (bochsvga_dispi_enabled()) {
- int pixels = (val * 8) / vga_bpp(vmode_g);
- dispi_write(VBE_DISPI_INDEX_VIRT_WIDTH, pixels);
- }
- return 0;
-}
-
-int
-bochsvga_get_displaystart(struct vgamode_s *vmode_g)
-{
- if (!bochsvga_dispi_enabled())
- return stdvga_get_displaystart(vmode_g);
- int bpp = vga_bpp(vmode_g);
- int linelength = dispi_read(VBE_DISPI_INDEX_VIRT_WIDTH) * bpp / 8;
- int x = dispi_read(VBE_DISPI_INDEX_X_OFFSET);
- int y = dispi_read(VBE_DISPI_INDEX_Y_OFFSET);
- return x * bpp / 8 + linelength * y;
-}
-
-int
-bochsvga_set_displaystart(struct vgamode_s *vmode_g, int val)
-{
- stdvga_set_displaystart(vmode_g, val);
- if (bochsvga_dispi_enabled()) {
- int bpp = vga_bpp(vmode_g);
- int linelength = dispi_read(VBE_DISPI_INDEX_VIRT_WIDTH) * bpp / 8;
- if (!linelength)
- return 0;
- dispi_write(VBE_DISPI_INDEX_X_OFFSET, (val % linelength) * 8 / bpp);
- dispi_write(VBE_DISPI_INDEX_Y_OFFSET, val / linelength);
- }
- return 0;
-}
-
-int
-bochsvga_get_dacformat(struct vgamode_s *vmode_g)
-{
- if (!bochsvga_dispi_enabled())
- return stdvga_get_dacformat(vmode_g);
- u16 en = dispi_read(VBE_DISPI_INDEX_ENABLE);
- return (en & VBE_DISPI_8BIT_DAC) ? 8 : 6;
-}
-
-int
-bochsvga_set_dacformat(struct vgamode_s *vmode_g, int val)
-{
- if (!bochsvga_dispi_enabled())
- return stdvga_set_dacformat(vmode_g, val);
- u16 en = dispi_read(VBE_DISPI_INDEX_ENABLE);
- if (val == 6)
- en &= ~VBE_DISPI_8BIT_DAC;
- else if (val == 8)
- en |= VBE_DISPI_8BIT_DAC;
- else
- return -1;
- dispi_write(VBE_DISPI_INDEX_ENABLE, en);
- return 0;
-}
-
-static int
-bochsvga_save_state(u16 seg, u16 *info)
-{
- u16 en = dispi_read(VBE_DISPI_INDEX_ENABLE);
- SET_FARVAR(seg, *info, en);
- info++;
- if (!(en & VBE_DISPI_ENABLED))
- return 0;
- int i;
- for (i = VBE_DISPI_INDEX_XRES; i <= VBE_DISPI_INDEX_Y_OFFSET; i++)
- if (i != VBE_DISPI_INDEX_ENABLE) {
- u16 v = dispi_read(i);
- SET_FARVAR(seg, *info, v);
- info++;
- }
- return 0;
-}
-
-static int
-bochsvga_restore_state(u16 seg, u16 *info)
-{
- u16 en = GET_FARVAR(seg, *info);
- info++;
- if (!(en & VBE_DISPI_ENABLED)) {
- dispi_write(VBE_DISPI_INDEX_ENABLE, en);
- return 0;
- }
- int i;
- for (i = VBE_DISPI_INDEX_XRES; i <= VBE_DISPI_INDEX_Y_OFFSET; i++)
- if (i == VBE_DISPI_INDEX_ENABLE) {
- dispi_write(i, en);
- } else {
- dispi_write(i, GET_FARVAR(seg, *info));
- info++;
- }
- return 0;
-}
-
-int
-bochsvga_save_restore(int cmd, u16 seg, void *data)
-{
- int ret = stdvga_save_restore(cmd, seg, data);
- if (ret < 0 || !(cmd & SR_REGISTERS) || !GET_GLOBAL(dispi_found))
- return ret;
-
- u16 *info = (data + ret);
- if (cmd & SR_SAVE)
- bochsvga_save_state(seg, info);
- if (cmd & SR_RESTORE)
- bochsvga_restore_state(seg, info);
- return ret + (VBE_DISPI_INDEX_Y_OFFSET-VBE_DISPI_INDEX_XRES+1)*sizeof(u16);
-}
-
-
-/****************************************************************
- * Mode setting
- ****************************************************************/
-
-int
-bochsvga_set_mode(struct vgamode_s *vmode_g, int flags)
-{
- if (GET_GLOBAL(dispi_found))
- dispi_write(VBE_DISPI_INDEX_ENABLE, VBE_DISPI_DISABLED);
- if (! is_bochsvga_mode(vmode_g))
- return stdvga_set_mode(vmode_g, flags);
- if (!GET_GLOBAL(dispi_found))
- return -1;
-
- u8 memmodel = GET_GLOBAL(vmode_g->memmodel);
- if (memmodel == MM_PLANAR)
- stdvga_set_mode(stdvga_find_mode(0x6a), 0);
- if (memmodel == MM_PACKED && !(flags & MF_NOPALETTE))
- stdvga_set_packed_palette();
-
- dispi_write(VBE_DISPI_INDEX_BPP, GET_GLOBAL(vmode_g->depth));
- u16 width = GET_GLOBAL(vmode_g->width);
- u16 height = GET_GLOBAL(vmode_g->height);
- dispi_write(VBE_DISPI_INDEX_XRES, width);
- dispi_write(VBE_DISPI_INDEX_YRES, height);
- dispi_write(VBE_DISPI_INDEX_BANK, 0);
- u16 bf = ((flags & MF_NOCLEARMEM ? VBE_DISPI_NOCLEARMEM : 0)
- | (flags & MF_LINEARFB ? VBE_DISPI_LFB_ENABLED : 0));
- dispi_write(VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED | bf);
-
- /* VGA compat setup */
- u16 crtc_addr = VGAREG_VGA_CRTC_ADDRESS;
- stdvga_crtc_write(crtc_addr, 0x11, 0x00);
- stdvga_crtc_write(crtc_addr, 0x01, width / 8 - 1);
- stdvga_set_linelength(vmode_g, width);
- stdvga_crtc_write(crtc_addr, 0x12, height - 1);
- u8 v = 0;
- if ((height - 1) & 0x0100)
- v |= 0x02;
- if ((height - 1) & 0x0200)
- v |= 0x40;
- stdvga_crtc_mask(crtc_addr, 0x07, 0x42, v);
-
- stdvga_crtc_write(crtc_addr, 0x09, 0x00);
- stdvga_crtc_mask(crtc_addr, 0x17, 0x00, 0x03);
- stdvga_attr_mask(0x10, 0x00, 0x01);
- stdvga_grdc_write(0x06, 0x05);
- stdvga_sequ_write(0x02, 0x0f);
- if (memmodel != MM_PLANAR) {
- stdvga_crtc_mask(crtc_addr, 0x14, 0x00, 0x40);
- stdvga_attr_mask(0x10, 0x00, 0x40);
- stdvga_sequ_mask(0x04, 0x00, 0x08);
- stdvga_grdc_mask(0x05, 0x20, 0x40);
- }
- stdvga_attrindex_write(0x20);
-
- return 0;
-}
-
-
-/****************************************************************
- * Init
- ****************************************************************/
-
-int
-bochsvga_setup(void)
-{
- int ret = stdvga_setup();
- if (ret)
- return ret;
-
- /* Sanity checks */
- dispi_write(VBE_DISPI_INDEX_ID, VBE_DISPI_ID0);
- if (dispi_read(VBE_DISPI_INDEX_ID) != VBE_DISPI_ID0) {
- dprintf(1, "No VBE DISPI interface detected, falling back to stdvga\n");
- return 0;
- }
-
- dispi_write(VBE_DISPI_INDEX_ID, VBE_DISPI_ID5);
- SET_VGA(dispi_found, 1);
-
- if (GET_GLOBAL(HaveRunInit))
- return 0;
-
- u32 lfb_addr = VBE_DISPI_LFB_PHYSICAL_ADDRESS;
- int bdf = GET_GLOBAL(VgaBDF);
- if (CONFIG_VGA_PCI && bdf >= 0) {
- u16 vendor = pci_config_readw(bdf, PCI_VENDOR_ID);
- int barid;
- switch (vendor) {
- case 0x15ad: /* qemu vmware vga */
- barid = 1;
- break;
- default: /* stdvga, qxl, virtio */
- barid = 0;
- break;
- }
- u32 bar = pci_config_readl(bdf, PCI_BASE_ADDRESS_0 + barid * 4);
- lfb_addr = bar & PCI_BASE_ADDRESS_MEM_MASK;
- dprintf(1, "VBE DISPI: bdf %02x:%02x.%x, bar %d\n", pci_bdf_to_bus(bdf)
- , pci_bdf_to_dev(bdf), pci_bdf_to_fn(bdf), barid);
- }
-
- SET_VGA(VBE_framebuffer, lfb_addr);
- u32 totalmem = dispi_read(VBE_DISPI_INDEX_VIDEO_MEMORY_64K) * 64 * 1024;
- SET_VGA(VBE_total_memory, totalmem);
- SET_VGA(VBE_win_granularity, 64);
- SET_VGA(VBE_capabilities, VBE_CAPABILITY_8BIT_DAC);
-
- dprintf(1, "VBE DISPI: lfb_addr=%x, size %d MB\n",
- lfb_addr, totalmem >> 20);
-
- // Validate modes
- u16 en = dispi_read(VBE_DISPI_INDEX_ENABLE);
- dispi_write(VBE_DISPI_INDEX_ENABLE, en | VBE_DISPI_GETCAPS);
- u16 max_xres = dispi_read(VBE_DISPI_INDEX_XRES);
- u16 max_bpp = dispi_read(VBE_DISPI_INDEX_BPP);
- dispi_write(VBE_DISPI_INDEX_ENABLE, en);
- struct bochsvga_mode *m = bochsvga_modes;
- for (; m < &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)]; m++) {
- u16 width = GET_GLOBAL(m->info.width);
- u16 height = GET_GLOBAL(m->info.height);
- u8 depth = GET_GLOBAL(m->info.depth);
- u32 mem = (height * DIV_ROUND_UP(width * vga_bpp(&m->info), 8)
- * stdvga_vram_ratio(&m->info));
-
- if (width > max_xres || depth > max_bpp || mem > totalmem) {
- dprintf(1, "Removing mode %x\n", GET_GLOBAL(m->mode));
- SET_VGA(m->mode, 0xffff);
- }
- }
-
- return 0;
-}
diff --git a/qemu/roms/seabios/vgasrc/bochsvga.h b/qemu/roms/seabios/vgasrc/bochsvga.h
deleted file mode 100644
index ae5f75db2..000000000
--- a/qemu/roms/seabios/vgasrc/bochsvga.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef __BOCHSVGA_H
-#define __BOCHSVGA_H
-
-#include "types.h" // u8
-
-#define VBE_DISPI_BANK_ADDRESS 0xA0000
-#define VBE_DISPI_BANK_SIZE_KB 64
-
-#define VBE_DISPI_MAX_XRES 2560
-#define VBE_DISPI_MAX_YRES 1600
-
-#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_INDEX_VIDEO_MEMORY_64K 0xa
-
-#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_ID5 0xB0C5
-
-#define VBE_DISPI_DISABLED 0x00
-#define VBE_DISPI_ENABLED 0x01
-#define VBE_DISPI_GETCAPS 0x02
-#define VBE_DISPI_8BIT_DAC 0x20
-#define VBE_DISPI_LFB_ENABLED 0x40
-#define VBE_DISPI_NOCLEARMEM 0x80
-
-#define VBE_DISPI_LFB_PHYSICAL_ADDRESS 0xE0000000
-
-struct vgamode_s *bochsvga_find_mode(int mode);
-void bochsvga_list_modes(u16 seg, u16 *dest, u16 *last);
-int bochsvga_get_window(struct vgamode_s *vmode_g, int window);
-int bochsvga_set_window(struct vgamode_s *vmode_g, int window, int val);
-int bochsvga_get_linelength(struct vgamode_s *vmode_g);
-int bochsvga_set_linelength(struct vgamode_s *vmode_g, int val);
-int bochsvga_get_displaystart(struct vgamode_s *vmode_g);
-int bochsvga_set_displaystart(struct vgamode_s *vmode_g, int val);
-int bochsvga_get_dacformat(struct vgamode_s *vmode_g);
-int bochsvga_set_dacformat(struct vgamode_s *vmode_g, int val);
-int bochsvga_save_restore(int cmd, u16 seg, void *data);
-int bochsvga_set_mode(struct vgamode_s *vmode_g, int flags);
-int bochsvga_setup(void);
-
-#endif // bochsvga.h
diff --git a/qemu/roms/seabios/vgasrc/cbvga.c b/qemu/roms/seabios/vgasrc/cbvga.c
deleted file mode 100644
index 1cfb9d377..000000000
--- a/qemu/roms/seabios/vgasrc/cbvga.c
+++ /dev/null
@@ -1,193 +0,0 @@
-// Simple framebuffer vgabios for use with coreboot native vga init.
-//
-// Copyright (C) 2014 Kevin O'Connor <kevin@koconnor.net>
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // GET_BDA
-#include "cbvga.h" // cbvga_setup
-#include "output.h" // dprintf
-#include "stdvga.h" // SEG_CTEXT
-#include "string.h" // memset16_far
-#include "util.h" // find_cb_table
-#include "vgabios.h" // VGAREG_*
-
-static int CBmode VAR16;
-static struct vgamode_s CBmodeinfo VAR16;
-static struct vgamode_s CBemulinfo VAR16;
-static u32 CBlinelength VAR16;
-
-struct vgamode_s *cbvga_find_mode(int mode)
-{
- if (mode == GET_GLOBAL(CBmode))
- return &CBmodeinfo;
- if (mode == 0x03)
- return &CBemulinfo;
- return NULL;
-}
-
-void
-cbvga_list_modes(u16 seg, u16 *dest, u16 *last)
-{
- if (dest<last) {
- SET_FARVAR(seg, *dest, GET_GLOBAL(CBmode));
- dest++;
- }
- SET_FARVAR(seg, *dest, 0xffff);
-}
-
-int
-cbvga_get_window(struct vgamode_s *vmode_g, int window)
-{
- return -1;
-}
-
-int
-cbvga_set_window(struct vgamode_s *vmode_g, int window, int val)
-{
- return -1;
-}
-
-int
-cbvga_get_linelength(struct vgamode_s *vmode_g)
-{
- return GET_GLOBAL(CBlinelength);
-}
-
-int
-cbvga_set_linelength(struct vgamode_s *vmode_g, int val)
-{
- return -1;
-}
-
-int
-cbvga_get_displaystart(struct vgamode_s *vmode_g)
-{
- return 0;
-}
-
-int
-cbvga_set_displaystart(struct vgamode_s *vmode_g, int val)
-{
- return -1;
-}
-
-int
-cbvga_get_dacformat(struct vgamode_s *vmode_g)
-{
- return -1;
-}
-
-int
-cbvga_set_dacformat(struct vgamode_s *vmode_g, int val)
-{
- return -1;
-}
-
-int
-cbvga_save_restore(int cmd, u16 seg, void *data)
-{
- if (cmd & (SR_HARDWARE|SR_DAC|SR_REGISTERS))
- return -1;
- return bda_save_restore(cmd, seg, data);
-}
-
-int
-cbvga_set_mode(struct vgamode_s *vmode_g, int flags)
-{
- u8 emul = vmode_g == &CBemulinfo || GET_GLOBAL(CBmode) == 0x03;
- MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
- if (!(flags & MF_NOCLEARMEM)) {
- if (GET_GLOBAL(CBmodeinfo.memmodel) == MM_TEXT) {
- memset16_far(SEG_CTEXT, (void*)0, 0x0720, 80*25*2);
- return 0;
- }
- struct gfx_op op;
- init_gfx_op(&op, vmode_g);
- op.x = op.y = 0;
- op.xlen = GET_GLOBAL(CBmodeinfo.width);
- op.ylen = GET_GLOBAL(CBmodeinfo.height);
- op.op = GO_MEMSET;
- handle_gfx_op(&op);
- }
- return 0;
-}
-
-#define CB_TAG_FRAMEBUFFER 0x0012
-struct cb_framebuffer {
- u32 tag;
- u32 size;
-
- u64 physical_address;
- u32 x_resolution;
- u32 y_resolution;
- u32 bytes_per_line;
- u8 bits_per_pixel;
- u8 red_mask_pos;
- u8 red_mask_size;
- u8 green_mask_pos;
- u8 green_mask_size;
- u8 blue_mask_pos;
- u8 blue_mask_size;
- u8 reserved_mask_pos;
- u8 reserved_mask_size;
-};
-
-int
-cbvga_setup(void)
-{
- dprintf(1, "coreboot vga init\n");
-
- if (GET_GLOBAL(HaveRunInit))
- return 0;
-
- struct cb_header *cbh = find_cb_table();
- if (!cbh) {
- dprintf(1, "Unable to find coreboot table\n");
- return -1;
- }
- struct cb_framebuffer *cbfb = find_cb_subtable(cbh, CB_TAG_FRAMEBUFFER);
- if (!cbfb) {
- // Assume there is an EGA text framebuffer.
- dprintf(1, "Did not find coreboot framebuffer - assuming EGA text\n");
- SET_VGA(CBmode, 0x03);
- SET_VGA(CBlinelength, 80*2);
- SET_VGA(CBmodeinfo.memmodel, MM_TEXT);
- SET_VGA(CBmodeinfo.width, 80);
- SET_VGA(CBmodeinfo.height, 25);
- SET_VGA(CBmodeinfo.depth, 4);
- SET_VGA(CBmodeinfo.cwidth, 9);
- SET_VGA(CBmodeinfo.cheight, 16);
- SET_VGA(CBmodeinfo.sstart, SEG_CTEXT);
- return 0;
- }
-
- u64 addr = GET_FARVAR(0, cbfb->physical_address);
- u8 bpp = GET_FARVAR(0, cbfb->bits_per_pixel);
- u32 xlines = GET_FARVAR(0, cbfb->x_resolution);
- u32 ylines = GET_FARVAR(0, cbfb->y_resolution);
- u32 linelength = GET_FARVAR(0, cbfb->bytes_per_line);
- dprintf(1, "Found FB @ %llx %dx%d with %d bpp (%d stride)\n"
- , addr, xlines, ylines, bpp, linelength);
-
- if (!addr || addr > 0xffffffff
- || (bpp != 15 && bpp != 16 && bpp != 24 && bpp != 32)) {
- dprintf(1, "Unable to use FB\n");
- return -1;
- }
-
- SET_VGA(CBmode, 0x140);
- SET_VGA(VBE_framebuffer, addr);
- SET_VGA(VBE_total_memory, linelength * ylines);
- SET_VGA(CBlinelength, linelength);
- SET_VGA(CBmodeinfo.memmodel, MM_DIRECT);
- SET_VGA(CBmodeinfo.width, xlines);
- SET_VGA(CBmodeinfo.height, ylines);
- SET_VGA(CBmodeinfo.depth, bpp);
- SET_VGA(CBmodeinfo.cwidth, 8);
- SET_VGA(CBmodeinfo.cheight, 16);
- memcpy_far(get_global_seg(), &CBemulinfo
- , get_global_seg(), &CBmodeinfo, sizeof(CBemulinfo));
-
- return 0;
-}
diff --git a/qemu/roms/seabios/vgasrc/cbvga.h b/qemu/roms/seabios/vgasrc/cbvga.h
deleted file mode 100644
index fb892c85b..000000000
--- a/qemu/roms/seabios/vgasrc/cbvga.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __CBVGA_H
-#define __CBVGA_H
-
-#include "types.h" // u16
-
-struct vgamode_s *cbvga_find_mode(int mode);
-void cbvga_list_modes(u16 seg, u16 *dest, u16 *last);
-int cbvga_get_window(struct vgamode_s *vmode_g, int window);
-int cbvga_set_window(struct vgamode_s *vmode_g, int window, int val);
-int cbvga_get_linelength(struct vgamode_s *vmode_g);
-int cbvga_set_linelength(struct vgamode_s *vmode_g, int val);
-int cbvga_get_displaystart(struct vgamode_s *vmode_g);
-int cbvga_set_displaystart(struct vgamode_s *vmode_g, int val);
-int cbvga_get_dacformat(struct vgamode_s *vmode_g);
-int cbvga_set_dacformat(struct vgamode_s *vmode_g, int val);
-int cbvga_save_restore(int cmd, u16 seg, void *data);
-int cbvga_set_mode(struct vgamode_s *vmode_g, int flags);
-int cbvga_setup(void);
-
-#endif // cbvga.h
diff --git a/qemu/roms/seabios/vgasrc/clext.c b/qemu/roms/seabios/vgasrc/clext.c
deleted file mode 100644
index fc5b42f62..000000000
--- a/qemu/roms/seabios/vgasrc/clext.c
+++ /dev/null
@@ -1,627 +0,0 @@
-// QEMU Cirrus CLGD 54xx VGABIOS Extension.
-//
-// Copyright (C) 2009 Kevin O'Connor <kevin@koconnor.net>
-// Copyright (c) 2004 Makoto Suzuki (suzu)
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // GET_GLOBAL
-#include "bregs.h" // struct bregs
-#include "clext.h" // clext_setup
-#include "hw/pci.h" // pci_config_readl
-#include "hw/pci_regs.h" // PCI_BASE_ADDRESS_0
-#include "output.h" // dprintf
-#include "stdvga.h" // VGAREG_SEQU_ADDRESS
-#include "string.h" // memset16_far
-#include "vgabios.h" // VBE_VENDOR_STRING
-
-
-/****************************************************************
- * Cirrus mode tables
- ****************************************************************/
-
-/* VGA */
-static u16 cseq_vga[] VAR16 = {0x0007,0xffff};
-static u16 cgraph_vga[] VAR16 = {0x0009,0x000a,0x000b,0xffff};
-static u16 ccrtc_vga[] VAR16 = {0x001a,0x001b,0x001d,0xffff};
-
-/* extensions */
-static u16 cgraph_svgacolor[] VAR16 = {
- 0x0000,0x0001,0x0002,0x0003,0x0004,0x4005,0x0506,0x0f07,0xff08,
- 0x0009,0x000a,0x000b,
- 0xffff
-};
-/* 640x480x8 */
-static u16 cseq_640x480x8[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1107,
- 0x580b,0x580c,0x580d,0x580e,
- 0x0412,0x0013,0x2017,
- 0x331b,0x331c,0x331d,0x331e,
- 0xffff
-};
-static u16 ccrtc_640x480x8[] VAR16 = {
- 0x2c11,
- 0x5f00,0x4f01,0x4f02,0x8003,0x5204,0x1e05,0x0b06,0x3e07,
- 0x4009,0x000c,0x000d,
- 0xea10,0xdf12,0x5013,0x4014,0xdf15,0x0b16,0xc317,0xff18,
- 0x001a,0x221b,0x001d,
- 0xffff
-};
-/* 640x480x16 */
-static u16 cseq_640x480x16[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1707,
- 0x580b,0x580c,0x580d,0x580e,
- 0x0412,0x0013,0x2017,
- 0x331b,0x331c,0x331d,0x331e,
- 0xffff
-};
-static u16 ccrtc_640x480x16[] VAR16 = {
- 0x2c11,
- 0x5f00,0x4f01,0x4f02,0x8003,0x5204,0x1e05,0x0b06,0x3e07,
- 0x4009,0x000c,0x000d,
- 0xea10,0xdf12,0xa013,0x4014,0xdf15,0x0b16,0xc317,0xff18,
- 0x001a,0x221b,0x001d,
- 0xffff
-};
-/* 640x480x24 */
-static u16 cseq_640x480x24[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1507,
- 0x580b,0x580c,0x580d,0x580e,
- 0x0412,0x0013,0x2017,
- 0x331b,0x331c,0x331d,0x331e,
- 0xffff
-};
-static u16 ccrtc_640x480x24[] VAR16 = {
- 0x2c11,
- 0x5f00,0x4f01,0x4f02,0x8003,0x5204,0x1e05,0x0b06,0x3e07,
- 0x4009,0x000c,0x000d,
- 0xea10,0xdf12,0xf013,0x4014,0xdf15,0x0b16,0xc317,0xff18,
- 0x001a,0x221b,0x001d,
- 0xffff
-};
-/* 800x600x8 */
-static u16 cseq_800x600x8[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1107,
- 0x230b,0x230c,0x230d,0x230e,
- 0x0412,0x0013,0x2017,
- 0x141b,0x141c,0x141d,0x141e,
- 0xffff
-};
-static u16 ccrtc_800x600x8[] VAR16 = {
- 0x2311,0x7d00,0x6301,0x6302,0x8003,0x6b04,0x1a05,0x9806,0xf007,
- 0x6009,0x000c,0x000d,
- 0x7d10,0x5712,0x6413,0x4014,0x5715,0x9816,0xc317,0xff18,
- 0x001a,0x221b,0x001d,
- 0xffff
-};
-/* 800x600x16 */
-static u16 cseq_800x600x16[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1707,
- 0x230b,0x230c,0x230d,0x230e,
- 0x0412,0x0013,0x2017,
- 0x141b,0x141c,0x141d,0x141e,
- 0xffff
-};
-static u16 ccrtc_800x600x16[] VAR16 = {
- 0x2311,0x7d00,0x6301,0x6302,0x8003,0x6b04,0x1a05,0x9806,0xf007,
- 0x6009,0x000c,0x000d,
- 0x7d10,0x5712,0xc813,0x4014,0x5715,0x9816,0xc317,0xff18,
- 0x001a,0x221b,0x001d,
- 0xffff
-};
-/* 800x600x24 */
-static u16 cseq_800x600x24[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1507,
- 0x230b,0x230c,0x230d,0x230e,
- 0x0412,0x0013,0x2017,
- 0x141b,0x141c,0x141d,0x141e,
- 0xffff
-};
-static u16 ccrtc_800x600x24[] VAR16 = {
- 0x2311,0x7d00,0x6301,0x6302,0x8003,0x6b04,0x1a05,0x9806,0xf007,
- 0x6009,0x000c,0x000d,
- 0x7d10,0x5712,0x2c13,0x4014,0x5715,0x9816,0xc317,0xff18,
- 0x001a,0x321b,0x001d,
- 0xffff
-};
-/* 1024x768x8 */
-static u16 cseq_1024x768x8[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1107,
- 0x760b,0x760c,0x760d,0x760e,
- 0x0412,0x0013,0x2017,
- 0x341b,0x341c,0x341d,0x341e,
- 0xffff
-};
-static u16 ccrtc_1024x768x8[] VAR16 = {
- 0x2911,0xa300,0x7f01,0x7f02,0x8603,0x8304,0x9405,0x2406,0xf507,
- 0x6009,0x000c,0x000d,
- 0x0310,0xff12,0x8013,0x4014,0xff15,0x2416,0xc317,0xff18,
- 0x001a,0x221b,0x001d,
- 0xffff
-};
-/* 1024x768x16 */
-static u16 cseq_1024x768x16[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1707,
- 0x760b,0x760c,0x760d,0x760e,
- 0x0412,0x0013,0x2017,
- 0x341b,0x341c,0x341d,0x341e,
- 0xffff
-};
-static u16 ccrtc_1024x768x16[] VAR16 = {
- 0x2911,0xa300,0x7f01,0x7f02,0x8603,0x8304,0x9405,0x2406,0xf507,
- 0x6009,0x000c,0x000d,
- 0x0310,0xff12,0x0013,0x4014,0xff15,0x2416,0xc317,0xff18,
- 0x001a,0x321b,0x001d,
- 0xffff
-};
-/* 1024x768x24 */
-static u16 cseq_1024x768x24[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1507,
- 0x760b,0x760c,0x760d,0x760e,
- 0x0412,0x0013,0x2017,
- 0x341b,0x341c,0x341d,0x341e,
- 0xffff
-};
-static u16 ccrtc_1024x768x24[] VAR16 = {
- 0x2911,0xa300,0x7f01,0x7f02,0x8603,0x8304,0x9405,0x2406,0xf507,
- 0x6009,0x000c,0x000d,
- 0x0310,0xff12,0x8013,0x4014,0xff15,0x2416,0xc317,0xff18,
- 0x001a,0x321b,0x001d,
- 0xffff
-};
-/* 1280x1024x8 */
-static u16 cseq_1280x1024x8[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1107,
- 0x760b,0x760c,0x760d,0x760e,
- 0x0412,0x0013,0x2017,
- 0x341b,0x341c,0x341d,0x341e,
- 0xffff
-};
-static u16 ccrtc_1280x1024x8[] VAR16 = {
- 0x2911,0xc300,0x9f01,0x9f02,0x8603,0x8304,0x9405,0x2406,0xf707,
- 0x6009,0x000c,0x000d,
- 0x0310,0xff12,0xa013,0x4014,0xff15,0x2416,0xc317,0xff18,
- 0x001a,0x221b,0x001d,
- 0xffff
-};
-/* 1280x1024x16 */
-static u16 cseq_1280x1024x16[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1707,
- 0x760b,0x760c,0x760d,0x760e,
- 0x0412,0x0013,0x2017,
- 0x341b,0x341c,0x341d,0x341e,
- 0xffff
-};
-static u16 ccrtc_1280x1024x16[] VAR16 = {
- 0x2911,0xc300,0x9f01,0x9f02,0x8603,0x8304,0x9405,0x2406,0xf707,
- 0x6009,0x000c,0x000d,
- 0x0310,0xff12,0x4013,0x4014,0xff15,0x2416,0xc317,0xff18,
- 0x001a,0x321b,0x001d,
- 0xffff
-};
-
-/* 1600x1200x8 */
-static u16 cseq_1600x1200x8[] VAR16 = {
- 0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1107,
- 0x760b,0x760c,0x760d,0x760e,
- 0x0412,0x0013,0x2017,
- 0x341b,0x341c,0x341d,0x341e,
- 0xffff
-};
-static u16 ccrtc_1600x1200x8[] VAR16 = {
- 0x2911,0xc300,0x9f01,0x9f02,0x8603,0x8304,0x9405,0x2406,0xf707,
- 0x6009,0x000c,0x000d,
- 0x0310,0xff12,0xc813,0x4014,0xff15,0x2416,0xc317,0xff18,
- 0x001a,0x221b,0x001d,
- 0xffff
-};
-
-struct cirrus_mode_s {
- u16 mode, vesamode;
- struct vgamode_s info;
-
- u16 hidden_dac; /* 0x3c6 */
- u16 *seq; /* 0x3c4 */
- u16 *graph; /* 0x3ce */
- u16 *crtc; /* 0x3d4 */
-};
-
-static struct cirrus_mode_s cirrus_modes[] VAR16 = {
- {0x5f,0x101,{MM_PACKED,640,480,8,8,16,SEG_GRAPH},0x00,
- cseq_640x480x8,cgraph_svgacolor,ccrtc_640x480x8},
- {0x64,0x111,{MM_DIRECT,640,480,16,8,16,SEG_GRAPH},0xe1,
- cseq_640x480x16,cgraph_svgacolor,ccrtc_640x480x16},
- {0x66,0x110,{MM_DIRECT,640,480,15,8,16,SEG_GRAPH},0xf0,
- cseq_640x480x16,cgraph_svgacolor,ccrtc_640x480x16},
- {0x71,0x112,{MM_DIRECT,640,480,24,8,16,SEG_GRAPH},0xe5,
- cseq_640x480x24,cgraph_svgacolor,ccrtc_640x480x24},
-
- {0x5c,0x103,{MM_PACKED,800,600,8,8,16,SEG_GRAPH},0x00,
- cseq_800x600x8,cgraph_svgacolor,ccrtc_800x600x8},
- {0x65,0x114,{MM_DIRECT,800,600,16,8,16,SEG_GRAPH},0xe1,
- cseq_800x600x16,cgraph_svgacolor,ccrtc_800x600x16},
- {0x67,0x113,{MM_DIRECT,800,600,15,8,16,SEG_GRAPH},0xf0,
- cseq_800x600x16,cgraph_svgacolor,ccrtc_800x600x16},
-
- {0x60,0x105,{MM_PACKED,1024,768,8,8,16,SEG_GRAPH},0x00,
- cseq_1024x768x8,cgraph_svgacolor,ccrtc_1024x768x8},
- {0x74,0x117,{MM_DIRECT,1024,768,16,8,16,SEG_GRAPH},0xe1,
- cseq_1024x768x16,cgraph_svgacolor,ccrtc_1024x768x16},
- {0x68,0x116,{MM_DIRECT,1024,768,15,8,16,SEG_GRAPH},0xf0,
- cseq_1024x768x16,cgraph_svgacolor,ccrtc_1024x768x16},
-
- {0x78,0x115,{MM_DIRECT,800,600,24,8,16,SEG_GRAPH},0xe5,
- cseq_800x600x24,cgraph_svgacolor,ccrtc_800x600x24},
- {0x79,0x118,{MM_DIRECT,1024,768,24,8,16,SEG_GRAPH},0xe5,
- cseq_1024x768x24,cgraph_svgacolor,ccrtc_1024x768x24},
-
- {0x6d,0x107,{MM_PACKED,1280,1024,8,8,16,SEG_GRAPH},0x00,
- cseq_1280x1024x8,cgraph_svgacolor,ccrtc_1280x1024x8},
- {0x69,0x119,{MM_DIRECT,1280,1024,15,8,16,SEG_GRAPH},0xf0,
- cseq_1280x1024x16,cgraph_svgacolor,ccrtc_1280x1024x16},
- {0x75,0x11a,{MM_DIRECT,1280,1024,16,8,16,SEG_GRAPH},0xe1,
- cseq_1280x1024x16,cgraph_svgacolor,ccrtc_1280x1024x16},
-
- {0x7b,0xffff,{MM_PACKED,1600,1200,8,8,16,SEG_GRAPH},0x00,
- cseq_1600x1200x8,cgraph_svgacolor,ccrtc_1600x1200x8},
-};
-
-static struct cirrus_mode_s mode_switchback VAR16 =
- {0xfe,0xffff,{0xff},0,cseq_vga,cgraph_vga,ccrtc_vga};
-
-int
-is_cirrus_mode(struct vgamode_s *vmode_g)
-{
- return (vmode_g >= &cirrus_modes[0].info
- && vmode_g <= &cirrus_modes[ARRAY_SIZE(cirrus_modes)-1].info);
-}
-
-struct vgamode_s *
-clext_find_mode(int mode)
-{
- struct cirrus_mode_s *table_g = cirrus_modes;
- while (table_g < &cirrus_modes[ARRAY_SIZE(cirrus_modes)]) {
- if (GET_GLOBAL(table_g->mode) == mode
- || GET_GLOBAL(table_g->vesamode) == mode)
- return &table_g->info;
- table_g++;
- }
- return stdvga_find_mode(mode);
-}
-
-void
-clext_list_modes(u16 seg, u16 *dest, u16 *last)
-{
- int i;
- for (i=0; i<ARRAY_SIZE(cirrus_modes) && dest<last; i++) {
- u16 mode = GET_GLOBAL(cirrus_modes[i].vesamode);
- if (mode == 0xffff)
- continue;
- SET_FARVAR(seg, *dest, mode);
- dest++;
- }
- stdvga_list_modes(seg, dest, last);
-}
-
-
-/****************************************************************
- * helper functions
- ****************************************************************/
-
-int
-clext_get_window(struct vgamode_s *vmode_g, int window)
-{
- return stdvga_grdc_read(window + 9);
-}
-
-int
-clext_set_window(struct vgamode_s *vmode_g, int window, int val)
-{
- if (val >= 0x100)
- return -1;
- stdvga_grdc_write(window + 9, val);
- return 0;
-}
-
-int
-clext_get_linelength(struct vgamode_s *vmode_g)
-{
- u16 crtc_addr = stdvga_get_crtc();
- u8 reg13 = stdvga_crtc_read(crtc_addr, 0x13);
- u8 reg1b = stdvga_crtc_read(crtc_addr, 0x1b);
- return (((reg1b & 0x10) << 4) + reg13) * 8 / stdvga_vram_ratio(vmode_g);
-}
-
-int
-clext_set_linelength(struct vgamode_s *vmode_g, int val)
-{
- u16 crtc_addr = stdvga_get_crtc();
- val = DIV_ROUND_UP(val * stdvga_vram_ratio(vmode_g), 8);
- stdvga_crtc_write(crtc_addr, 0x13, val);
- stdvga_crtc_mask(crtc_addr, 0x1b, 0x10, (val & 0x100) >> 4);
- return 0;
-}
-
-int
-clext_get_displaystart(struct vgamode_s *vmode_g)
-{
- u16 crtc_addr = stdvga_get_crtc();
- u8 b2 = stdvga_crtc_read(crtc_addr, 0x0c);
- u8 b1 = stdvga_crtc_read(crtc_addr, 0x0d);
- u8 b3 = stdvga_crtc_read(crtc_addr, 0x1b);
- u8 b4 = stdvga_crtc_read(crtc_addr, 0x1d);
- int val = (b1 | (b2<<8) | ((b3 & 0x01) << 16) | ((b3 & 0x0c) << 15)
- | ((b4 & 0x80) << 12));
- return val * 4 / stdvga_vram_ratio(vmode_g);
-}
-
-int
-clext_set_displaystart(struct vgamode_s *vmode_g, int val)
-{
- u16 crtc_addr = stdvga_get_crtc();
- val = val * stdvga_vram_ratio(vmode_g) / 4;
- stdvga_crtc_write(crtc_addr, 0x0d, val);
- stdvga_crtc_write(crtc_addr, 0x0c, val >> 8);
- stdvga_crtc_mask(crtc_addr, 0x1d, 0x80, (val & 0x0800) >> 4);
- stdvga_crtc_mask(crtc_addr, 0x1b, 0x0d
- , ((val & 0x0100) >> 8) | ((val & 0x0600) >> 7));
- return 0;
-}
-
-int
-clext_save_restore(int cmd, u16 seg, void *data)
-{
- if (cmd & SR_REGISTERS)
- return -1;
- return stdvga_save_restore(cmd, seg, data);
-}
-
-
-/****************************************************************
- * Mode setting
- ****************************************************************/
-
-static void
-cirrus_switch_mode_setregs(u16 *data, u16 port)
-{
- for (;;) {
- u16 val = GET_GLOBAL(*data);
- if (val == 0xffff)
- return;
- outw(val, port);
- data++;
- }
-}
-
-static void
-cirrus_switch_mode(struct cirrus_mode_s *table)
-{
- // Unlock cirrus special
- stdvga_sequ_write(0x06, 0x12);
- cirrus_switch_mode_setregs(GET_GLOBAL(table->seq), VGAREG_SEQU_ADDRESS);
- cirrus_switch_mode_setregs(GET_GLOBAL(table->graph), VGAREG_GRDC_ADDRESS);
- cirrus_switch_mode_setregs(GET_GLOBAL(table->crtc), stdvga_get_crtc());
-
- stdvga_pelmask_write(0x00);
- stdvga_pelmask_read();
- stdvga_pelmask_read();
- stdvga_pelmask_read();
- stdvga_pelmask_read();
- stdvga_pelmask_write(GET_GLOBAL(table->hidden_dac));
- stdvga_pelmask_write(0xff);
-
- u8 memmodel = GET_GLOBAL(table->info.memmodel);
- u8 on = 0;
- if (memmodel == MM_PLANAR)
- on = 0x41;
- else if (memmodel != MM_TEXT)
- on = 0x01;
- stdvga_attr_mask(0x10, 0x01, on);
- stdvga_attrindex_write(0x20);
-}
-
-static void
-cirrus_enable_16k_granularity(void)
-{
- stdvga_grdc_mask(0x0b, 0x00, 0x20);
-}
-
-static void
-cirrus_clear_vram(u16 fill)
-{
- cirrus_enable_16k_granularity();
- int count = GET_GLOBAL(VBE_total_memory) / (16 * 1024);
- int i;
- for (i=0; i<count; i++) {
- stdvga_grdc_write(0x09, i);
- memset16_far(SEG_GRAPH, 0, fill, 16 * 1024);
- }
- stdvga_grdc_write(0x09, 0x00);
-}
-
-int
-clext_set_mode(struct vgamode_s *vmode_g, int flags)
-{
- if (!is_cirrus_mode(vmode_g)) {
- cirrus_switch_mode(&mode_switchback);
- dprintf(1, "cirrus mode switch regular\n");
- return stdvga_set_mode(vmode_g, flags);
- }
- struct cirrus_mode_s *table_g = container_of(
- vmode_g, struct cirrus_mode_s, info);
- cirrus_switch_mode(table_g);
- if (GET_GLOBAL(vmode_g->memmodel) == MM_PACKED && !(flags & MF_NOPALETTE))
- stdvga_set_packed_palette();
- if (!(flags & MF_LINEARFB))
- cirrus_enable_16k_granularity();
- if (!(flags & MF_NOCLEARMEM))
- // fill with 0xff to keep win 2K happy
- cirrus_clear_vram(flags & MF_LEGACY ? 0xffff : 0x0000);
- return 0;
-}
-
-
-/****************************************************************
- * extbios
- ****************************************************************/
-
-static void
-clext_101280(struct bregs *regs)
-{
- u8 v = stdvga_crtc_read(stdvga_get_crtc(), 0x27);
- if (v == 0xa0)
- // 5430
- regs->ax = 0x0032;
- else if (v == 0xb8)
- // 5446
- regs->ax = 0x0039;
- else
- regs->ax = 0x00ff;
- regs->bx = 0x00;
- return;
-}
-
-static void
-clext_101281(struct bregs *regs)
-{
- // XXX
- regs->ax = 0x0100;
-}
-
-static void
-clext_101282(struct bregs *regs)
-{
- regs->al = stdvga_crtc_read(stdvga_get_crtc(), 0x27) & 0x03;
- regs->ah = 0xAF;
-}
-
-static void
-clext_101285(struct bregs *regs)
-{
- regs->al = GET_GLOBAL(VBE_total_memory) / (64*1024);
-}
-
-static void
-clext_10129a(struct bregs *regs)
-{
- regs->ax = 0x4060;
- regs->cx = 0x1132;
-}
-
-extern void a0h_callback(void);
-ASM16(
- // fatal: not implemented yet
- "a0h_callback:"
- "cli\n"
- "hlt\n"
- "lretw");
-
-static void
-clext_1012a0(struct bregs *regs)
-{
- struct vgamode_s *table_g = clext_find_mode(regs->al & 0x7f);
- regs->ah = (table_g ? 1 : 0);
- regs->bx = (u32)a0h_callback;
- regs->ds = regs->si = regs->es = regs->di = 0xffff;
-}
-
-static void
-clext_1012a1(struct bregs *regs)
-{
- regs->bx = 0x0e00; // IBM 8512/8513, color
-}
-
-static void
-clext_1012a2(struct bregs *regs)
-{
- regs->al = 0x07; // HSync 31.5 - 64.0 kHz
-}
-
-static void
-clext_1012ae(struct bregs *regs)
-{
- regs->al = 0x01; // High Refresh 75Hz
-}
-
-static void
-clext_1012XX(struct bregs *regs)
-{
- debug_stub(regs);
-}
-
-void
-clext_1012(struct bregs *regs)
-{
- switch (regs->bl) {
- case 0x80: clext_101280(regs); break;
- case 0x81: clext_101281(regs); break;
- case 0x82: clext_101282(regs); break;
- case 0x85: clext_101285(regs); break;
- case 0x9a: clext_10129a(regs); break;
- case 0xa0: clext_1012a0(regs); break;
- case 0xa1: clext_1012a1(regs); break;
- case 0xa2: clext_1012a2(regs); break;
- case 0xae: clext_1012ae(regs); break;
- default: clext_1012XX(regs); break;
- }
-}
-
-
-/****************************************************************
- * init
- ****************************************************************/
-
-static int
-cirrus_check(void)
-{
- stdvga_sequ_write(0x06, 0x92);
- return stdvga_sequ_read(0x06) == 0x12;
-}
-
-static u8
-cirrus_get_memsize(void)
-{
- // get DRAM band width
- u8 v = stdvga_sequ_read(0x0f);
- u8 x = (v >> 3) & 0x03;
- if (x == 0x03 && v & 0x80)
- // 4MB
- return 0x40;
- return 0x04 << x;
-}
-
-int
-clext_setup(void)
-{
- int ret = stdvga_setup();
- if (ret)
- return ret;
-
- dprintf(1, "cirrus init\n");
- if (! cirrus_check())
- return -1;
- dprintf(1, "cirrus init 2\n");
-
- // memory setup
- stdvga_sequ_write(0x0a, stdvga_sequ_read(0x0f) & 0x18);
- // set vga mode
- stdvga_sequ_write(0x07, 0x00);
- // reset bitblt
- stdvga_grdc_write(0x31, 0x04);
- stdvga_grdc_write(0x31, 0x00);
-
- if (GET_GLOBAL(HaveRunInit))
- return 0;
-
- u32 lfb_addr = 0;
- int bdf = GET_GLOBAL(VgaBDF);
- if (CONFIG_VGA_PCI && bdf >= 0)
- lfb_addr = (pci_config_readl(bdf, PCI_BASE_ADDRESS_0)
- & PCI_BASE_ADDRESS_MEM_MASK);
- SET_VGA(VBE_framebuffer, lfb_addr);
- u16 totalmem = cirrus_get_memsize();
- SET_VGA(VBE_total_memory, totalmem * 64 * 1024);
- SET_VGA(VBE_win_granularity, 16);
-
- return 0;
-}
diff --git a/qemu/roms/seabios/vgasrc/clext.h b/qemu/roms/seabios/vgasrc/clext.h
deleted file mode 100644
index cf47a5bf6..000000000
--- a/qemu/roms/seabios/vgasrc/clext.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __CLEXT_H
-#define __CLEXT_H
-
-#include "types.h" // u16
-
-struct vgamode_s *clext_find_mode(int mode);
-void clext_list_modes(u16 seg, u16 *dest, u16 *last);
-int clext_get_window(struct vgamode_s *vmode_g, int window);
-int clext_set_window(struct vgamode_s *vmode_g, int window, int val);
-int clext_get_linelength(struct vgamode_s *vmode_g);
-int clext_set_linelength(struct vgamode_s *vmode_g, int val);
-int clext_get_displaystart(struct vgamode_s *vmode_g);
-int clext_set_displaystart(struct vgamode_s *vmode_g, int val);
-int clext_save_restore(int cmd, u16 seg, void *data);
-int clext_set_mode(struct vgamode_s *vmode_g, int flags);
-struct bregs;
-void clext_1012(struct bregs *regs);
-int clext_setup(void);
-
-#endif // clext.h
diff --git a/qemu/roms/seabios/vgasrc/geodevga.c b/qemu/roms/seabios/vgasrc/geodevga.c
deleted file mode 100644
index f8f61c3a1..000000000
--- a/qemu/roms/seabios/vgasrc/geodevga.c
+++ /dev/null
@@ -1,433 +0,0 @@
-// Geode GX2/LX VGA functions
-//
-// Copyright (C) 2009 Chris Kindt
-//
-// Written for Google Summer of Code 2009 for the coreboot project
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // GET_BDA
-#include "farptr.h" // SET_FARVAR
-#include "geodevga.h" // geodevga_setup
-#include "hw/pci.h" // pci_config_readl
-#include "hw/pci_regs.h" // PCI_BASE_ADDRESS_0
-#include "output.h" // dprintf
-#include "stdvga.h" // stdvga_crtc_write
-#include "vgabios.h" // VGAREG_*
-
-
-/****************************************************************
-* MSR and High Mem access through VSA Virtual Register
-****************************************************************/
-
-static u64 geode_msr_read(u32 msrAddr)
-{
- union u64_u32_u val;
- asm __volatile__ (
- "movw $0x0AC1C, %%dx \n"
- "movl $0xFC530007, %%eax \n"
- "outl %%eax, %%dx \n"
- "addb $2, %%dl \n"
- "inw %%dx, %%ax \n"
- : "=a" (val.lo), "=d"(val.hi)
- : "c"(msrAddr)
- : "cc"
- );
-
- dprintf(4, "%s(0x%08x) = 0x%08x-0x%08x\n"
- , __func__, msrAddr, val.hi, val.lo);
- return val.val;
-}
-
-static void geode_msr_mask(u32 msrAddr, u64 off, u64 on)
-{
- union u64_u32_u uand, uor;
- uand.val = ~off;
- uor.val = on;
-
- dprintf(4, "%s(0x%08x, 0x%016llx, 0x%016llx)\n"
- , __func__, msrAddr, off, on);
-
- asm __volatile__ (
- "push %%eax \n"
- "movw $0x0AC1C, %%dx \n"
- "movl $0xFC530007, %%eax \n"
- "outl %%eax, %%dx \n"
- "addb $2, %%dl \n"
- "pop %%eax \n"
- "outw %%ax, %%dx \n"
- :
- : "c"(msrAddr), "S" (uand.hi), "D" (uand.lo), "b" (uor.hi), "a" (uor.lo)
- : "%edx","cc"
- );
-}
-
-static u32 geode_mem_read(u32 addr)
-{
- u32 val;
- asm __volatile__ (
- "movw $0x0AC1C, %%dx \n"
- "movl $0xFC530001, %%eax \n"
- "outl %%eax, %%dx \n"
- "addb $2, %%dl \n"
- "inw %%dx, %%ax \n"
- : "=a" (val)
- : "b"(addr)
- : "cc"
- );
-
- return val;
-}
-
-static void geode_mem_mask(u32 addr, u32 off, u32 or)
-{
- asm __volatile__ (
- "movw $0x0AC1C, %%dx \n"
- "movl $0xFC530001, %%eax \n"
- "outl %%eax, %%dx \n"
- "addb $2, %%dl \n"
- "outw %%ax, %%dx \n"
- :
- : "b"(addr), "S" (~off), "D" (or)
- : "%eax","cc"
- );
-}
-
-#define VP_FP_START 0x400
-
-static u32 GeodeFB VAR16;
-static u32 GeodeDC VAR16;
-static u32 GeodeVP VAR16;
-
-static u32 geode_dc_read(int reg)
-{
- u32 val = geode_mem_read(GET_GLOBAL(GeodeDC) + reg);
- dprintf(4, "%s(0x%08x) = 0x%08x\n"
- , __func__, GET_GLOBAL(GeodeDC) + reg, val);
- return val;
-}
-
-static void geode_dc_write(int reg, u32 val)
-{
- dprintf(4, "%s(0x%08x, 0x%08x)\n"
- , __func__, GET_GLOBAL(GeodeDC) + reg, val);
- geode_mem_mask(GET_GLOBAL(GeodeDC) + reg, ~0, val);
-}
-
-static void geode_dc_mask(int reg, u32 off, u32 on)
-{
- dprintf(4, "%s(0x%08x, 0x%08x, 0x%08x)\n"
- , __func__, GET_GLOBAL(GeodeDC) + reg, off, on);
- geode_mem_mask(GET_GLOBAL(GeodeDC) + reg, off, on);
-}
-
-static u32 geode_vp_read(int reg)
-{
- u32 val = geode_mem_read(GET_GLOBAL(GeodeVP) + reg);
- dprintf(4, "%s(0x%08x) = 0x%08x\n"
- , __func__, GET_GLOBAL(GeodeVP) + reg, val);
- return val;
-}
-
-static void geode_vp_write(int reg, u32 val)
-{
- dprintf(4, "%s(0x%08x, 0x%08x)\n"
- , __func__, GET_GLOBAL(GeodeVP) + reg, val);
- geode_mem_mask(GET_GLOBAL(GeodeVP) + reg, ~0, val);
-}
-
-static void geode_vp_mask(int reg, u32 off, u32 on)
-{
- dprintf(4, "%s(0x%08x, 0x%08x, 0x%08x)\n"
- , __func__, GET_GLOBAL(GeodeVP) + reg, off, on);
- geode_mem_mask(GET_GLOBAL(GeodeVP) + reg, off, on);
-}
-
-static u32 geode_fp_read(int reg)
-{
- u32 val = geode_mem_read(GET_GLOBAL(GeodeVP) + VP_FP_START + reg);
- dprintf(4, "%s(0x%08x) = 0x%08x\n"
- , __func__, GET_GLOBAL(GeodeVP) + VP_FP_START + reg, val);
- return val;
-}
-
-static void geode_fp_write(int reg, u32 val)
-{
- dprintf(4, "%s(0x%08x, 0x%08x)\n"
- , __func__, GET_GLOBAL(GeodeVP) + VP_FP_START + reg, val);
- geode_mem_mask(GET_GLOBAL(GeodeVP) + VP_FP_START + reg, ~0, val);
-}
-
-/****************************************************************
- * Helper functions
- ****************************************************************/
-
-static int legacyio_check(void)
-{
- int ret=0;
- u64 val;
-
- if (CONFIG_VGA_GEODEGX2)
- val = geode_msr_read(GLIU0_P2D_BM_4);
- else
- val = geode_msr_read(MSR_GLIU0_BASE4);
- if ((val & 0xffffffff) != 0x0A0fffe0)
- ret|=1;
-
- val = geode_msr_read(GLIU0_IOD_BM_0);
- if ((val & 0xffffffff) != 0x3c0ffff0)
- ret|=2;
-
- val = geode_msr_read(GLIU0_IOD_BM_1);
- if ((val & 0xffffffff) != 0x3d0ffff0)
- ret|=4;
-
- return ret;
-}
-
-static u32 framebuffer_size(void)
-{
- /* We use the P2D_R0 msr to read out the number of pages.
- * One page has a size of 4k
- *
- * Bit Name Description
- * 39:20 PMAX Physical Memory Address Max
- * 19:0 PMIX Physical Memory Address Min
- *
- */
- u64 msr = geode_msr_read(GLIU0_P2D_RO);
-
- u32 pmax = (msr >> 20) & 0x000fffff;
- u32 pmin = msr & 0x000fffff;
-
- u32 val = pmax - pmin;
- val += 1;
-
- /* The page size is 4k */
- return (val << 12);
-}
-
-/****************************************************************
-* Init Functions
-****************************************************************/
-
-static void geodevga_set_output_mode(void)
-{
- u64 msr_addr;
- u64 msr;
-
- /* set output to crt and RGB/YUV */
- if (CONFIG_VGA_GEODEGX2)
- msr_addr = VP_MSR_CONFIG_GX2;
- else
- msr_addr = VP_MSR_CONFIG_LX;
-
- /* set output mode (RGB/YUV) */
- msr = geode_msr_read(msr_addr);
- msr &= ~VP_MSR_CONFIG_FMT; // mask out FMT (bits 5:3)
-
- if (CONFIG_VGA_OUTPUT_PANEL || CONFIG_VGA_OUTPUT_CRT_PANEL) {
- msr |= VP_MSR_CONFIG_FMT_FP; // flat panel
-
- if (CONFIG_VGA_OUTPUT_CRT_PANEL) {
- msr |= VP_MSR_CONFIG_FPC; // simultaneous Flat Panel and CRT
- dprintf(1, "output: simultaneous Flat Panel and CRT\n");
- } else {
- msr &= ~VP_MSR_CONFIG_FPC; // no simultaneous Flat Panel and CRT
- dprintf(1, "ouput: flat panel\n");
- }
- } else {
- msr |= VP_MSR_CONFIG_FMT_CRT; // CRT only
- dprintf(1, "output: CRT\n");
- }
- geode_msr_mask(msr_addr, ~msr, msr);
-}
-
-/* Set up the dc (display controller) portion of the geodelx
-* The dc provides hardware support for VGA graphics.
-*/
-static void dc_setup(void)
-{
- dprintf(2, "DC_SETUP\n");
-
- geode_dc_write(DC_UNLOCK, DC_LOCK_UNLOCK);
-
- /* zero memory config */
- geode_dc_write(DC_FB_ST_OFFSET, 0x0);
- geode_dc_write(DC_CB_ST_OFFSET, 0x0);
- geode_dc_write(DC_CURS_ST_OFFSET, 0x0);
-
- geode_dc_mask(DC_DISPLAY_CFG, ~DC_CFG_MSK, DC_DISPLAY_CFG_GDEN|DC_DISPLAY_CFG_TRUP);
- geode_dc_write(DC_GENERAL_CFG, DC_GENERAL_CFG_VGAE);
-
- geode_dc_write(DC_UNLOCK, DC_LOCK_LOCK);
-}
-
-/* Setup the vp (video processor) portion of the geodelx
-* Under VGA modes the vp was handled by softvg from inside VSA2.
-* Without a softvg module, access is only available through a pci bar.
-* The High Mem Access virtual register is used to configure the
-* pci mmio bar from 16bit friendly io space.
-*/
-static void vp_setup(void)
-{
- dprintf(2,"VP_SETUP\n");
-
- geodevga_set_output_mode();
-
- /* Set mmio registers
- * there may be some timing issues here, the reads seem
- * to slow things down enough work reliably
- */
-
- u32 reg = geode_vp_read(VP_MISC);
- dprintf(1,"VP_SETUP VP_MISC=0x%08x\n",reg);
- geode_vp_write(VP_MISC, VP_DCFG_BYP_BOTH);
- reg = geode_vp_read(VP_MISC);
- dprintf(1,"VP_SETUP VP_MISC=0x%08x\n",reg);
-
- reg = geode_vp_read(VP_DCFG);
- dprintf(1,"VP_SETUP VP_DCFG=0x%08x\n",reg);
- geode_vp_mask(VP_DCFG, 0, VP_DCFG_CRT_EN|VP_DCFG_HSYNC_EN|VP_DCFG_VSYNC_EN|VP_DCFG_DAC_BL_EN|VP_DCFG_CRT_SKEW);
- reg = geode_vp_read(VP_DCFG);
- dprintf(1,"VP_SETUP VP_DCFG=0x%08x\n",reg);
-
- /* setup flat panel */
- if (CONFIG_VGA_OUTPUT_PANEL || CONFIG_VGA_OUTPUT_CRT_PANEL) {
- u64 msr;
-
- dprintf(1, "Setting up flat panel\n");
- /* write timing register */
- geode_fp_write(FP_PT1, 0x0);
- geode_fp_write(FP_PT2, FP_PT2_SCRC);
-
- /* set pad select for TFT/LVDS */
- msr = VP_MSR_PADSEL_TFT_SEL_HIGH;
- msr = msr << 32;
- msr |= VP_MSR_PADSEL_TFT_SEL_LOW;
- geode_msr_mask(VP_MSR_PADSEL, ~msr, msr);
-
- /* turn the panel on (if it isn't already) */
- reg = geode_fp_read(FP_PM);
- reg |= FP_PM_P;
- geode_fp_write(FP_PM, reg);
- }
-}
-
-static u8 geode_crtc_01[] VAR16 = {
- 0x2d, 0x27, 0x28, 0x90, 0x29, 0x8e, 0xbf, 0x1f,
- 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x9b, 0x8d, 0x8f, 0x14, 0x1f, 0x97, 0xb9, 0xa3,
- 0xff };
-static u8 geode_crtc_03[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x51, 0x9e, 0xbf, 0x1f,
- 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x9b, 0x8d, 0x8f, 0x28, 0x1f, 0x97, 0xb9, 0xa3,
- 0xff };
-static u8 geode_crtc_04[] VAR16 = {
- 0x2d, 0x27, 0x28, 0x90, 0x29, 0x8e, 0xbf, 0x1f,
- 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9b, 0x8d, 0x8f, 0x14, 0x00, 0x97, 0xb9, 0xa2,
- 0xff };
-static u8 geode_crtc_05[] VAR16 = {
- 0x2d, 0x27, 0x28, 0x90, 0x29, 0x8e, 0xbf, 0x1f,
- 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9b, 0x8e, 0x8f, 0x14, 0x00, 0x97, 0xb9, 0xa2,
- 0xff };
-static u8 geode_crtc_06[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x51, 0x9e, 0xbf, 0x1f,
- 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9b, 0x8d, 0x8f, 0x28, 0x00, 0x97, 0xb9, 0xc2,
- 0xff };
-static u8 geode_crtc_07[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x51, 0x9e, 0xbf, 0x1f,
- 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x9b, 0x8d, 0x8f, 0x28, 0x0f, 0x97, 0xb9, 0xa3,
- 0xff };
-static u8 geode_crtc_0d[] VAR16 = {
- 0x2d, 0x27, 0x28, 0x90, 0x29, 0x8e, 0xbf, 0x1f,
- 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9b, 0x8d, 0x8f, 0x14, 0x00, 0x97, 0xb9, 0xe3,
- 0xff };
-static u8 geode_crtc_0e[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x51, 0x9e, 0xbf, 0x1f,
- 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9b, 0x8d, 0x8f, 0x28, 0x00, 0x97, 0xb9, 0xe3,
- 0xff };
-static u8 geode_crtc_0f[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x51, 0x9e, 0xbf, 0x1f,
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x65, 0xb9, 0xe3,
- 0xff };
-static u8 geode_crtc_11[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x51, 0x9e, 0x0b, 0x3e,
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe9, 0x8b, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
- 0xff };
-static u8 geode_crtc_13[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x51, 0x9e, 0xbf, 0x1f,
- 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9b, 0x8d, 0x8f, 0x28, 0x40, 0x98, 0xb9, 0xa3,
- 0xff };
-
-int geodevga_setup(void)
-{
- int ret = stdvga_setup();
- if (ret)
- return ret;
-
- dprintf(1,"GEODEVGA_SETUP\n");
-
- if ((ret=legacyio_check())) {
- dprintf(1,"GEODEVGA_SETUP legacyio_check=0x%x\n",ret);
- }
-
- // Updated timings from geode datasheets, table 6-53 in particular
- static u8 *new_crtc[] VAR16 = {
- geode_crtc_01, geode_crtc_01, geode_crtc_03, geode_crtc_03,
- geode_crtc_04, geode_crtc_05, geode_crtc_06, geode_crtc_07,
- 0, 0, 0, 0, 0,
- geode_crtc_0d, geode_crtc_0e, geode_crtc_0f, geode_crtc_0f,
- geode_crtc_11, geode_crtc_11, geode_crtc_13 };
- int i;
- for (i=0; i<ARRAY_SIZE(new_crtc); i++) {
- u8 *crtc = GET_GLOBAL(new_crtc[i]);
- if (crtc)
- stdvga_override_crtc(i, crtc);
- }
-
- if (GET_GLOBAL(VgaBDF) < 0)
- // Device should be at 00:01.1
- SET_VGA(VgaBDF, pci_to_bdf(0, 1, 1));
-
- // setup geode struct which is used for register access
- SET_VGA(GeodeFB, pci_config_readl(GET_GLOBAL(VgaBDF), PCI_BASE_ADDRESS_0));
- SET_VGA(GeodeDC, pci_config_readl(GET_GLOBAL(VgaBDF), PCI_BASE_ADDRESS_2));
- SET_VGA(GeodeVP, pci_config_readl(GET_GLOBAL(VgaBDF), PCI_BASE_ADDRESS_3));
-
- dprintf(1, "fb addr: 0x%08x\n", GET_GLOBAL(GeodeFB));
- dprintf(1, "dc addr: 0x%08x\n", GET_GLOBAL(GeodeDC));
- dprintf(1, "vp addr: 0x%08x\n", GET_GLOBAL(GeodeVP));
-
- /* setup framebuffer */
- geode_dc_write(DC_UNLOCK, DC_LOCK_UNLOCK);
-
- /* read fb-bar from pci, then point dc to the fb base */
- u32 fb = GET_GLOBAL(GeodeFB);
- if (geode_dc_read(DC_GLIU0_MEM_OFFSET) != fb)
- geode_dc_write(DC_GLIU0_MEM_OFFSET, fb);
-
- geode_dc_write(DC_UNLOCK, DC_LOCK_LOCK);
-
- u32 fb_size = framebuffer_size(); // in byte
- dprintf(1, "%d KB of video memory at 0x%08x\n", fb_size / 1024, fb);
-
- /* update VBE variables */
- SET_VGA(VBE_framebuffer, fb);
- SET_VGA(VBE_total_memory, fb_size / 1024 / 64); // number of 64K blocks
-
- vp_setup();
- dc_setup();
-
- return 0;
-}
diff --git a/qemu/roms/seabios/vgasrc/geodevga.h b/qemu/roms/seabios/vgasrc/geodevga.h
deleted file mode 100644
index c99f54bb1..000000000
--- a/qemu/roms/seabios/vgasrc/geodevga.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// Geode GX2/LX VGA functions
-//
-// Copyright (C) 2009 Chris Kindt
-//
-// Written for Google Summer of Code 2009 for the coreboot project
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#ifndef GEODEVGA_H
-#define GEODEVGA_H
-
-#define VRC_INDEX 0xAC1C // Index register
-#define VRC_DATA 0xAC1E // Data register
-#define VR_UNLOCK 0xFC53 // Virtual register unlock code
-
-// Graphics-specific registers:
-#define OEM_BAR0 0x50
-#define OEM_BAR1 0x54
-#define OEM_BAR2 0x58
-#define OEM_BAR3 0x5C
-
-#define DC_LOCK_LOCK 0x00000000
-#define DC_LOCK_UNLOCK 0x00004758
-
-/* LX MSRs */
-#define MSR_GLIU0 (1 << 28)
-#define MSR_GLIU0_BASE4 (MSR_GLIU0 + 0x23) /* LX */
-#define GLIU0_P2D_BM_4 (MSR_GLIU0 + 0x24) /* GX2 */
-#define GLIU0_P2D_RO (MSR_GLIU0 + 0x29)
-#define GLIU0_IOD_BM_0 (MSR_GLIU0 + 0xE0)
-#define GLIU0_IOD_BM_1 (MSR_GLIU0 + 0xE1)
-#define DC_SPARE 0x80000011
-#define VP_MSR_CONFIG_GX2 0xc0002001 /* GX2 */
-#define VP_MSR_CONFIG_LX 0x48002001 /* LX */
-#define VP_MSR_PADSEL 0x48002011
-
-#define VP_MSR_PADSEL_TFT_SEL_LOW 0xDFFFFFFF
-#define VP_MSR_PADSEL_TFT_SEL_HIGH 0x0000003F
-
-/* VP_MSR_CONFIG bits */
-#define VP_MSR_CONFIG_FMT_CRT (0)
-#define VP_MSR_CONFIG_FMT_FP (1 << 3)
-#define VP_MSR_CONFIG_FPC (1 << 15)
-#define VP_MSR_CONFIG_FMT ((1 << 3) | (1 << 4) | (1 << 5))
-
-
-/* DC REG OFFSET */
-#define DC_UNLOCK 0x0
-#define DC_GENERAL_CFG 0x4
-#define DC_DISPLAY_CFG 0x8
-#define DC_FB_ST_OFFSET 0x10
-#define DC_CB_ST_OFFSET 0x14
-#define DC_CURS_ST_OFFSET 0x18
-#define DC_GLIU0_MEM_OFFSET 0x84
-
-/* VP REG OFFSET */
-#define VP_VCFG 0x0
-#define VP_DCFG 0x8
-#define VP_MISC 0x50
-
-/* FP REG OFFSET */
-#define FP_PT1 0x00
-#define FP_PT2 0x08
-#define FP_PM 0x10
-
-
-/* DC bits */
-#define DC_GENERAL_CFG_VGAE (1 << 7)
-#define DC_DISPLAY_CFG_GDEN (1 << 3)
-#define DC_DISPLAY_CFG_TRUP (1 << 6)
-
-/* VP bits */
-#define VP_DCFG_CRT_EN (1 << 0)
-#define VP_DCFG_HSYNC_EN (1 << 1)
-#define VP_DCFG_VSYNC_EN (1 << 2)
-#define VP_DCFG_DAC_BL_EN (1 << 3)
-#define VP_DCFG_CRT_SKEW (1 << 16)
-#define VP_DCFG_BYP_BOTH (1 << 0)
-
-/* FP bits */
-#define FP_PM_P (1 << 24) /* panel power ctl */
-#define FP_PT2_SCRC (1 << 27) /* panel shift clock retrace activity ctl */
-
-/* Mask */
-#define DC_CFG_MSK 0xf000a6
-
-int geodevga_setup();
-
-#endif
diff --git a/qemu/roms/seabios/vgasrc/stdvga.c b/qemu/roms/seabios/vgasrc/stdvga.c
deleted file mode 100644
index 00a0fc57c..000000000
--- a/qemu/roms/seabios/vgasrc/stdvga.c
+++ /dev/null
@@ -1,479 +0,0 @@
-// Standard VGA driver code
-//
-// Copyright (C) 2009 Kevin O'Connor <kevin@koconnor.net>
-// Copyright (C) 2001-2008 the LGPL VGABios developers Team
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // GET_GLOBAL
-#include "farptr.h" // SET_FARVAR
-#include "stdvga.h" // stdvga_setup
-#include "string.h" // memset_far
-#include "vgabios.h" // struct vgamode_s
-#include "x86.h" // outb
-
-
-/****************************************************************
- * Attribute control
- ****************************************************************/
-
-void
-stdvga_set_border_color(u8 color)
-{
- u8 v1 = color & 0x0f;
- if (v1 & 0x08)
- v1 += 0x08;
- stdvga_attr_write(0x00, v1);
-
- int i;
- for (i = 1; i < 4; i++)
- stdvga_attr_mask(i, 0x10, color & 0x10);
-}
-
-void
-stdvga_set_overscan_border_color(u8 color)
-{
- stdvga_attr_write(0x11, color);
-}
-
-u8
-stdvga_get_overscan_border_color(void)
-{
- return stdvga_attr_read(0x11);
-}
-
-void
-stdvga_set_palette(u8 palid)
-{
- int i;
- for (i = 1; i < 4; i++)
- stdvga_attr_mask(i, 0x01, palid & 0x01);
-}
-
-void
-stdvga_set_all_palette_reg(u16 seg, u8 *data_far)
-{
- int i;
- for (i = 0; i < 0x10; i++) {
- stdvga_attr_write(i, GET_FARVAR(seg, *data_far));
- data_far++;
- }
- stdvga_attr_write(0x11, GET_FARVAR(seg, *data_far));
-}
-
-void
-stdvga_get_all_palette_reg(u16 seg, u8 *data_far)
-{
- int i;
- for (i = 0; i < 0x10; i++) {
- SET_FARVAR(seg, *data_far, stdvga_attr_read(i));
- data_far++;
- }
- SET_FARVAR(seg, *data_far, stdvga_attr_read(0x11));
-}
-
-void
-stdvga_toggle_intensity(u8 flag)
-{
- stdvga_attr_mask(0x10, 0x08, (flag & 0x01) << 3);
-}
-
-void
-stdvga_select_video_dac_color_page(u8 flag, u8 data)
-{
- if (!(flag & 0x01)) {
- // select paging mode
- stdvga_attr_mask(0x10, 0x80, data << 7);
- return;
- }
- // select page
- u8 val = stdvga_attr_read(0x10);
- if (!(val & 0x80))
- data <<= 2;
- data &= 0x0f;
- stdvga_attr_write(0x14, data);
-}
-
-void
-stdvga_read_video_dac_state(u8 *pmode, u8 *curpage)
-{
- u8 val1 = stdvga_attr_read(0x10) >> 7;
- u8 val2 = stdvga_attr_read(0x14) & 0x0f;
- if (!(val1 & 0x01))
- val2 >>= 2;
- *pmode = val1;
- *curpage = val2;
-}
-
-
-/****************************************************************
- * DAC control
- ****************************************************************/
-
-void
-stdvga_perform_gray_scale_summing(u16 start, u16 count)
-{
- stdvga_attrindex_write(0x00);
- int i;
- for (i = start; i < start+count; i++) {
- u8 rgb[3];
- stdvga_dac_read(GET_SEG(SS), rgb, i, 1);
-
- // intensity = ( 0.3 * Red ) + ( 0.59 * Green ) + ( 0.11 * Blue )
- u16 intensity = ((77 * rgb[0] + 151 * rgb[1] + 28 * rgb[2]) + 0x80) >> 8;
- if (intensity > 0x3f)
- intensity = 0x3f;
- rgb[0] = rgb[1] = rgb[2] = intensity;
-
- stdvga_dac_write(GET_SEG(SS), rgb, i, 1);
- }
- stdvga_attrindex_write(0x20);
-}
-
-
-/****************************************************************
- * Memory control
- ****************************************************************/
-
-void
-stdvga_set_text_block_specifier(u8 spec)
-{
- stdvga_sequ_write(0x03, spec);
-}
-
-// Enable reads and writes to the given "plane" when in planar4 mode.
-void
-stdvga_planar4_plane(int plane)
-{
- if (plane < 0) {
- // Return to default mode (read plane0, write all planes)
- stdvga_sequ_write(0x02, 0x0f);
- stdvga_grdc_write(0x04, 0);
- } else {
- stdvga_sequ_write(0x02, 1<<plane);
- stdvga_grdc_write(0x04, plane);
- }
-}
-
-
-/****************************************************************
- * Font loading
- ****************************************************************/
-
-static void
-get_font_access(void)
-{
- stdvga_sequ_write(0x00, 0x01);
- stdvga_sequ_write(0x02, 0x04);
- stdvga_sequ_write(0x04, 0x07);
- stdvga_sequ_write(0x00, 0x03);
- stdvga_grdc_write(0x04, 0x02);
- stdvga_grdc_write(0x05, 0x00);
- stdvga_grdc_write(0x06, 0x04);
-}
-
-static void
-release_font_access(void)
-{
- stdvga_sequ_write(0x00, 0x01);
- stdvga_sequ_write(0x02, 0x03);
- stdvga_sequ_write(0x04, 0x03);
- stdvga_sequ_write(0x00, 0x03);
- u16 v = (stdvga_misc_read() & 0x01) ? 0x0e : 0x0a;
- stdvga_grdc_write(0x06, v);
- stdvga_grdc_write(0x04, 0x00);
- stdvga_grdc_write(0x05, 0x10);
-}
-
-void
-stdvga_load_font(u16 seg, void *src_far, u16 count
- , u16 start, u8 destflags, u8 fontsize)
-{
- get_font_access();
- u16 blockaddr = ((destflags & 0x03) << 14) + ((destflags & 0x04) << 11);
- void *dest_far = (void*)(blockaddr + start*32);
- u16 i;
- for (i = 0; i < count; i++)
- memcpy_far(SEG_GRAPH, dest_far + i*32
- , seg, src_far + i*fontsize, fontsize);
- release_font_access();
-}
-
-
-/****************************************************************
- * CRTC registers
- ****************************************************************/
-
-u16
-stdvga_get_crtc(void)
-{
- if (stdvga_misc_read() & 1)
- return VGAREG_VGA_CRTC_ADDRESS;
- return VGAREG_MDA_CRTC_ADDRESS;
-}
-
-// Ratio between system visible framebuffer ram and the actual videoram used.
-int
-stdvga_vram_ratio(struct vgamode_s *vmode_g)
-{
- switch (GET_GLOBAL(vmode_g->memmodel)) {
- case MM_TEXT:
- return 2;
- case MM_CGA:
- return 4 / GET_GLOBAL(vmode_g->depth);
- case MM_PLANAR:
- return 4;
- default:
- return 1;
- }
-}
-
-void
-stdvga_set_cursor_shape(u16 cursor_type)
-{
- u16 crtc_addr = stdvga_get_crtc();
- stdvga_crtc_write(crtc_addr, 0x0a, cursor_type >> 8);
- stdvga_crtc_write(crtc_addr, 0x0b, cursor_type);
-}
-
-void
-stdvga_set_cursor_pos(int address)
-{
- u16 crtc_addr = stdvga_get_crtc();
- address /= 2; // Assume we're in text mode.
- stdvga_crtc_write(crtc_addr, 0x0e, address >> 8);
- stdvga_crtc_write(crtc_addr, 0x0f, address);
-}
-
-void
-stdvga_set_scan_lines(u8 lines)
-{
- stdvga_crtc_mask(stdvga_get_crtc(), 0x09, 0x1f, lines - 1);
-}
-
-// Get vertical display end
-u16
-stdvga_get_vde(void)
-{
- u16 crtc_addr = stdvga_get_crtc();
- u16 vde = stdvga_crtc_read(crtc_addr, 0x12);
- u8 ovl = stdvga_crtc_read(crtc_addr, 0x07);
- vde += (((ovl & 0x02) << 7) + ((ovl & 0x40) << 3) + 1);
- return vde;
-}
-
-int
-stdvga_get_window(struct vgamode_s *vmode_g, int window)
-{
- return -1;
-}
-
-int
-stdvga_set_window(struct vgamode_s *vmode_g, int window, int val)
-{
- return -1;
-}
-
-int
-stdvga_get_linelength(struct vgamode_s *vmode_g)
-{
- u8 val = stdvga_crtc_read(stdvga_get_crtc(), 0x13);
- return val * 8 / stdvga_vram_ratio(vmode_g);
-}
-
-int
-stdvga_set_linelength(struct vgamode_s *vmode_g, int val)
-{
- val = DIV_ROUND_UP(val * stdvga_vram_ratio(vmode_g), 8);
- stdvga_crtc_write(stdvga_get_crtc(), 0x13, val);
- return 0;
-}
-
-int
-stdvga_get_displaystart(struct vgamode_s *vmode_g)
-{
- u16 crtc_addr = stdvga_get_crtc();
- int addr = (stdvga_crtc_read(crtc_addr, 0x0c) << 8
- | stdvga_crtc_read(crtc_addr, 0x0d));
- return addr * 4 / stdvga_vram_ratio(vmode_g);
-}
-
-int
-stdvga_set_displaystart(struct vgamode_s *vmode_g, int val)
-{
- u16 crtc_addr = stdvga_get_crtc();
- val = val * stdvga_vram_ratio(vmode_g) / 4;
- stdvga_crtc_write(crtc_addr, 0x0c, val >> 8);
- stdvga_crtc_write(crtc_addr, 0x0d, val);
- return 0;
-}
-
-int
-stdvga_get_dacformat(struct vgamode_s *vmode_g)
-{
- return -1;
-}
-
-int
-stdvga_set_dacformat(struct vgamode_s *vmode_g, int val)
-{
- return -1;
-}
-
-
-/****************************************************************
- * Save/Restore state
- ****************************************************************/
-
-struct saveVideoHardware {
- u8 sequ_index;
- u8 crtc_index;
- u8 grdc_index;
- u8 actl_index;
- u8 feature;
- u8 sequ_regs[4];
- u8 sequ0;
- u8 crtc_regs[25];
- u8 actl_regs[20];
- u8 grdc_regs[9];
- u16 crtc_addr;
- u8 plane_latch[4];
-} PACKED;
-
-static void
-stdvga_save_hw_state(u16 seg, struct saveVideoHardware *info)
-{
- u16 crtc_addr = stdvga_get_crtc();
- SET_FARVAR(seg, info->sequ_index, inb(VGAREG_SEQU_ADDRESS));
- SET_FARVAR(seg, info->crtc_index, inb(crtc_addr));
- SET_FARVAR(seg, info->grdc_index, inb(VGAREG_GRDC_ADDRESS));
- SET_FARVAR(seg, info->actl_index, stdvga_attrindex_read());
- SET_FARVAR(seg, info->feature, inb(VGAREG_READ_FEATURE_CTL));
-
- int i;
- for (i=0; i<4; i++)
- SET_FARVAR(seg, info->sequ_regs[i], stdvga_sequ_read(i+1));
- SET_FARVAR(seg, info->sequ0, stdvga_sequ_read(0));
-
- for (i=0; i<25; i++)
- SET_FARVAR(seg, info->crtc_regs[i], stdvga_crtc_read(crtc_addr, i));
-
- for (i=0; i<20; i++)
- SET_FARVAR(seg, info->actl_regs[i], stdvga_attr_read(i));
-
- for (i=0; i<9; i++)
- SET_FARVAR(seg, info->grdc_regs[i], stdvga_grdc_read(i));
-
- SET_FARVAR(seg, info->crtc_addr, crtc_addr);
-
- /* XXX: read plane latches */
- for (i=0; i<4; i++)
- SET_FARVAR(seg, info->plane_latch[i], 0);
-}
-
-static void
-stdvga_restore_hw_state(u16 seg, struct saveVideoHardware *info)
-{
- int i;
- for (i=0; i<4; i++)
- stdvga_sequ_write(i+1, GET_FARVAR(seg, info->sequ_regs[i]));
- stdvga_sequ_write(0x00, GET_FARVAR(seg, info->sequ0));
-
- // Disable CRTC write protection
- u16 crtc_addr = GET_FARVAR(seg, info->crtc_addr);
- stdvga_crtc_write(crtc_addr, 0x11, 0x00);
- // Set CRTC regs
- for (i=0; i<25; i++)
- if (i != 0x11)
- stdvga_crtc_write(crtc_addr, i, GET_FARVAR(seg, info->crtc_regs[i]));
- // select crtc base address
- stdvga_misc_mask(0x01, crtc_addr == VGAREG_VGA_CRTC_ADDRESS ? 0x01 : 0x00);
-
- // enable write protection if needed
- stdvga_crtc_write(crtc_addr, 0x11, GET_FARVAR(seg, info->crtc_regs[0x11]));
-
- // Set Attribute Ctl
- for (i=0; i<20; i++)
- stdvga_attr_write(i, GET_FARVAR(seg, info->actl_regs[i]));
- stdvga_attrindex_write(GET_FARVAR(seg, info->actl_index));
-
- for (i=0; i<9; i++)
- stdvga_grdc_write(i, GET_FARVAR(seg, info->grdc_regs[i]));
-
- outb(GET_FARVAR(seg, info->sequ_index), VGAREG_SEQU_ADDRESS);
- outb(GET_FARVAR(seg, info->crtc_index), crtc_addr);
- outb(GET_FARVAR(seg, info->grdc_index), VGAREG_GRDC_ADDRESS);
- outb(GET_FARVAR(seg, info->feature), crtc_addr - 0x4 + 0xa);
-}
-
-struct saveDACcolors {
- u8 rwmode;
- u8 peladdr;
- u8 pelmask;
- u8 dac[768];
- u8 color_select;
-} PACKED;
-
-static void
-stdvga_save_dac_state(u16 seg, struct saveDACcolors *info)
-{
- /* XXX: check this */
- SET_FARVAR(seg, info->rwmode, inb(VGAREG_DAC_STATE));
- SET_FARVAR(seg, info->peladdr, inb(VGAREG_DAC_WRITE_ADDRESS));
- SET_FARVAR(seg, info->pelmask, stdvga_pelmask_read());
- stdvga_dac_read(seg, info->dac, 0, 256);
- SET_FARVAR(seg, info->color_select, 0);
-}
-
-static void
-stdvga_restore_dac_state(u16 seg, struct saveDACcolors *info)
-{
- stdvga_pelmask_write(GET_FARVAR(seg, info->pelmask));
- stdvga_dac_write(seg, info->dac, 0, 256);
- outb(GET_FARVAR(seg, info->peladdr), VGAREG_DAC_WRITE_ADDRESS);
-}
-
-int
-stdvga_save_restore(int cmd, u16 seg, void *data)
-{
- void *pos = data;
- if (cmd & SR_HARDWARE) {
- if (cmd & SR_SAVE)
- stdvga_save_hw_state(seg, pos);
- if (cmd & SR_RESTORE)
- stdvga_restore_hw_state(seg, pos);
- pos += sizeof(struct saveVideoHardware);
- }
- pos += bda_save_restore(cmd, seg, pos);
- if (cmd & SR_DAC) {
- if (cmd & SR_SAVE)
- stdvga_save_dac_state(seg, pos);
- if (cmd & SR_RESTORE)
- stdvga_restore_dac_state(seg, pos);
- pos += sizeof(struct saveDACcolors);
- }
- return pos - data;
-}
-
-
-/****************************************************************
- * Misc
- ****************************************************************/
-
-void
-stdvga_enable_video_addressing(u8 disable)
-{
- u8 v = (disable & 1) ? 0x00 : 0x02;
- stdvga_misc_mask(0x02, v);
-}
-
-int
-stdvga_setup(void)
-{
- // switch to color mode and enable CPU access 480 lines
- stdvga_misc_write(0xc3);
- // more than 64k 3C4/04
- stdvga_sequ_write(0x04, 0x02);
-
- return 0;
-}
diff --git a/qemu/roms/seabios/vgasrc/stdvga.h b/qemu/roms/seabios/vgasrc/stdvga.h
deleted file mode 100644
index 39753b4de..000000000
--- a/qemu/roms/seabios/vgasrc/stdvga.h
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef __STDVGA_H
-#define __STDVGA_H
-
-#include "types.h" // u8
-
-// VGA registers
-#define VGAREG_ACTL_ADDRESS 0x3c0
-#define VGAREG_ACTL_WRITE_DATA 0x3c0
-#define VGAREG_ACTL_READ_DATA 0x3c1
-
-#define VGAREG_INPUT_STATUS 0x3c2
-#define VGAREG_WRITE_MISC_OUTPUT 0x3c2
-#define VGAREG_VIDEO_ENABLE 0x3c3
-#define VGAREG_SEQU_ADDRESS 0x3c4
-#define VGAREG_SEQU_DATA 0x3c5
-
-#define VGAREG_PEL_MASK 0x3c6
-#define VGAREG_DAC_STATE 0x3c7
-#define VGAREG_DAC_READ_ADDRESS 0x3c7
-#define VGAREG_DAC_WRITE_ADDRESS 0x3c8
-#define VGAREG_DAC_DATA 0x3c9
-
-#define VGAREG_READ_FEATURE_CTL 0x3ca
-#define VGAREG_READ_MISC_OUTPUT 0x3cc
-
-#define VGAREG_GRDC_ADDRESS 0x3ce
-#define VGAREG_GRDC_DATA 0x3cf
-
-#define VGAREG_MDA_CRTC_ADDRESS 0x3b4
-#define VGAREG_MDA_CRTC_DATA 0x3b5
-#define VGAREG_VGA_CRTC_ADDRESS 0x3d4
-#define VGAREG_VGA_CRTC_DATA 0x3d5
-
-#define VGAREG_MDA_WRITE_FEATURE_CTL 0x3ba
-#define VGAREG_VGA_WRITE_FEATURE_CTL 0x3da
-#define VGAREG_ACTL_RESET 0x3da
-
-#define VGAREG_MDA_MODECTL 0x3b8
-#define VGAREG_CGA_MODECTL 0x3d8
-#define VGAREG_CGA_PALETTE 0x3d9
-
-/* Video memory */
-#define SEG_GRAPH 0xA000
-#define SEG_CTEXT 0xB800
-#define SEG_MTEXT 0xB000
-
-// stdvgamodes.c
-struct vgamode_s *stdvga_find_mode(int mode);
-void stdvga_list_modes(u16 seg, u16 *dest, u16 *last);
-void stdvga_build_video_param(void);
-void stdvga_override_crtc(int mode, u8 *crtc);
-int stdvga_set_mode(struct vgamode_s *vmode_g, int flags);
-void stdvga_set_packed_palette(void);
-
-// stdvgaio.c
-u8 stdvga_pelmask_read(void);
-void stdvga_pelmask_write(u8 val);
-u8 stdvga_misc_read(void);
-void stdvga_misc_write(u8 value);
-void stdvga_misc_mask(u8 off, u8 on);
-u8 stdvga_sequ_read(u8 index);
-void stdvga_sequ_write(u8 index, u8 value);
-void stdvga_sequ_mask(u8 index, u8 off, u8 on);
-u8 stdvga_grdc_read(u8 index);
-void stdvga_grdc_write(u8 index, u8 value);
-void stdvga_grdc_mask(u8 index, u8 off, u8 on);
-u8 stdvga_crtc_read(u16 crtc_addr, u8 index);
-void stdvga_crtc_write(u16 crtc_addr, u8 index, u8 value);
-void stdvga_crtc_mask(u16 crtc_addr, u8 index, u8 off, u8 on);
-u8 stdvga_attr_read(u8 index);
-void stdvga_attr_write(u8 index, u8 value);
-void stdvga_attr_mask(u8 index, u8 off, u8 on);
-u8 stdvga_attrindex_read(void);
-void stdvga_attrindex_write(u8 value);
-void stdvga_dac_read(u16 seg, u8 *data_far, u8 start, int count);
-void stdvga_dac_write(u16 seg, u8 *data_far, u8 start, int count);
-
-// stdvga.c
-void stdvga_set_border_color(u8 color);
-void stdvga_set_overscan_border_color(u8 color);
-u8 stdvga_get_overscan_border_color(void);
-void stdvga_set_palette(u8 palid);
-void stdvga_set_all_palette_reg(u16 seg, u8 *data_far);
-void stdvga_get_all_palette_reg(u16 seg, u8 *data_far);
-void stdvga_toggle_intensity(u8 flag);
-void stdvga_select_video_dac_color_page(u8 flag, u8 data);
-void stdvga_read_video_dac_state(u8 *pmode, u8 *curpage);
-void stdvga_perform_gray_scale_summing(u16 start, u16 count);
-void stdvga_set_text_block_specifier(u8 spec);
-void stdvga_planar4_plane(int plane);
-void stdvga_load_font(u16 seg, void *src_far, u16 count
- , u16 start, u8 destflags, u8 fontsize);
-u16 stdvga_get_crtc(void);
-int stdvga_vram_ratio(struct vgamode_s *vmode_g);
-void stdvga_set_cursor_shape(u16 cursor_type);
-void stdvga_set_cursor_pos(int address);
-void stdvga_set_scan_lines(u8 lines);
-u16 stdvga_get_vde(void);
-int stdvga_get_window(struct vgamode_s *vmode_g, int window);
-int stdvga_set_window(struct vgamode_s *vmode_g, int window, int val);
-int stdvga_get_linelength(struct vgamode_s *vmode_g);
-int stdvga_set_linelength(struct vgamode_s *vmode_g, int val);
-int stdvga_get_displaystart(struct vgamode_s *vmode_g);
-int stdvga_set_displaystart(struct vgamode_s *vmode_g, int val);
-int stdvga_get_dacformat(struct vgamode_s *vmode_g);
-int stdvga_set_dacformat(struct vgamode_s *vmode_g, int val);
-int stdvga_save_restore(int cmd, u16 seg, void *data);
-void stdvga_enable_video_addressing(u8 disable);
-int stdvga_setup(void);
-
-#endif // stdvga.h
diff --git a/qemu/roms/seabios/vgasrc/stdvgaio.c b/qemu/roms/seabios/vgasrc/stdvgaio.c
deleted file mode 100644
index d6138c22b..000000000
--- a/qemu/roms/seabios/vgasrc/stdvgaio.c
+++ /dev/null
@@ -1,185 +0,0 @@
-// Standard VGA IO port access
-//
-// Copyright (C) 2012 Kevin O'Connor <kevin@koconnor.net>
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "farptr.h" // GET_FARVAR
-#include "stdvga.h" // stdvga_pelmask_read
-#include "x86.h" // inb
-
-u8
-stdvga_pelmask_read(void)
-{
- return inb(VGAREG_PEL_MASK);
-}
-
-void
-stdvga_pelmask_write(u8 value)
-{
- outb(value, VGAREG_PEL_MASK);
-}
-
-
-u8
-stdvga_misc_read(void)
-{
- return inb(VGAREG_READ_MISC_OUTPUT);
-}
-
-void
-stdvga_misc_write(u8 value)
-{
- outb(value, VGAREG_WRITE_MISC_OUTPUT);
-}
-
-void
-stdvga_misc_mask(u8 off, u8 on)
-{
- stdvga_misc_write((stdvga_misc_read() & ~off) | on);
-}
-
-
-u8
-stdvga_sequ_read(u8 index)
-{
- outb(index, VGAREG_SEQU_ADDRESS);
- return inb(VGAREG_SEQU_DATA);
-}
-
-void
-stdvga_sequ_write(u8 index, u8 value)
-{
- outw((value<<8) | index, VGAREG_SEQU_ADDRESS);
-}
-
-void
-stdvga_sequ_mask(u8 index, u8 off, u8 on)
-{
- outb(index, VGAREG_SEQU_ADDRESS);
- u8 v = inb(VGAREG_SEQU_DATA);
- outb((v & ~off) | on, VGAREG_SEQU_DATA);
-}
-
-
-u8
-stdvga_grdc_read(u8 index)
-{
- outb(index, VGAREG_GRDC_ADDRESS);
- return inb(VGAREG_GRDC_DATA);
-}
-
-void
-stdvga_grdc_write(u8 index, u8 value)
-{
- outw((value<<8) | index, VGAREG_GRDC_ADDRESS);
-}
-
-void
-stdvga_grdc_mask(u8 index, u8 off, u8 on)
-{
- outb(index, VGAREG_GRDC_ADDRESS);
- u8 v = inb(VGAREG_GRDC_DATA);
- outb((v & ~off) | on, VGAREG_GRDC_DATA);
-}
-
-
-u8
-stdvga_crtc_read(u16 crtc_addr, u8 index)
-{
- outb(index, crtc_addr);
- return inb(crtc_addr + 1);
-}
-
-void
-stdvga_crtc_write(u16 crtc_addr, u8 index, u8 value)
-{
- outw((value<<8) | index, crtc_addr);
-}
-
-void
-stdvga_crtc_mask(u16 crtc_addr, u8 index, u8 off, u8 on)
-{
- outb(index, crtc_addr);
- u8 v = inb(crtc_addr + 1);
- outb((v & ~off) | on, crtc_addr + 1);
-}
-
-
-u8
-stdvga_attr_read(u8 index)
-{
- inb(VGAREG_ACTL_RESET);
- u8 orig = inb(VGAREG_ACTL_ADDRESS);
- outb(index, VGAREG_ACTL_ADDRESS);
- u8 v = inb(VGAREG_ACTL_READ_DATA);
- inb(VGAREG_ACTL_RESET);
- outb(orig, VGAREG_ACTL_ADDRESS);
- return v;
-}
-
-void
-stdvga_attr_write(u8 index, u8 value)
-{
- inb(VGAREG_ACTL_RESET);
- u8 orig = inb(VGAREG_ACTL_ADDRESS);
- outb(index, VGAREG_ACTL_ADDRESS);
- outb(value, VGAREG_ACTL_WRITE_DATA);
- outb(orig, VGAREG_ACTL_ADDRESS);
-}
-
-void
-stdvga_attr_mask(u8 index, u8 off, u8 on)
-{
- inb(VGAREG_ACTL_RESET);
- u8 orig = inb(VGAREG_ACTL_ADDRESS);
- outb(index, VGAREG_ACTL_ADDRESS);
- u8 v = inb(VGAREG_ACTL_READ_DATA);
- outb((v & ~off) | on, VGAREG_ACTL_WRITE_DATA);
- outb(orig, VGAREG_ACTL_ADDRESS);
-}
-
-u8
-stdvga_attrindex_read(void)
-{
- inb(VGAREG_ACTL_RESET);
- return inb(VGAREG_ACTL_ADDRESS);
-}
-
-void
-stdvga_attrindex_write(u8 value)
-{
- inb(VGAREG_ACTL_RESET);
- outb(value, VGAREG_ACTL_ADDRESS);
-}
-
-
-void
-stdvga_dac_read(u16 seg, u8 *data_far, u8 start, int count)
-{
- outb(start, VGAREG_DAC_READ_ADDRESS);
- while (count) {
- SET_FARVAR(seg, *data_far, inb(VGAREG_DAC_DATA));
- data_far++;
- SET_FARVAR(seg, *data_far, inb(VGAREG_DAC_DATA));
- data_far++;
- SET_FARVAR(seg, *data_far, inb(VGAREG_DAC_DATA));
- data_far++;
- count--;
- }
-}
-
-void
-stdvga_dac_write(u16 seg, u8 *data_far, u8 start, int count)
-{
- outb(start, VGAREG_DAC_WRITE_ADDRESS);
- while (count) {
- outb(GET_FARVAR(seg, *data_far), VGAREG_DAC_DATA);
- data_far++;
- outb(GET_FARVAR(seg, *data_far), VGAREG_DAC_DATA);
- data_far++;
- outb(GET_FARVAR(seg, *data_far), VGAREG_DAC_DATA);
- data_far++;
- count--;
- }
-}
diff --git a/qemu/roms/seabios/vgasrc/stdvgamodes.c b/qemu/roms/seabios/vgasrc/stdvgamodes.c
deleted file mode 100644
index c553514fa..000000000
--- a/qemu/roms/seabios/vgasrc/stdvgamodes.c
+++ /dev/null
@@ -1,523 +0,0 @@
-// Standard VGA mode information.
-//
-// Copyright (C) 2009 Kevin O'Connor <kevin@koconnor.net>
-// Copyright (C) 2001-2008 the LGPL VGABios developers Team
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // GET_GLOBAL
-#include "output.h" // warn_internalerror
-#include "stdvga.h" // stdvga_find_mode
-#include "string.h" // memcpy_far
-#include "vgabios.h" // video_param_table
-
-
-/****************************************************************
- * Video mode register definitions
- ****************************************************************/
-
-/* Mono */
-static u8 palette0[] VAR16 = {
- 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
- 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
- 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
- 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
- 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
- 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
- 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f,
- 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f,
- 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
- 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
- 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
- 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
- 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
- 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
- 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f,
- 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f
-};
-
-static u8 palette1[] VAR16 = {
- 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
- 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
- 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
- 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
- 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
- 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
- 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
- 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
- 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
- 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
- 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
- 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
- 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
- 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
- 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
- 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f
-};
-
-static u8 palette2[] VAR16 = {
- 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
- 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x2a,0x00, 0x2a,0x2a,0x2a,
- 0x00,0x00,0x15, 0x00,0x00,0x3f, 0x00,0x2a,0x15, 0x00,0x2a,0x3f,
- 0x2a,0x00,0x15, 0x2a,0x00,0x3f, 0x2a,0x2a,0x15, 0x2a,0x2a,0x3f,
- 0x00,0x15,0x00, 0x00,0x15,0x2a, 0x00,0x3f,0x00, 0x00,0x3f,0x2a,
- 0x2a,0x15,0x00, 0x2a,0x15,0x2a, 0x2a,0x3f,0x00, 0x2a,0x3f,0x2a,
- 0x00,0x15,0x15, 0x00,0x15,0x3f, 0x00,0x3f,0x15, 0x00,0x3f,0x3f,
- 0x2a,0x15,0x15, 0x2a,0x15,0x3f, 0x2a,0x3f,0x15, 0x2a,0x3f,0x3f,
- 0x15,0x00,0x00, 0x15,0x00,0x2a, 0x15,0x2a,0x00, 0x15,0x2a,0x2a,
- 0x3f,0x00,0x00, 0x3f,0x00,0x2a, 0x3f,0x2a,0x00, 0x3f,0x2a,0x2a,
- 0x15,0x00,0x15, 0x15,0x00,0x3f, 0x15,0x2a,0x15, 0x15,0x2a,0x3f,
- 0x3f,0x00,0x15, 0x3f,0x00,0x3f, 0x3f,0x2a,0x15, 0x3f,0x2a,0x3f,
- 0x15,0x15,0x00, 0x15,0x15,0x2a, 0x15,0x3f,0x00, 0x15,0x3f,0x2a,
- 0x3f,0x15,0x00, 0x3f,0x15,0x2a, 0x3f,0x3f,0x00, 0x3f,0x3f,0x2a,
- 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
- 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f
-};
-
-static u8 palette3[] VAR16 = {
- 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
- 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
- 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
- 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
- 0x00,0x00,0x00, 0x05,0x05,0x05, 0x08,0x08,0x08, 0x0b,0x0b,0x0b,
- 0x0e,0x0e,0x0e, 0x11,0x11,0x11, 0x14,0x14,0x14, 0x18,0x18,0x18,
- 0x1c,0x1c,0x1c, 0x20,0x20,0x20, 0x24,0x24,0x24, 0x28,0x28,0x28,
- 0x2d,0x2d,0x2d, 0x32,0x32,0x32, 0x38,0x38,0x38, 0x3f,0x3f,0x3f,
- 0x00,0x00,0x3f, 0x10,0x00,0x3f, 0x1f,0x00,0x3f, 0x2f,0x00,0x3f,
- 0x3f,0x00,0x3f, 0x3f,0x00,0x2f, 0x3f,0x00,0x1f, 0x3f,0x00,0x10,
- 0x3f,0x00,0x00, 0x3f,0x10,0x00, 0x3f,0x1f,0x00, 0x3f,0x2f,0x00,
- 0x3f,0x3f,0x00, 0x2f,0x3f,0x00, 0x1f,0x3f,0x00, 0x10,0x3f,0x00,
- 0x00,0x3f,0x00, 0x00,0x3f,0x10, 0x00,0x3f,0x1f, 0x00,0x3f,0x2f,
- 0x00,0x3f,0x3f, 0x00,0x2f,0x3f, 0x00,0x1f,0x3f, 0x00,0x10,0x3f,
- 0x1f,0x1f,0x3f, 0x27,0x1f,0x3f, 0x2f,0x1f,0x3f, 0x37,0x1f,0x3f,
- 0x3f,0x1f,0x3f, 0x3f,0x1f,0x37, 0x3f,0x1f,0x2f, 0x3f,0x1f,0x27,
-
- 0x3f,0x1f,0x1f, 0x3f,0x27,0x1f, 0x3f,0x2f,0x1f, 0x3f,0x37,0x1f,
- 0x3f,0x3f,0x1f, 0x37,0x3f,0x1f, 0x2f,0x3f,0x1f, 0x27,0x3f,0x1f,
- 0x1f,0x3f,0x1f, 0x1f,0x3f,0x27, 0x1f,0x3f,0x2f, 0x1f,0x3f,0x37,
- 0x1f,0x3f,0x3f, 0x1f,0x37,0x3f, 0x1f,0x2f,0x3f, 0x1f,0x27,0x3f,
- 0x2d,0x2d,0x3f, 0x31,0x2d,0x3f, 0x36,0x2d,0x3f, 0x3a,0x2d,0x3f,
- 0x3f,0x2d,0x3f, 0x3f,0x2d,0x3a, 0x3f,0x2d,0x36, 0x3f,0x2d,0x31,
- 0x3f,0x2d,0x2d, 0x3f,0x31,0x2d, 0x3f,0x36,0x2d, 0x3f,0x3a,0x2d,
- 0x3f,0x3f,0x2d, 0x3a,0x3f,0x2d, 0x36,0x3f,0x2d, 0x31,0x3f,0x2d,
- 0x2d,0x3f,0x2d, 0x2d,0x3f,0x31, 0x2d,0x3f,0x36, 0x2d,0x3f,0x3a,
- 0x2d,0x3f,0x3f, 0x2d,0x3a,0x3f, 0x2d,0x36,0x3f, 0x2d,0x31,0x3f,
- 0x00,0x00,0x1c, 0x07,0x00,0x1c, 0x0e,0x00,0x1c, 0x15,0x00,0x1c,
- 0x1c,0x00,0x1c, 0x1c,0x00,0x15, 0x1c,0x00,0x0e, 0x1c,0x00,0x07,
- 0x1c,0x00,0x00, 0x1c,0x07,0x00, 0x1c,0x0e,0x00, 0x1c,0x15,0x00,
- 0x1c,0x1c,0x00, 0x15,0x1c,0x00, 0x0e,0x1c,0x00, 0x07,0x1c,0x00,
- 0x00,0x1c,0x00, 0x00,0x1c,0x07, 0x00,0x1c,0x0e, 0x00,0x1c,0x15,
- 0x00,0x1c,0x1c, 0x00,0x15,0x1c, 0x00,0x0e,0x1c, 0x00,0x07,0x1c,
-
- 0x0e,0x0e,0x1c, 0x11,0x0e,0x1c, 0x15,0x0e,0x1c, 0x18,0x0e,0x1c,
- 0x1c,0x0e,0x1c, 0x1c,0x0e,0x18, 0x1c,0x0e,0x15, 0x1c,0x0e,0x11,
- 0x1c,0x0e,0x0e, 0x1c,0x11,0x0e, 0x1c,0x15,0x0e, 0x1c,0x18,0x0e,
- 0x1c,0x1c,0x0e, 0x18,0x1c,0x0e, 0x15,0x1c,0x0e, 0x11,0x1c,0x0e,
- 0x0e,0x1c,0x0e, 0x0e,0x1c,0x11, 0x0e,0x1c,0x15, 0x0e,0x1c,0x18,
- 0x0e,0x1c,0x1c, 0x0e,0x18,0x1c, 0x0e,0x15,0x1c, 0x0e,0x11,0x1c,
- 0x14,0x14,0x1c, 0x16,0x14,0x1c, 0x18,0x14,0x1c, 0x1a,0x14,0x1c,
- 0x1c,0x14,0x1c, 0x1c,0x14,0x1a, 0x1c,0x14,0x18, 0x1c,0x14,0x16,
- 0x1c,0x14,0x14, 0x1c,0x16,0x14, 0x1c,0x18,0x14, 0x1c,0x1a,0x14,
- 0x1c,0x1c,0x14, 0x1a,0x1c,0x14, 0x18,0x1c,0x14, 0x16,0x1c,0x14,
- 0x14,0x1c,0x14, 0x14,0x1c,0x16, 0x14,0x1c,0x18, 0x14,0x1c,0x1a,
- 0x14,0x1c,0x1c, 0x14,0x1a,0x1c, 0x14,0x18,0x1c, 0x14,0x16,0x1c,
- 0x00,0x00,0x10, 0x04,0x00,0x10, 0x08,0x00,0x10, 0x0c,0x00,0x10,
- 0x10,0x00,0x10, 0x10,0x00,0x0c, 0x10,0x00,0x08, 0x10,0x00,0x04,
- 0x10,0x00,0x00, 0x10,0x04,0x00, 0x10,0x08,0x00, 0x10,0x0c,0x00,
- 0x10,0x10,0x00, 0x0c,0x10,0x00, 0x08,0x10,0x00, 0x04,0x10,0x00,
-
- 0x00,0x10,0x00, 0x00,0x10,0x04, 0x00,0x10,0x08, 0x00,0x10,0x0c,
- 0x00,0x10,0x10, 0x00,0x0c,0x10, 0x00,0x08,0x10, 0x00,0x04,0x10,
- 0x08,0x08,0x10, 0x0a,0x08,0x10, 0x0c,0x08,0x10, 0x0e,0x08,0x10,
- 0x10,0x08,0x10, 0x10,0x08,0x0e, 0x10,0x08,0x0c, 0x10,0x08,0x0a,
- 0x10,0x08,0x08, 0x10,0x0a,0x08, 0x10,0x0c,0x08, 0x10,0x0e,0x08,
- 0x10,0x10,0x08, 0x0e,0x10,0x08, 0x0c,0x10,0x08, 0x0a,0x10,0x08,
- 0x08,0x10,0x08, 0x08,0x10,0x0a, 0x08,0x10,0x0c, 0x08,0x10,0x0e,
- 0x08,0x10,0x10, 0x08,0x0e,0x10, 0x08,0x0c,0x10, 0x08,0x0a,0x10,
- 0x0b,0x0b,0x10, 0x0c,0x0b,0x10, 0x0d,0x0b,0x10, 0x0f,0x0b,0x10,
- 0x10,0x0b,0x10, 0x10,0x0b,0x0f, 0x10,0x0b,0x0d, 0x10,0x0b,0x0c,
- 0x10,0x0b,0x0b, 0x10,0x0c,0x0b, 0x10,0x0d,0x0b, 0x10,0x0f,0x0b,
- 0x10,0x10,0x0b, 0x0f,0x10,0x0b, 0x0d,0x10,0x0b, 0x0c,0x10,0x0b,
- 0x0b,0x10,0x0b, 0x0b,0x10,0x0c, 0x0b,0x10,0x0d, 0x0b,0x10,0x0f,
- 0x0b,0x10,0x10, 0x0b,0x0f,0x10, 0x0b,0x0d,0x10, 0x0b,0x0c,0x10,
- 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
- 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00
-};
-
-static u8 sequ_01[] VAR16 = { 0x08, 0x03, 0x00, 0x02 };
-static u8 crtc_01[] VAR16 = {
- 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
- 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
- 0xff };
-static u8 actl_01[] VAR16 = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
- 0x0c, 0x00, 0x0f, 0x08 };
-static u8 grdc_01[] VAR16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff };
-static u8 sequ_03[] VAR16 = { 0x00, 0x03, 0x00, 0x02 };
-static u8 crtc_03[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
- 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
- 0xff };
-static u8 sequ_04[] VAR16 = { 0x09, 0x03, 0x00, 0x02 };
-static u8 crtc_04[] VAR16 = {
- 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
- 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
- 0xff };
-static u8 actl_04[] VAR16 = {
- 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
- 0x01, 0x00, 0x03, 0x00 };
-static u8 grdc_04[] VAR16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff };
-static u8 sequ_06[] VAR16 = { 0x01, 0x01, 0x00, 0x06 };
-static u8 crtc_06[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
- 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xc2,
- 0xff };
-static u8 actl_06[] VAR16 = {
- 0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
- 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
- 0x01, 0x00, 0x01, 0x00 };
-static u8 grdc_06[] VAR16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0xff };
-static u8 crtc_07[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
- 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
- 0xff };
-static u8 actl_07[] VAR16 = {
- 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x0e, 0x00, 0x0f, 0x08 };
-static u8 grdc_07[] VAR16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff };
-static u8 sequ_0d[] VAR16 = { 0x09, 0x0f, 0x00, 0x06 };
-static u8 crtc_0d[] VAR16 = {
- 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
- 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xe3,
- 0xff };
-static u8 actl_0d[] VAR16 = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
- 0x01, 0x00, 0x0f, 0x00 };
-static u8 grdc_0d[] VAR16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff };
-static u8 sequ_0e[] VAR16 = { 0x01, 0x0f, 0x00, 0x06 };
-static u8 crtc_0e[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
- 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xe3,
- 0xff };
-static u8 crtc_0f[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
- 0xff };
-static u8 actl_0f[] VAR16 = {
- 0x00, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
- 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
- 0x01, 0x00, 0x01, 0x00 };
-static u8 actl_10[] VAR16 = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
- 0x01, 0x00, 0x0f, 0x00 };
-static u8 crtc_11[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
- 0xff };
-static u8 actl_11[] VAR16 = {
- 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
- 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
- 0x01, 0x00, 0x0f, 0x00 };
-static u8 sequ_13[] VAR16 = { 0x01, 0x0f, 0x00, 0x0e };
-static u8 crtc_13[] VAR16 = {
- 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
- 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96, 0xb9, 0xa3,
- 0xff };
-static u8 actl_13[] VAR16 = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
- 0x41, 0x00, 0x0f, 0x00 };
-static u8 grdc_13[] VAR16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff };
-static u8 crtc_6A[] VAR16 = {
- 0x7f, 0x63, 0x63, 0x83, 0x6b, 0x1b, 0x72, 0xf0,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x59, 0x8d, 0x57, 0x32, 0x00, 0x57, 0x73, 0xe3,
- 0xff };
-
-#define PAL(x) x, sizeof(x)
-
-struct stdvga_mode_s {
- u16 mode;
- struct vgamode_s info;
-
- u8 pelmask;
- u8 *dac;
- u16 dacsize;
- u8 *sequ_regs;
- u8 miscreg;
- u8 *crtc_regs;
- u8 *actl_regs;
- u8 *grdc_regs;
-};
-
-static struct stdvga_mode_s vga_modes[] VAR16 = {
- //mode { model tx ty bpp cw ch sstart }
- // pelm dac sequ misc crtc actl grdc
- {0x00, { MM_TEXT, 40, 25, 4, 9, 16, SEG_CTEXT }
- , 0xFF, PAL(palette2), sequ_01, 0x67, crtc_01, actl_01, grdc_01},
- {0x01, { MM_TEXT, 40, 25, 4, 9, 16, SEG_CTEXT }
- , 0xFF, PAL(palette2), sequ_01, 0x67, crtc_01, actl_01, grdc_01},
- {0x02, { MM_TEXT, 80, 25, 4, 9, 16, SEG_CTEXT }
- , 0xFF, PAL(palette2), sequ_03, 0x67, crtc_03, actl_01, grdc_01},
- {0x03, { MM_TEXT, 80, 25, 4, 9, 16, SEG_CTEXT }
- , 0xFF, PAL(palette2), sequ_03, 0x67, crtc_03, actl_01, grdc_01},
- {0x04, { MM_CGA, 320, 200, 2, 8, 8, SEG_CTEXT }
- , 0xFF, PAL(palette1), sequ_04, 0x63, crtc_04, actl_04, grdc_04},
- {0x05, { MM_CGA, 320, 200, 2, 8, 8, SEG_CTEXT }
- , 0xFF, PAL(palette1), sequ_04, 0x63, crtc_04, actl_04, grdc_04},
- {0x06, { MM_CGA, 640, 200, 1, 8, 8, SEG_CTEXT }
- , 0xFF, PAL(palette1), sequ_06, 0x63, crtc_06, actl_06, grdc_06},
- {0x07, { MM_TEXT, 80, 25, 4, 9, 16, SEG_MTEXT }
- , 0xFF, PAL(palette0), sequ_03, 0x66, crtc_07, actl_07, grdc_07},
- {0x0D, { MM_PLANAR, 320, 200, 4, 8, 8, SEG_GRAPH }
- , 0xFF, PAL(palette1), sequ_0d, 0x63, crtc_0d, actl_0d, grdc_0d},
- {0x0E, { MM_PLANAR, 640, 200, 4, 8, 8, SEG_GRAPH }
- , 0xFF, PAL(palette1), sequ_0e, 0x63, crtc_0e, actl_0d, grdc_0d},
- {0x0F, { MM_PLANAR, 640, 350, 1, 8, 14, SEG_GRAPH }
- , 0xFF, PAL(palette0), sequ_0e, 0xa3, crtc_0f, actl_0f, grdc_0d},
- {0x10, { MM_PLANAR, 640, 350, 4, 8, 14, SEG_GRAPH }
- , 0xFF, PAL(palette2), sequ_0e, 0xa3, crtc_0f, actl_10, grdc_0d},
- {0x11, { MM_PLANAR, 640, 480, 1, 8, 16, SEG_GRAPH }
- , 0xFF, PAL(palette2), sequ_0e, 0xe3, crtc_11, actl_11, grdc_0d},
- {0x12, { MM_PLANAR, 640, 480, 4, 8, 16, SEG_GRAPH }
- , 0xFF, PAL(palette2), sequ_0e, 0xe3, crtc_11, actl_10, grdc_0d},
- {0x13, { MM_PACKED, 320, 200, 8, 8, 8, SEG_GRAPH }
- , 0xFF, PAL(palette3), sequ_13, 0x63, crtc_13, actl_13, grdc_13},
- {0x6A, { MM_PLANAR, 800, 600, 4, 8, 16, SEG_GRAPH }
- , 0xFF, PAL(palette2), sequ_0e, 0xe3, crtc_6A, actl_10, grdc_0d},
-};
-
-
-/****************************************************************
- * Mode functions
- ****************************************************************/
-
-static int
-is_stdvga_mode(struct vgamode_s *vmode_g)
-{
- return (vmode_g >= &vga_modes[0].info
- && vmode_g <= &vga_modes[ARRAY_SIZE(vga_modes)-1].info);
-}
-
-struct vgamode_s *
-stdvga_find_mode(int mode)
-{
- int i;
- for (i = 0; i < ARRAY_SIZE(vga_modes); i++) {
- struct stdvga_mode_s *stdmode_g = &vga_modes[i];
- if (GET_GLOBAL(stdmode_g->mode) == mode)
- return &stdmode_g->info;
- }
- return NULL;
-}
-
-void
-stdvga_list_modes(u16 seg, u16 *dest, u16 *last)
-{
- int i;
- for (i = 0; i < ARRAY_SIZE(vga_modes) && dest < last; i++) {
- struct stdvga_mode_s *stdmode_g = &vga_modes[i];
- u16 mode = GET_GLOBAL(stdmode_g->mode);
- if (mode == 0xffff)
- continue;
- SET_FARVAR(seg, *dest, mode);
- dest++;
- }
-
- SET_FARVAR(seg, *dest, 0xffff);
-}
-
-void
-stdvga_build_video_param(void)
-{
- static u8 parammodes[] VAR16 = {
- 0, 0, 0, 0, 0x04, 0x05, 0x06, 0x07,
- 0, 0, 0, 0, 0, 0x0d, 0x0e, 0,
- 0, 0x0f, 0x10, 0, 0, 0, 0, 0x01,
- 0x03, 0x07, 0x11, 0x12, 0x13
- };
-
- int i;
- for (i=0; i<ARRAY_SIZE(parammodes); i++) {
- int mode = GET_GLOBAL(parammodes[i]);
- if (! mode)
- continue;
- struct video_param_s *vparam_g = &video_param_table[i];
- struct vgamode_s *vmode_g = stdvga_find_mode(mode);
- if (!vmode_g)
- continue;
- int width = GET_GLOBAL(vmode_g->width);
- int height = GET_GLOBAL(vmode_g->height);
- u8 memmodel = GET_GLOBAL(vmode_g->memmodel);
- int cheight = GET_GLOBAL(vmode_g->cheight);
- if (memmodel == MM_TEXT) {
- SET_VGA(vparam_g->twidth, width);
- SET_VGA(vparam_g->theightm1, height-1);
- } else {
- int cwidth = GET_GLOBAL(vmode_g->cwidth);
- SET_VGA(vparam_g->twidth, width / cwidth);
- SET_VGA(vparam_g->theightm1, (height / cheight) - 1);
- }
- SET_VGA(vparam_g->cheight, cheight);
- SET_VGA(vparam_g->slength, calc_page_size(memmodel, width, height));
- struct stdvga_mode_s *stdmode_g = container_of(
- vmode_g, struct stdvga_mode_s, info);
- memcpy_far(get_global_seg(), vparam_g->sequ_regs
- , get_global_seg(), GET_GLOBAL(stdmode_g->sequ_regs)
- , ARRAY_SIZE(vparam_g->sequ_regs));
- SET_VGA(vparam_g->miscreg, GET_GLOBAL(stdmode_g->miscreg));
- memcpy_far(get_global_seg(), vparam_g->crtc_regs
- , get_global_seg(), GET_GLOBAL(stdmode_g->crtc_regs)
- , ARRAY_SIZE(vparam_g->crtc_regs));
- memcpy_far(get_global_seg(), vparam_g->actl_regs
- , get_global_seg(), GET_GLOBAL(stdmode_g->actl_regs)
- , ARRAY_SIZE(vparam_g->actl_regs));
- memcpy_far(get_global_seg(), vparam_g->grdc_regs
- , get_global_seg(), GET_GLOBAL(stdmode_g->grdc_regs)
- , ARRAY_SIZE(vparam_g->grdc_regs));
- }
-
- // Fill available legacy modes in video_func_static table
- u32 modes = 0;
- for (i = 0; i < ARRAY_SIZE(vga_modes); i++) {
- u16 mode = vga_modes[i].mode;
- if (mode <= 0x13)
- modes |= 1<<i;
- }
- SET_VGA(static_functionality.modes, modes);
-}
-
-void
-stdvga_override_crtc(int mode, u8 *crtc)
-{
- struct vgamode_s *vmode_g = stdvga_find_mode(mode);
- if (!vmode_g)
- return;
- struct stdvga_mode_s *stdmode_g = container_of(
- vmode_g, struct stdvga_mode_s, info);
- SET_VGA(stdmode_g->crtc_regs, crtc);
-}
-
-static void
-clear_screen(struct vgamode_s *vmode_g)
-{
- switch (GET_GLOBAL(vmode_g->memmodel)) {
- case MM_TEXT:
- memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0720, 32*1024);
- break;
- case MM_CGA:
- memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0000, 32*1024);
- break;
- default:
- // XXX - old code gets/sets/restores sequ register 2 to 0xf -
- // but it should always be 0xf anyway.
- memset16_far(GET_GLOBAL(vmode_g->sstart), 0, 0x0000, 64*1024);
- }
-}
-
-int
-stdvga_set_mode(struct vgamode_s *vmode_g, int flags)
-{
- if (! is_stdvga_mode(vmode_g)) {
- warn_internalerror();
- return -1;
- }
- struct stdvga_mode_s *stdmode_g = container_of(
- vmode_g, struct stdvga_mode_s, info);
-
- // if palette loading (bit 3 of modeset ctl = 0)
- if (!(flags & MF_NOPALETTE)) { // Set the PEL mask
- stdvga_pelmask_write(GET_GLOBAL(stdmode_g->pelmask));
-
- // From which palette
- u8 *palette_g = GET_GLOBAL(stdmode_g->dac);
- u16 palsize = GET_GLOBAL(stdmode_g->dacsize) / 3;
-
- // Always 256*3 values
- stdvga_dac_write(get_global_seg(), palette_g, 0, palsize);
- int i;
- for (i = palsize; i < 0x0100; i++) {
- static u8 rgb[3] VAR16;
- stdvga_dac_write(get_global_seg(), rgb, i, 1);
- }
-
- if (flags & MF_GRAYSUM)
- stdvga_perform_gray_scale_summing(0x00, 0x100);
- }
-
- // Set Attribute Ctl
- u8 *regs = GET_GLOBAL(stdmode_g->actl_regs);
- int i;
- for (i = 0; i <= 0x13; i++)
- stdvga_attr_write(i, GET_GLOBAL(regs[i]));
- stdvga_attr_write(0x14, 0x00);
-
- // Set Sequencer Ctl
- stdvga_sequ_write(0x00, 0x03);
- regs = GET_GLOBAL(stdmode_g->sequ_regs);
- for (i = 1; i <= 4; i++)
- stdvga_sequ_write(i, GET_GLOBAL(regs[i - 1]));
-
- // Set Grafx Ctl
- regs = GET_GLOBAL(stdmode_g->grdc_regs);
- for (i = 0; i <= 8; i++)
- stdvga_grdc_write(i, GET_GLOBAL(regs[i]));
-
- // Set CRTC address VGA or MDA
- u8 miscreg = GET_GLOBAL(stdmode_g->miscreg);
- u16 crtc_addr = VGAREG_VGA_CRTC_ADDRESS;
- if (!(miscreg & 1))
- crtc_addr = VGAREG_MDA_CRTC_ADDRESS;
-
- // Disable CRTC write protection
- stdvga_crtc_write(crtc_addr, 0x11, 0x00);
- // Set CRTC regs
- regs = GET_GLOBAL(stdmode_g->crtc_regs);
- for (i = 0; i <= 0x18; i++)
- stdvga_crtc_write(crtc_addr, i, GET_GLOBAL(regs[i]));
-
- // Set the misc register
- stdvga_misc_write(miscreg);
-
- // Enable video
- stdvga_attrindex_write(0x20);
-
- // Clear screen
- if (!(flags & MF_NOCLEARMEM))
- clear_screen(vmode_g);
-
- // Write the fonts in memory
- u8 memmodel = GET_GLOBAL(vmode_g->memmodel);
- if (memmodel == MM_TEXT)
- stdvga_load_font(get_global_seg(), vgafont16, 0x100, 0, 0, 16);
-
- return 0;
-}
-
-// Load the standard palette associated with 8bpp packed pixel vga modes.
-void
-stdvga_set_packed_palette(void)
-{
- stdvga_dac_write(get_global_seg(), palette3, 0, sizeof(palette3) / 3);
-}
diff --git a/qemu/roms/seabios/vgasrc/vbe.c b/qemu/roms/seabios/vgasrc/vbe.c
deleted file mode 100644
index af3d0ccb8..000000000
--- a/qemu/roms/seabios/vgasrc/vbe.c
+++ /dev/null
@@ -1,426 +0,0 @@
-// Video Bios Extensions handlers
-//
-// Copyright (C) 2012 Kevin O'Connor <kevin@koconnor.net>
-// Copyright (C) 2011 Julian Pidancet <julian.pidancet@citrix.com>
-// Copyright (C) 2001-2008 the LGPL VGABios developers Team
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // GET_GLOBAL
-#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 "vgabios.h" // handle_104f
-#include "vgahw.h" // vgahw_set_mode
-
-u32 VBE_total_memory VAR16 = 256 * 1024;
-u32 VBE_capabilities VAR16;
-u32 VBE_framebuffer VAR16;
-u16 VBE_win_granularity VAR16;
-
-static void
-vbe_104f00(struct bregs *regs)
-{
- u16 seg = regs->es;
- struct vbe_info *info = (void*)(regs->di+0);
-
- if (GET_FARVAR(seg, info->signature) == VBE2_SIGNATURE) {
- dprintf(4, "Get VBE Controller: VBE2 Signature found\n");
- } else if (GET_FARVAR(seg, info->signature) == VESA_SIGNATURE) {
- dprintf(4, "Get VBE Controller: VESA Signature found\n");
- } else {
- dprintf(4, "Get VBE Controller: Invalid Signature\n");
- }
-
- memset_far(seg, info, 0, sizeof(*info));
-
- SET_FARVAR(seg, info->signature, VESA_SIGNATURE);
-
- SET_FARVAR(seg, info->version, 0x0300);
-
- SET_FARVAR(seg, info->oem_string,
- SEGOFF(get_global_seg(), (u32)VBE_OEM_STRING));
- SET_FARVAR(seg, info->capabilities, GET_GLOBAL(VBE_capabilities));
-
- /* We generate our mode list in the reserved field of the info block */
- u16 *destmode = (void*)info->reserved;
- SET_FARVAR(seg, info->video_mode, SEGOFF(seg, (u32)destmode));
-
- /* Total memory (in 64k blocks) */
- SET_FARVAR(seg, info->total_memory
- , GET_GLOBAL(VBE_total_memory) / (64*1024));
-
- SET_FARVAR(seg, info->oem_vendor_string,
- SEGOFF(get_global_seg(), (u32)VBE_VENDOR_STRING));
- SET_FARVAR(seg, info->oem_product_string,
- SEGOFF(get_global_seg(), (u32)VBE_PRODUCT_STRING));
- SET_FARVAR(seg, info->oem_revision_string,
- SEGOFF(get_global_seg(), (u32)VBE_REVISION_STRING));
-
- /* Fill list of modes */
- u16 *last = (void*)&info->reserved[sizeof(info->reserved)];
- vgahw_list_modes(seg, destmode, last - 1);
-
- regs->ax = 0x004f;
-}
-
-static void
-vbe_104f01(struct bregs *regs)
-{
- u16 seg = regs->es;
- struct vbe_mode_info *info = (void*)(regs->di+0);
- u16 mode = regs->cx;
-
- dprintf(1, "VBE mode info request: %x\n", mode);
-
- struct vgamode_s *vmode_g = vgahw_find_mode(mode & ~MF_VBEFLAGS);
- if (! vmode_g) {
- dprintf(1, "VBE mode %x not found\n", mode);
- regs->ax = 0x014f;
- return;
- }
-
- memset_far(seg, info, 0, sizeof(*info));
-
- // Basic information about video controller.
- u32 win_granularity = GET_GLOBAL(VBE_win_granularity);
- SET_FARVAR(seg, info->winA_attributes,
- (win_granularity ? VBE_WINDOW_ATTRIBUTE_RELOCATABLE : 0) |
- VBE_WINDOW_ATTRIBUTE_READABLE |
- VBE_WINDOW_ATTRIBUTE_WRITEABLE);
- SET_FARVAR(seg, info->winB_attributes, 0);
- SET_FARVAR(seg, info->win_granularity, win_granularity);
- SET_FARVAR(seg, info->win_size, 64); /* Bank size 64K */
- SET_FARVAR(seg, info->winA_seg, GET_GLOBAL(vmode_g->sstart));
- SET_FARVAR(seg, info->winB_seg, 0x0);
- extern void entry_104f05(void);
- SET_FARVAR(seg, info->win_func_ptr
- , SEGOFF(get_global_seg(), (u32)entry_104f05));
- // Basic information about mode.
- int width = GET_GLOBAL(vmode_g->width);
- int height = GET_GLOBAL(vmode_g->height);
- int linesize = DIV_ROUND_UP(width * vga_bpp(vmode_g), 8);
- SET_FARVAR(seg, info->bytes_per_scanline, linesize);
- SET_FARVAR(seg, info->xres, width);
- SET_FARVAR(seg, info->yres, height);
- SET_FARVAR(seg, info->xcharsize, GET_GLOBAL(vmode_g->cwidth));
- SET_FARVAR(seg, info->ycharsize, GET_GLOBAL(vmode_g->cheight));
- int depth = GET_GLOBAL(vmode_g->depth);
- SET_FARVAR(seg, info->bits_per_pixel, depth);
- u8 memmodel = GET_GLOBAL(vmode_g->memmodel);
- SET_FARVAR(seg, info->mem_model, memmodel);
- SET_FARVAR(seg, info->reserved0, 1);
-
- // Mode specific info.
- u16 mode_attr = VBE_MODE_ATTRIBUTE_SUPPORTED |
- VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
- VBE_MODE_ATTRIBUTE_COLOR_MODE |
- VBE_MODE_ATTRIBUTE_GRAPHICS_MODE |
- VBE_MODE_ATTRIBUTE_NOT_VGA_COMPATIBLE;
- u32 framebuffer = 0;
- int planes = 1, banks = 1;
- u32 pages = GET_GLOBAL(VBE_total_memory) / ALIGN(height * linesize, 64*1024);
- switch (memmodel) {
- case MM_TEXT:
- mode_attr &= ~VBE_MODE_ATTRIBUTE_GRAPHICS_MODE;
- mode_attr |= VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT;
- if (GET_GLOBAL(vmode_g->sstart) == SEG_MTEXT)
- mode_attr &= ~VBE_MODE_ATTRIBUTE_COLOR_MODE;
- pages = 1;
- break;
- case MM_CGA:
- pages = 1;
- banks = 2;
- SET_FARVAR(seg, info->bank_size, 8);
- break;
- case MM_PLANAR:
- planes = 4;
- pages /= 4;
- break;
- default:
- framebuffer = GET_GLOBAL(VBE_framebuffer);
- if (framebuffer)
- mode_attr |= VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE;
- break;
- }
- if (pages > 128)
- pages = 128;
- if (pages < 2)
- pages++;
- SET_FARVAR(seg, info->mode_attributes, mode_attr);
- SET_FARVAR(seg, info->planes, planes);
- SET_FARVAR(seg, info->pages, pages - 1);
- SET_FARVAR(seg, info->banks, banks);
-
- // Pixel color breakdown
- u8 r_size, r_pos, g_size, g_pos, b_size, b_pos, a_size, a_pos;
- switch (depth) {
- case 15: r_size = 5; r_pos = 10; g_size = 5; g_pos = 5;
- b_size = 5; b_pos = 0; a_size = 1; a_pos = 15; break;
- case 16: r_size = 5; r_pos = 11; g_size = 6; g_pos = 5;
- b_size = 5; b_pos = 0; a_size = 0; a_pos = 0; break;
- case 24: r_size = 8; r_pos = 16; g_size = 8; g_pos = 8;
- b_size = 8; b_pos = 0; a_size = 0; a_pos = 0; break;
- case 32: r_size = 8; r_pos = 16; g_size = 8; g_pos = 8;
- b_size = 8; b_pos = 0; a_size = 8; a_pos = 24;
- SET_FARVAR(seg, info->directcolor_info,
- VBE_DIRECTCOLOR_RESERVED_BITS_AVAILABLE);
- break;
- default: r_size = 0; r_pos = 0; g_size = 0; g_pos = 0;
- b_size = 0; b_pos = 0; a_size = 0; a_pos = 0; break;
- }
- SET_FARVAR(seg, info->red_size, r_size);
- SET_FARVAR(seg, info->red_pos, r_pos);
- SET_FARVAR(seg, info->green_size, g_size);
- SET_FARVAR(seg, info->green_pos, g_pos);
- SET_FARVAR(seg, info->blue_size, b_size);
- SET_FARVAR(seg, info->blue_pos, b_pos);
- SET_FARVAR(seg, info->alpha_size, a_size);
- SET_FARVAR(seg, info->alpha_pos, a_pos);
-
- // Linear framebuffer info.
- if (framebuffer) {
- SET_FARVAR(seg, info->phys_base, framebuffer);
-
- SET_FARVAR(seg, info->reserved1, 0);
- SET_FARVAR(seg, info->reserved2, 0);
- SET_FARVAR(seg, info->linear_bytes_per_scanline, linesize);
- SET_FARVAR(seg, info->linear_pages, 0);
- SET_FARVAR(seg, info->linear_red_size, r_size);
- SET_FARVAR(seg, info->linear_red_pos, r_pos);
- SET_FARVAR(seg, info->linear_green_size, g_size);
- SET_FARVAR(seg, info->linear_green_pos, g_pos);
- SET_FARVAR(seg, info->linear_blue_size, b_size);
- SET_FARVAR(seg, info->linear_blue_pos, b_pos);
- SET_FARVAR(seg, info->linear_alpha_size, a_size);
- SET_FARVAR(seg, info->linear_alpha_pos, a_pos);
- }
-
- regs->ax = 0x004f;
-}
-
-static void
-vbe_104f02(struct bregs *regs)
-{
- dprintf(1, "VBE mode set: %x\n", regs->bx);
-
- int mode = regs->bx & ~MF_VBEFLAGS;
- int flags = regs->bx & MF_VBEFLAGS;
- int ret = vga_set_mode(mode, flags);
-
- regs->ah = ret;
- regs->al = 0x4f;
-}
-
-static void
-vbe_104f03(struct bregs *regs)
-{
- regs->bx = GET_BDA_EXT(vbe_mode);
- dprintf(1, "VBE current mode=%x\n", regs->bx);
- regs->ax = 0x004f;
-}
-
-static void
-vbe_104f04(struct bregs *regs)
-{
- u16 seg = regs->es;
- void *data = (void*)(regs->bx+0);
- u16 states = regs->cx;
- u8 cmd = regs->dl;
- if (states & ~0x0f || cmd > 2)
- goto fail;
- int ret = vgahw_save_restore(states | (cmd<<8), seg, data);
- if (ret < 0)
- goto fail;
- if (cmd == 0)
- regs->bx = ret / 64;
- regs->ax = 0x004f;
- return;
-fail:
- regs->ax = 0x014f;
-}
-
-void VISIBLE16
-vbe_104f05(struct bregs *regs)
-{
- if (regs->bh > 1 || regs->bl > 1)
- goto fail;
- if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
- regs->ah = VBE_RETURN_STATUS_INVALID;
- return;
- }
- struct vgamode_s *vmode_g = get_current_mode();
- if (! vmode_g)
- goto fail;
- if (regs->bh) {
- int ret = vgahw_get_window(vmode_g, regs->bl);
- if (ret < 0)
- goto fail;
- regs->dx = ret;
- regs->ax = 0x004f;
- return;
- }
- int ret = vgahw_set_window(vmode_g, regs->bl, regs->dx);
- if (ret)
- goto fail;
- regs->ax = 0x004f;
- return;
-fail:
- regs->ax = 0x014f;
-}
-
-static void
-vbe_104f06(struct bregs *regs)
-{
- if (regs->bl > 0x02)
- goto fail;
- struct vgamode_s *vmode_g = get_current_mode();
- if (! vmode_g)
- goto fail;
- int bpp = vga_bpp(vmode_g);
-
- if (regs->bl == 0x00) {
- int ret = vgahw_set_linelength(vmode_g, DIV_ROUND_UP(regs->cx * bpp, 8));
- if (ret)
- goto fail;
- } else if (regs->bl == 0x02) {
- int ret = vgahw_set_linelength(vmode_g, regs->cx);
- if (ret)
- goto fail;
- }
- int linelength = vgahw_get_linelength(vmode_g);
- if (linelength < 0)
- goto fail;
-
- regs->bx = linelength;
- regs->cx = (linelength * 8) / bpp;
- regs->dx = GET_GLOBAL(VBE_total_memory) / linelength;
- regs->ax = 0x004f;
- return;
-fail:
- regs->ax = 0x014f;
-}
-
-static void
-vbe_104f07(struct bregs *regs)
-{
- struct vgamode_s *vmode_g = get_current_mode();
- if (! vmode_g)
- goto fail;
- int bpp = vga_bpp(vmode_g);
- int linelength = vgahw_get_linelength(vmode_g);
- if (linelength < 0)
- goto fail;
-
- int ret;
- switch (regs->bl) {
- case 0x80:
- case 0x00:
- ret = vgahw_set_displaystart(
- vmode_g, DIV_ROUND_UP(regs->cx * bpp, 8) + linelength * regs->dx);
- if (ret)
- goto fail;
- break;
- case 0x01:
- ret = vgahw_get_displaystart(vmode_g);
- if (ret < 0)
- goto fail;
- regs->dx = ret / linelength;
- regs->cx = (ret % linelength) * 8 / bpp;
- break;
- default:
- goto fail;
- }
- regs->ax = 0x004f;
- return;
-fail:
- regs->ax = 0x014f;
-}
-
-static void
-vbe_104f08(struct bregs *regs)
-{
- struct vgamode_s *vmode_g = get_current_mode();
- if (! vmode_g)
- goto fail;
- u8 memmodel = GET_GLOBAL(vmode_g->memmodel);
- if (memmodel == MM_DIRECT || memmodel == MM_YUV) {
- regs->ax = 0x034f;
- return;
- }
- if (regs->bl > 1)
- goto fail;
- if (regs->bl == 0) {
- int ret = vgahw_set_dacformat(vmode_g, regs->bh);
- if (ret < 0)
- goto fail;
- }
- int ret = vgahw_get_dacformat(vmode_g);
- if (ret < 0)
- goto fail;
- regs->bh = ret;
- regs->ax = 0x004f;
- return;
-fail:
- regs->ax = 0x014f;
-}
-
-static void
-vbe_104f0a(struct bregs *regs)
-{
- debug_stub(regs);
- regs->ax = 0x0100;
-}
-
-static void
-vbe_104f10(struct bregs *regs)
-{
- switch (regs->bl) {
- case 0x00:
- regs->bx = 0x0f30;
- break;
- case 0x01:
- MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
- break;
- case 0x02:
- regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
- break;
- default:
- regs->ax = 0x014f;
- return;
- }
- regs->ax = 0x004f;
-}
-
-static void
-vbe_104fXX(struct bregs *regs)
-{
- debug_stub(regs);
- regs->ax = 0x0100;
-}
-
-void noinline
-handle_104f(struct bregs *regs)
-{
- if (!CONFIG_VGA_VBE) {
- vbe_104fXX(regs);
- return;
- }
-
- switch (regs->al) {
- case 0x00: vbe_104f00(regs); break;
- case 0x01: vbe_104f01(regs); break;
- case 0x02: vbe_104f02(regs); break;
- case 0x03: vbe_104f03(regs); break;
- case 0x04: vbe_104f04(regs); break;
- case 0x05: vbe_104f05(regs); break;
- case 0x06: vbe_104f06(regs); break;
- case 0x07: vbe_104f07(regs); break;
- case 0x08: vbe_104f08(regs); break;
- case 0x0a: vbe_104f0a(regs); break;
- case 0x10: vbe_104f10(regs); break;
- default: vbe_104fXX(regs); break;
- }
-}
diff --git a/qemu/roms/seabios/vgasrc/vgabios.c b/qemu/roms/seabios/vgasrc/vgabios.c
deleted file mode 100644
index f07e85bd3..000000000
--- a/qemu/roms/seabios/vgasrc/vgabios.c
+++ /dev/null
@@ -1,1182 +0,0 @@
-// VGA bios implementation
-//
-// Copyright (C) 2009-2013 Kevin O'Connor <kevin@koconnor.net>
-// Copyright (C) 2001-2008 the LGPL VGABios developers Team
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // GET_BDA
-#include "bregs.h" // struct bregs
-#include "clext.h" // clext_1012
-#include "config.h" // CONFIG_*
-#include "output.h" // dprintf
-#include "std/vbe.h" // VBE_RETURN_STATUS_FAILED
-#include "stdvga.h" // stdvga_set_cursor_shape
-#include "string.h" // memset_far
-#include "vgabios.h" // calc_page_size
-#include "vgahw.h" // vgahw_set_mode
-
-
-/****************************************************************
- * Helper functions
- ****************************************************************/
-
-// Return the bits per pixel in system memory for a given mode.
-int
-vga_bpp(struct vgamode_s *vmode_g)
-{
- switch (GET_GLOBAL(vmode_g->memmodel)) {
- case MM_TEXT:
- return 16;
- case MM_PLANAR:
- return 1;
- }
- u8 depth = GET_GLOBAL(vmode_g->depth);
- if (depth > 8)
- return ALIGN(depth, 8);
- return depth;
-}
-
-u16
-calc_page_size(u8 memmodel, u16 width, u16 height)
-{
- switch (memmodel) {
- case MM_TEXT:
- return ALIGN(width * height * 2, 2*1024);
- case MM_CGA:
- return 16*1024;
- default:
- return ALIGN(width * height / 8, 8*1024);
- }
-}
-
-// Determine cursor shape (taking into account possible cursor scaling)
-u16
-get_cursor_shape(void)
-{
- u16 cursor_type = GET_BDA(cursor_type);
- u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
- if (!emulate_cursor)
- return cursor_type;
- u8 start = (cursor_type >> 8) & 0x3f;
- u8 end = cursor_type & 0x1f;
- u16 cheight = GET_BDA(char_height);
- if (cheight <= 8 || end >= 8 || start >= 0x20)
- return cursor_type;
- if (end != (start + 1))
- start = ((start + 1) * cheight / 8) - 1;
- else
- start = ((end + 1) * cheight / 8) - 2;
- end = ((end + 1) * cheight / 8) - 1;
- return (start << 8) | end;
-}
-
-static void
-set_cursor_shape(u16 cursor_type)
-{
- vgafb_set_swcursor(0);
- SET_BDA(cursor_type, cursor_type);
- if (CONFIG_VGA_STDVGA_PORTS)
- stdvga_set_cursor_shape(get_cursor_shape());
-}
-
-static void
-set_cursor_pos(struct cursorpos cp)
-{
- u8 page = cp.page, x = cp.x, y = cp.y;
-
- // Should not happen...
- if (page > 7)
- return;
-
- vgafb_set_swcursor(0);
-
- // Bios cursor pos
- SET_BDA(cursor_pos[page], (y << 8) | x);
-
- if (!CONFIG_VGA_STDVGA_PORTS)
- return;
-
- // Set the hardware cursor
- u8 current = GET_BDA(video_page);
- if (cp.page != current)
- return;
-
- // Calculate the memory address
- stdvga_set_cursor_pos((int)text_address(cp));
-}
-
-struct cursorpos
-get_cursor_pos(u8 page)
-{
- if (page == 0xff)
- // special case - use current page
- page = GET_BDA(video_page);
- if (page > 7) {
- struct cursorpos cp = { 0, 0, 0xfe };
- return cp;
- }
- u16 xy = GET_BDA(cursor_pos[page]);
- struct cursorpos cp = {xy, xy>>8, page};
- return cp;
-}
-
-static void
-set_active_page(u8 page)
-{
- if (page > 7)
- return;
-
- // Get the mode
- struct vgamode_s *vmode_g = get_current_mode();
- if (!vmode_g)
- return;
-
- vgafb_set_swcursor(0);
-
- // Calculate memory address of start of page
- struct cursorpos cp = {0, 0, page};
- int address = (int)text_address(cp);
- vgahw_set_displaystart(vmode_g, address);
-
- // And change the BIOS page
- SET_BDA(video_pagestart, address);
- SET_BDA(video_page, page);
-
- dprintf(1, "Set active page %02x address %04x\n", page, address);
-
- // Display the cursor, now the page is active
- set_cursor_pos(get_cursor_pos(page));
-}
-
-static void
-set_scan_lines(u8 lines)
-{
- stdvga_set_scan_lines(lines);
- SET_BDA(char_height, lines);
- u16 vde = stdvga_get_vde();
- u8 rows = vde / lines;
- SET_BDA(video_rows, rows - 1);
- u16 cols = GET_BDA(video_cols);
- SET_BDA(video_pagesize, calc_page_size(MM_TEXT, cols, rows));
- if (lines == 8)
- set_cursor_shape(0x0607);
- else
- set_cursor_shape(((lines - 3) << 8) | (lines - 2));
-}
-
-
-/****************************************************************
- * Character writing
- ****************************************************************/
-
-// Write a character to the screen and calculate new cursor position.
-static void
-write_char(struct cursorpos *pcp, struct carattr ca)
-{
- vgafb_write_char(*pcp, ca);
- pcp->x++;
- // Do we need to wrap ?
- if (pcp->x == GET_BDA(video_cols)) {
- pcp->x = 0;
- pcp->y++;
- }
-}
-
-// Write a character to the screen at a given position. Implement
-// special characters and scroll the screen if necessary.
-static void
-write_teletype(struct cursorpos *pcp, struct carattr ca)
-{
- switch (ca.car) {
- case 7:
- //FIXME should beep
- break;
- case 8:
- if (pcp->x > 0)
- pcp->x--;
- break;
- case '\r':
- pcp->x = 0;
- break;
- case '\n':
- pcp->y++;
- break;
- default:
- write_char(pcp, ca);
- break;
- }
-
- // Do we need to scroll ?
- u16 nbrows = GET_BDA(video_rows);
- if (pcp->y > nbrows) {
- pcp->y--;
-
- struct cursorpos dest = {0, 0, pcp->page};
- struct cursorpos src = {0, 1, pcp->page};
- struct cursorpos size = {GET_BDA(video_cols), nbrows};
- vgafb_move_chars(dest, src, size);
-
- struct cursorpos clr = {0, nbrows, pcp->page};
- struct carattr attr = {' ', 0, 0};
- struct cursorpos clrsize = {GET_BDA(video_cols), 1};
- vgafb_clear_chars(clr, attr, clrsize);
- }
-}
-
-
-/****************************************************************
- * Save and restore bda state
- ****************************************************************/
-
-struct saveBDAstate {
- u8 bda_0x49[28];
- u8 bda_0x84[6];
- u16 vbe_mode;
- struct segoff_s font0;
- struct segoff_s font1;
-};
-
-int
-bda_save_restore(int cmd, u16 seg, void *data)
-{
- if (!(cmd & SR_BDA))
- return 0;
- struct saveBDAstate *info = data;
- if (cmd & SR_SAVE) {
- memcpy_far(seg, info->bda_0x49, SEG_BDA, (void*)0x49
- , sizeof(info->bda_0x49));
- memcpy_far(seg, info->bda_0x84, SEG_BDA, (void*)0x84
- , sizeof(info->bda_0x84));
- SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
- SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
- SET_FARVAR(seg, info->font1, GET_IVT(0x43));
- }
- if (cmd & SR_RESTORE) {
- memcpy_far(SEG_BDA, (void*)0x49, seg, info->bda_0x49
- , sizeof(info->bda_0x49));
- memcpy_far(SEG_BDA, (void*)0x84, seg, info->bda_0x84
- , sizeof(info->bda_0x84));
- u16 vbe_mode = GET_FARVAR(seg, info->vbe_mode);
- SET_BDA_EXT(vbe_mode, vbe_mode);
- struct vgamode_s *vmode_g = vgahw_find_mode(vbe_mode & ~MF_VBEFLAGS);
- SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
- SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
- SET_IVT(0x43, GET_FARVAR(seg, info->font1));
- }
- return sizeof(*info);
-}
-
-
-/****************************************************************
- * Mode setting
- ****************************************************************/
-
-struct vgamode_s *
-get_current_mode(void)
-{
- return (void*)(GET_BDA_EXT(vgamode_offset)+0);
-}
-
-// Setup BDA after a mode switch.
-int
-vga_set_mode(int mode, int flags)
-{
- dprintf(1, "set VGA mode %x\n", mode);
- struct vgamode_s *vmode_g = vgahw_find_mode(mode);
- if (!vmode_g)
- return VBE_RETURN_STATUS_FAILED;
-
- vgafb_set_swcursor(0);
-
- int ret = vgahw_set_mode(vmode_g, flags);
- if (ret)
- return ret;
-
- // Set the BIOS mem
- int width = GET_GLOBAL(vmode_g->width);
- int height = GET_GLOBAL(vmode_g->height);
- u8 memmodel = GET_GLOBAL(vmode_g->memmodel);
- int cheight = GET_GLOBAL(vmode_g->cheight);
- if (mode < 0x100)
- SET_BDA(video_mode, mode);
- else
- SET_BDA(video_mode, 0xff);
- SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
- SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
- if (CONFIG_VGA_ALLOCATE_EXTRA_STACK)
- // Disable extra stack if it appears a modern OS is in use.
- // This works around bugs in some versions of Windows (Vista
- // and possibly later) when the stack is in the e-segment.
- MASK_BDA_EXT(flags, BF_EXTRA_STACK
- , (flags & MF_LEGACY) ? BF_EXTRA_STACK : 0);
- if (memmodel == MM_TEXT) {
- SET_BDA(video_cols, width);
- SET_BDA(video_rows, height-1);
- SET_BDA(cursor_type, 0x0607);
- } else {
- int cwidth = GET_GLOBAL(vmode_g->cwidth);
- SET_BDA(video_cols, width / cwidth);
- SET_BDA(video_rows, (height / cheight) - 1);
- SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
- }
- SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
- SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
- SET_BDA(char_height, cheight);
- SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
- SET_BDA(video_switches, 0xF9);
- SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
- int i;
- for (i=0; i<8; i++)
- SET_BDA(cursor_pos[i], 0x0000);
- SET_BDA(video_pagestart, 0x0000);
- SET_BDA(video_page, 0x00);
-
- // Set the ints 0x1F and 0x43
- SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
-
- switch (cheight) {
- case 8:
- SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
- break;
- case 14:
- SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
- break;
- case 16:
- SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
- break;
- }
-
- return 0;
-}
-
-
-/****************************************************************
- * VGA int 10 handler
- ****************************************************************/
-
-static void
-handle_1000(struct bregs *regs)
-{
- int mode = regs->al & 0x7f;
-
- // Set regs->al
- if (mode > 7)
- regs->al = 0x20;
- else if (mode == 6)
- regs->al = 0x3f;
- else
- regs->al = 0x30;
-
- int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
- if (regs->al & 0x80)
- flags |= MF_NOCLEARMEM;
-
- vga_set_mode(mode, flags);
-}
-
-static void
-handle_1001(struct bregs *regs)
-{
- set_cursor_shape(regs->cx);
-}
-
-static void
-handle_1002(struct bregs *regs)
-{
- struct cursorpos cp = {regs->dl, regs->dh, regs->bh};
- set_cursor_pos(cp);
-}
-
-static void
-handle_1003(struct bregs *regs)
-{
- regs->cx = GET_BDA(cursor_type);
- struct cursorpos cp = get_cursor_pos(regs->bh);
- regs->dl = cp.x;
- regs->dh = cp.y;
-}
-
-// Read light pen pos (unimplemented)
-static void
-handle_1004(struct bregs *regs)
-{
- debug_stub(regs);
- regs->ax = regs->bx = regs->cx = regs->dx = 0;
-}
-
-static void
-handle_1005(struct bregs *regs)
-{
- set_active_page(regs->al);
-}
-
-static void
-verify_scroll(struct bregs *regs, int dir)
-{
- u8 ulx = regs->cl, uly = regs->ch, lrx = regs->dl, lry = regs->dh;
- u16 nbrows = GET_BDA(video_rows) + 1;
- if (lry >= nbrows)
- lry = nbrows - 1;
- u16 nbcols = GET_BDA(video_cols);
- if (lrx >= nbcols)
- lrx = nbcols - 1;
- int wincols = lrx - ulx + 1, winrows = lry - uly + 1;
- if (wincols <= 0 || winrows <= 0)
- return;
-
- u8 page = GET_BDA(video_page);
- int clearlines = regs->al, movelines = winrows - clearlines;
- if (!clearlines || movelines <= 0) {
- // Clear whole area.
- struct cursorpos clr = {ulx, uly, page};
- struct carattr attr = {' ', regs->bh, 1};
- struct cursorpos clrsize = {wincols, winrows};
- vgafb_clear_chars(clr, attr, clrsize);
- return;
- }
-
- if (dir > 0) {
- // Normal scroll
- struct cursorpos dest = {ulx, uly, page};
- struct cursorpos src = {ulx, uly + clearlines, page};
- struct cursorpos size = {wincols, movelines};
- vgafb_move_chars(dest, src, size);
-
- struct cursorpos clr = {ulx, uly + movelines, page};
- struct carattr attr = {' ', regs->bh, 1};
- struct cursorpos clrsize = {wincols, clearlines};
- vgafb_clear_chars(clr, attr, clrsize);
- } else {
- // Scroll down
- struct cursorpos dest = {ulx, uly + clearlines, page};
- struct cursorpos src = {ulx, uly, page};
- struct cursorpos size = {wincols, movelines};
- vgafb_move_chars(dest, src, size);
-
- struct cursorpos clr = {ulx, uly, page};
- struct carattr attr = {' ', regs->bh, 1};
- struct cursorpos clrsize = {wincols, clearlines};
- vgafb_clear_chars(clr, attr, clrsize);
- }
-}
-
-static void
-handle_1006(struct bregs *regs)
-{
- verify_scroll(regs, 1);
-}
-
-static void
-handle_1007(struct bregs *regs)
-{
- verify_scroll(regs, -1);
-}
-
-static void
-handle_1008(struct bregs *regs)
-{
- struct carattr ca = vgafb_read_char(get_cursor_pos(regs->bh));
- regs->al = ca.car;
- regs->ah = ca.attr;
-}
-
-static void noinline
-handle_1009(struct bregs *regs)
-{
- struct carattr ca = {regs->al, regs->bl, 1};
- struct cursorpos cp = get_cursor_pos(regs->bh);
- int count = regs->cx;
- while (count--)
- write_char(&cp, ca);
-}
-
-static void noinline
-handle_100a(struct bregs *regs)
-{
- struct carattr ca = {regs->al, regs->bl, 0};
- struct cursorpos cp = get_cursor_pos(regs->bh);
- int count = regs->cx;
- while (count--)
- write_char(&cp, ca);
-}
-
-
-static void
-handle_100b00(struct bregs *regs)
-{
- stdvga_set_border_color(regs->bl);
-}
-
-static void
-handle_100b01(struct bregs *regs)
-{
- stdvga_set_palette(regs->bl);
-}
-
-static void
-handle_100bXX(struct bregs *regs)
-{
- debug_stub(regs);
-}
-
-static void
-handle_100b(struct bregs *regs)
-{
- if (!CONFIG_VGA_STDVGA_PORTS) {
- handle_100bXX(regs);
- return;
- }
- switch (regs->bh) {
- case 0x00: handle_100b00(regs); break;
- case 0x01: handle_100b01(regs); break;
- default: handle_100bXX(regs); break;
- }
-}
-
-
-static void
-handle_100c(struct bregs *regs)
-{
- // XXX - page (regs->bh) is unused
- vgafb_write_pixel(regs->al, regs->cx, regs->dx);
-}
-
-static void
-handle_100d(struct bregs *regs)
-{
- // XXX - page (regs->bh) is unused
- regs->al = vgafb_read_pixel(regs->cx, regs->dx);
-}
-
-static void noinline
-handle_100e(struct bregs *regs)
-{
- // Ralf Brown Interrupt list is WRONG on bh(page)
- // We do output only on the current page !
- struct carattr ca = {regs->al, regs->bl, 0};
- struct cursorpos cp = get_cursor_pos(0xff);
- write_teletype(&cp, ca);
- set_cursor_pos(cp);
-}
-
-static void
-handle_100f(struct bregs *regs)
-{
- regs->bh = GET_BDA(video_page);
- regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
- regs->ah = GET_BDA(video_cols);
-}
-
-
-static void
-handle_101000(struct bregs *regs)
-{
- if (regs->bl > 0x14)
- return;
- stdvga_attr_write(regs->bl, regs->bh);
-}
-
-static void
-handle_101001(struct bregs *regs)
-{
- stdvga_set_overscan_border_color(regs->bh);
-}
-
-static void
-handle_101002(struct bregs *regs)
-{
- stdvga_set_all_palette_reg(regs->es, (u8*)(regs->dx + 0));
-}
-
-static void
-handle_101003(struct bregs *regs)
-{
- stdvga_toggle_intensity(regs->bl);
-}
-
-static void
-handle_101007(struct bregs *regs)
-{
- if (regs->bl > 0x14)
- return;
- regs->bh = stdvga_attr_read(regs->bl);
-}
-
-static void
-handle_101008(struct bregs *regs)
-{
- regs->bh = stdvga_get_overscan_border_color();
-}
-
-static void
-handle_101009(struct bregs *regs)
-{
- stdvga_get_all_palette_reg(regs->es, (u8*)(regs->dx + 0));
-}
-
-static void noinline
-handle_101010(struct bregs *regs)
-{
- u8 rgb[3] = {regs->dh, regs->ch, regs->cl};
- stdvga_dac_write(GET_SEG(SS), rgb, regs->bx, 1);
-}
-
-static void
-handle_101012(struct bregs *regs)
-{
- stdvga_dac_write(regs->es, (u8*)(regs->dx + 0), regs->bx, regs->cx);
-}
-
-static void
-handle_101013(struct bregs *regs)
-{
- stdvga_select_video_dac_color_page(regs->bl, regs->bh);
-}
-
-static void noinline
-handle_101015(struct bregs *regs)
-{
- u8 rgb[3];
- stdvga_dac_read(GET_SEG(SS), rgb, regs->bx, 1);
- regs->dh = rgb[0];
- regs->ch = rgb[1];
- regs->cl = rgb[2];
-}
-
-static void
-handle_101017(struct bregs *regs)
-{
- stdvga_dac_read(regs->es, (u8*)(regs->dx + 0), regs->bx, regs->cx);
-}
-
-static void
-handle_101018(struct bregs *regs)
-{
- stdvga_pelmask_write(regs->bl);
-}
-
-static void
-handle_101019(struct bregs *regs)
-{
- regs->bl = stdvga_pelmask_read();
-}
-
-static void
-handle_10101a(struct bregs *regs)
-{
- stdvga_read_video_dac_state(&regs->bl, &regs->bh);
-}
-
-static void
-handle_10101b(struct bregs *regs)
-{
- stdvga_perform_gray_scale_summing(regs->bx, regs->cx);
-}
-
-static void
-handle_1010XX(struct bregs *regs)
-{
- debug_stub(regs);
-}
-
-static void
-handle_1010(struct bregs *regs)
-{
- if (!CONFIG_VGA_STDVGA_PORTS) {
- handle_1010XX(regs);
- return;
- }
- switch (regs->al) {
- case 0x00: handle_101000(regs); break;
- case 0x01: handle_101001(regs); break;
- case 0x02: handle_101002(regs); break;
- case 0x03: handle_101003(regs); break;
- case 0x07: handle_101007(regs); break;
- case 0x08: handle_101008(regs); break;
- case 0x09: handle_101009(regs); break;
- case 0x10: handle_101010(regs); break;
- case 0x12: handle_101012(regs); break;
- case 0x13: handle_101013(regs); break;
- case 0x15: handle_101015(regs); break;
- case 0x17: handle_101017(regs); break;
- case 0x18: handle_101018(regs); break;
- case 0x19: handle_101019(regs); break;
- case 0x1a: handle_10101a(regs); break;
- case 0x1b: handle_10101b(regs); break;
- default: handle_1010XX(regs); break;
- }
-}
-
-
-static void
-handle_101100(struct bregs *regs)
-{
- stdvga_load_font(regs->es, (void*)(regs->bp+0), regs->cx
- , regs->dx, regs->bl, regs->bh);
-}
-
-static void
-handle_101101(struct bregs *regs)
-{
- stdvga_load_font(get_global_seg(), vgafont14, 0x100, 0, regs->bl, 14);
-}
-
-static void
-handle_101102(struct bregs *regs)
-{
- stdvga_load_font(get_global_seg(), vgafont8, 0x100, 0, regs->bl, 8);
-}
-
-static void
-handle_101103(struct bregs *regs)
-{
- stdvga_set_text_block_specifier(regs->bl);
-}
-
-static void
-handle_101104(struct bregs *regs)
-{
- stdvga_load_font(get_global_seg(), vgafont16, 0x100, 0, regs->bl, 16);
-}
-
-static void
-handle_101110(struct bregs *regs)
-{
- stdvga_load_font(regs->es, (void*)(regs->bp+0), regs->cx
- , regs->dx, regs->bl, regs->bh);
- set_scan_lines(regs->bh);
-}
-
-static void
-handle_101111(struct bregs *regs)
-{
- stdvga_load_font(get_global_seg(), vgafont14, 0x100, 0, regs->bl, 14);
- set_scan_lines(14);
-}
-
-static void
-handle_101112(struct bregs *regs)
-{
- stdvga_load_font(get_global_seg(), vgafont8, 0x100, 0, regs->bl, 8);
- set_scan_lines(8);
-}
-
-static void
-handle_101114(struct bregs *regs)
-{
- stdvga_load_font(get_global_seg(), vgafont16, 0x100, 0, regs->bl, 16);
- set_scan_lines(16);
-}
-
-static void
-handle_101120(struct bregs *regs)
-{
- SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
-}
-
-void
-load_gfx_font(u16 seg, u16 off, u8 height, u8 bl, u8 dl)
-{
- u8 rows;
-
- SET_IVT(0x43, SEGOFF(seg, off));
- switch(bl) {
- case 0:
- rows = dl;
- break;
- case 1:
- rows = 14;
- break;
- case 3:
- rows = 43;
- break;
- case 2:
- default:
- rows = 25;
- break;
- }
- SET_BDA(video_rows, rows - 1);
- SET_BDA(char_height, height);
-}
-
-static void
-handle_101121(struct bregs *regs)
-{
- load_gfx_font(regs->es, regs->bp, regs->cx, regs->bl, regs->dl);
-}
-
-static void
-handle_101122(struct bregs *regs)
-{
- load_gfx_font(get_global_seg(), (u32)vgafont14, 14, regs->bl, regs->dl);
-}
-
-static void
-handle_101123(struct bregs *regs)
-{
- load_gfx_font(get_global_seg(), (u32)vgafont8, 8, regs->bl, regs->dl);
-}
-
-static void
-handle_101124(struct bregs *regs)
-{
- load_gfx_font(get_global_seg(), (u32)vgafont16, 16, regs->bl, regs->dl);
-}
-
-static void
-handle_101130(struct bregs *regs)
-{
- switch (regs->bh) {
- case 0x00: {
- struct segoff_s so = GET_IVT(0x1f);
- regs->es = so.seg;
- regs->bp = so.offset;
- break;
- }
- case 0x01: {
- struct segoff_s so = GET_IVT(0x43);
- regs->es = so.seg;
- regs->bp = so.offset;
- break;
- }
- case 0x02:
- regs->es = get_global_seg();
- regs->bp = (u32)vgafont14;
- break;
- case 0x03:
- regs->es = get_global_seg();
- regs->bp = (u32)vgafont8;
- break;
- case 0x04:
- regs->es = get_global_seg();
- regs->bp = (u32)vgafont8 + 128 * 8;
- break;
- case 0x05:
- regs->es = get_global_seg();
- regs->bp = (u32)vgafont14alt;
- break;
- case 0x06:
- regs->es = get_global_seg();
- regs->bp = (u32)vgafont16;
- break;
- case 0x07:
- regs->es = get_global_seg();
- regs->bp = (u32)vgafont16alt;
- break;
- default:
- dprintf(1, "Get font info BH(%02x) was discarded\n", regs->bh);
- return;
- }
- // Set byte/char of on screen font
- regs->cx = GET_BDA(char_height) & 0xff;
-
- // Set Highest char row
- regs->dl = GET_BDA(video_rows);
-}
-
-static void
-handle_1011XX(struct bregs *regs)
-{
- debug_stub(regs);
-}
-
-static void
-handle_1011(struct bregs *regs)
-{
- if (CONFIG_VGA_STDVGA_PORTS) {
- switch (regs->al) {
- case 0x00: handle_101100(regs); return;
- case 0x01: handle_101101(regs); return;
- case 0x02: handle_101102(regs); return;
- case 0x03: handle_101103(regs); return;
- case 0x04: handle_101104(regs); return;
- case 0x10: handle_101110(regs); return;
- case 0x11: handle_101111(regs); return;
- case 0x12: handle_101112(regs); return;
- case 0x14: handle_101114(regs); return;
- }
- }
- switch (regs->al) {
- case 0x30: handle_101130(regs); break;
- case 0x20: handle_101120(regs); break;
- case 0x21: handle_101121(regs); break;
- case 0x22: handle_101122(regs); break;
- case 0x23: handle_101123(regs); break;
- case 0x24: handle_101124(regs); break;
- default: handle_1011XX(regs); break;
- }
-}
-
-
-static void
-handle_101210(struct bregs *regs)
-{
- u16 crtc_addr = GET_BDA(crtc_address);
- if (crtc_addr == VGAREG_MDA_CRTC_ADDRESS)
- regs->bx = 0x0103;
- else
- regs->bx = 0x0003;
- regs->cx = GET_BDA(video_switches) & 0x0f;
-}
-
-static void
-handle_101230(struct bregs *regs)
-{
- u8 mctl = GET_BDA(modeset_ctl);
- u8 vswt = GET_BDA(video_switches);
- switch (regs->al) {
- case 0x00:
- // 200 lines
- mctl = (mctl & ~0x10) | 0x80;
- vswt = (vswt & ~0x0f) | 0x08;
- break;
- case 0x01:
- // 350 lines
- mctl &= ~0x90;
- vswt = (vswt & ~0x0f) | 0x09;
- break;
- case 0x02:
- // 400 lines
- mctl = (mctl & ~0x80) | 0x10;
- vswt = (vswt & ~0x0f) | 0x09;
- break;
- default:
- dprintf(1, "Select vert res (%02x) was discarded\n", regs->al);
- break;
- }
- SET_BDA(modeset_ctl, mctl);
- SET_BDA(video_switches, vswt);
- regs->al = 0x12;
-}
-
-static void
-handle_101231(struct bregs *regs)
-{
- u8 v = (regs->al & 0x01) << 3;
- u8 mctl = GET_BDA(video_ctl) & ~0x08;
- SET_BDA(video_ctl, mctl | v);
- regs->al = 0x12;
-}
-
-static void
-handle_101232(struct bregs *regs)
-{
- if (CONFIG_VGA_STDVGA_PORTS) {
- stdvga_enable_video_addressing(regs->al);
- regs->al = 0x12;
- }
-}
-
-static void
-handle_101233(struct bregs *regs)
-{
- u8 v = ((regs->al << 1) & 0x02) ^ 0x02;
- u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
- SET_BDA(modeset_ctl, v | v2);
- regs->al = 0x12;
-}
-
-static void
-handle_101234(struct bregs *regs)
-{
- SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
- regs->al = 0x12;
-}
-
-static void
-handle_101235(struct bregs *regs)
-{
- debug_stub(regs);
- regs->al = 0x12;
-}
-
-static void
-handle_101236(struct bregs *regs)
-{
- debug_stub(regs);
- regs->al = 0x12;
-}
-
-static void
-handle_1012XX(struct bregs *regs)
-{
- debug_stub(regs);
-}
-
-static void
-handle_1012(struct bregs *regs)
-{
- if (CONFIG_VGA_CIRRUS && regs->bl >= 0x80) {
- clext_1012(regs);
- return;
- }
-
- switch (regs->bl) {
- case 0x10: handle_101210(regs); break;
- case 0x30: handle_101230(regs); break;
- case 0x31: handle_101231(regs); break;
- case 0x32: handle_101232(regs); break;
- case 0x33: handle_101233(regs); break;
- case 0x34: handle_101234(regs); break;
- case 0x35: handle_101235(regs); break;
- case 0x36: handle_101236(regs); break;
- default: handle_1012XX(regs); break;
- }
-}
-
-
-// Write string
-static void noinline
-handle_1013(struct bregs *regs)
-{
- struct cursorpos cp;
- if (regs->dh == 0xff)
- // if row=0xff special case : use current cursor position
- cp = get_cursor_pos(regs->bh);
- else
- cp = (struct cursorpos) {regs->dl, regs->dh, regs->bh};
-
- u16 count = regs->cx;
- u8 *offset_far = (void*)(regs->bp + 0);
- u8 attr = regs->bl;
- while (count--) {
- u8 car = GET_FARVAR(regs->es, *offset_far);
- offset_far++;
- if (regs->al & 2) {
- attr = GET_FARVAR(regs->es, *offset_far);
- offset_far++;
- }
-
- struct carattr ca = {car, attr, 1};
- write_teletype(&cp, ca);
- }
-
- if (regs->al & 1)
- set_cursor_pos(cp);
-}
-
-
-static void
-handle_101a00(struct bregs *regs)
-{
- regs->bx = GET_BDA(dcc_index);
- regs->al = 0x1a;
-}
-
-static void
-handle_101a01(struct bregs *regs)
-{
- SET_BDA(dcc_index, regs->bl);
- dprintf(1, "Alternate Display code (%02x) was discarded\n", regs->bh);
- regs->al = 0x1a;
-}
-
-static void
-handle_101aXX(struct bregs *regs)
-{
- debug_stub(regs);
-}
-
-static void
-handle_101a(struct bregs *regs)
-{
- switch (regs->al) {
- case 0x00: handle_101a00(regs); break;
- case 0x01: handle_101a01(regs); break;
- default: handle_101aXX(regs); break;
- }
-}
-
-
-struct video_func_static static_functionality VAR16 = {
- .modes = 0x00, // Filled in by stdvga_build_video_param()
- .scanlines = 0x07, // 200, 350, 400 scan lines
- .cblocks = 0x02, // mamimum number of visible charsets in text mode
- .active_cblocks = 0x08, // total number of charset blocks in text mode
- .misc_flags = 0x0ce7,
-};
-
-static void
-handle_101b(struct bregs *regs)
-{
- u16 seg = regs->es;
- struct video_func_info *info = (void*)(regs->di+0);
- memset_far(seg, info, 0, sizeof(*info));
- // Address of static functionality table
- SET_FARVAR(seg, info->static_functionality
- , SEGOFF(get_global_seg(), (u32)&static_functionality));
-
- // Hard coded copy from BIOS area. Should it be cleaner ?
- memcpy_far(seg, info->bda_0x49, SEG_BDA, (void*)0x49
- , sizeof(info->bda_0x49));
- memcpy_far(seg, info->bda_0x84, SEG_BDA, (void*)0x84
- , sizeof(info->bda_0x84));
-
- SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
- SET_FARVAR(seg, info->colors, 16);
- SET_FARVAR(seg, info->pages, 8);
- SET_FARVAR(seg, info->scan_lines, 2);
- SET_FARVAR(seg, info->video_mem, 3);
- regs->al = 0x1B;
-}
-
-
-static void
-handle_101c(struct bregs *regs)
-{
- u16 seg = regs->es;
- void *data = (void*)(regs->bx+0);
- u16 states = regs->cx;
- u8 cmd = regs->al;
- if (states & ~0x07 || cmd > 2)
- goto fail;
- int ret = vgahw_save_restore(states | (cmd<<8), seg, data);
- if (ret < 0)
- goto fail;
- if (cmd == 0)
- regs->bx = ret / 64;
- regs->al = 0x1c;
-fail:
- return;
-}
-
-static void
-handle_10XX(struct bregs *regs)
-{
- debug_stub(regs);
-}
-
-// INT 10h Video Support Service Entry Point
-void VISIBLE16
-handle_10(struct bregs *regs)
-{
- debug_enter(regs, DEBUG_VGA_10);
- switch (regs->ah) {
- case 0x00: handle_1000(regs); break;
- case 0x01: handle_1001(regs); break;
- case 0x02: handle_1002(regs); break;
- case 0x03: handle_1003(regs); break;
- case 0x04: handle_1004(regs); break;
- case 0x05: handle_1005(regs); break;
- case 0x06: handle_1006(regs); break;
- case 0x07: handle_1007(regs); break;
- case 0x08: handle_1008(regs); break;
- case 0x09: handle_1009(regs); break;
- case 0x0a: handle_100a(regs); break;
- case 0x0b: handle_100b(regs); break;
- case 0x0c: handle_100c(regs); break;
- case 0x0d: handle_100d(regs); break;
- case 0x0e: handle_100e(regs); break;
- case 0x0f: handle_100f(regs); break;
- case 0x10: handle_1010(regs); break;
- case 0x11: handle_1011(regs); break;
- case 0x12: handle_1012(regs); break;
- case 0x13: handle_1013(regs); break;
- case 0x1a: handle_101a(regs); break;
- case 0x1b: handle_101b(regs); break;
- case 0x1c: handle_101c(regs); break;
- case 0x4f: handle_104f(regs); break;
- default: handle_10XX(regs); break;
- }
-}
diff --git a/qemu/roms/seabios/vgasrc/vgabios.h b/qemu/roms/seabios/vgasrc/vgabios.h
deleted file mode 100644
index 831f69407..000000000
--- a/qemu/roms/seabios/vgasrc/vgabios.h
+++ /dev/null
@@ -1,151 +0,0 @@
-#ifndef __VGABIOS_H
-#define __VGABIOS_H
-
-#include "config.h" // CONFIG_VGA_EMULATE_TEXT
-#include "types.h" // u8
-#include "farptr.h" // struct segoff_s
-#include "std/vga.h" // struct video_param_s
-
-// Save/Restore flags
-#define SR_HARDWARE 0x0001
-#define SR_BDA 0x0002
-#define SR_DAC 0x0004
-#define SR_REGISTERS 0x0008
-#define SR_SAVE 0x0100
-#define SR_RESTORE 0x0200
-
-// Mode flags
-#define MF_LEGACY 0x0001
-#define MF_GRAYSUM 0x0002
-#define MF_NOPALETTE 0x0008
-#define MF_CUSTOMCRTC 0x0800
-#define MF_LINEARFB 0x4000
-#define MF_NOCLEARMEM 0x8000
-#define MF_VBEFLAGS 0xfe00
-
-// Memory model types
-#define MM_TEXT 0x00
-#define MM_CGA 0x01
-#define MM_HERCULES 0x02
-#define MM_PLANAR 0x03
-#define MM_PACKED 0x04
-#define MM_NON_CHAIN_4_256 0x05
-#define MM_DIRECT 0x06
-#define MM_YUV 0x07
-
-struct vgamode_s {
- u8 memmodel;
- u16 width;
- u16 height;
- u8 depth;
- u8 cwidth;
- u8 cheight;
- u16 sstart;
-};
-
-// Graphics pixel operations.
-struct gfx_op {
- struct vgamode_s *vmode_g;
- u32 linelength;
- u32 displaystart;
-
- u8 op;
- u16 x, y;
-
- u8 pixels[8];
- u16 xlen, ylen;
- u16 srcy;
-};
-
-#define GO_READ8 1
-#define GO_WRITE8 2
-#define GO_MEMSET 3
-#define GO_MEMMOVE 4
-
-// Custom internal storage in BDA (don't change here without also
-// updating vgaentry.S)
-#define VGA_CUSTOM_BDA 0xb9
-
-struct vga_bda_s {
- u8 flags;
- u16 vbe_mode;
- u16 vgamode_offset;
-} PACKED;
-
-#define BF_PM_MASK 0x0f
-#define BF_EMULATE_TEXT 0x10
-#define BF_SWCURSOR 0x20
-#define BF_EXTRA_STACK 0x40
-
-#define GET_BDA_EXT(var) \
- GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
-#define SET_BDA_EXT(var, val) \
- SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
-#define MASK_BDA_EXT(var, off, on) \
- SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
-
-static inline int vga_emulate_text(void) {
- return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
-}
-
-// Debug settings
-#define DEBUG_VGA_POST 1
-#define DEBUG_VGA_10 3
-
-// vgafonts.c
-extern u8 vgafont8[];
-extern u8 vgafont14[];
-extern u8 vgafont16[];
-extern u8 vgafont14alt[];
-extern u8 vgafont16alt[];
-
-// vgainit.c
-extern struct video_save_pointer_s video_save_pointer_table;
-extern struct video_param_s video_param_table[29];
-
-// vgabios.c
-extern int VgaBDF;
-extern int HaveRunInit;
-#define SET_VGA(var, val) SET_FARVAR(get_global_seg(), (var), (val))
-struct carattr {
- u8 car, attr, use_attr, pad;
-};
-struct cursorpos {
- u8 x, y, page, pad;
-};
-int vga_bpp(struct vgamode_s *vmode_g);
-u16 calc_page_size(u8 memmodel, u16 width, u16 height);
-u16 get_cursor_shape(void);
-struct cursorpos get_cursor_pos(u8 page);
-int bda_save_restore(int cmd, u16 seg, void *data);
-struct vgamode_s *get_current_mode(void);
-int vga_set_mode(int mode, int flags);
-extern struct video_func_static static_functionality;
-
-// vgafb.c
-void init_gfx_op(struct gfx_op *op, struct vgamode_s *vmode_g);
-void handle_gfx_op(struct gfx_op *op);
-void *text_address(struct cursorpos cp);
-void vgafb_move_chars(struct cursorpos dest
- , struct cursorpos src, struct cursorpos movesize);
-void vgafb_clear_chars(struct cursorpos dest
- , struct carattr ca, struct cursorpos movesize);
-void vgafb_write_char(struct cursorpos cp, struct carattr ca);
-struct carattr vgafb_read_char(struct cursorpos cp);
-void vgafb_write_pixel(u8 color, u16 x, u16 y);
-u8 vgafb_read_pixel(u16 x, u16 y);
-void vgafb_set_swcursor(int enable);
-
-// vbe.c
-extern u32 VBE_total_memory;
-extern u32 VBE_capabilities;
-extern u32 VBE_framebuffer;
-extern u16 VBE_win_granularity;
-#define VBE_OEM_STRING "SeaBIOS VBE(C) 2011"
-#define VBE_VENDOR_STRING "SeaBIOS Developers"
-#define VBE_PRODUCT_STRING "SeaBIOS VBE Adapter"
-#define VBE_REVISION_STRING "Rev. 1"
-struct bregs;
-void handle_104f(struct bregs *regs);
-
-#endif // vgabios.h
diff --git a/qemu/roms/seabios/vgasrc/vgaentry.S b/qemu/roms/seabios/vgasrc/vgaentry.S
deleted file mode 100644
index 53be2b38c..000000000
--- a/qemu/roms/seabios/vgasrc/vgaentry.S
+++ /dev/null
@@ -1,161 +0,0 @@
-// Rom layout and bios assembler to C interface.
-//
-// Copyright (C) 2009-2013 Kevin O'Connor <kevin@koconnor.net>
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-
-#include "asm-offsets.h" // BREGS_*
-#include "config.h" // CONFIG_*
-#include "entryfuncs.S" // ENTRY_*
-
-
-/****************************************************************
- * Rom Header
- ****************************************************************/
-
- .section .rom.header
- .code16
- .global _rom_header, _rom_header_size, _rom_header_checksum
-_rom_header:
- .word 0xaa55
-_rom_header_size:
- .byte 0
-_rom_header_entry:
- jmp _optionrom_entry
-_rom_header_checksum:
- .byte 0
-_rom_header_other:
- .space 17
-_rom_header_pcidata:
-#if CONFIG_VGA_PCI == 1
- .word rom_pci_data
-#else
- .word 0
-#endif
-_rom_header_pnpdata:
- .word 0
-_rom_header_other2:
- .word 0
-_rom_header_signature:
- .asciz "IBM"
-
-
-/****************************************************************
- * Entry points
- ****************************************************************/
-
- // This macro implements a call while avoiding instructions
- // that old versions of x86emu have problems with.
- .macro VGA_CALLL cfunc
-#if CONFIG_VGA_FIXUP_ASM
- pushw %ax
- callw \cfunc
-#else
- calll \cfunc
-#endif
- .endm
-
- // This macro is the same as ENTRY_ARG except VGA_CALLL is used.
- .macro ENTRY_ARG_VGA cfunc
- cli
- cld
- PUSHBREGS
- movw %ss, %ax // Move %ss to %ds
- movw %ax, %ds
- movl %esp, %ebx // Backup %esp, then zero high bits
- movzwl %sp, %esp
- movl %esp, %eax // First arg is pointer to struct bregs
- VGA_CALLL \cfunc
- movl %ebx, %esp // Restore %esp (including high bits)
- POPBREGS
- .endm
-
- DECLFUNC entry_104f05
-entry_104f05:
- ENTRY_ARG_VGA vbe_104f05
- lretw
-
- DECLFUNC _optionrom_entry
-_optionrom_entry:
- ENTRY_ARG_VGA vga_post
- lretw
-
- DECLFUNC entry_10
-entry_10:
- ENTRY_ARG_VGA handle_10
- iretw
-
-#define VGA_CUSTOM_BDA_FLAGS 0xb9
-#define BF_EXTRA_STACK 0x40
-
- // Entry point using extra stack
- DECLFUNC entry_10_extrastack
-entry_10_extrastack:
- cli
- cld
- pushw %ds
- pushl %eax
-
- movw $SEG_BDA, %ax // Check if extra stack is enabled
- movw %ax, %ds
- testb $BF_EXTRA_STACK, VGA_CUSTOM_BDA_FLAGS
- jz 1f
-
- movw %cs:ExtraStackSeg, %ds // Set %ds:%eax to space on ExtraStack
- movl $(CONFIG_VGA_EXTRA_STACK_SIZE-PUSHBREGS_size-16), %eax
- SAVEBREGS_POP_DSEAX // Save registers on extra stack
- movl %esp, PUSHBREGS_size+8(%eax)
- movw %ss, PUSHBREGS_size+12(%eax)
- popl BREGS_code(%eax)
- popw BREGS_flags(%eax)
-
- movw %ds, %dx // Setup %ss/%esp and call function
- movw %dx, %ss
- movl %eax, %esp
- VGA_CALLL handle_10
-
- movl %esp, %eax // Restore registers and return
- movw PUSHBREGS_size+12(%eax), %ss
- movl PUSHBREGS_size+8(%eax), %esp
- popl %edx
- popw %dx
- pushw BREGS_flags(%eax)
- pushl BREGS_code(%eax)
- RESTOREBREGS_DSEAX
- iretw
-
-1: // Use regular entry point if the extra stack is disabled
- popl %eax
- popw %ds
- jmp entry_10
-
- // Timer irq handling
- DECLFUNC entry_timer_hook
-entry_timer_hook:
- ENTRY handle_timer_hook
- ljmpw *%cs:Timer_Hook_Resume
-
- // Timer irq handling on extra stack
- DECLFUNC entry_timer_hook_extrastack
-entry_timer_hook_extrastack:
- cli
- cld
- pushw %ds // Set %ds:%eax to space on ExtraStack
- pushl %eax
- movw %cs:ExtraStackSeg, %ds
- movl $(CONFIG_VGA_EXTRA_STACK_SIZE-PUSHBREGS_size-8), %eax
- SAVEBREGS_POP_DSEAX
- movl %esp, PUSHBREGS_size(%eax)
- movw %ss, PUSHBREGS_size+4(%eax)
-
- movw %ds, %dx // Setup %ss/%esp and call function
- movw %dx, %ss
- movl %eax, %esp
- calll handle_timer_hook
-
- movl %esp, %eax // Restore registers and return
- movw PUSHBREGS_size+4(%eax), %ss
- movl PUSHBREGS_size(%eax), %esp
- RESTOREBREGS_DSEAX
- ljmpw *%cs:Timer_Hook_Resume
diff --git a/qemu/roms/seabios/vgasrc/vgafb.c b/qemu/roms/seabios/vgasrc/vgafb.c
deleted file mode 100644
index 5d1ecc936..000000000
--- a/qemu/roms/seabios/vgasrc/vgafb.c
+++ /dev/null
@@ -1,695 +0,0 @@
-// Code for manipulating VGA framebuffers.
-//
-// Copyright (C) 2009-2014 Kevin O'Connor <kevin@koconnor.net>
-// Copyright (C) 2001-2008 the LGPL VGABios developers Team
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // GET_BDA
-#include "byteorder.h" // cpu_to_be16
-#include "output.h" // dprintf
-#include "stdvga.h" // stdvga_planar4_plane
-#include "string.h" // memset_far
-#include "vgabios.h" // vgafb_scroll
-#include "vgahw.h" // vgahw_get_linelength
-
-static inline void
-memmove_stride(u16 seg, void *dst, void *src, int copylen, int stride, int lines)
-{
- if (src < dst) {
- dst += stride * (lines - 1);
- src += stride * (lines - 1);
- stride = -stride;
- }
- for (; lines; lines--, dst+=stride, src+=stride)
- memcpy_far(seg, dst, seg, src, copylen);
-}
-
-static inline void
-memset_stride(u16 seg, void *dst, u8 val, int setlen, int stride, int lines)
-{
- for (; lines; lines--, dst+=stride)
- memset_far(seg, dst, val, setlen);
-}
-
-static inline void
-memset16_stride(u16 seg, void *dst, u16 val, int setlen, int stride, int lines)
-{
- for (; lines; lines--, dst+=stride)
- memset16_far(seg, dst, val, setlen);
-}
-
-
-/****************************************************************
- * Basic stdvga graphic manipulation
- ****************************************************************/
-
-static void
-gfx_planar(struct gfx_op *op)
-{
- if (!CONFIG_VGA_STDVGA_PORTS)
- return;
- void *dest_far = (void*)(op->y * op->linelength + op->x / 8);
- int plane;
- switch (op->op) {
- default:
- case GO_READ8:
- memset(op->pixels, 0, sizeof(op->pixels));
- for (plane = 0; plane < 4; plane++) {
- stdvga_planar4_plane(plane);
- u8 data = GET_FARVAR(SEG_GRAPH, *(u8*)dest_far);
- int pixel;
- for (pixel=0; pixel<8; pixel++)
- op->pixels[pixel] |= ((data>>(7-pixel)) & 1) << plane;
- }
- break;
- case GO_WRITE8:
- for (plane = 0; plane<4; plane++) {
- stdvga_planar4_plane(plane);
- u8 data = 0;
- int pixel;
- for (pixel=0; pixel<8; pixel++)
- data |= ((op->pixels[pixel]>>plane) & 1) << (7-pixel);
- SET_FARVAR(SEG_GRAPH, *(u8*)dest_far, data);
- }
- break;
- case GO_MEMSET:
- for (plane = 0; plane < 4; plane++) {
- stdvga_planar4_plane(plane);
- u8 data = (op->pixels[0] & (1<<plane)) ? 0xff : 0x00;
- memset_stride(SEG_GRAPH, dest_far, data
- , op->xlen / 8, op->linelength, op->ylen);
- }
- break;
- case GO_MEMMOVE: ;
- void *src_far = (void*)(op->srcy * op->linelength + op->x / 8);
- for (plane = 0; plane < 4; plane++) {
- stdvga_planar4_plane(plane);
- memmove_stride(SEG_GRAPH, dest_far, src_far
- , op->xlen / 8, op->linelength, op->ylen);
- }
- break;
- }
- stdvga_planar4_plane(-1);
-}
-
-static void
-gfx_cga(struct gfx_op *op)
-{
- int bpp = GET_GLOBAL(op->vmode_g->depth);
- void *dest_far = (void*)(op->y / 2 * op->linelength + op->x / 8 * bpp);
- switch (op->op) {
- default:
- case GO_READ8:
- if (op->y & 1)
- dest_far += 0x2000;
- if (bpp == 1) {
- u8 data = GET_FARVAR(SEG_CTEXT, *(u8*)dest_far);
- int pixel;
- for (pixel=0; pixel<8; pixel++)
- op->pixels[pixel] = (data >> (7-pixel)) & 1;
- } else {
- u16 data = GET_FARVAR(SEG_CTEXT, *(u16*)dest_far);
- data = be16_to_cpu(data);
- int pixel;
- for (pixel=0; pixel<8; pixel++)
- op->pixels[pixel] = (data >> ((7-pixel)*2)) & 3;
- }
- break;
- case GO_WRITE8:
- if (op->y & 1)
- dest_far += 0x2000;
- if (bpp == 1) {
- u8 data = 0;
- int pixel;
- for (pixel=0; pixel<8; pixel++)
- data |= (op->pixels[pixel] & 1) << (7-pixel);
- SET_FARVAR(SEG_CTEXT, *(u8*)dest_far, data);
- } else {
- u16 data = 0;
- int pixel;
- for (pixel=0; pixel<8; pixel++)
- data |= (op->pixels[pixel] & 3) << ((7-pixel) * 2);
- data = cpu_to_be16(data);
- SET_FARVAR(SEG_CTEXT, *(u16*)dest_far, data);
- }
- break;
- case GO_MEMSET: ;
- u8 data = op->pixels[0];
- if (bpp == 1)
- data = (data&1) | ((data&1)<<1);
- data &= 3;
- data |= (data<<2) | (data<<4) | (data<<6);
- memset_stride(SEG_CTEXT, dest_far, data
- , op->xlen / 8 * bpp, op->linelength, op->ylen / 2);
- memset_stride(SEG_CTEXT, dest_far + 0x2000, data
- , op->xlen / 8 * bpp, op->linelength, op->ylen / 2);
- break;
- case GO_MEMMOVE: ;
- void *src_far = (void*)(op->srcy / 2 * op->linelength + op->x / 8 * bpp);
- memmove_stride(SEG_CTEXT, dest_far, src_far
- , op->xlen / 8 * bpp, op->linelength, op->ylen / 2);
- memmove_stride(SEG_CTEXT, dest_far + 0x2000, src_far + 0x2000
- , op->xlen / 8 * bpp, op->linelength, op->ylen / 2);
- break;
- }
-}
-
-static void
-gfx_packed(struct gfx_op *op)
-{
- void *dest_far = (void*)(op->y * op->linelength + op->x);
- switch (op->op) {
- default:
- case GO_READ8:
- memcpy_far(GET_SEG(SS), op->pixels, SEG_GRAPH, dest_far, 8);
- break;
- case GO_WRITE8:
- memcpy_far(SEG_GRAPH, dest_far, GET_SEG(SS), op->pixels, 8);
- break;
- case GO_MEMSET:
- memset_stride(SEG_GRAPH, dest_far, op->pixels[0]
- , op->xlen, op->linelength, op->ylen);
- break;
- case GO_MEMMOVE: ;
- void *src_far = (void*)(op->srcy * op->linelength + op->x);
- memmove_stride(SEG_GRAPH, dest_far, src_far
- , op->xlen, op->linelength, op->ylen);
- break;
- }
-}
-
-
-/****************************************************************
- * Direct framebuffers in high mem
- ****************************************************************/
-
-// Use int 1587 call to copy memory to/from the framebuffer.
-static void
-memcpy_high(void *dest, void *src, u32 len)
-{
- u64 gdt[6];
- gdt[2] = GDT_DATA | GDT_LIMIT(0xfffff) | GDT_BASE((u32)src);
- gdt[3] = GDT_DATA | GDT_LIMIT(0xfffff) | GDT_BASE((u32)dest);
-
- // Call int 1587 to copy data.
- len/=2;
- u32 flags;
- u32 eax = 0x8700;
- u32 si = (u32)&gdt;
- SET_SEG(ES, GET_SEG(SS));
- asm volatile(
- "stc\n"
- "int $0x15\n"
- "cli\n"
- "cld\n"
- "pushfl\n"
- "popl %0\n"
- : "=r" (flags), "+a" (eax), "+S" (si), "+c" (len)
- : : "cc", "memory");
-}
-
-static void
-memmove_stride_high(void *dst, void *src, int copylen, int stride, int lines)
-{
- if (src < dst) {
- dst += stride * (lines - 1);
- src += stride * (lines - 1);
- stride = -stride;
- }
- for (; lines; lines--, dst+=stride, src+=stride)
- memcpy_high(dst, src, copylen);
-}
-
-// Map a CGA color to a "direct" mode rgb value.
-static u32
-get_color(int depth, u8 attr)
-{
- int rbits, gbits, bbits;
- switch (depth) {
- case 15: rbits=5; gbits=5; bbits=5; break;
- case 16: rbits=5; gbits=6; bbits=5; break;
- default:
- case 24: rbits=8; gbits=8; bbits=8; break;
- }
- int h = (attr&8) ? 1 : 0;
- int r = (attr&4) ? 2 : 0, g = (attr&2) ? 2 : 0, b = (attr&1) ? 2 : 0;
- if ((attr & 0xf) == 6)
- g = 1;
- int rv = DIV_ROUND_CLOSEST(((1<<rbits) - 1) * (r + h), 3);
- int gv = DIV_ROUND_CLOSEST(((1<<gbits) - 1) * (g + h), 3);
- int bv = DIV_ROUND_CLOSEST(((1<<bbits) - 1) * (b + h), 3);
- return (rv << (gbits+bbits)) + (gv << bbits) + bv;
-}
-
-// Find the closest attribute for a given framebuffer color
-static u8
-reverse_color(int depth, u32 color)
-{
- int rbits, gbits, bbits;
- switch (depth) {
- case 15: rbits=5; gbits=5; bbits=5; break;
- case 16: rbits=5; gbits=6; bbits=5; break;
- default:
- case 24: rbits=8; gbits=8; bbits=8; break;
- }
- int rv = (color >> (gbits+bbits)) & ((1<<rbits)-1);
- int gv = (color >> bbits) & ((1<<gbits)-1);
- int bv = color & ((1<<bbits)-1);
- int r = DIV_ROUND_CLOSEST(rv * 3, (1<<rbits) - 1);
- int g = DIV_ROUND_CLOSEST(gv * 3, (1<<gbits) - 1);
- int b = DIV_ROUND_CLOSEST(bv * 3, (1<<bbits) - 1);
- int h = r && g && b && (r != 2 || g != 2 || b != 2);
- return (h ? 8 : 0) | ((r-h) ? 4 : 0) | ((g-h) ? 2 : 0) | ((b-h) ? 1 : 0);
-}
-
-static void
-gfx_direct(struct gfx_op *op)
-{
- void *fb = (void*)GET_GLOBAL(VBE_framebuffer);
- if (!fb)
- return;
- int depth = GET_GLOBAL(op->vmode_g->depth);
- int bypp = DIV_ROUND_UP(depth, 8);
- void *dest_far = (fb + op->displaystart + op->y * op->linelength
- + op->x * bypp);
- u8 data[64];
- int i;
- switch (op->op) {
- default:
- case GO_READ8:
- memcpy_high(MAKE_FLATPTR(GET_SEG(SS), data), dest_far, bypp * 8);
- for (i=0; i<8; i++)
- op->pixels[i] = reverse_color(depth, *(u32*)&data[i*bypp]);
- break;
- case GO_WRITE8:
- for (i=0; i<8; i++)
- *(u32*)&data[i*bypp] = get_color(depth, op->pixels[i]);
- memcpy_high(dest_far, MAKE_FLATPTR(GET_SEG(SS), data), bypp * 8);
- break;
- case GO_MEMSET: ;
- u32 color = get_color(depth, op->pixels[0]);
- for (i=0; i<8; i++)
- *(u32*)&data[i*bypp] = color;
- memcpy_high(dest_far, MAKE_FLATPTR(GET_SEG(SS), data), bypp * 8);
- memcpy_high(dest_far + bypp * 8, dest_far, op->xlen * bypp - bypp * 8);
- for (i=1; i < op->ylen; i++)
- memcpy_high(dest_far + op->linelength * i
- , dest_far, op->xlen * bypp);
- break;
- case GO_MEMMOVE: ;
- void *src_far = (fb + op->displaystart + op->srcy * op->linelength
- + op->x * bypp);
- memmove_stride_high(dest_far, src_far
- , op->xlen * bypp, op->linelength, op->ylen);
- break;
- }
-}
-
-
-/****************************************************************
- * Gfx interface
- ****************************************************************/
-
-// Prepare a struct gfx_op for use.
-void
-init_gfx_op(struct gfx_op *op, struct vgamode_s *vmode_g)
-{
- memset(op, 0, sizeof(*op));
- op->vmode_g = vmode_g;
- op->linelength = vgahw_get_linelength(vmode_g);
- op->displaystart = vgahw_get_displaystart(vmode_g);
-}
-
-// Issue a graphics operation.
-void
-handle_gfx_op(struct gfx_op *op)
-{
- switch (GET_GLOBAL(op->vmode_g->memmodel)) {
- case MM_PLANAR:
- gfx_planar(op);
- break;
- case MM_CGA:
- gfx_cga(op);
- break;
- case MM_PACKED:
- gfx_packed(op);
- break;
- case MM_DIRECT:
- gfx_direct(op);
- break;
- default:
- break;
- }
-}
-
-// Move characters when in graphics mode.
-static void
-gfx_move_chars(struct vgamode_s *vmode_g, struct cursorpos dest
- , struct cursorpos src, struct cursorpos movesize)
-{
- struct gfx_op op;
- init_gfx_op(&op, vmode_g);
- op.x = dest.x * 8;
- op.xlen = movesize.x * 8;
- int cheight = GET_BDA(char_height);
- op.y = dest.y * cheight;
- op.ylen = movesize.y * cheight;
- op.srcy = src.y * cheight;
- op.op = GO_MEMMOVE;
- handle_gfx_op(&op);
-}
-
-// Clear area of screen in graphics mode.
-static void
-gfx_clear_chars(struct vgamode_s *vmode_g, struct cursorpos dest
- , struct carattr ca, struct cursorpos clearsize)
-{
- struct gfx_op op;
- init_gfx_op(&op, vmode_g);
- op.x = dest.x * 8;
- op.xlen = clearsize.x * 8;
- int cheight = GET_BDA(char_height);
- op.y = dest.y * cheight;
- op.ylen = clearsize.y * cheight;
- op.pixels[0] = ca.attr;
- if (vga_emulate_text())
- op.pixels[0] = ca.attr >> 4;
- op.op = GO_MEMSET;
- handle_gfx_op(&op);
-}
-
-// Return the font for a given character
-struct segoff_s
-get_font_data(u8 c)
-{
- int char_height = GET_BDA(char_height);
- struct segoff_s font;
- if (char_height == 8 && c >= 128) {
- font = GET_IVT(0x1f);
- c -= 128;
- } else {
- font = GET_IVT(0x43);
- }
- font.offset += c * char_height;
- return font;
-}
-
-// Write a character to the screen in graphics mode.
-static void
-gfx_write_char(struct vgamode_s *vmode_g
- , struct cursorpos cp, struct carattr ca)
-{
- if (cp.x >= GET_BDA(video_cols))
- return;
-
- struct segoff_s font = get_font_data(ca.car);
- struct gfx_op op;
- init_gfx_op(&op, vmode_g);
- op.x = cp.x * 8;
- int cheight = GET_BDA(char_height);
- op.y = cp.y * cheight;
- u8 fgattr = ca.attr, bgattr = 0x00;
- int usexor = 0;
- if (vga_emulate_text()) {
- if (ca.use_attr) {
- bgattr = fgattr >> 4;
- fgattr = fgattr & 0x0f;
- } else {
- // Read bottom right pixel of the cell to guess bg color
- op.op = GO_READ8;
- op.y += cheight-1;
- handle_gfx_op(&op);
- op.y -= cheight-1;
- bgattr = op.pixels[7];
- fgattr = bgattr ^ 0x7;
- }
- } else if (fgattr & 0x80 && GET_GLOBAL(vmode_g->depth) < 8) {
- usexor = 1;
- fgattr &= 0x7f;
- }
- int i;
- for (i = 0; i < cheight; i++, op.y++) {
- u8 fontline = GET_FARVAR(font.seg, *(u8*)(font.offset+i));
- if (usexor) {
- op.op = GO_READ8;
- handle_gfx_op(&op);
- int j;
- for (j = 0; j < 8; j++)
- op.pixels[j] ^= (fontline & (0x80>>j)) ? fgattr : 0x00;
- } else {
- int j;
- for (j = 0; j < 8; j++)
- op.pixels[j] = (fontline & (0x80>>j)) ? fgattr : bgattr;
- }
- op.op = GO_WRITE8;
- handle_gfx_op(&op);
- }
-}
-
-// Read a character from the screen in graphics mode.
-static struct carattr
-gfx_read_char(struct vgamode_s *vmode_g, struct cursorpos cp)
-{
- u8 lines[16];
- int cheight = GET_BDA(char_height);
- if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
- goto fail;
-
- // Read cell from screen
- struct gfx_op op;
- init_gfx_op(&op, vmode_g);
- op.op = GO_READ8;
- op.x = cp.x * 8;
- op.y = cp.y * cheight;
- int car = 0;
- u8 fgattr = 0x00, bgattr = 0x00;
- if (vga_emulate_text()) {
- // Read bottom right pixel of the cell to guess bg color
- op.y += cheight-1;
- handle_gfx_op(&op);
- op.y -= cheight-1;
- bgattr = op.pixels[7];
- fgattr = bgattr ^ 0x7;
- // Report space character for blank cells (skip null character check)
- car = 1;
- }
- u8 i, j;
- for (i=0; i<cheight; i++, op.y++) {
- u8 line = 0;
- handle_gfx_op(&op);
- for (j=0; j<8; j++)
- if (op.pixels[j] != bgattr) {
- line |= 0x80 >> j;
- fgattr = op.pixels[j];
- }
- lines[i] = line;
- }
-
- // Determine font
- for (; car<256; car++) {
- struct segoff_s font = get_font_data(car);
- if (memcmp_far(GET_SEG(SS), lines
- , font.seg, (void*)(font.offset+0), cheight) == 0)
- return (struct carattr){car, fgattr | (bgattr << 4), 0};
- }
-fail:
- return (struct carattr){0, 0, 0};
-}
-
-// Draw/undraw a cursor on the framebuffer by xor'ing the cursor cell
-void
-gfx_set_swcursor(struct vgamode_s *vmode_g, int enable, struct cursorpos cp)
-{
- u16 cursor_type = get_cursor_shape();
- u8 start = cursor_type >> 8, end = cursor_type & 0xff;
- struct gfx_op op;
- init_gfx_op(&op, vmode_g);
- op.x = cp.x * 8;
- int cheight = GET_BDA(char_height);
- op.y = cp.y * cheight + start;
-
- int i;
- for (i = start; i < cheight && i <= end; i++, op.y++) {
- op.op = GO_READ8;
- handle_gfx_op(&op);
- int j;
- for (j = 0; j < 8; j++)
- op.pixels[j] ^= 0x07;
- op.op = GO_WRITE8;
- handle_gfx_op(&op);
- }
-}
-
-// Set the pixel at the given position.
-void
-vgafb_write_pixel(u8 color, u16 x, u16 y)
-{
- struct vgamode_s *vmode_g = get_current_mode();
- if (!vmode_g)
- return;
- vgafb_set_swcursor(0);
-
- struct gfx_op op;
- init_gfx_op(&op, vmode_g);
- op.x = ALIGN_DOWN(x, 8);
- op.y = y;
- op.op = GO_READ8;
- handle_gfx_op(&op);
-
- int usexor = color & 0x80 && GET_GLOBAL(vmode_g->depth) < 8;
- if (usexor)
- op.pixels[x & 0x07] ^= color & 0x7f;
- else
- op.pixels[x & 0x07] = color;
- op.op = GO_WRITE8;
- handle_gfx_op(&op);
-}
-
-// Return the pixel at the given position.
-u8
-vgafb_read_pixel(u16 x, u16 y)
-{
- struct vgamode_s *vmode_g = get_current_mode();
- if (!vmode_g)
- return 0;
- vgafb_set_swcursor(0);
-
- struct gfx_op op;
- init_gfx_op(&op, vmode_g);
- op.x = ALIGN_DOWN(x, 8);
- op.y = y;
- op.op = GO_READ8;
- handle_gfx_op(&op);
-
- return op.pixels[x & 0x07];
-}
-
-
-/****************************************************************
- * Text ops
- ****************************************************************/
-
-// Return the fb offset for the given character address when in text mode.
-void *
-text_address(struct cursorpos cp)
-{
- int stride = GET_BDA(video_cols) * 2;
- u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
- return (void*)pageoffset + cp.y * stride + cp.x * 2;
-}
-
-// Move characters on screen.
-void
-vgafb_move_chars(struct cursorpos dest
- , struct cursorpos src, struct cursorpos movesize)
-{
- struct vgamode_s *vmode_g = get_current_mode();
- if (!vmode_g)
- return;
- vgafb_set_swcursor(0);
-
- if (GET_GLOBAL(vmode_g->memmodel) != MM_TEXT) {
- gfx_move_chars(vmode_g, dest, src, movesize);
- return;
- }
-
- int stride = GET_BDA(video_cols) * 2;
- memmove_stride(GET_GLOBAL(vmode_g->sstart)
- , text_address(dest), text_address(src)
- , movesize.x * 2, stride, movesize.y);
-}
-
-// Clear area of screen.
-void
-vgafb_clear_chars(struct cursorpos dest
- , struct carattr ca, struct cursorpos clearsize)
-{
- struct vgamode_s *vmode_g = get_current_mode();
- if (!vmode_g)
- return;
- vgafb_set_swcursor(0);
-
- if (GET_GLOBAL(vmode_g->memmodel) != MM_TEXT) {
- gfx_clear_chars(vmode_g, dest, ca, clearsize);
- return;
- }
-
- int stride = GET_BDA(video_cols) * 2;
- u16 attr = ((ca.use_attr ? ca.attr : 0x07) << 8) | ca.car;
- memset16_stride(GET_GLOBAL(vmode_g->sstart), text_address(dest), attr
- , clearsize.x * 2, stride, clearsize.y);
-}
-
-// Write a character to the screen.
-void
-vgafb_write_char(struct cursorpos cp, struct carattr ca)
-{
- struct vgamode_s *vmode_g = get_current_mode();
- if (!vmode_g)
- return;
- vgafb_set_swcursor(0);
-
- if (GET_GLOBAL(vmode_g->memmodel) != MM_TEXT) {
- gfx_write_char(vmode_g, cp, ca);
- return;
- }
-
- void *dest_far = text_address(cp);
- if (ca.use_attr) {
- u16 dummy = (ca.attr << 8) | ca.car;
- SET_FARVAR(GET_GLOBAL(vmode_g->sstart), *(u16*)dest_far, dummy);
- } else {
- SET_FARVAR(GET_GLOBAL(vmode_g->sstart), *(u8*)dest_far, ca.car);
- }
-}
-
-// Return the character at the given position on the screen.
-struct carattr
-vgafb_read_char(struct cursorpos cp)
-{
- struct vgamode_s *vmode_g = get_current_mode();
- if (!vmode_g)
- return (struct carattr){0, 0, 0};
- vgafb_set_swcursor(0);
-
- if (GET_GLOBAL(vmode_g->memmodel) != MM_TEXT)
- return gfx_read_char(vmode_g, cp);
-
- u16 *dest_far = text_address(cp);
- u16 v = GET_FARVAR(GET_GLOBAL(vmode_g->sstart), *dest_far);
- return (struct carattr){v, v>>8, 0};
-}
-
-// Draw/undraw a cursor on the screen
-void
-vgafb_set_swcursor(int enable)
-{
- if (!vga_emulate_text())
- return;
- u8 flags = GET_BDA_EXT(flags);
- if (!!(flags & BF_SWCURSOR) == enable)
- // Already in requested mode.
- return;
- struct vgamode_s *vmode_g = get_current_mode();
- if (!vmode_g)
- return;
- struct cursorpos cp = get_cursor_pos(0xff);
- if (cp.x >= GET_BDA(video_cols) || cp.y > GET_BDA(video_rows)
- || GET_BDA(cursor_type) >= 0x2000)
- // Cursor not visible
- return;
-
- SET_BDA_EXT(flags, (flags & ~BF_SWCURSOR) | (enable ? BF_SWCURSOR : 0));
-
- if (GET_GLOBAL(vmode_g->memmodel) != MM_TEXT) {
- gfx_set_swcursor(vmode_g, enable, cp);
- return;
- }
-
- // In text mode, swap foreground and background attributes for cursor
- void *dest_far = text_address(cp) + 1;
- u8 attr = GET_FARVAR(GET_GLOBAL(vmode_g->sstart), *(u8*)dest_far);
- attr = (attr >> 4) | (attr << 4);
- SET_FARVAR(GET_GLOBAL(vmode_g->sstart), *(u8*)dest_far, attr);
-}
diff --git a/qemu/roms/seabios/vgasrc/vgafonts.c b/qemu/roms/seabios/vgasrc/vgafonts.c
deleted file mode 100644
index 47a6437f2..000000000
--- a/qemu/roms/seabios/vgasrc/vgafonts.c
+++ /dev/null
@@ -1,785 +0,0 @@
-#include "vgabios.h" // vgafont8
-
-/*
- * These fonts come from ftp://ftp.simtel.net/pub/simtelnet/msdos/screen/fntcol16.zip
- * The package is (c) by Joseph Gil
- * The individual fonts are public domain
- */
-u8 vgafont8[256 * 8] VAR16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e,
- 0x7e, 0xff, 0xdb, 0xff, 0xc3, 0xe7, 0xff, 0x7e,
- 0x6c, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00,
- 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00,
- 0x38, 0x7c, 0x38, 0xfe, 0xfe, 0x7c, 0x38, 0x7c,
- 0x10, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x7c,
- 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00,
- 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff,
- 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00,
- 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff,
- 0x0f, 0x07, 0x0f, 0x7d, 0xcc, 0xcc, 0xcc, 0x78,
- 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18,
- 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x70, 0xf0, 0xe0,
- 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x67, 0xe6, 0xc0,
- 0x99, 0x5a, 0x3c, 0xe7, 0xe7, 0x3c, 0x5a, 0x99,
- 0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00,
- 0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00,
- 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x7e, 0x3c, 0x18,
- 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00,
- 0x7f, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x00,
- 0x3e, 0x63, 0x38, 0x6c, 0x6c, 0x38, 0xcc, 0x78,
- 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x00,
- 0x18, 0x3c, 0x7e, 0x18, 0x7e, 0x3c, 0x18, 0xff,
- 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00,
- 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00,
- 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00,
- 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00,
- 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00,
- 0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x30, 0x78, 0x78, 0x30, 0x30, 0x00, 0x30, 0x00,
- 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x6c, 0x6c, 0xfe, 0x6c, 0xfe, 0x6c, 0x6c, 0x00,
- 0x30, 0x7c, 0xc0, 0x78, 0x0c, 0xf8, 0x30, 0x00,
- 0x00, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xc6, 0x00,
- 0x38, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0x76, 0x00,
- 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00,
- 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00,
- 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00,
- 0x00, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x60,
- 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00,
- 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00,
- 0x7c, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0x7c, 0x00,
- 0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00,
- 0x78, 0xcc, 0x0c, 0x38, 0x60, 0xcc, 0xfc, 0x00,
- 0x78, 0xcc, 0x0c, 0x38, 0x0c, 0xcc, 0x78, 0x00,
- 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x1e, 0x00,
- 0xfc, 0xc0, 0xf8, 0x0c, 0x0c, 0xcc, 0x78, 0x00,
- 0x38, 0x60, 0xc0, 0xf8, 0xcc, 0xcc, 0x78, 0x00,
- 0xfc, 0xcc, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x00,
- 0x78, 0xcc, 0xcc, 0x78, 0xcc, 0xcc, 0x78, 0x00,
- 0x78, 0xcc, 0xcc, 0x7c, 0x0c, 0x18, 0x70, 0x00,
- 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00,
- 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x60,
- 0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x00,
- 0x00, 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00,
- 0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0x00,
- 0x78, 0xcc, 0x0c, 0x18, 0x30, 0x00, 0x30, 0x00,
- 0x7c, 0xc6, 0xde, 0xde, 0xde, 0xc0, 0x78, 0x00,
- 0x30, 0x78, 0xcc, 0xcc, 0xfc, 0xcc, 0xcc, 0x00,
- 0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00,
- 0x3c, 0x66, 0xc0, 0xc0, 0xc0, 0x66, 0x3c, 0x00,
- 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00,
- 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00,
- 0xfe, 0x62, 0x68, 0x78, 0x68, 0x60, 0xf0, 0x00,
- 0x3c, 0x66, 0xc0, 0xc0, 0xce, 0x66, 0x3e, 0x00,
- 0xcc, 0xcc, 0xcc, 0xfc, 0xcc, 0xcc, 0xcc, 0x00,
- 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
- 0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00,
- 0xe6, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00,
- 0xf0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00,
- 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00,
- 0xc6, 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0x00,
- 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00,
- 0xfc, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00,
- 0x78, 0xcc, 0xcc, 0xcc, 0xdc, 0x78, 0x1c, 0x00,
- 0xfc, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0xe6, 0x00,
- 0x78, 0xcc, 0xe0, 0x70, 0x1c, 0xcc, 0x78, 0x00,
- 0xfc, 0xb4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xfc, 0x00,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x00,
- 0xc6, 0xc6, 0xc6, 0xd6, 0xfe, 0xee, 0xc6, 0x00,
- 0xc6, 0xc6, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0x00,
- 0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x30, 0x78, 0x00,
- 0xfe, 0xc6, 0x8c, 0x18, 0x32, 0x66, 0xfe, 0x00,
- 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00,
- 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x02, 0x00,
- 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00,
- 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
- 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00,
- 0xe0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0xdc, 0x00,
- 0x00, 0x00, 0x78, 0xcc, 0xc0, 0xcc, 0x78, 0x00,
- 0x1c, 0x0c, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00,
- 0x00, 0x00, 0x78, 0xcc, 0xfc, 0xc0, 0x78, 0x00,
- 0x38, 0x6c, 0x60, 0xf0, 0x60, 0x60, 0xf0, 0x00,
- 0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8,
- 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0xe6, 0x00,
- 0x30, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
- 0x0c, 0x00, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78,
- 0xe0, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0xe6, 0x00,
- 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
- 0x00, 0x00, 0xcc, 0xfe, 0xfe, 0xd6, 0xc6, 0x00,
- 0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0x00,
- 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0x78, 0x00,
- 0x00, 0x00, 0xdc, 0x66, 0x66, 0x7c, 0x60, 0xf0,
- 0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0x1e,
- 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0xf0, 0x00,
- 0x00, 0x00, 0x7c, 0xc0, 0x78, 0x0c, 0xf8, 0x00,
- 0x10, 0x30, 0x7c, 0x30, 0x30, 0x34, 0x18, 0x00,
- 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00,
- 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0x78, 0x30, 0x00,
- 0x00, 0x00, 0xc6, 0xd6, 0xfe, 0xfe, 0x6c, 0x00,
- 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00,
- 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8,
- 0x00, 0x00, 0xfc, 0x98, 0x30, 0x64, 0xfc, 0x00,
- 0x1c, 0x30, 0x30, 0xe0, 0x30, 0x30, 0x1c, 0x00,
- 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00,
- 0xe0, 0x30, 0x30, 0x1c, 0x30, 0x30, 0xe0, 0x00,
- 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00,
- 0x78, 0xcc, 0xc0, 0xcc, 0x78, 0x18, 0x0c, 0x78,
- 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0x7e, 0x00,
- 0x1c, 0x00, 0x78, 0xcc, 0xfc, 0xc0, 0x78, 0x00,
- 0x7e, 0xc3, 0x3c, 0x06, 0x3e, 0x66, 0x3f, 0x00,
- 0xcc, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x7e, 0x00,
- 0xe0, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x7e, 0x00,
- 0x30, 0x30, 0x78, 0x0c, 0x7c, 0xcc, 0x7e, 0x00,
- 0x00, 0x00, 0x78, 0xc0, 0xc0, 0x78, 0x0c, 0x38,
- 0x7e, 0xc3, 0x3c, 0x66, 0x7e, 0x60, 0x3c, 0x00,
- 0xcc, 0x00, 0x78, 0xcc, 0xfc, 0xc0, 0x78, 0x00,
- 0xe0, 0x00, 0x78, 0xcc, 0xfc, 0xc0, 0x78, 0x00,
- 0xcc, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
- 0x7c, 0xc6, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00,
- 0xe0, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
- 0xc6, 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00,
- 0x30, 0x30, 0x00, 0x78, 0xcc, 0xfc, 0xcc, 0x00,
- 0x1c, 0x00, 0xfc, 0x60, 0x78, 0x60, 0xfc, 0x00,
- 0x00, 0x00, 0x7f, 0x0c, 0x7f, 0xcc, 0x7f, 0x00,
- 0x3e, 0x6c, 0xcc, 0xfe, 0xcc, 0xcc, 0xce, 0x00,
- 0x78, 0xcc, 0x00, 0x78, 0xcc, 0xcc, 0x78, 0x00,
- 0x00, 0xcc, 0x00, 0x78, 0xcc, 0xcc, 0x78, 0x00,
- 0x00, 0xe0, 0x00, 0x78, 0xcc, 0xcc, 0x78, 0x00,
- 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0x7e, 0x00,
- 0x00, 0xe0, 0x00, 0xcc, 0xcc, 0xcc, 0x7e, 0x00,
- 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8,
- 0xc3, 0x18, 0x3c, 0x66, 0x66, 0x3c, 0x18, 0x00,
- 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00,
- 0x18, 0x18, 0x7e, 0xc0, 0xc0, 0x7e, 0x18, 0x18,
- 0x38, 0x6c, 0x64, 0xf0, 0x60, 0xe6, 0xfc, 0x00,
- 0xcc, 0xcc, 0x78, 0xfc, 0x30, 0xfc, 0x30, 0x30,
- 0xf8, 0xcc, 0xcc, 0xfa, 0xc6, 0xcf, 0xc6, 0xc7,
- 0x0e, 0x1b, 0x18, 0x3c, 0x18, 0x18, 0xd8, 0x70,
- 0x1c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x7e, 0x00,
- 0x38, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
- 0x00, 0x1c, 0x00, 0x78, 0xcc, 0xcc, 0x78, 0x00,
- 0x00, 0x1c, 0x00, 0xcc, 0xcc, 0xcc, 0x7e, 0x00,
- 0x00, 0xf8, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0x00,
- 0xfc, 0x00, 0xcc, 0xec, 0xfc, 0xdc, 0xcc, 0x00,
- 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00,
- 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00,
- 0x30, 0x00, 0x30, 0x60, 0xc0, 0xcc, 0x78, 0x00,
- 0x00, 0x00, 0x00, 0xfc, 0xc0, 0xc0, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xfc, 0x0c, 0x0c, 0x00, 0x00,
- 0xc3, 0xc6, 0xcc, 0xde, 0x33, 0x66, 0xcc, 0x0f,
- 0xc3, 0xc6, 0xcc, 0xdb, 0x37, 0x6f, 0xcf, 0x03,
- 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00,
- 0x00, 0x33, 0x66, 0xcc, 0x66, 0x33, 0x00, 0x00,
- 0x00, 0xcc, 0x66, 0x33, 0x66, 0xcc, 0x00, 0x00,
- 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88,
- 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
- 0xdb, 0x77, 0xdb, 0xee, 0xdb, 0x77, 0xdb, 0xee,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18,
- 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18,
- 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00,
- 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18,
- 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
- 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36,
- 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
- 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36,
- 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
- 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
- 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
- 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x76, 0xdc, 0xc8, 0xdc, 0x76, 0x00,
- 0x00, 0x78, 0xcc, 0xf8, 0xcc, 0xf8, 0xc0, 0xc0,
- 0x00, 0xfc, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0x00,
- 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00,
- 0xfc, 0xcc, 0x60, 0x30, 0x60, 0xcc, 0xfc, 0x00,
- 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0x70, 0x00,
- 0x00, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0xc0,
- 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x00,
- 0xfc, 0x30, 0x78, 0xcc, 0xcc, 0x78, 0x30, 0xfc,
- 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0x6c, 0x38, 0x00,
- 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x6c, 0xee, 0x00,
- 0x1c, 0x30, 0x18, 0x7c, 0xcc, 0xcc, 0x78, 0x00,
- 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0x7e, 0x00, 0x00,
- 0x06, 0x0c, 0x7e, 0xdb, 0xdb, 0x7e, 0x60, 0xc0,
- 0x38, 0x60, 0xc0, 0xf8, 0xc0, 0x60, 0x38, 0x00,
- 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x00,
- 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x00,
- 0x30, 0x30, 0xfc, 0x30, 0x30, 0x00, 0xfc, 0x00,
- 0x60, 0x30, 0x18, 0x30, 0x60, 0x00, 0xfc, 0x00,
- 0x18, 0x30, 0x60, 0x30, 0x18, 0x00, 0xfc, 0x00,
- 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0x70,
- 0x30, 0x30, 0x00, 0xfc, 0x00, 0x30, 0x30, 0x00,
- 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00,
- 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
- 0x0f, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x3c, 0x1c,
- 0x78, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00,
- 0x70, 0x18, 0x30, 0x60, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-u8 vgafont14[256 * 14] VAR16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, 0x99, 0x81, 0x7e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0x7e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff,
- 0x00, 0x00, 0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x02, 0x06, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00,
- 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x28, 0x6c, 0xfe, 0x6c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x66, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xe6, 0x66, 0x6c, 0x6c, 0x78, 0x6c, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00,
- 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x7c, 0x6c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00,
- 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
- 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00,
- 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00,
- 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x70, 0x1c, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x66, 0xfe, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x0c, 0x06, 0x7c, 0x00,
- 0x00, 0x00, 0xcc, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x60, 0x66, 0x3c, 0x0c, 0x06, 0x3c, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0xc6, 0xc6, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00,
- 0x38, 0x6c, 0x38, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00,
- 0x18, 0x30, 0x60, 0x00, 0xfe, 0x66, 0x60, 0x7c, 0x60, 0x66, 0xfe, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xcc, 0x76, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00,
- 0x00, 0xc6, 0xc6, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0xc6, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x18, 0x3c, 0x66, 0x60, 0x60, 0x66, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0xf8, 0xcc, 0xcc, 0xf8, 0xc4, 0xcc, 0xde, 0xcc, 0xcc, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0xd8, 0x70, 0x00,
- 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00,
- 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xc0, 0xc0, 0xc6, 0xcc, 0xd8, 0x30, 0x60, 0xdc, 0x86, 0x0c, 0x18, 0x3e, 0x00,
- 0x00, 0xc0, 0xc0, 0xc6, 0xcc, 0xd8, 0x30, 0x66, 0xce, 0x9e, 0x3e, 0x06, 0x06, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44,
- 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
- 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
- 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfc, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0x40, 0x00,
- 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, 0xf3, 0x7e, 0x60, 0xc0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00,
- 0x00, 0xd8, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-u8 vgafont16[256 * 16] VAR16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x00, 0x00, 0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30, 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x66, 0xc3, 0xc3, 0xdb, 0xdb, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00,
- 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xff, 0xdb, 0x99, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x66, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xff, 0xc3, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc1, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
- 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00,
- 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00,
- 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x0c, 0x06, 0x7c, 0x00, 0x00,
- 0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x60, 0x60, 0x66, 0x3c, 0x0c, 0x06, 0x3c, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
- 0x38, 0x6c, 0x38, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x30, 0x60, 0x00, 0xfe, 0x66, 0x60, 0x7c, 0x60, 0x60, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x1b, 0x7e, 0xd8, 0xdc, 0x77, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc6, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00,
- 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x18, 0x7e, 0xc3, 0xc0, 0xc0, 0xc0, 0xc3, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x62, 0x66, 0x6f, 0x66, 0x66, 0x66, 0xf3, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00,
- 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
- 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xce, 0x9b, 0x06, 0x0c, 0x1f, 0x00, 0x00,
- 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xce, 0x96, 0x3e, 0x06, 0x06, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44,
- 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
- 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
- 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8, 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, 0xf3, 0x7e, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xd8, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-u8 vgafont14alt[1] VAR16;
-u8 vgafont16alt[1] VAR16;
diff --git a/qemu/roms/seabios/vgasrc/vgahw.h b/qemu/roms/seabios/vgasrc/vgahw.h
deleted file mode 100644
index 39f818ab5..000000000
--- a/qemu/roms/seabios/vgasrc/vgahw.h
+++ /dev/null
@@ -1,143 +0,0 @@
-#ifndef __VGAHW_H
-#define __VGAHW_H
-
-#include "types.h" // u8
-#include "config.h" // CONFIG_*
-
-#include "cbvga.h" // cbvga_setup
-#include "clext.h" // clext_set_mode
-#include "bochsvga.h" // bochsvga_set_mode
-#include "stdvga.h" // stdvga_set_mode
-#include "geodevga.h" // geodevga_setup
-
-static inline struct vgamode_s *vgahw_find_mode(int mode) {
- if (CONFIG_VGA_CIRRUS)
- return clext_find_mode(mode);
- if (CONFIG_VGA_BOCHS)
- return bochsvga_find_mode(mode);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_find_mode(mode);
- return stdvga_find_mode(mode);
-}
-
-static inline int vgahw_set_mode(struct vgamode_s *vmode_g, int flags) {
- if (CONFIG_VGA_CIRRUS)
- return clext_set_mode(vmode_g, flags);
- if (CONFIG_VGA_BOCHS)
- return bochsvga_set_mode(vmode_g, flags);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_set_mode(vmode_g, flags);
- return stdvga_set_mode(vmode_g, flags);
-}
-
-static inline void vgahw_list_modes(u16 seg, u16 *dest, u16 *last) {
- if (CONFIG_VGA_CIRRUS)
- clext_list_modes(seg, dest, last);
- else if (CONFIG_VGA_BOCHS)
- bochsvga_list_modes(seg, dest, last);
- else if (CONFIG_VGA_COREBOOT)
- cbvga_list_modes(seg, dest, last);
- else
- stdvga_list_modes(seg, dest, last);
-}
-
-static inline int vgahw_setup(void) {
- if (CONFIG_VGA_CIRRUS)
- return clext_setup();
- if (CONFIG_VGA_BOCHS)
- return bochsvga_setup();
- if (CONFIG_VGA_GEODEGX2 || CONFIG_VGA_GEODELX)
- return geodevga_setup();
- if (CONFIG_VGA_COREBOOT)
- return cbvga_setup();
- return stdvga_setup();
-}
-
-static inline int vgahw_get_window(struct vgamode_s *vmode_g, int window) {
- if (CONFIG_VGA_CIRRUS)
- return clext_get_window(vmode_g, window);
- if (CONFIG_VGA_BOCHS)
- return bochsvga_get_window(vmode_g, window);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_get_window(vmode_g, window);
- return stdvga_get_window(vmode_g, window);
-}
-
-static inline int vgahw_set_window(struct vgamode_s *vmode_g, int window
- , int val) {
- if (CONFIG_VGA_CIRRUS)
- return clext_set_window(vmode_g, window, val);
- if (CONFIG_VGA_BOCHS)
- return bochsvga_set_window(vmode_g, window, val);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_set_window(vmode_g, window, val);
- return stdvga_set_window(vmode_g, window, val);
-}
-
-static inline int vgahw_get_linelength(struct vgamode_s *vmode_g) {
- if (CONFIG_VGA_CIRRUS)
- return clext_get_linelength(vmode_g);
- if (CONFIG_VGA_BOCHS)
- return bochsvga_get_linelength(vmode_g);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_get_linelength(vmode_g);
- return stdvga_get_linelength(vmode_g);
-}
-
-static inline int vgahw_set_linelength(struct vgamode_s *vmode_g, int val) {
- if (CONFIG_VGA_CIRRUS)
- return clext_set_linelength(vmode_g, val);
- if (CONFIG_VGA_BOCHS)
- return bochsvga_set_linelength(vmode_g, val);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_set_linelength(vmode_g, val);
- return stdvga_set_linelength(vmode_g, val);
-}
-
-static inline int vgahw_get_displaystart(struct vgamode_s *vmode_g) {
- if (CONFIG_VGA_CIRRUS)
- return clext_get_displaystart(vmode_g);
- if (CONFIG_VGA_BOCHS)
- return bochsvga_get_displaystart(vmode_g);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_get_displaystart(vmode_g);
- return stdvga_get_displaystart(vmode_g);
-}
-
-static inline int vgahw_set_displaystart(struct vgamode_s *vmode_g, int val) {
- if (CONFIG_VGA_CIRRUS)
- return clext_set_displaystart(vmode_g, val);
- if (CONFIG_VGA_BOCHS)
- return bochsvga_set_displaystart(vmode_g, val);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_set_displaystart(vmode_g, val);
- return stdvga_set_displaystart(vmode_g, val);
-}
-
-static inline int vgahw_get_dacformat(struct vgamode_s *vmode_g) {
- if (CONFIG_VGA_BOCHS)
- return bochsvga_get_dacformat(vmode_g);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_get_dacformat(vmode_g);
- return stdvga_get_dacformat(vmode_g);
-}
-
-static inline int vgahw_set_dacformat(struct vgamode_s *vmode_g, int val) {
- if (CONFIG_VGA_BOCHS)
- return bochsvga_set_dacformat(vmode_g, val);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_set_dacformat(vmode_g, val);
- return stdvga_set_dacformat(vmode_g, val);
-}
-
-static inline int vgahw_save_restore(int cmd, u16 seg, void *data) {
- if (CONFIG_VGA_CIRRUS)
- return clext_save_restore(cmd, seg, data);
- if (CONFIG_VGA_BOCHS)
- return bochsvga_save_restore(cmd, seg, data);
- if (CONFIG_VGA_COREBOOT)
- return cbvga_save_restore(cmd, seg, data);
- return stdvga_save_restore(cmd, seg, data);
-}
-
-#endif // vgahw.h
diff --git a/qemu/roms/seabios/vgasrc/vgainit.c b/qemu/roms/seabios/vgasrc/vgainit.c
deleted file mode 100644
index 40997dbbd..000000000
--- a/qemu/roms/seabios/vgasrc/vgainit.c
+++ /dev/null
@@ -1,196 +0,0 @@
-// Main VGA bios initialization
-//
-// Copyright (C) 2009-2013 Kevin O'Connor <kevin@koconnor.net>
-// Copyright (C) 2001-2008 the LGPL VGABios developers Team
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-#include "biosvar.h" // SET_BDA
-#include "bregs.h" // struct bregs
-#include "hw/pci.h" // pci_config_readw
-#include "hw/pci_regs.h" // PCI_VENDOR_ID
-#include "hw/serialio.h" // serial_debug_preinit
-#include "output.h" // dprintf
-#include "std/optionrom.h" // struct pci_data
-#include "std/pmm.h" // struct pmmheader
-#include "string.h" // checksum_far
-#include "util.h" // VERSION
-#include "vgabios.h" // video_save_pointer_table
-#include "vgahw.h" // vgahw_setup
-
-struct video_save_pointer_s video_save_pointer_table VAR16;
-
-struct video_param_s video_param_table[29] VAR16;
-
-// Type of emulator platform - for dprintf with certain compile options.
-int PlatformRunningOn VAR16;
-
-
-/****************************************************************
- * PCI Data
- ****************************************************************/
-
-struct pci_data rom_pci_data VAR16 VISIBLE16 = {
- .signature = PCI_ROM_SIGNATURE,
- .vendor = CONFIG_VGA_VID,
- .device = CONFIG_VGA_DID,
- .dlen = 0x18,
- .class_hi = 0x300,
- .irevision = 1,
- .type = PCIROM_CODETYPE_X86,
- .indicator = 0x80,
-};
-
-
-/****************************************************************
- * PMM call and extra stack setup
- ****************************************************************/
-
-u16 ExtraStackSeg VAR16 VISIBLE16;
-
-static void
-allocate_extra_stack(void)
-{
- if (!CONFIG_VGA_ALLOCATE_EXTRA_STACK)
- return;
- u32 pmmscan;
- for (pmmscan=0; pmmscan < BUILD_BIOS_SIZE; pmmscan+=16) {
- struct pmmheader *pmm = (void*)pmmscan;
- if (GET_FARVAR(SEG_BIOS, pmm->signature) != PMM_SIGNATURE)
- continue;
- if (checksum_far(SEG_BIOS, pmm, GET_FARVAR(SEG_BIOS, pmm->length)))
- continue;
- struct segoff_s entry = GET_FARVAR(SEG_BIOS, pmm->entry);
- dprintf(1, "Attempting to allocate VGA stack via pmm call to %04x:%04x\n"
- , entry.seg, entry.offset);
- u16 res1, res2;
- asm volatile(
- "pushl %0\n"
- "pushw $(8|1)\n" // Permanent low memory request
- "pushl $0xffffffff\n" // Anonymous handle
- "pushl $" __stringify(CONFIG_VGA_EXTRA_STACK_SIZE/16) "\n"
- "pushw $0x00\n" // PMM allocation request
- "lcallw *12(%%esp)\n"
- "addl $16, %%esp\n"
- "cli\n"
- "cld\n"
- : "+r" (entry.segoff), "=a" (res1), "=d" (res2) : : "cc", "memory");
- u32 res = res1 | (res2 << 16);
- if (!res || res == PMM_FUNCTION_NOT_SUPPORTED)
- return;
- dprintf(1, "VGA stack allocated at %x\n", res);
- SET_VGA(ExtraStackSeg, res >> 4);
- extern void entry_10_extrastack(void);
- SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
- return;
- }
-}
-
-
-/****************************************************************
- * Timer hook
- ****************************************************************/
-
-struct segoff_s Timer_Hook_Resume VAR16 VISIBLE16;
-
-void VISIBLE16
-handle_timer_hook(void)
-{
- if (!vga_emulate_text())
- return;
- vgafb_set_swcursor(GET_BDA(timer_counter) % 18 < 9);
-}
-
-static void
-hook_timer_irq(void)
-{
- if (!CONFIG_VGA_EMULATE_TEXT)
- return;
- extern void entry_timer_hook(void);
- extern void entry_timer_hook_extrastack(void);
- struct segoff_s oldirq = GET_IVT(0x08);
- struct segoff_s newirq = SEGOFF(get_global_seg(), (u32)entry_timer_hook);
- if (CONFIG_VGA_ALLOCATE_EXTRA_STACK && GET_GLOBAL(ExtraStackSeg))
- newirq = SEGOFF(get_global_seg(), (u32)entry_timer_hook_extrastack);
- dprintf(1, "Hooking hardware timer irq (old=%x new=%x)\n"
- , oldirq.segoff, newirq.segoff);
- SET_VGA(Timer_Hook_Resume, oldirq);
- SET_IVT(0x08, newirq);
-}
-
-
-/****************************************************************
- * VGA post
- ****************************************************************/
-
-static void
-init_bios_area(void)
-{
- // init detected hardware BIOS Area
- // set 80x25 color (not clear from RBIL but usual)
- set_equipment_flags(0x30, 0x20);
-
- // Set the basic modeset options
- SET_BDA(modeset_ctl, 0x51);
-
- SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
- SET_BDA(video_savetable
- , SEGOFF(get_global_seg(), (u32)&video_save_pointer_table));
-
- // FIXME
- SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
- SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
-}
-
-int VgaBDF VAR16 = -1;
-int HaveRunInit VAR16;
-
-void VISIBLE16
-vga_post(struct bregs *regs)
-{
- serial_debug_preinit();
- dprintf(1, "Start SeaVGABIOS (version %s)\n", VERSION);
- dprintf(1, "VGABUILD: %s\n", BUILDINFO);
- debug_enter(regs, DEBUG_VGA_POST);
-
- if (CONFIG_VGA_PCI && !GET_GLOBAL(HaveRunInit)) {
- u16 bdf = regs->ax;
- if ((pci_config_readw(bdf, PCI_VENDOR_ID)
- == GET_GLOBAL(rom_pci_data.vendor))
- && (pci_config_readw(bdf, PCI_DEVICE_ID)
- == GET_GLOBAL(rom_pci_data.device)))
- SET_VGA(VgaBDF, bdf);
- }
-
- int ret = vgahw_setup();
- if (ret) {
- dprintf(1, "Failed to initialize VGA hardware. Exiting.\n");
- return;
- }
-
- if (GET_GLOBAL(HaveRunInit))
- return;
-
- init_bios_area();
-
- SET_VGA(video_save_pointer_table.videoparam
- , SEGOFF(get_global_seg(), (u32)video_param_table));
- if (CONFIG_VGA_STDVGA_PORTS)
- stdvga_build_video_param();
-
- extern void entry_10(void);
- SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
-
- allocate_extra_stack();
-
- hook_timer_irq();
-
- SET_VGA(HaveRunInit, 1);
-
- // Fixup checksum
- extern u8 _rom_header_size, _rom_header_checksum;
- SET_VGA(_rom_header_checksum, 0);
- u8 sum = -checksum_far(get_global_seg(), 0,
- GET_GLOBAL(_rom_header_size) * 512);
- SET_VGA(_rom_header_checksum, sum);
-}
diff --git a/qemu/roms/seabios/vgasrc/vgalayout.lds.S b/qemu/roms/seabios/vgasrc/vgalayout.lds.S
deleted file mode 100644
index 533734d85..000000000
--- a/qemu/roms/seabios/vgasrc/vgalayout.lds.S
+++ /dev/null
@@ -1,23 +0,0 @@
-// Linker definitions for an option rom
-//
-// Copyright (C) 2009 Kevin O'Connor <kevin@koconnor.net>
-//
-// This file may be distributed under the terms of the GNU LGPLv3 license.
-
-OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
-OUTPUT_ARCH("i386")
-ENTRY(_optionrom_entry)
-SECTIONS
-{
- .text 0 : {
- KEEP(*(.rom.header))
- *(.text.*)
- _rodata = . ;
- *(.rodata*)
- *(.data16.*)
- }
-
- // Discard regular data sections to force a link error if
- // 16bit code attempts to access data not marked with VAR16.
- /DISCARD/ : { *(.text*) *(.rodata*) *(.data*) *(.bss*) *(COMMON) }
-}
diff --git a/qemu/roms/seabios/vgasrc/vgaversion.c b/qemu/roms/seabios/vgasrc/vgaversion.c
deleted file mode 100644
index 1ef5ddb79..000000000
--- a/qemu/roms/seabios/vgasrc/vgaversion.c
+++ /dev/null
@@ -1,6 +0,0 @@
-// Place build generated version into a C variable
-#include "autovgaversion.h"
-#include "types.h"
-
-char VERSION[] VAR16 = BUILD_VERSION;
-char BUILDINFO[] VAR16 = BUILD_TOOLS;