BIOS programming

BIOS chip -- Programming details --- PINS --- PROGBIOS.EXE --- BIOS file table
Please inform me if you have any corrections/ additions to this page.

Last update 1999-03-12.


BIOS chip

The BIOS resides in either 8-bit wide FLASH EPROM (older boards) or serial EEPROM (G100 and G200 based boards). This does not influence the speed, because in case of PCI and AGP boards the BIOS image is always copied to shadow RAM on system board before execution.
The memory chip can be reprogrammed, which allows for BIOS updates and changes.

The BIOS fits in 32 Kbytes, although on some boards 64 KB chips may be used. In such case, only half of the chip is visible.

During normal DOS/Windows95/98 sessions, the BIOS is accessible at standard VGA BIOS location, C000:0000..C000:7FFF.


Preparing the BIOS image

When the BIOS is programmed (updated) by PROGBIOS, the new BIOS is combined from the new image and some card-specific data contained in the card's BIOS. The following items are copied from the original BIOS: Then the checksum is calculated and the resulting image is burned into the chip. PROGBIOS refuses to work if old BIOS checksum is invalid (option -k is needed then). In such case it is possible that PROGBIOS creates the BIOS image containing invalid PINS and/or SUBSYS_ID. This causes that Windows drivers refuse to install (on G100 and G200). If this happens, PINS and SUBSYS_ID must be restored for card's full operability.

Programming the chip - details

When the image is ready, PROGBIOS starts programming. This routine is quite complicated and thus it may happen that it fails somewher in the middle, causing the BIOS to malfunction. The actual routine works as follows:

PROGBIOS.EXE

Warning: don't use PROGBIOS under Windows, it may crash even without...
PROGBIOS is a program supplied by Matrox, used for reprogramming of the board’s BIOS.
The program was written in Watcom C++, and its programming style is not exactly what one could call a good one, thus it is over 230 KBytes long. It could easily fit in 50 KB...
PROGBIOS versions 1.76 and above (from SETUP344, 345 and 347) have some weird errors. In case of problems I suggest using version 1.73 from SETUP343 as long as it supports the board (Boards with FP and TVout are supported only be newer versions of PROGBIOS).

The only PROGBIOS option officially documented by Matrox is –i. You can get the short info on this option by running PROGBIOS with no command line arguments. Below is a list of all PROGBIOS options – only some of them are explained. If you know of the meaning of the unexplained ones, please let me know.
 
Option syntax Meaning
-a Perform the operation on all the Matrox cards in the system. When not used, the PROGBIOS will use only the first board it can find.
-b <addr>,<nbytes>,
     <1stbyte>,...<Nthbyte>
Patch BIOS image. No spaces allowed in arg string. All numbers are in DECIMAL.
<addr> - the adress for start of a patch. May be either number or one of the following strings:
"SUBSYS_VID" (=7FF8), "SUBSYS_ID" (=7FFA),
"PINS", "PINS+<offset>", "SYS_ID", "OPTION"
<nbytes> - no. of bytes to patch.
<1stbyte>..<Nthbyte> can be either the new byte value, "OR_<value>" or "AND_<value>. OR and AND seem not to work properly(?).
G100 patch supplied by Matrox calls “PROGBIOS –b subsys_id,2,1,255” – this allows for proper recognition of G100 by some versions of drivers.
-d Dump PINS to console. You should invoke “PROGBIOS –d >mypins.txt” before trying to program the BIOS for the first time.
-e ??? Has something to do with “emergency file”. Seems it is not working properly...
-font ??? Usage: PROGBIOS -i <biosimage> -font <fontimage> -o <newimage>. Update VGA font image in BIOS ???. 
-i <filename.ext>
-i auto
Program BIOS from file (select the file automatically from current directory if AUTO used). Note that the PINS is read from old BIOS, updated and combined into the new image of BIOS. "auto" sometimes doesn't work correctly with PROGBIOS above 1.73.
-k Force programming even if old BIOS checksum error occurs (but not PINS error). Doesn't work properly in PROGBIOS above 1.73 !!!
-k1 ??? (My guess: force programming anyway.)
-maven <tvmode> sets the output mode for MAVEN (TV interface chip). <tvmode> may be one of the following:
off - turns TV out off
ntsc,ccomp - NTSC composite output on RCA connector
ntsc,scomp - NTSC composite on SVIDEO
ntsc,srgb - NTSC RGB out on SVIDEO
pal,ccomp - as above, but PAL
pal,scomp
pal,srgb
-o <filename.ext> Don’t program the BIOS, create BIOS image and save it in file.
-r ??? Used only with both –i and –o.
-s <filename.ext> Get PINS from text file (instead of card’s BIOS). The file has the format identical to that created using –d option, so when the BIOS dies completely, “-s mypins.txt” can be used to revive it. Can be combined with -i and “-i -o”
-sync <syncmode> Sets the sync output mode. <syncmode> may be one of the following:
csyncgreen
sephv
sepcsync
-tv ??? TV output???
-v Show PROGBIOS version/build info.

Valid combinations are: i, ia, iab, ib, ibo, iar, iak1, ib, ibk, ibk1, ibo, ibk1o, id, idk1, ifonto, ik, ikk1, iks, ik1, ik1os, ik1s, ios, ior, ir, is,
b, bk1, d, da, dak1, dk1, e, eo, s, sk1, sync, tv, v.
 

BIOS file table

Below is a table of BIOS files needed by each card. This may be useful when the BIOS is completely dead.
RR - Rainbow Runner, FP - Flat Panel.

Note: All G200 boards having the same bus and outputs use the same BIOS, so "G200 AGP" BIOS is used by Millenium, Mystique and SD with no TV out. G200 AGP TV may be shared by Mystique and Marvel.

(Based on SETUP349)
Board BIOS file base name Latest BIOS version
Millenium 838-x 20 3.0
Mystique 858-x 8 1.8
Millenium II PCI 859-x 5 1.5
Millenium II (TVP3033) 860-x
Mystique RR 861-x 8 1.8
Millenium II AGP 865-x 4 1.4
Mystique 220 AGP 866-x
G100 PCI 873-x 2 1.2
G100 AGP, Eclipse 874-x 5 1.5
Millenium II PCI RR 876-x 4 1.4
Millenium II AGP RR 877-x 3 1.3
old G200 PCI 878-x 1 1.1
old G200 PCI TVout 878-xtvo 1 1.1
old G200 AGP 879-x 6 1.6
old G200 AGP TVout 879-xtvo 6 1.6
old G200 AGP FP 886-x 2 1.2
old G200 PCI FP 887-x 2 1.2
?G200 894-x
?G200 895-x
?G100 896-x 0 1.0
?G400 897
New G200 PCI, CRT and FP 899-x 22 2.2
New G200 PCI, TVout 899-xtv 22 2.2
New G200 AGP, CRT and FP 900-x 22 2.2
New G200 AGP, TVout 900-xtv 22 2.2