pub/scm/virt/kvm/vgabios.git  about / heads / tags
VGABIOS for qemu-kvm
$ git log --pretty=format:'%h %s (%cs)%d'
ca056d8 add 1280x768 resolution (2010-12-02)
	(HEAD -> master)
19ea12c Add qemu qxl vga pci bios (2010-06-18)
824c3df Add qemu vmware vga pci bios (2010-06-18)
846780e update pci_get_lfb_addr for vmware vga (2010-06-18)
be965ab Add qemu stdvga pci bios (2010-06-18)
bb44e12 Add defines for PCI IDs. (2010-06-18)
4daf112 Makefile cleanup (2010-06-18)
72c7319 - updates for release 0.6c (2010-06-18)
1a2f564 - biosfn_write_teletype: fixed attribute when scrolling in text mode (2010-06-18)
1f5bfad - preparing for release 0.6c (2010-06-18)
...

$ git cat-file blob HEAD:README
Plex86/Bochs VGABios
--------------------

The goal of this project is to have a LGPL'd Video Bios in plex86,
Bochs and qemu.
This VGA Bios is very specific to the emulated VGA card.
It is NOT meant to drive a physical vga card.


Cirrus SVGA extension
---------------------

The Cirrus SVGA extension is designed for the Cirrus emulation in Bochs and
qemu. The initial patch for the Cirrus extension has been written by Makoto
Suzuki (suzu).


Install
-------
To compile the VGA Bios you will need :
- gcc
- bcc
- as86
- ld86

Untar the archive, and type make. You should get a "VGABIOS-lgpl-latest.bin"
file. Alternatively, you can use the binary file "VGABIOS-lgpl-latest.bin",
i have compiled for you.

Edit your plex86/bochs conf file, and modify the load-rom command in the
VGA BIOS section, to point to the new vgabios image file.


Debugging
---------
You can get a very basic debugging system: messages printed by the vgabios.
You have to register the "unmapped" device driver in plex86 or bochs, and make
sure it grabs port 0xfff0.

Comment the #undef DEBUG at the beginning of vgabios.c.
You can then use the "printf" function in the bios.


Testing
-------
Look at the "testvga.c" file in the archive. This is a minimal Turbo C 2.0
source file that calls a few int10 functions. Feel free to modify it to suit
your needs.


Copyright and License
---------------------
This program has been written by Christophe Bothamy
It is protected by the GNU Lesser Public License, which you should
have received a copy of along with this package.


Reverse Engineering
-------------------
The VGA Bios has been written without reverse-engineering any existing Bios.


Acknowledgment
--------------
The source code contains code ripped from rombios.c of plex86, written
by Kevin Lawton <kevin2001@yahoo.com>

The source code contains fonts from fntcol16.zip (c) by Joseph Gil avalable at :
ftp://ftp.simtel.net/pub/simtelnet/msdos/screen/fntcol16.zip
These fonts are public domain

The source code is based on information taken from :
- Kevin Lawton's vga card emulation for bochs/plex86
- Ralf Brown's interrupts list avalaible at
  http://www.cs.cmu.edu/afs/cs/user/ralf/pub/WWW/files.html
- Finn Thogersons' VGADOC4b available at http://home.worldonline.dk/~finth/
- Michael Abrash's Graphics Programming Black Book
- Francois Gervais' book "programmation des cartes graphiques cga-ega-vga"
  edited by sybex
- DOSEMU 1.0.1 source code for several tables values and formulas


Feedback
--------
Please report any bugs, comments, patches for this VGA Bios to info@vruppert.de
You can find the latest release at : http://www.nongnu.org/vgabios/
For any information on bochs, visit the website http://bochs.sourceforge.net/
For any information on qemu, visit the website http://fabrice.bellard.free.fr/qemu/


History
-------
vgabios-0.6c : Apr 08 2009
  - Volker
    . added DPMS support to cirrus vgabios (patch from Gleb Natapov)
    . use VBE LFB address from PCI base address if present
    . added support for a lot more non-standard VBE modes (e.g. widescreen modes)
    . minor bugfixes

vgabios-0.6b : May 30 2008
  - Volker
    . added PCI data structure for the Cirrus VGABIOS images
    . minor bugfixes in biossums utility, VBE support and makefile

vgabios-0.6a : Aug 19 2006
  - Volker
    . added minimal support for the video parameter table (VPT)
    . Cirrus SVGA now supports the "no clear" bit in Cirrus and VESA mode
    . Bochs VBE protected mode interface improved
    . save/restore video state support for Bochs VBE and standard VGA added
    . generate vbetables.h dynamicly
    . VBE video memory increased to 8 MB (VBE dispi ID changed to B0C4)
    . lots of 4bpp VBE fixes (all 4bpp VBE modes now enabled)
    . VGA compatible setup for VBE modes added

vgabios-0.5d : Dec 29 2005
  - Volker
    . Bochs VBE protected mode interface added (based on a patch by malc@pulsesoft.com)
    . biossums utility now supports VGABIOS sizes up to 64 kBytes
    . VGA mode 0x11: all color planes must be enabled in this 2-color VGA mode

vgabios-0.5c : Jul 07 2005
  - Volker
    . BIOS configuration word usually reports initial mode 80x25 color text
    . vgabios function 0x0e (write teletype): linefeed (0x0a) only increments the
      cursor row value

vgabios-0.5b : May 24 2005
  - Volker
    . fixed return value for the default case in the VBE section (non-debug mode)
    . removed unused stuff

vgabios-0.5a : Mar 07 2005
  - Volker
    . Cirrus SVGA extension (initial patches from Makoto Suzuki, improvements
      from Fabrice Bellard)
    . vgabios image size is now exactly 32k with a checksum
    . a lot of vgabios and vbe functions rewritten in assembler
    . dynamicly generated VBE mode info list
    . write character function for CGA and LINEAR8 modes
    . read/write graphics pixel for some graphics modes
    . text scroll feature for some graphics modes
    . VBE 8-bit DAC support

vgabios-0.4c : Nov 06 2003
  - Christophe
    . fix font problem on initial screen of NT4 Loader
    
vgabios-0.4b : Nov 04 2003
  - Volker
    . fix offset of character tables
    . optimizations of CRT controller accesses
    . VBE i/o registers changed to 0x01CE/CF 
      (suggestion from Daniel Gimpelevich)
    . "noclear" flag stored in BIOS area
    . fix character height returned by get_font_info function

vgabios-0.4a : Aug 17 2003
  - Volker
    . VBE mode search rewritten (VBE modes with LFB bit removed)
    . many bugfixes and optimizations
    . write character function implemented for graphics modes
    . support for 15bpp, 16bpp, 24bpp and 32bpp VBE modes added
    . SVGA mode 0x6A added
    . VBE modes 0x102, 0x117, 0x118 and 0x142 (Bochs specific)

vgabios-0.3b : Nov 23 2002
  - Christophe
    . added lfb-mode numbers (patch from mathis)
    . updated the Makefile
    . removed display of copyrights.
    . changed the Copyright string to "LGPL VGABios developers"
  - Volker
    . set the cursor shape depending on the current font height
    . clear BL before calling int 0x10 function 0x1103 in vgabios_init_func
    . added some text font functions
  - Jeroen
    . Forced to new DISPI (0xb0c1) interface (requires latest bochs vbe code)
    . Added multibuffering support
    . Added new DISPI interface for: virt width, height, x offset, y offset
    . Added LFB modes (to be used with the vbe-lfb patch in bochs)
      see VBE_HAVE_LFB in vbe.c (currently default enabled)
    . updated TODO & docs for changes after bochs 1.4

vgabios-0.3a : Mar 10 2002
  - Christophe
    . Fixed bug in function ah=13
  - Jeroen
    . updated vbebios implementation to new api
    . added vbe_display_api documentation
    . added 640x400x8, 640x480x8, 800x600x8, 1024x768
      (>640x480 needs a special bochs patch atm)
    . added 320x200x8 vbe support (uses the standard 320x200x8 vga mode to
      display, this allows for testing & having something on screen as well,
      at least until bochs host side display is up & running)
    . adding lfbprof (vbe) testprogram (+some small fixes to it)
    . merging with vbebios 0.2

vgabios-0.2b : Nov 19 2001
  - Christophe
    . Fixed bug in function ah=13

vgabios-0.2a : Nov 09 2001
  - Christophe
    . Included bugfix from techt@pikeonline.net about grayscale summing
    . Added the "IBM" string at org 0x1e as Bart Oldeman suggested
    . Fixed DS and ES that where inverted in the int10 parameters list!
    . The following have been implemented :
	- function ax=1a00, ax=1a01, ah=1b
	- function ax=1130
    . Added debug messages for unimplemented/unknown functions
      Must be compiled with DEBUG defined. The output is trapped
      by the unknown-ioport driver of plex/bochs (port 0xfff0 is used)

vgabios-0.1a : May 8 2001
  - Christophe
    . First release. The work has been focused only on text mode.
    . The following have been implemented :
	- inits
	- int 10 handler
	- functions ah=00, ah=01, ah=02, ah=03, ah=05, ah=06, ah=07, ah=08
	  ah=09, ah=0a, ah=0e, ah=0f, ax=1000, ax=1001, ax=1002, ax=1003
	  ax=1007, ax=1008, ax=1009, ax=1010, ax=1012, ax=1013, ax=1015
	  ax=1017, ax=1018, ax=1019, ax=101a, ax=101b, ah=12 bl=10,
	  ah=12 bl=30, ah=12 bl=31, ah=12 bl=32, ah=12 bl=33, ah=12 bl=34
	  ah=13

# heads (aka `branches'):
$ git for-each-ref --sort=-creatordate refs/heads \
	--format='%(HEAD) %(refname:short) %(subject) (%(creatordate:short))'
* master       add 1280x768 resolution (2010-12-02)

# tags:
$ git for-each-ref --sort=-creatordate refs/tags \
	--format='%(refname:short) %(subject) (%(creatordate:short))'
# no tags, yet...

# associated public inboxes:
# (number on the left is used for dev purposes)
         23 qemu-devel
          5 kvm
          3 lkml
          3 u-boot
          2 linux-xfs
          2 linux-fsdevel
          2 stable
          2 linux-arm-kernel
          2 linux-ext4
          2 linux-api
          2 containers
          1 linux-samsung-soc
          1 linux-fscrypt
          1 linux-wireless
          1 linux-mtd
          1 cocci
          1 linux-block
          1 linux-riscv
          1 linux-nvme
          1 live-patching
          1 bpf
          1 linux-nfs
          1 linux-mediatek
          1 linux-crypto
          1 linux-efi
          1 linux-acpi
          1 netfilter-devel
          1 linux-integrity
          1 linux-edac
          1 linux-cifs
          1 linux-devicetree
          1 linux-arm-msm
          1 linux-amlogic
          1 linux-erofs
          1 linux-mm
          1 linux-nvdimm
          1 linux-iommu
          1 netdev
          1 linux-media
          1 xen-devel
          1 linux-snps-arc
          1 linux-mips
          1 fstests
          1 linux-pm
          1 linux-hwmon
          1 linux-rtc
          1 linux-input
          1 alsa-devel
          1 linux-scsi
          1 linux-btrfs
          1 kvmarm
          1 driverdev-devel
          1 linux-usb
          1 linux-renesas-soc
          1 linux-kselftest
          1 selinux
          1 kernel-hardening
          1 linux-clk
          1 linux-iio
          1 linux-gpio
          1 dmaengine
          1 linux-rdma
          1 linux-next
          1 linux-parisc
          1 dpdk-dev
          1 linux-leds
          1 linux-security-module
          1 linux-pci
          1 linux-f2fs-devel
          1 linuxppc-dev
          1 linux-modules
          1 kernelnewbies
          1 linux-rt-users
          1 linux-bluetooth
          1 linux-sgx
          1 linux-ide
          1 linux-serial
          1 linux-watchdog
          1 linux-trace-devel
          1 linux-hyperv
          1 workflows
          1 rcu
          1 linux-m68k
          1 linux-i3c
          1 util-linux
          1 linux-spdx
          1 linux-wpan
          1 ksummit-discuss
          1 wireguard
          1 backports
          1 io-uring
          1 linux-kernel-mentees
          1 linux-doc
          1 git
          1 linux-csky
          1 linux-man
          1 linux-mmc
          1 amd-gfx
          1 dri-devel
          1 intel-gfx
          1 tpmdd-devel
          1 linux-unionfs
          1 linux-firmware
          1 cip-dev
          1 linux-omap
          1 linux-audit
          1 linux-spi
          1 linux-i2c
          1 linux-remoteproc
          1 linux-dash
          1 linux-bcache
          1 linux-sparse
          1 mm-commits
          1 linux-pwm
          1 linux-tegra
          1 lttng-dev
          1 virtualization
          1 linux-kbuild
          1 linux-fpga
          1 ceph-devel
          1 linux-arch
          1 linux-can
          1 linux-rockchip
          1 linux-raid
          1 xdp-newbies
          1 platform-driver-x86
          1 phone-devel
          1 openbmc
          1 linux-hardening
          1 dash
          1 dm-devel
          1 keyrings
          1 linux-fbdev
          1 linux-sctp
          1 linux-cxl
          1 linux-perf-users
          1 target-devel
          1 lustre-devel
          1 linux-sh
          1 soc
          1 ocfs2-devel
          1 rust-for-linux
          1 ath10k
          1 ath11k
          1 nouveau
          1 linux-phy
          1 linux-s390
          1 kernel-janitors
          1 sparclinux
          1 linux-staging
          1 linux-sunxi
          1 mptcp
          1 linux-coco
          1 regressions
          1 ksummit
          1 b43-dev
          1 nvdimm
          1 linux-nfc
          1 linux-bcachefs
          1 ath9k-devel
          1 buildroot
          1 ntfs3
          1 llvm
          1 fio
          1 iwd
          1 ell
          1 ofono
          1 ltp
          1 yocto
          1 yocto-meta-freescale
          1 openembedded-core
          1 yocto-toaster
          1 yocto-meta-arm
          1 yocto-docs
          1 openembedded-devel
          1 bitbake-devel
          1 linux-patches
          1 yocto-meta-virtualization
          1 chrome-platform
          1 ntb
          1 yocto-meta-ti
          1 yocto-meta-arago
          1 outreachy
          1 xenomai
          1 damon
          1 asahi
          1 openrisc
          1 intel-wired-lan
          1 kexec
          1 loongarch
          1 imx
          1 ath12k
          1 b4-sent
          1 linux-trace-kernel
          1 oe-linux-nfc
          1 oe-kbuild-all
          1 oe-chipsec
          1 batman
          1 intel-xe
          1 linux-um
          1 virtio-dev
          1 virtio-comment
          1 v9fs
          1 ecryptfs
          1 poky
          1 qemu-riscv
          1 linux-ia64
          1 cluster-devel
          1 grub-devel
          1 kbd
          1 autofs
          1 cpufreq
          1 dccp
          1 cgroups
          1 devicetree-spec
          1 devicetree-compiler
          1 initramfs
          1 kvm-ppc
          1 hail-devel
          1 kvm-ia64
          1 linux-8086
          1 kernel-testers
          1 linux-alpha
          1 linux-btrace
          1 linux-embedded
          1 linux-hams
          1 linux-hexagon
          1 linux-hotplug
          1 linux-laptop
          1 linux-sound
          1 trinity
          1 reiserfs-devel
          1 linux-metag
          1 linux-x25
          1 linux-nilfs
          1 lvs-devel
          1 netfilter
          1 linux-oxnas
          1 u-boot-amlogic
          1 lm-sensors
          1 lvm-devel
          1 acpica-devel
          1 perfbook
          1 virtio-fs
          1 smatch
          1 ../../../../../fuego
          1 ../../../../../wireless-regdb
          1 ../../../../../igt-dev
          1 ../../../../../powertop

git clone https://yhbt.net/lore/pub/scm/virt/kvm/vgabios.git