• Stars
    star
    531
  • Rank 83,526 (Top 2 %)
  • Language
    C
  • Created about 6 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

VGA and BIOS rom font extraction

What is this?

I have diassembled and/or searched BIOS and VGA-ROMs for fonts and extracted these. Also I have written a few tools to support this job. All extracted fonts and screenshots are available here. I have written a big table to show what is covered. Also had a look and wrote about fonts of open source BIOSes/source available.

If you have exotic ROMs or links to other open source BIOSes please let me know. Testing a ROM for known fonts and add it to this list only takes a few minutes and if there is one with a yet unknown font, I am happy to extract and document it :)
I am really intersted in ROMs of old laptops with weird LCD-fonts and embedded devices (like POS systems, cash registers, money machines and other stuff). Also if you have localized graphic cards, that bring a local charset (ex. greek), I am happy to extract their' fonts.

I already extracted more than 240 ROM-fonts. Most likely I am not updating this counter for every font, so check the font-bin and font-images folder, if there is something new relevant to you.

The tool

I have written a tool to browse a ROM image and search for 8x8, 8x14, 8x16 charsets and export. It can be found here on github in another repo, called "romfont-extractor".

ls

Already extracted fonts

LEGEND: "ok" - font already extracted
        "XX" - font not included in ROM (newer cards dont ship 8x14 usually)
        "  " - not yet done
        "??" - something strange
        "LO" - only lower 128 characters available

Filename of ROM                                  8x8  8x14 8x16  Bus    Memory   Date         Comments (BIOS manuf., year, version, ...)
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
ATI.X550.128.040512.rom                         | ok | xx | ok |      |        |            |
Asus.6200.16.050106.rom                         | ?? | ?? | ?? |      |        |            | NV44, 2004 Nvidia, Version 5.44.02.11.00 / AS05
CLGD5442.ROM                                    | ok | ok | ok |      |        |            | CL-GD540x/542x VGA BIOS Version 1.20, 1992-1993 Cirrus Logic, 1987-1990 Quadtel
avga1-a11.bin                                   | ?? | ?? | ?? |      |        |            |
AVGA2.ROM                                       | ok | ok | ok |      |        |            |
Commodore386SX-25_AVGA2.bin                     | ok | ok | ok | ISA  |   512k | 03/19/92   | Acumos AVGA2, DeskTop VGA BIOS (340-000-11-Rev1.00), 1984-1991 Phoenix
Connect3D.9500NP.128.Infineon30.021212.rom      | ok | xx | ok | AGP  |        | 2002/12/12 | R300, Infineon Memory BIOS - P/N 113-94232-101, 1988-2002 ATI BK-ATI VER008.004.008.004
Diamond Stealth 64 Video VRAM PCI 3.00.bin      | ok | ok | ok | PCI  |        | 07/05/95   | Stealth 64 Video VRAM Vers. 3.00, Diamond MultiMedia Systems
ELSAVIC2.ROM                                    | ok | ok | ok | AGP  |        | 11/23/98   | ELSA VICTORY II 4.03.00, 98-98 ELSA, 90-98 Elpin Systems
Elsa.FireGLV3200.128.040910.rom                 | ok | xx | ok | PCIE |  128MB | 2004/09/10 | RV380, 1988-2003, ATI BK-ATI VER008.015.121.000
FujitsuSiemens.QuadroFX1700.512.080123.rom      | ?? | ?? | ?? |      |  512MB |            | ??? compressed font ??? cant find font on first look
FujitsuSiemens.X300Mobility.32.050608.rom       | ok | xx | ok |      |   32MB |            |
G400.ROM                                        | ok | xx | ok |      |        |            | Matrox
GENOA.ROM                                       | ok | ok | ok |      |        |            | Tseng
Gigabyte.6200.16.050711.rom                     | ?? | ?? | ?? |      |        |            | ??? compressed font ??? cant find font on first look
Leadtek.6200.16.050128.rom                      | ?? | ?? | ?? |      |        |            | ??? compressed font ??? cant find font on first look
M32.ROM                                         | ok | ok | ok | PCI  |        |            | ATI
M64GX.ROM                                       | ok | ok | ok |      |        |            |
MGAMIL2.ROM                                     | ok | xx | ok |      |        |            |
MIROV968.ROM                                    | ok | ok | ok |      |        |            | Same like V7MERC
MORSE KP800 VGA CL-GD520A-32PC-B.bin            | ok | ok | ok |      |        |            | CL Award
NCR VLB VGA CL-GD5428-80QC-A.bin                | ok | ok | ok |      |        |            |
R128GL.ROM                                      | ok | xx | ok |      |        |            |
RIVA128A.ROM                                    | ok | xx | ok |      |        |            | STB
S3T64V2.ROM                                     | ok | ok | ok | PCI  |        |            | S3
S3VIRGX2.ROM                                    | ok | ok | ok | PCI  |        |            | S3
Sapphire.9600NP.256.unknown.031028.rom          | ok | xx | ok |      |  256MB |            |
Sapphire.9600PRO.128.Samsung28.030829.rom       | ok | xx | ok |      |  128MB |            |
TNT2M64.ROM                                     | ok | ok | ok |      |        |            |
TSVGA 9020-12 ET4000 ISA VGA.bin                | ok | ok | ok | ISA  |        |            |
Tseng ET3000AX ISA VGA-VGA ULTRA.bin            | ok | ok | ok | ISA  |        |            |
V7MERC.ROM                                      | ok | ok | ok |      |        |            |
V7_Vega                                         | ok | ok | ok |      |        |            | uses 3dfx font set, different fonts than V7MERC
video_seven_vega_vga_62L1989V5_435-0016-47.bin  | ok | ok | ok |      |        |            |
VANTA.ROM                                       | ok | ok | ?? |      |        |            | 8x16 not complete in ROM
VANTAGE.ROM                                     | xx | ok | ok |      |        |            | has no 8x8 font
VDOO3PCI.ROM                                    | ok | ok | ok |      |        |            | 3dfx Elpin
WIN1KXHR.ROM                                    | ok | ok | ok |      |        |            | ESLA
WONDER16.ROM                                    | ok | ok | ok |      |        |            |
XGA.ROM                                         | ok | ok | ok |      |        |            | Phoenix
et4000_stb.vbi                                  | ok | xx | ok |      |        |            |
et4000w32isa.BIN                                | ok | ok | ok |      |        |            |
et4000_weirdlowerL.bin                          | ok | ok | ok | ISA  |512k/1M |            | Has a weird lower L in 8x14 and 8x16 charsets. Typical TSENG change to a PC font.
OakTechnolgy-unknown-1.bin                      | ok | ok | ok |      |        |            |
OakTechnolgyVGA-KO77.bin                        | ok | ok | ok |      |        |            |
QuadtelS3_86C801_86C805EnhancedVGABIOS2.13.01   | ok | ok | ok |      |        |            |
QuadtelVGABIOSVersion1.21.00.bin                | ok | ok | ok |      |        |            |
SVGA141.ROM                                     | ok | ok | ok |      |        |            |
s3_764.bin                                      | ok | ok | ok |      |        |            |
TridentTVGA8900C_S27C256.bin                    | ?? | ?? | ?? |      |        |            |
tgui9400cxi.vbi                                 | ok | ok | ok |      |        |            |
tvga-c4.3.rom                                   | ok | ok | ok |      |        |            |
tvga-d3.0.rom                                   | ok | ok | ok |      |        |            |
tvga9000i-d4.01e                                | ?? | ?? | ?? |      |        |            |
tvga9000i-v2.vbi                                | ok | ok | ok |      |        |            |
tvga9000a_d211.bin                              | ok | ok | ok |      |        |            |
tvga9000a_d301.bin                              | ok | ok | ok |      |        |            |
tvga8800cs                                      | ok | ok | ok |      |        |            |
tvga8800cs_2                                    | ok | ok | ok |      |        |            |
BLADEXP.vbi                                     | ok | ok | ok |      |        |            |
BLADE3D_AGP.vbi                                 | ok | ok | ok |      |        |            |
BLADE3D_AGP_HIS.vbi                             | ok | ok | ok |      |        |            |
BLADE3D_PCI.vbi                                 | ok | ok | ok |      |        |            |
vgaedge.bin                                     | ok | ok | ok |      |        |            |
TsengLabsVGA-4000BIOSV1.1.bin                   | ok | ok | ok |      |        |            |
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
ATIEgaWonder800p.bin                            | ok | ok | ok |      |        |            |
ami-ega.rom                                     | ok | ok | xx |      |        |            | VERY SPECIAL FONTS, 2 different 8x8 (1 is mirrored) and one 8x14
genoa-ega-2.41.rom                              | ok | ok | xx |      |        |            |
ibm-ega.rom                                     | ok | ok | xx |      |        |            |
NSILogic-SmartEGAPlus-04-086-01Rev1.45-U21.bin  | ok | ok | xx |      |        |            |
wd-pega.rom                                     | ok | ok | xx |      |        |            |
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
IBM VGA                                         | ok | ok | ok |      |        |            | has a full 8x8 charset in 8x8, 8x14 and 8x16
IBM_PC_BIOS_1981-04-24_HALF_8x8.bin             | LO | XX | XX | ---  | ------ |            | IBM PC BIOS, only lower 128 characters, no "graphical" chars.
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
=> IN THIS SECTION: LOCALIZED VIDEO ROMS (greek, ...)
CGA_PRAVETZ.ROM                                 | ok | xx | xx |      |        |            | 4 different kyrillic fonts
acer500-II_cga_rom.bin                          | ok | xx | ?? |      |        |            | 2 different greek 8x8, somewhat strange 8x16 TBD
ati_small_wonder_rev1_GR-ROM.bin                | ok | xx | ?? |      |        |            | 4 different greek 8x8
clone2_cga_rom.bin                              | xx | ?? | ?? |      |        |            |
clone_cga_rom.bin                               | xx | ?? | ?? |      |        |            |
hyundai_mono-graphics-board_e40080004           | xx | ?? | ?? |      |        |            |
ibm5155_cga_rom_memotek_greek                   | ok | xx | xx |      |        |            | 10 different greek fonts?
tvga9000a_japan.vbi                             | ok | ok | ok |      |        |            |
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
mda.rom                                         | ?? | ?? | ?? |      |        |            | 8k ROM only font data, what is this? not extracted yet, some problems
50146chareuro.rom                               | ok | xx | ok |      |        |            | Tandy 1000, 8x8 and 8x14 in both a 8x16 array with padding zero bytes
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
=> IN THIS SECTION: SYSTEM BIOS
ali1429g.amw (AMI WINBIOS)                      | LO | xx | xx |      |        |            |
amic206.bin                                     | xx | xx | xx |      |        |            | NO FONT at all
ami386.bin                                      | LO | xx | xx |      |        |            |
amxtv132.rom                                    | LO | xx | xx |      |        |            |
award-2.05.rom                                  | LO | xx | xx |      |        |            |
DTK.PII-151B-BIOS.version.1.06B.bin             | xx | xx | xx |      |        |            | NO FONT at all
dtk_erso_2.42_2764.bin                          | LO | xx | xx |      |        |            |
genxt.bin                                       | LO | xx | xx |      |        |            |
JukoD16X-BIOSversion1.2.bin                     | xx | xx | xx |      |        |            | NO FONT at all
LongshineLCS-6821N-BIOSversion1.04.bin          | xx | xx | xx |      |        |            | NO FONT at all
olivetti-m24-1.21.rom                           | LO | xx | xx |      |        |            |
opt495sx.ami                                    | LO | xx | xx |      |        |            |
phoenix-2.51.rom                                | LO | xx | xx |      |        |            |
ToshibaT1000-BIOSROM-V4.10.bin                  | ?? | xx | xx |      |        |            | lo and hi in different places
toshibaT5200cbiosv3.bin                         | ok | xx | ok |      |        |            | VERY SPECIAL contains each 2 different fonts, 8x8 and 8x16
VTech-LaserTurboXT-BIOS-V1.11-27C64D.bin        | LO | xx | xx |      |        |            | VERY SPECIAL
VTech-LaserXT3-BIOS-V1.26-27C64.bin             | LO | xx | xx |      |        |            | VERY SPECIAL
wang3050_bios_rom                               | ok | ok | ok |      |        |            |
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
ibmjap.rom                                      | ok | ok | ok |      |        |            | Japanese PS/2 BIOS
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------
=> IN THIS SECTION: FONTS THAT ARE AVAILABLE IN SOURCE
seabios                                         | ok | ok | ok | ---  | ------ |            | from official source
bochs                                           | LO | XX | XX | ---  | ------ |            | from official source
3dfx                                            | ok | ok | ok |      |        |            | from leaked source
IBM PC BIOS V1                                  | LO | XX | XX |      |        |   1981     | from IBM's source
IBM PC BIOS V2,V3                               | LO | XX | XX |      |        |   1981     | from IBM's source
IBM AT BIOS V1,V2,V3                            | LO | XX | XX |      |        |   1981     | from IBM's source
IBM XT BIOS V1,V2,V3                            | LO | XX | XX |      |        |   1981     | from IBM's source
IBM XT286 BIOS V1                               | LO | XX | XX |      |        |   1981     | from IBM's source
------------------------------------------------+----+----+----+------+--------+------------+------------------------------------------------------------------------------------------------

OTHER SOURCES

The folder 'other_sources' contains subfolders, which each holds a set of files for a ROM-font. They were not extracted from ROMs, they are already available as source. These sources were adapted and simple bin-generators were added to create the binary font files. These are available:

ibm_pc             -  original IBM PC, V1/V2/V3
ibm_xt             -  IBM XT, V1/V2/V3
ibm_xt286          -  IBM XT 286, only one BIOS available
ibm_at             -  IBM AT, V1/V2/V3
seabios            -  qemu seabios, 8x8, 8x14, 8x16
3dfx_leadked_bios  -  original source code, 8x8, 8x14, 8x16, 9x14, 9x16
bochs_bios         -  bochs bios, 8x8, only lower half of charset implemented

Not all are yet converted to C (most of them in ASM) and bins are generated. The original sources are provided already.

comparing fonts / observations:

  • IBM has used a font for the very first PC BIOS, that has changed in second version of BIOS. After this release the font remained the same on these machines:
    • IBM PC v2, v3
    • IBM XT v1, v2, v3
    • IBM XT v1
    • IBM AT v1, v2, v3 The only change from first to second version is 1 single bit, that makes a huge difference when looking at it (ASCII 0x04, bottom line 0x00 changes to 0x08). This font only has the lower 128 characters.
  • IBM uses exactly same 8x8,8x14,8x16 on VGA and XGA. (full 256 item charset)
  • qemu seabios 8x8 and 8x14 are exact matches to IBM's VGA and XGA fonts. These files are in fntcol16.zip from simtel. VGA-ROM.F08 and VGA-ROM.F14. qemu source comment claims this is public domain. I doubt IBM would release a font to public domain. Does this mean, qemu relied on claims by package creator and now they use a illegal copy?
  • bochs bios 8x8 only brings lower 128 chars that are exactly matching IBM's second font. Same as with seabios 8x8 font (licensing).
  • 3dfx uses 8x8+8x14 IBM font, but looks like they use NVidia 8x16 font.
  • The Voodoo3 8x8,8x14,8x16 match exactly the leaked ones from 3dfx.
  • The AVGA2 has totally unique fonts - TODO - bit by bit compare - what are the differences?

Have a look at MD5SUMs file, it is sorted by sum. This means, you will se which cards share same font. If you want to compare you may use a image viewer and view the zoomed images of the desired fonts.

The folder lowercharset holds the lower 128 characters of all 8x8 fonts to see, which one uses the original IBM PC's or the second version of this font.

More Repositories

1

Eagle-Libraries

A few libs, including a lot of Commodore / CSG parts
30
star
2

write-only-memory

A linux kernel module, that implements a driver for signetics 25120 write only memory (WOM).
C
16
star
3

stm32f103-freertos-v9.0.0

FreeRTOS v9.0.0 configured for a STM32F103VC (VCT6)
C
14
star
4

6502

6502 emulator
C
9
star
5

x86-pong

A pong game that runs on bare metal PCs or DOS (so called "PC-BOOTER")
C
8
star
6

bluepill-16_PWM

Use all 16 PWM channels on a bluepill (libopencm3)
C
8
star
7

HY-MiniSTM32V

makefile-based and Keil projects for HY-MiniSTM32V board (STM32F103VCT6). A lot of examples.
C
7
star
8

bin2header

a small tool which converts binary files into C-header files to include into your code.
C
7
star
9

dos-fortune

The widely known UNIX fortune for MS-DOS and others
C
7
star
10

m18st05

M18ST05A + M18ST05B - Serial VFDs found in some Medion computers from ~2006/2007
C
5
star
11

MPL

Microsoft's Programming Library from 1991
C
5
star
12

ssd1289

A driver for SSD1289 TFTs + ADS7843 touch + simple GFX library.
C
4
star
13

network-manager-scripts

This repo contains scripts which use network-manager for scanning and are able to add system-connections. GREAT FOR WIFI CRACKING ;)
Python
4
star
14

dos-untgz

A real-mode unpacker for tar-gz archives on DOS (super small!)
C
3
star
15

sdlock

A simple and very very nice lockscreen based on SDL
C
2
star
16

set_kbd

a TUI driven DOS keyboard layout chooser
C
2
star
17

am186-e86mon_utilities

Linux-Utilities for AMD's e86mon (am186 bootloader)
C
2
star
18

winbond-extadp

subset of ISA bus on LPT port
C
2
star
19

snippets

some fictional potato
C
1
star
20

RNG

a few PRNG implementations and some test codes.
C
1
star
21

stm32f103c8t6-blinky

Simple blinky-demo, LED on PC13
C
1
star
22

bluepill_FreeRTOS9-libopencm3

FreeRTOS 9.0.0 configured for BluePill boards
C
1
star
23

am186es_examples

Examples for SD186ES/EM Demo Board - Am186ES 40MHz 80186/8086 microcontroller
C
1
star
24

stm32f103c8t6-sda5708

SDA5708 LED Display (green)
C
1
star
25

dos-comport-probe

Probe for COM-Ports (8250, 8250 with SR, 16450, 16550, 16550A)
C
1
star
26

Audio-Power-Meter

Diagram of Monacor PM-100ST
1
star
27

SDL_7segment_display

Displays 7-segment mumbers from bitmaps using SDL
C
1
star
28

dos-motd

A simple "Message of the Day"-tool for MS-DOS and others
C
1
star
29

gateway2000_wallpapers

Found on a Gateway 2000 system install CD (Windows 3.1)
1
star
30

emblinux-i2c-hardware-libs

Some libs i've written for a few I2C devices. Tested on AVR32 (grasshopper).
C
1
star