UNIFLASH.TXT Driver File Contents (pm9600-51399.zip)

                     UniFlash version 1.40 documentation
                     -----------------------------------
                   (C) 2005 Rainbow Software (Ondrej Zary)
          Original version by Pascal Van Leeuwen and Galkowski Adam


"Your program just saved the day for me!
 I tried to use AWDFLASH.exe to flash my new Shuttle HOT-603 v2.0(AMD640)
 with the new 603WWQ07.bin BIOS and it did! The only problem was that the
 BIN file wasn't complete.
 Evidently this destroyed the boot block too. I tried to restore the old
 BIOS to that EEPROM on a HOT-565(430TX) with all the other flash
 programs I could get my hands on to no avail. I was able to flash the
 HOT-603's EEPROM to 565WIQ0E.bin and it worked just fine on the HOT-565
 so I knew the chip it's self was still good. I finally gave up and
 ordered a replacement chip this morning. This evening while surfing I
 saw a  reference to you'r program on http://ping.be and downloaded it.
 With the 'Expert' mode I was able to properly flash the Winbond
 W29EE011-15 chip on the HOT-565 for the HOT-603."
 - Jack Freeman


0.0            DISCLAIMER
-------------------------
THIS PROGRAM COMMUNICATES WITH THE CHIPSET AND FLASH ROM CHIP AT THE LOWEST
HARDWARE LEVEL. USING THIS PROGRAM MAY BE DANGEROUS TO YOUR COMPUTER'S BIOS.
THIS PROGRAM MAY CONTAIN BUGS AND MOST OF THE SUPPORTED HARDWARE IS UNTESTED.
YOU ARE USING IT AT YOUR OWN RISK:
NOBODY EXCEPT YOU IS RESPONSIBLE FOR ANY DAMAGE THIS PROGRAM MAY CAUSE !!!


0.1            COPYRIGHT and CO.
--------------------------------

UniFlash is licensed under GNU GPL v2 since UniFlash v1.4.
See LICENSE.TXT for the license text.


1.0            UniFlash? UNIFLASH??? What the HELL is it ??!!!
--------------------------------------------------------------

UniFlash is a flash program, used to write a new BIOS on your FLASH ROM Chip.
What's new there? , you may ask, there are already programs like this on
Internet made by BIG BRANDS like AMI, AWARD or MR. Well... there is only a
little difference: COMPLETE, WORKING SOURCE CODE IN PASCAL IS GIVEN FOR FREE!!

UniFlash is made to be universal - this can be useful when you're hot-flashing
your bios in another motherboard.

Another thing: this flasher is mainly destinated for fearless people and
experienced users. If it's your first adventure with flashing your BIOS, we
recommend you strongly using these brand flashers. You'll have to understand
we are just experienced computer users/programmers and we haven't materially
the possibility to test every routine and chips we haven't. That's the main
reason we release it. We hope people may help us in debugging and testing
routines.
NOTE by PvL: Brand name flashers have a tendency to be unstable (this is
             especially true for AWDFLASH, which f*cked up my BIOS twice
             so far, leaving me no other choice than to hot-flash) so if
             you happen to be the lucky owner of one of the TESTED flash
             chips I can really recommend using UNIFLASH instead ...
NOTE by Rainbow:
AWDFLASH IS REALLY BAD. When I was flashing BIOS on Abit SA6R, the verify
failed. I retried flashing about 20 times, then it succeeded. But motherboard
died after reboot. Luckily, after powering down and back up, BootBlock BIOS
worked and I was able to flash the BIOS correctly from there.


2.0            What hardware do I need for UniFlash ?
-----------------------------------------------------

Here's the minimum configuration you need to run UniFlash:
       -At least a 386 (The whole thing works in flat real mode)
       -RAM at least 2 times bigger than Flash ROM size, but less than 2GB
       -MS DOS 4.0 and higher
       -Known Flash ROM chip (see section 3.0)
       -Supported chipset (see below) - note that all of them are PCI based
        or c't Flasher 8-bit ISA card

,----------------------------------------------------------------------------,
| Don't forget to disable "Flash write protect" - either in system BIOS or   |
| using a jumper on the motherboard.                                         |
`----------------------------------------------------------------------------'

Here's a list of chipsets suported by Uniflash:
 * means tested and functional,
 # means tested, but doesn't work the way it should
 unmarked chipsets are not tested

,----------------------------------------------------------------------------,
| Mfg     | Chipset(s)           | Comments                                  |
`---------|----------------------|-------------------------------------------'
 Intel    |*Triton 430FX         | No comments It works in 99% of cases
          |*Triton II 430HX      |
          |*Triton II 430VX      |
          |*Triton III 430TX     |
          |*Mobile 430MX         |
          | Natoma 440FX         |
          |*AGPSet 440LX/EX      |
          | 450KX/GX             |
          | Mecrucy 430LX        |
          | Neptune 430NX        |
          |*AGPSet 440BX/ZX      |
          | AGPSet 440GX         |
          |*i810                 | i810 tested and works OK, others should too
          | i810E                |
          | i810E2               |
          | i815(P/G)            |
          |*i815E(P/G)           |
          | i815EM               |
          | i820                 |
          | i820E                |
          | i830M(P/G)           |
          | i840                 |
          | i845                 |
          | i845E                |
          | i845G(E/L/V)/845PE   |
          | i845MP/MZ            |
          | i850(E)              |
          |*i852GM/855GM         |
          | i855PM               |
          | i860                 |
          | i865P(E)/G(V)/848P   |
          | i875P                |
          | E7205                |
          | E7210                |
          | E7221                |
          | E7320                |
          | E7500                |
          | E7501                |
          | E7505                |
          | E7520                |
          | E7525                |
          | E8870                |
          |*i910/915/925 series  |
          | mobile 910/925 series|
----------|----------------------|--------------------------------------------
 VIA      | 486 with VT82C505    | 486 chipsets with VT82C505 PCI bridge
          | Appollo Master       |
          | Apollo VP            |
          |*Apollo VPX           |
          |*Apollo VP2           |
          | Apollo VP3           |
          |*Apollo MVP3          |
          | Apollo P6            |
          | Apollo MVP4          | VIA chipsets are weird - some work, some
          |*Apollo Pro           | don't.
          |*Apollo Pro Plus/133  |
          |*Apollo Pro 133A      | If you have "Flash Write protect" in BIOS,
          |*Apollo ProMedia      | disable it and it should work.
          | Apollo Pro 133Z/PM133|
          | Apollo KX133         |
          |*Apollo KT133(A)      |
          | ProSavage KM133(A)   |
          |*Apollo KT266(A)/KT333|
          |*Apollo KT400(A)      |
          |*UniChrome KM400(A)   |
          | Apollo Pro 266       |
          | Apollo Pro 266T      | These North Bridges are detected, but
          | ProSavage P4M266     | aren't used in any VIA's chipset (??):
          |*P4X266(A)/P4X333/400 | VT8662, VT8615, VT8361, VT3133
----------|----------------------|--------------------------------------------
 AMD      |*AMD 640 (same as VIA | Works just fine
          | Apollo VP2)          |
          | AMD 750              | UniFlash supports true AMD chipsets since
          |#AMD 760              | version 1.20. Their registers are very
          | AMD 760MP            | similar to VIA. AMD 760 should work with
          |*AMD 760MPX           | both VIA and AMD (does it really exist?)
          |                      | south bridges.
          | AMD 8000             |
          | Geode SC1100         | Geode bought from National, these chips
          | Geode SCx200         | have integrated south bridge
----------|----------------------|--------------------------------------------
 SiS      |*85C496+497           | I got the datasheets, but not from SiS.
          |*501/5101/5501        |
          | 5511                 |
          | 5571                 | To support 12 chipsets, I needed to write
          |*5591/5592            | 5 different methods of enabling Flash ROM
          | 5596                 | write access. (The more code, the more
          |*5597/5598/5581/5120  | bugs :-)
          |*530                  | All SiS South Bridges have the same
          | 540                  | device ID $0008 (SiS 540 and 630 can have
          | 600                  | either $0008 or $0018 - it can be
          |*620                  | configured(!!!) through registers.
          |*630                  |
          | 635                  |
          | 640                  | Boards with the new chipsets (540 and 630
          | 645                  | and up) have often ITE IT8705F LPC Super IO
          | 645DX                | (also called SiS 950 sometimes) which
          | 648                  | allows to use regular Flash ROM on LPC bus.
          | 650                  | It's tested and works.
          | 651                  |
          | 655                  |
          | 730                  |
          | 733                  |
          |*735                  |
          | 740                  |
          |*745                  |
          | 746                  |
          |*748                  |
          | 755                  |
----------|----------------------|--------------------------------------------
 ALi      |*FinALi 486           | FinALi has very weird Flash ROM access but
          |*Aladdin              | finally it works correctly.
          | Aladdin III          |
          | Aladdin IV/IV+       | All chipsets with M1533/M1543/M1535 South
          |*Aladdin V            | Bridge should work.
          | Aladdin 7            |
          |*Aladdin Pro/Pro II   |
          | Aladdin Pro III      | Aladdin TNT2
          | CyberBLADE Aladdin i1|
          | Aladdin Pro IV       |
          |*ALiMAGiK 1           |
          | Aladdin Pro 5(T/M)   | Unlisted chipsets are not fully detected,
          | Aladdin-P4           | but should work if they use M1533/43/35 or
          | CyberAladdin-P4      | M1523 South Bridge.
----------|----------------------|--------------------------------------------
 SMSC     | VictoryBX-66         | i82443BX North Bridge with SMSC SLC90E66
          |                      | South Bridge (UDMA-66 support)
----------|----------------------|--------------------------------------------
 Winbond/ | W83C553F/4F          | South Bridge, probably very rare thing
 Symphony |*Winbond W83697(H)F   | LPC Super I/Os with Flash ROM support
 Labs     | Winbond W83697SF     |
          | Winbond W83697UF     |
          | Winbond W83627(H)F   | LPC Super I/Os without Flash ROM interface
          |*Winbond W83627SF/GF  |
          | Winbond W83627THF    |
          | Winbond W83637HF     |
----------|----------------------|--------------------------------------------
 ITE      | IT8871F/2F and       | Don't know where used, untested.
          | IT8888F South Bridges| (No known chipset with these SBs)
          |*IT8700F/8705F        | LPC Super I/Os with Flash ROM support
          | IT8710F              | (used with SiS 540, SiS 630 and newer)
          | IT8702F              | LPC Super I/Os without Flash ROM interface
          | IT8711F              |
          | IT8712F              |
          | IT8722F              |
----------|----------------------|--------------------------------------------
 Reliance/| ServerSet III LE     | All chipsets with OSB4 South Bridge should
 Server   | ServerSet III HE     | work. Untested.
 Works    |                      | I don't have any official info.
----------|----------------------|--------------------------------------------
 National/| Vesuvius-LS          | Never seen this one.
 PicoPower|                      | Untested
----------|----------------------|--------------------------------------------
 National/| Geode GX1 (MediaGX)  | With Cx5510, Cx5520 and Cx5530(A) chips.
 Cyrix    |                      | New Geode chips are AMD.
----------|----------------------|--------------------------------------------
 OPTi     |*Viper M/N/NK/N+/DP   | Tested and works
          | Viper Max/Vendetta   | Untested, but should work too
----------|----------------------|--------------------------------------------
 HiNT     | VXPro-II             | Used on some PC Chips boards (like M559)
          |                      | I think that it's Utron UC85C501/502
          |                      | Not tested
----------|----------------------|--------------------------------------------
 UMC      |*UM8881F+UM8886BF     | Don't have any datasheets, tested and works
----------|----------------------|--------------------------------------------
 Micron   | Copperhead+Coppertail| Has no flash write protection. Untested
----------|----------------------|--------------------------------------------
 Contaq/  | hyperCache           | CY82C691+CY82C693(U/UB)
 Cypress  | 386/486 with PCI     | CY82C596/597+CY82C599
----------|----------------------|--------------------------------------------
 nVidia   |*nForce               | Tested and works
          |#nForce2              | nForce2 might not work
------------------------------------------------------------------------------

If your chipset is marked BXCel, VXPro, TXPro or something like that, it's a
relabelled chipset (ALi, SiS or VIA) on a PC Chips board, with the exception
of VXPro-II which is Utron.

The version 1.16d+ includes support for AMI's Flash Interface. It allows you
to flash even if you have an unknown chipset (new AMI WinBIOS is necessary to
use this feature). Starting from version 1.24, you must force using this mode,
if you want to use it by giving the -AMI parameter. This is neccessary because
it often doesn't work and hangs, preventing users from making BIOS backup.

UniFlash 1.39 and newer includes support for Asus Flash Interface. If you have
an Asus board and UniFlash is unable to detect flash ROM or the flashing
fails, try using -ASUS parameter. This uses code from BIOS to enable/disable
flash ROM access.

2.1            Support for specific boards
------------------------------------------
These boards use non-standard write protection using general purpose outputs
(GPOs) of the chipset.
They're detected by reading the BIOS ID string from the top of 4GB. This means
that the correct BIOS MUST be present in the socket when starting UniFlash or
the flashing will not work.
If the BIOS ID is not present at the top of 4GB, UniFlash tries to read it
from F000 segment. This will not work if running in Bootblock BIOS.

6A69RM4E = MicroStar MSI MS-6337 v3.0 (815EP Pro)
6A69RM4L = MicroStar MSI MS-6337 v5.0 (815EPT Pro, MS-6337LE5)
6A6S6A1A = Abit KG7(-Lite/-RAID)
6A69KA19 = Abit BF6, BE6-II v1.0 and v1.1
6A69KA1B = Abit BE6-II v1.2
6A69KA1C = Abit BE6-II v2.0 and BX133-RAID
2A69KA1Q = Abit ZM6
2A69KA1U = Abit BE6
6A6LMA19 = Abit KT7(-RAID), KT7A(-RAID), KT7E
6A6LMA1A = Abit KT7A(-RAID) v1.3
A7V266   = Asus A7V266
A7V8X-X  = Asus A7V8X-X

These boards detected using DMI - by using board vendor, name and version:
MSI MS-6380 2.0 = MicroStar MSI K7T266 Pro2(-RU) v2.0, MS-6380LE v2.0
MSI MS-6380E 1.0 = MicroStar MSI K7T266 Pro2-A, KT3 Ultra(-ARU), Ultra2(-R)

2.2            Tested PCI cards
-------------------------------
 * means tested and functional
 # means tested, but doesn't work

Cards with no specific support in UniFlash:
* Adaptec 19160/29160N (AIC-7892B chip) - Winbond W29EE512
* Adaptec 39160
# AdvanSys ASB-3940UA
# ATI Rage Magnum AGP
# Matrox Millennium PCI
* SIIG SC-PE4612 IDE controller (HighPoint HPT366) - SST 39SF010

I need datasheets for the cards (chips) that do not work.

Cards with specific support in UniFlash:
  3Dfx Banshee
  Sundance Technology ST201
  STMicroelectronics STE10/100(A)
  Winbond W89C840AF
  SMSC LAN83C175 EPIC/C
  VIA VT6102
      VT6105M Rhine III
  Realtek RTL8129/30/39
          RTL8139 series
          RTL8169 series
  ADMtek AL981 Comet
         AN983(B/BL) Centaur (B)
         AN985(B/BL) Centaur (B)
         ADM9511 Centaur II
         ADM9513 Centaur II
  Adaptec AIC-6915


3.0            What flash chips are supported by UniFlash ?
-----------------------------------------------------------

UniFlash supports the following flash chips:
 * means tested and functional,
 # means tested, but doesn't work the way it should,
 unmarked chips are not tested (note that a lot of chips are very similar to
 one another though, so if one of them works then the rest should work fine
 too)

,----------------------------------------------------------------------------,
| Flash ROM                       | Size                                     |
`---------------------------------|------------------------------------------'
  Alliance Semiconductor          |
  ----------------------          |
  AS29F040                        | 512KB
  AS29F002T                       | 256KB
  AS29F002B                       | 256KB
  AS29F200T                       | 256KB
  AS29F200B                       | 256KB
  AS29LV400T                      | 512KB
  AS29LV400B                      | 512KB
  AS29LV800T                      | 1024KB
  AS29LV800B                      | 1024KB
----------------------------------|-------------------------------------------
  AMD                             |
  ---                             |
  Am28F256                        | 32KB
  Am28F256A                       | 32KB
  Am28F512                        | 64KB
  Am28F512A                       | 64KB
  Am28F010                        | 128KB
  Am28F010A                       | 128KB
  Am28F020                        | 256KB
  Am28F020A                       | 256KB
 *Am29F010(A/B)                   | 128KB
 *Am29F040(B)                     | 512KB
  Am29F080(B)                     | 1024KB
  Am29F016(B)                     | 2048KB
  Am29F017B                       | 2048KB
  Am29F032B                       | 4096KB
  Am29F100T                       | 128KB
  Am29F100B                       | 128KB
  Am29F200AT/BT                   | 256KB
  Am29F200AB/BB                   | 256KB
  Am29F400AT/BT                   | 512KB
  Am29F400AB/BB                   | 512KB
  Am29F800(B)T                    | 1024KB
  Am29F800(B)B                    | 1024KB
  Am29F160DT                      | 2048KB
  Am29F160DB                      | 2048KB
 *Am29F002(N)(B)T                 | 256KB
  Am29F002(N)(B)B                 | 256KB
  Am29F004BT                      | 512KB
  Am29F004BB                      | 512KB
  Am29LV010B                      | 128KB
  Am29LV040B                      | 512KB
  Am29LV017B                      | 2048KB
  Am29LV033C                      | 4096KB
  Am29LV065D                      | 8192KB
  Am29LV081B                      | 1024KB
  Am29LV001BT                     | 128KB
  Am29LV001BB                     | 128KB
  Am29LV002(B)T                   | 256KB
  Am29LV002(B)B                   | 256KB
  Am29LV004(B)T                   | 512KB
  Am29LV004(B)B                   | 512KB
  Am29LV008(B)T                   | 1024KB
  Am29LV008(B)B                   | 1024KB
  Am29LV200(B)T                   | 256KB
  Am29LV200(B)B                   | 256KB
  Am29LV400(B)T                   | 512KB
  Am29LV400(B)B                   | 512KB
  Am29LV800BT                     | 1024KB
  Am29LV800BB                     | 1024KB
  Am29LV160BT/DT                  | 2048KB
  Am29LV160BB/DB                  | 2048KB
  Am29LV116BT                     | 2048KB
  Am29LV116BB                     | 2048KB
  Am29LV320DT                     | 4096KB
  Am29LV320DB                     | 4096KB
  Am29SL800CT                     | 1024KB
  Am29SL800CB                     | 1024KB
  Am29SL160CT                     | 2048KB
  Am29SL160CB                     | 2048KB
  Am29PL160CB                     | 2048KB
----------------------------------|-------------------------------------------
  AMIC                            |
  ----                            |
  A29010                          | 128KB
  A29040(A/B)                     | 512KB
  A29001(1)T                      | 128KB
  A29001(1)B                      | 128KB
 *A29002(1)T                      | 256KB
  A29002(1)B                      | 256KB
  A29400T                         | 512KB
  A29400B                         | 512KB
  A29800T                         | 1024KB
  A29800B                         | 1024KB
  A29L040                         | 512KB
  A29L004T/400T                   | 512KB
  A29L004B/400B                   | 512KB
  A29L008T/800T                   | 1024KB
  A29L008B/800B                   | 1024KB
  A29L160T                        | 2048KB
  A29L160B                        | 2048KB
----------------------------------|-------------------------------------------
  ASD                             |
  ---                             |
 *AE29F1008 = Winbond W29EE011    | 128KB
 *AE29F2008 = Winbond W29C020(C)  | 256KB
 *AE49F2008 = Winbond W49F002U    | 256KB
----------------------------------|-------------------------------------------
  Atmel                           |
  -----                           |
  AT29C256 or AT29C257            | 32KB
  AT29C512                        | 64KB
 *AT29C010(A)                     | 128KB
  AT29C020(A)                     | 256KB
  AT29C040A                       | 512KB
  AT29LV256                       | 32KB
  AT29LV512                       | 64KB
  AT29xV010(A) series             | 128KB
  AT29xV020 series                | 256KB
  AT29xV040A series               | 512KB
  AT49x512 series                 | 64KB
  AT49x001(A)(N)T series          | 128KB
  AT49x001(A)(N) series           | 128KB
 *AT49x002(A)(N)T series          | 256KB
  AT49x002(A)(N) series           | 256KB
  AT49x008AT series               | 1024KB
  AT49x008(A) series              | 1024KB
  AT49x010 series                 | 128KB
  AT49x020 series                 | 256KB
  AT49x040(A) series              | 512KB
  AT49x080 series                 | 1024KB
  AT49x080T series                | 1024KB
  AT49x2048(A) series             | 256KB
  AT49x4096(A) series             | 512KB
  AT49x8011T series               | 1024KB
  AT49x8011 series                | 1024KB
  AT49x160/161(4)T series         | 2048KB
  AT49x160/161(4) series          | 2048KB
  AT49BV320T/321T                 | 4096KB
  AT49BV320/321                   | 4096KB
  AT49LH002 (LPC/FWH)             | 256KB
  AT49LH004 (LPC/FWH)             | 512KB
  AT49LH00B4 (LPC/FWH)            | 512KB
 *AT49LW080 (Firmware Hub)        | 1024KB
----------------------------------|-------------------------------------------
  Bright Microelectronics         |
  -----------------------         |
  BM29F040  = Hyundai HY29F040    | 512KB
  BM29F400T = Hyundai HY29F400T   | 512KB
  BM29F400B = Hyundai HY29F400B   | 512KB
----------------------------------|-------------------------------------------
  Catalyst                        |
  --------                        |
  CAT28F512                       | 64KB
 *CAT28F010                       | 128KB
  CAT28F015T                      | 192KB
  CAT28F015B                      | 192KB
  CAT28F020                       | 256KB
 *CAT28F001T                      | 128KB
 *CAT28F001B                      | 128KB
  CAT28F002T                      | 256KB
  CAT28F002B                      | 256KB
  CAT28F150T                      | 192KB
  CAT28F150B                      | 192KB
  CAT29F(N)002T                   | 256KB
  CAT29F(N)002B                   | 256KB
----------------------------------|-------------------------------------------
  EON                             |
  ---                             |
  EN29F512                        | 64KB
  EN29F010                        | 128KB
  EN29F040(A)                     | 512KB
  EN29F080                        | 1024KB
 *EN29F002(A)T                    | 256KB
  EN29F002(A)B                    | 256KB
  EN29F800T                       | 1024KB
  EN29F800B                       | 1024KB
  EN29LV512                       | 64KB
  EN29LV010                       | 128KB
  EN29LV040                       | 512KB
  EN29LV400T                      | 512KB
  EN29LV400B                      | 512KB
  EN29LV800(A)T                   | 1024KB
  EN29LV800(A)B                   | 1024KB
  EN29LV160T                      | 2048KB
  EN29LV160B                      | 2048KB
----------------------------------|-------------------------------------------
  Fujitsu                         |
  -------                         |
  MBM29F002TC                     | 256KB
  MBM29F002BC                     | 256KB
  MBM29F200TC                     | 256KB
  MBM29F200BC                     | 256KB
  MBM29F400TC                     | 512KB
  MBM29F400BC                     | 512KB
  MBM29F040C                      | 512KB
  MBM29F033C                      | 4096KB
  MBM29LV160TE                    | 2048KB
  MBM29LV160BE                    | 2048KB
  MBM29PL160TD                    | 2048KB
  MBM29PL160BD                    | 2048KB
----------------------------------|-------------------------------------------
  H.T.                            |
  ----                            |
 *M21561 = Macronix MX28F1000P    | 128KB
 *M21032T = Macronix MX28F1000P   | 128KB
 *M20271H = Macronix MX28F1000P   | 128KB
----------------------------------|-------------------------------------------
  Hyundai                         |
  -------                         |
  HY29F040                        | 512KB
  HY29F040A                       | 512KB
  HY29F080                        | 1024KB
  HY29F002T                       | 256KB
  HY29F002B                       | 256KB
  HY29F400T                       | 512KB
  HY29F400B                       | 512KB
  HY29F800T                       | 1024KB
  HY29F800B                       | 1024KB
  HY29LV160T                      | 2048KB
  HY29LV160B                      | 2048KB
----------------------------------|-------------------------------------------
  IMT                             |
  ---                             |
  IM29F001T                       | 128KB
  IM29F001B                       | 128KB
  IM29F002T                       | 256KB
  IM29F002B                       | 256KB
  IM29F004T                       | 512KB
  IM29F004B                       | 512KB
  IM29LV001T                      | 128KB
  IM29LV001B                      | 128KB
  IM29LV004T                      | 512KB
  IM29LV004B                      | 512KB
----------------------------------|-------------------------------------------
  Intel                           |
  -----                           |
  28F256(A)                       | 32KB
  28F512                          | 64KB
 *28F010                          | 128KB
  28F020                          | 256KB
 *28F001BX/BN-T                   | 128KB
  28F001BX/BN-B                   | 128KB
  28F002-T series                 | 256KB
  28F002-B series                 | 256KB
 #28F004-T series                 | 512KB
  28F004-B series                 | 512KB
  28F008-T series                 | 1024KB
  28F008-B series                 | 1024KB
  28F008SA                        | 1024KB
  28F004Sx series                 | 512KB
  28F008Sx series                 | 1024KB
  28F016Sx series                 | 2048KB
  28F016S5                        | 2048KB
  28F004B3-T                      | 512KB
  28F004B3-B                      | 512KB
  28F008B3-T                      | 1024KB
  28F008B3-B                      | 1024KB
  28F016B3-T                      | 2048KB
  28F016B3-B                      | 2048KB
  28F320J5                        | 4096KB
  28F320J3A                       | 4096KB
  28F640J5                        | 8192KB
  28F640J3A                       | 8192KB
  28F128J3A                       | 16384KB
 *82802AB (Firmware Hub)          | 512KB
 *82802AC (Firmware Hub)          | 1024KB
----------------------------------|-------------------------------------------
  ISSI                            |
  ----                            |
  IS28F010                        | 128KB
  IS28F020                        | 256KB
----------------------------------|-------------------------------------------
  Macronix                        |
  --------                        |
 *MX28F1000                       | 128KB
 *MX28F1000P                      | 128KB
  MX28F2000P                      | 256KB
  MX28F2000T                      | 256KB
  MX28F002T                       | 256KB
  MX28F002B                       | 256KB
  MX29F040                        | 512KB
  MX29F080                        | 1024KB
  MX29F016                        | 2048KB
 *MX29F001T                       | 128KB
 *MX29F001B                       | 128KB
 *MX29F002(N)T                    | 256KB
  MX29F002(N)B                    | 256KB
  MX29F022T                       | 256KB
  MX29F022B                       | 256KB
  MX29F004T                       | 512KB
  MX29F004B                       | 512KB
  MX29F100T                       | 128KB
  MX29F100B                       | 128KB
  MX29F200T                       | 256KB
  MX29F200B                       | 256KB
  MX29F400T                       | 512KB
  MX29F400B                       | 512KB
  MX29F800T                       | 1024KB
  MX29F800B                       | 1024KB
  MX29F1610A                      | 2048KB
  MX29F1615                       | 2048KB
  MX29LV040                       | 512KB
  MX29LV081                       | 128KB
  MX29LV004T                      | 512KB
  MX29LV004B                      | 512KB
  MX29LV008T                      | 1024KB
  MX29LV400T                      | 512KB
  MX29LV400B                      | 512KB
  MX29LV800T                      | 1024KB
  MX29LV800B                      | 1024KB
  MX29LV160T                      | 2048KB
  MX29LV160B                      | 2048KB
  MX29L1611                       | 2048KB
  MX29L1611G                      | 2048KB
  MX29L3211                       | 4096KB
----------------------------------|-------------------------------------------
  Megawin                         |
  -------                         |
  MM29F040 = AMD Am29F040(B)/5V   | 512KB
----------------------------------|-------------------------------------------
  Micron                          |
  ------                          |
  MT28F004-T = Intel 28F004-T     | 512KB
  MT28F004-B = Intel 28F004-B     | 512KB
  MT28F400-T = Intel 28F400-T     | 512KB
  MT28F400-B = Intel 28F400-B     | 512KB
  MT28F008-T = Intel 28F008-T     | 1024KB
  MT28F008-B = Intel 28F008-B     | 1024KB
  MT28F800-T = Intel 28F800-T     | 1024KB
  MT28F800-B = Intel 28F800-B     | 1024KB
----------------------------------|-------------------------------------------
  Mosel Vitelic                   |
  -------------                   |
  V29C51000T                      | 64KB
  V29C51000B                      | 64KB
  V29C51001T                      | 128KB
  V29C51001B                      | 128KB
  V29C51002T                      | 256KB
  V29C51002B                      | 256KB
  V29C51004T                      | 512KB
  V29C51004B                      | 512KB
  V29C51400T                      | 512KB
  V29C51400B                      | 512KB
  V29LC51000                      | 64KB
  V29LC51001                      | 128KB
  V29LC51002                      | 256KB
  V29C31004T                      | 512KB
  V29C31004B                      | 512KB
  V29C31400T                      | 512KB
----------------------------------|-------------------------------------------
  NexFlash Technologies           |
  ---------------------           |
  NX29F010  = AMD Am29F010        | 128KB
  NX29F400B = AMD Am29F400B       | 512KB
----------------------------------|-------------------------------------------
  PMC                             |
  ---                             |
 *Pm29F002T                       | 256KB
  Pm29F002B                       | 256KB
  Pm29F004T or Pm29LV104T         | 512KB
  Pm29F004B or Pm29LV104B         | 512KB
  Pm39F010 or 39LV010(R)          | 128KB
  Pm39F020                        | 256KB
  Pm39F040                        | 512KB
  Pm39LV512(R)                    | 64KB
  Pm39LV020                       | 256KB
  Pm39LV040                       | 512KB
  Pm49FL002                       | 256KB
  Pm49FL004                       | 512KB
  Pm49FL008                       | 1024KB
----------------------------------|-------------------------------------------
  SHARP                           |
  -----                           |
  LHF00L02/6/7 (LPC)              | 1024KB
  LHF00L03/4/5 (FWH)              | 1024KB
  LHF00L01 (LPC)                  | 2048KB
----------------------------------|-------------------------------------------
  SST                             |
  ---                             |
  28EE010/011                     | 128KB
  29EE512                         | 64KB
 *29EE010                         | 128KB
 *29EE020                         | 256KB
  28x040(A) series                | 512KB
  29x512 series                   | 64KB
  29x010 series                   | 128KB
  29x020 series                   | 256KB
  29SF512                         | 64KB
  29SF010                         | 128KB
  29SF020                         | 256KB
  29SF040                         | 512KB
  29VF512                         | 64KB
  29VF010                         | 128KB
  29VF020                         | 256KB
  29VF040                         | 512KB
 *49LF020 (LPC)                   | 256KB
 *49LF020A (LPC)                  | 256KB
  49LF030(A) (LPC)                | 384KB
  49LF040 (LPC)                   | 512KB
  49LF080(A) (LPC)                | 1024KB
 *49LF002(A) (Firmware Hub)       | 256KB
  49LF003A (Firmware Hub)         | 384KB
  49LF004 (Firmware Hub)          | 512KB
  49LF004A/B (Firmware Hub)       | 512KB
  49LF008 (Firmware Hub)          | 1024KB
 *49LF008A (Firmware Hub)         | 1024KB
  39SF512                         | 64KB
  39SF010(A)                      | 128KB
 *39SF020(A)                      | 256KB
  39SF040                         | 512KB
  39xF512 series                  | 64KB
  39xF010 series                  | 128KB
 *39xF020 series                  | 256KB
  39xF040 series                  | 512KB
  39xF080 series                  | 1024KB
  39xF016 series                  | 2048KB
----------------------------------|-------------------------------------------
  STMicroelectronics              |
  ------------------              |
  M28F256                         | 32KB
  M28F512                         | 64KB
  M28F101                         | 128KB
  M28F201                         | 256KB
  M28W201                         | 256KB
  M29F512B                        | 64KB
  M29F010B                        | 128KB
  M29F040(B)                      | 512KB
  M29F080A                        | 1024KB
  M29F016B                        | 2048KB
  M29F002(B)(N)T                  | 256KB
  M29F002(B)B                     | 256KB
  M29F100(B)T                     | 128KB
  M29F100(B)B                     | 128KB
  M29F200(B)T                     | 256KB
  M29F200(B)B                     | 256KB
  M29F400(B)T                     | 512KB
  M29F400(B)B                     | 512KB
  M29F800AT                       | 1024KB
  M29F800AB                       | 1024KB
  M29F160BT                       | 2048KB
  M29F160BB                       | 2048KB
  M29W512B                        | 64KB
  M29W010B                        | 128KB
  M29W022BT                       | 256KB
  M29W022BB                       | 256KB
  M29W040(B)                      | 512KB
  M29W200BT                       | 256KB
  M29W200BB                       | 256KB
  M29W400(B)T                     | 512KB
  M29W400(B)B                     | 512KB
  M29W800(A)T                     | 1024KB
  M29W800(A)B                     | 1024KB
  M29W160BB/DB                    | 2048KB
  M29W004(B)T                     | 512KB
  M29W004(B)B                     | 512KB
  M29W008(A)T                     | 1024KB
  M29W008(A)B                     | 1024KB
  M50FW002 (FWH)                  | 256KB
  M50LPW002 (LPC)                 | 256KB
 *M50FW040 (FWH)                  | 512KB
  M50LPW040 (LPC)                 | 512KB
  M50FLW040A (LPC/FWH)            | 512KB
  M50FLW040B (LPC/FWH)            | 512KB
 *M50FW080 (FWH)                  | 1024KB
  M50LPW080 (LPC)                 | 1024KB
  M50FLW080A (LPC/FWH)            | 1024KB
  M50FLW080B (LPC/FWH)            | 1024KB
  M50FW016 (FWH)                  | 2048KB
----------------------------------|-------------------------------------------
  SyncMOS                         |
  -------                         |
  F29C51001T = Mosel V29C51001T   | 128KB
  F29C51001B = Mosel V29C51001B   | 128KB
 #F29C51002T = Mosel V29C51002T   | 256KB
  F29C51002B = Mosel V29C51002B   | 256KB
  F29C51004T = Mosel V29C51004T   | 512KB
  F29C51004B = Mosel V29C51004B   | 512KB
  F29C31004T = Mosel V29C31004T   | 512KB
  F29C31004B = Mosel V29C31004B   | 512KB
  F29C31400T = Mosel V29C31400T   | 512KB
----------------------------------|-------------------------------------------
  Texas Instruments               |
  -----------------               |
  TMS29xF040                      | 512KB
  TMS28F002A-T = Intel 28F002-T   | 256KB
  TMS28F002A-B = Intel 28F002-B   | 256KB
  TMS28F200A-T = Intel 28F200-T   | 256KB
  TMS28F200A-B = Intel 28F200-B   | 256KB
  TMS28F200BZT = Intel 28F200-T   | 256KB
  TMS28F200BZB = Intel 28F200-B   | 256KB
  TMS28F400A-T = Intel 28F400-T   | 512KB
  TMS28F400A-B = Intel 28F400-B   | 512KB
  TMS28F400BZT = Intel 28F400-T   | 512KB
  TMS28F400BZB = Intel 28F400-B   | 512KB
  TMS28F004A-T = Intel 28F004-T   | 512KB
  TMS28F004A-B = Intel 28F004-B   | 512KB
  TMS28F008A-T = Intel 28F008-T   | 1024KB
  TMS28F008A-B = Intel 28F008-B   | 1024KB
  TMS28F800A-T = Intel 28F800-T   | 1024KB
  TMS28F800A-B = Intel 28F800-B   | 1024KB
  TMS28F010A/B = Intel 28F010     | 128KB
  TMS28F020    = Intel 28F020     | 256KB
  TMS28F512A   = Intel 28F512     | 64KB
  TMS29F002RT  = AMD Am29F002T    | 256KB
  TMS29F002RB  = AMD Am29F002B    | 256KB
  TMS29F008T   = AMD Am29F800T    | 1024KB
  TMS29F008B   = AMD Am29F800B    | 1024KB
  TMS29F010    = AMD Am29F010     | 128KB
  TMS29F040    = AMD Am29F040     | 512KB
  TMS29F400T   = AMD Am29F400AT   | 512KB
  TMS29F400B   = AMD Am29F400AB   | 512KB
  TMS29F800T   = AMD Am29F800T    | 1024KB
  TMS29F800B   = AMD Am29F800B    | 1024KB
  TMS29LF008T  = AMD Am29LV008T   | 1024KB
  TMS29LF008B  = AMD Am29LV008B   | 1024KB
  TMS29LF800T  = AMD Am29LV800BT  | 1024KB
  TMS29LF800B  = AMD Am29LV800BB  | 1024KB
----------------------------------|-------------------------------------------
  Winbond                         |
  -------                         |
 *W29x010/011/012 series          | 128KB
 *W29C020(C)                      | 256KB
  W29C040                         | 512KB
  W29x512 series                  | 64KB
  W39F010                         | 128KB
  W39L512                         | 64KB
  W39L010                         | 128KB
  W39L020                         | 256KB
  W39L040                         | 512KB
  W39L040A                        | 512KB
  W39V040A (LPC)                  | 512KB
  W39V040FA (Firmware Hub)        | 512KB
 *W49F002U                        | 256KB
  W49F020                         | 256KB
  W49V002(A) (LPC)                | 256KB
  W49V002F(A) (Firmware Hub)      | 256KB
------------------------------------------------------------------------------

3.1            Flash ROM pinout and notes
-----------------------------------------

Some 12V Flash ROMs require 12V voltage not only to flash, but also to detect.
If you're trying to flash 12V chip, first check that you have 12V on the VPP
pin in the socket on motherboard. Flash write protect jumper usually removes
12V from this pin.
When some parts of the chip are write protected, 12V on VPP/#RESET pin will
usually allow these protected parts to be flashed (unless the chip has N in
the name - e.g. MX29F002NT - this means that RESET pin is not connected).

Be sure that Flash ROM is inserted the correct way in the socket (key on the
chip must match with key on the socket) BEFORE powering up (if you're
hot-flashing, double check chip orientation before inserting it into socket).
Inserting it wrong way will DESTROY the chip - VCC will be swapped with GND
and if there's 12V on the VPP pin, it will be connected to Q3 data pin...

Flash ROM pinout (32-pin DIP):
          _____KEY_____
    VPP -|     \_/     |- VCC     VPP = Programming voltage (12V)
    A16 -|             |- #WE     VCC = Operating voltage (5V)
    A15 -|             |- A17     GND = Ground
    A12 -|             |- A14     A0..A17 = Address input pins
     A7 -|             |- A13     Q0..Q7  = Data input/output pins
     A6 -|             |- A8      #WE = Write enable
     A5 -|             |- A9      #OE = Output enable
     A4 -|             |- A11     #CE = Chip enable
     A3 -|             |- #OE     (# means active low signal)
     A2 -|             |- A10
     A1 -|             |- #CE     Notes:
     A0 -|             |- Q7        - some chips have #RESET instead of VPP
     Q0 -|             |- Q6        - this is 256KB chip
     Q1 -|             |- Q5        - 512KB chips have A18 instead of VPP
     Q2 -|             |- Q4        - 128KB chips have NC instead of A17
    GND -|_____________|- Q3        - 64KB chips have NC instead of A17 & A16


4.0            Help! I don't understand the sources !!!
-------------------------------------------------------

If you have problems understanding something mail me (address at the end).
Have a look also on the ADDCHIP.FAQ file. It explains how to add new chips
plus some details.


5.0            ADVANCED submenu
-------------------------------

There's ADVANCED submenu in UniFlash, which contains possibly dangerous
functions. Since v1.33, flashing is done including bootblock by default. This
is less dangerous that flashing a new BIOS and leaving incompatible bootblock
from previous BIOS there. And more, the bootblock is not exactly defined
anywhere - some BIOSes might use bigger bootblock than other, which can cause
problems.

5.1            Making an emergency disk
---------------------------------------

It is always nice to have an emergency disk handy in case something goes
wrong. You see, most flash BIOS's incorporate something called a 'boot block'
and UNIFLASH will not normally overwrite it so it remains intact.
The boot block contains just enough code to boot up your computer with basic
peripheral support to enable you to flash in a working BIOS in case something
went wrong.

To make an emergency disk one would do the following:
-make a DOS (or Win95/Win98, NOT ANY OTHER) system disk using "format a: /S"
-copy uniflash to that disk
-copy a working bios image (preferably a backup that was made while the system
 was still a-ok) to the disk
-make an AUTOEXEC.BAT containing:
@UNIFLASH -E <name of BIOS image file>

NOTE: Whatever you do, do *NOT* load HIMEM.SYS. The boot block lacks support
      routines that HIMEM.SYS requires, resulting in very nice crashes.
      And I know from experience ... !! In general, keep the boot disk as
      clean as possible, remove drvspace.bin and dblspace.bin.

Make sure UNIFLASH and the BIOS image are on the disk as the boot block only
supports the floppy drive, you won't be able to access any harddrive !!
When you boot from this emergency disk the working BIOS image will
automatically (without any intervention by you) be flashed into the flash ROM
by UNIFLASH. This is very convenient as the boot block has no support for PCI
or AGP video cards, so you won't be able to SEE anything in the process unless
you replace your PCI videocard with an old ISA one (hint!). If you have
motherboard with i815(E) chipset and you're using onboard video, it will
probably not work in boot block mode (because graphics BIOS is stored in main
Flash ROM chip) - try to put an AGP card in (there are no ISA slots).

UNIFLASH will give you some audible feedback, though:
first short beep: UNIFLASH invoked, reading BIOS image
second short beep: done reading BIOS image, starting to flash
chime sound: done flashing, reset your system
long continuous beep: some error occured, press any key to retry operation

5.2            Command-line parameters
--------------------------------------
UNIFLASH [-H|-?|[-PCIROM [B D F]|-AMI|-ASUS|-BASE xxxxx|CTFLASH [xxx]]
 [-E fname][-SAVE fname|-CHIPLIST|-FORCE xxxx][-REPAIR][-LOG][-MONO]
 [-CMOSS fname][-CMOSR fname][-CMOSC]][-UNLOCK][-QUIT][-REBOOT]

-H or -?        Shows this help screen
-E fname        Flashes fname to Flash ROM with no prompts
-LOG            Enables auto-logging to UNIFLASH.LOG
-MONO           Use if you have problems with colors on monochrome monitor
-CTFLASH        Flash ROM in c't Flasher 8-bit ISA card [xxx=port]
-PCIROM         Flash ROM on a PCI card instead of system ROM
  [BUS DEV FUN] Manually specify PCI device (decimal numbers)
-AMI, -ASUS     Use AMI Flash Interface, Use Asus Flash Interface
-CHIPLIST       Show list of supported flash chips with their numbers
-FORCE xxxx     Force using routines for chip xxxx (4 hex digits)
-BASE xxxxx     Set ROM Base to address xxxxx (at least 5 hex digits)
-REPAIR         Repair erased chip ID (Winbond and SST chips)
-SAVE fname     Write current bios image to file fname
-CMOSS/R fname  Save/restore CMOS settings to/from file fname
-CMOSC          Clears CMOS settings
-UNLOCK         Unlock locked bootblocks (e.g. on W29C020)
-QUIT           Quits (e.g. UNIFLASH -SAVE BACKUP.BIN -QUIT)
-REBOOT         Reboot after flashing (use together with -E)

Parameters are executed in the same order as they are entered on the command
line - so you can use e.g. "uniflash -cmoss cmos.bak -cmosc" to save CMOS
settings to file called cmos.bak and then clear the CMOS.
Some parameters can't be used together - e.g. -AMI can't be used with -PCIROM.

-E: Flashes BIOS image from file fname including bootblock without
    any user input
-LOG: Enables logging of all important events into file UNIFLASH.LOG. Use this
      when you are sending bug reports and attach this file.
-CTFLASH: Selects ROM on c't Flasher 8-bit ISA card. This card supports
          Flash ROMs up to 512KB. Port is autodetected or can be specified
          manually as optional parameter (hex 200-3FC).
-PCIROM: Selects ROM on a PCI device instead of system ROM. Works only with
         some cards. You can optionally specify the device you want to use.
         (e.g. -PCIROM 0 3 1 = BUS 0, DEVICE 3, FUNCTION 1)
-AMI: Uses interface supported by some AMI BIOSes instead of detecting the
      chipset and writing to chipset registers to disable write protection.
      (I haven't seen this working anywhere yet...)
-ASUS: Uses interface supported by newer Asus BIOSes. This one really works
       (tested on A7V133-C, A7V266 and A7V8X-X)
-CHIPLIST: Displays a list of supported chips with their IDs which are needed
           for use with -FORCE parameter.
-FORCE: Disable Flash ROM autodetection and set chip type to the one specified
        by following ID (4 hex digits) - see -CHIPLIST parameter.
-BASE: Set ROM base address manually and allow running without PCI bus.
       Useful for memory-mapped flash programming cards with old systems.
-REPAIR: ID on some Winbond and SST chips can be changed which can cause the
         chip not being recognized by any software (including BIOS - AMI BIOS
         does not work in that chip, Award BIOS displays Unknown Flash Type).
         This option can change the ID on these chips. Because UniFlash does
         not know the correct ID, you must specify it using -FORCE parameter.
-SAVE: Save current BIOS to file fname.
-CMOSS: Save current CMOS settings to file fname. CMOS memory size is detected
        automatically.
-CMOSR: Restore CMOS settings from file fname. CMOS memory size is detected
        automatically.
-CMOSC: Clear CMOS memory.
-UNLOCK: Bootblock lock can be disabled on some chips (tested on W29C020) by
         using this parameter.


6.0            How to support UniFlash?
---------------------------------------

If you want to help me in adding support for new chips, in testing the whole
thing or bugfixing, mail me, I'll put your name in credits at the end.
I want your opinions & experiences to make flashing BIOS an easy and safe
operation, where you doesn't need tons of flashers (if you multiply the
number of chipsets by the number of Flash ROM memories available, you'll
understand better what we're talking about).

7.0            Credits
---------------------------------------

Ondrej Zary (Rainbow Software) - Continues to develop this program after the
authors (below) stopped the development. Done all that is new after v1.17b.
Added tons of Flash ROMs and chipsets, fixed a lot of bugs, got datasheets
from ALi.

Pascal van Leeuwen - Made first design, chipset handling routines, a primitive
write function for SST, WINBOND and INTEL, added flat real mode, etc...
Improved SST & Winbond routines, made AMD routines work, added Atmel support,
added lots & lots of flash chips (of which most are currently untested ...)
Added reliability improvements (backup of old BIOS, verify after write)
Tested both Winbond & SST chips, became an expert at hot-flashing ;-)

Galkowski Adam - Initiated the UniFlash project, made modular structure, made
the current design, added functions handling DMI, PnP and bootblock, added
expert mode, made the previous crappy AMD support, wrote this doc, tested SST
routines, had multiple rendez-vous with "Award BootBlock BIOS",
advertised, etc...


8.0            How to contact me
--------------------------------
You can contact me (Rainbow Software) by:
web    : http://www.uniflash.org - UniFlash ONLY
web    : http://www.rainbow-software.org
(new versions should be at all the addresses above)
e-mail : rainbow@rainbow-software.org

When sending reports that something doesn't work, always send the log file!

9.0            Revision history
-------------------------------
1.40       -changed license to GNU GPL v2
1.39       -added -UNLOCK parameter to unlock bootblocks on some chips (like
            Winbond W29C020)
           -added logging to LPC detection
           -added Winbond W83627(H)F, SF/GF, THF and W83637HF and also
            ITE IT8702F, IT8711F, IT8712F and IT8722F detection (these don't
            have flash ROM interface but they have GPIO pins)
           -simplified LPC detection and access code
           -added BIOS ID reading from F000 segment if not found at top of 4GB
           -added specific support for Asus A7V266 and A7V8X-X (they use
            Super I/O GPO pins) and Abit ZM6, BE6 (same as BX133-RAID)
           -added Winbond W39V040A (LPC) and W39L040A chips
           -added support for Asus flash interface! (-ASUS parameter) - with
            this, it should be possible to flash all newer Asus boards
           -added support for SMBIOS/DMI board identification (needed for
            specific support for boards with non-Award BIOSes)
           -added specific support for MSI MS-6380 2.0 and MS-6380E 1.0
           -added new Intel chipsets: E7210, E7221, E7320, E7520, E7525,
            E8870, mobile 910/915 series
           -added VIA VT8237 south bridge and UniChrome KM400(A) chipset
           -was never released
1.38       -fixed quitting on some boards immediately after running
           -fixed unprotect for ST FWH and LPC chips (one F is missing from
            the (un)protect register adresses)
           -fixed unprotect for ST 50FLW080A and B
           -added BIOS IDs of Abit BF6, all BE6-II variants, all KT7 variants
            and MSI MS-6337 v5.x
           -BIOS ID is now shown in lower right corner when detected & needed
           -updated SST LPC chip names, so they're marked "(LPC)"
           -fixed problems with some W49F002U chips by removing a piece of
            unknown code from AMD flashing routine
1.37       -removed STMicroelectronics M28F102 (is 16-bit)
           -added STMicroelectronics M50FW016 (FWH), M50FLW040A (LPC/FWH),
            M50FLW040B (LPC/FWH), M50FLW080A (LPC/FWH), M50FLW080B (LPC/FWH),
            M28W201 chips
           -added AMIC A29800T, A29800B, A29L004T/400T, A29L004B/400B,
            A29L008T/800T, A29L008B/800B, A29L160T, A29L160B, A29L040 chips
           -added IMT IM29LV001T, IM29LV001B chips
           -added EON EN29F512, EN29F010, EN29LV512, EN29LV010, EN29LV040,
            EN29LV400T, EN29LV400B, EN29LV800(A)T, EN29LV800(A)B, EN29LV160T,
            EN29LV160B
           -added SST 49LF020A chip
           -added SHARP LHF00L02/6/7 (LPC), LHF00L03/4/5 (FWH) and LHF00L01
            (LPC) chips
           -added Intel 915G/P/925X chipsets with new ICH6
           -added OPTi Viper M/N/NK/N+/DP, changed Vendetta 82C750 to
            Viper Max/Vendetta 82C750 and fixed a bug in OPTi chipset support
           -added VIA 486 chipsets with VT82C505 PCI bridge
1.36       -c't Flasher can now be used on systems without PCI bus
           -fixed a bug causing -save and -e parameters to not work correctly
            when used together
           -added AMD 8000 chipset detection
           -fixed 256B CMOS size detection on chipsets that provide access to
            full CMOS range using 72/73h registers
           -added AMD Geode SC1100 and SC1200/2200/3200 support and Cx5510
            and Cx5520 device IDs
1.35       -fixed i82378ZB vs. i82379AB identify
           -fixed a bug causing hangs with Winbond LPC Super I/O chips
           -added SiS 964 south bridge detection
1.34       -fixed a bug causing arithmetic overflow with chips with many
            sectors (such as SST 49LF008A FWH)
           -fixed problems with c't Flasher and 5V chips smaller than 512KB
            that use pin 1 as #RESET
           -added some new PMC chips: Pm39F010, Pm39F020, Pm39F040, Pm39LV020,
            Pm39LV040
           -fixed problems with logging on a write protected drive
           -added support for non-standard BIOS write protection methods by
            detecting BIOS ID string and matching the board in the list of
            known boards
           -added alternative method of supporting 256KB chips on M1533/M1543
            south bridges - through GPO[19] (used e.g. on Acer V72MA board)
            (although it does not seem to work...)
           -added Intel 865P(E)/G(V)/848P chipsets
           -added some Atmel chips: AT49x2048(A) series, AT49LH002, AT49LH004,
            AT49LH00B4 and AT49LW080
1.33       -fixed reboot when running on QDI Titanium IB+ board
           -no more flashing when file size is not correct
           -added support for Winbond LPC Super I/O chips W83697(H)F,
            W83697SF and W83697UF
           -fixed problems with bootblock erasing on Atmel AT49x001(N)(T) and
            AT49x002(N)(T) chips (bootblock can't be erased separately -> chip
            erase must be used)
           -english-only - other languages are not compiled in the binary
            release because the translations are outdated
           -flash including bootblock by default, flashing without bootblock
            is available from the advanced menu
           -Restore backup CMOS data in CMOS menu now works
1.32       -added support for c't flasher 8-bit ISA card, autodetecting port
            and memory base, supports Flash ROMs up to 512KB
           -register contents in LOG file are now written as hex numbers
1.31       -added support for ALi Aladdin, the ALi's first Pentium chipset
            (uses low E and F segments, disabling shadow during read access)
           -if the south bridge is not found, the first device with no class
            code is assumed to be south bridge (for old chipsets)
           -fixed one line more cleared when changing drives in file browser
           -modified chipset detection and identifying code to allow easier
            implementation of support for new chipsets
           -fixed error when opening files with read-only attribute set
           -modified i8xx chipset code to support FWHs up to 4MB (32Mbit)
           -added SiS 648, 651, 655, 733, 745, 746, 748, 755 chipsets
           -added i845E, i845G(E/L/V)/845PE, i845MP/MZ, i852GM/855GM, i855PM,
            i875P, E7205, E7501, E7505 chipsets
           -added VIA Apollo KT333, KT400(A), Apollo Pro 266T, P4X400
           -added ALi Aladdin 7, Aladdin Pro III (TNT2), CyberBLADE Aladdin i1,
            Aladdin Pro 5(T/M), Aladdin-P4, CyberAladdin-P4
           -modified multi-language code to save some memory by initializing
            only the selected language (also reduced EXE file size)
           -moved PCI card support into separate unit (PCICARDS.PAS) and added
            specific support for these PCI network cards:
             STMicroelectronics STE10/100(A), Winbond W89C840AF,
             SMSC LAN83C175 EPIC/C, VIA VT6102, VT6105M Rhine III
             Realtek RTL8129/30/39, RTL8139 series, RTL8169 series
             ADMtek AL981 Comet, AN983,985(B/BL) Centaur (B),
             ADM9511,9513 Centaur II, Adaptec AIC-6915
           -added support for PMC Pm49FL002/004/008 FWHs/LPCs
1.30       -added timeouts to all program/erase routines so there should never
            be any lockups, even if Flash ROM does not respond
           -fixed incorrect ROM Base when no Flash ROM detected
           -fixed (forced) displayed when chip was forced and then redetected
           -graph color during flashing now represents the write status -
            green means write OK, red means write failed (timeout/error)
           -fixed GenPageProg and AtmelPageProg to avoid extra retries for
            chips that do not support error bit - it slowed down flashing and
            reduced chip life (nice to see how fast W29EE011 really is)
           -added support for i82801DB ICH4
           -added a question when flashing without bootblock and there's
            bootblock mismatch allowing user to flash including bootblock
            (to prevent users from killing the BIOS because of not reading
            this manual...)
           -removed PnP (ESCD) manipulation (DMI was removed some time ago),
            it was very dangerous (no checks if there really is ESCD data -
            easy way to kill the BIOS) and useless
           -fixed a bug in -BASE parameter (thanks to Krystian Rozycki)
           -fixed bug in protect/unprotect code for all FWHs that prevented
            flashing from working
           -added nVidia nForce support
1.29       -added some Winbond Flash ROMs: W39L512, W39F010, W39L010, W39L020,
            W39L040, W39V040FA (FWH) and W49F020
           -found old Catalyst datasheets - fixed CAT28F150T, added CAT28F015T
            and CAT28F015B
           -better PCI ROM flashing, added 3Dfx Banshee support
           -added Micron Copperhead+Coppertail chipset detection (has no flash
            write protection)
           -added Contaq/Cypress hyperCache chipset (CY82C691+CY82C693(U/UB))
            and 386/486 chipsets with PCI (CY82C599 required)
           -changed i82378ZB SIO and i82379AB SIO.A detection (it has no class
            code - now detected by vendor and device ID if 82434LX/NX present)
           -fixed CMOS size detection detecting falsely 256b on some boards
           -modified code to allow easier implementation of various flash
            access methods (external progammers, PCI cards...)
           -rewrote ALi FinALi support using these new methods (it was a lot
            easier now)
           -some cosmetic fixes (misaligned error messages, some german texts)
           -fixed flashing on PC Chips M715 board (i440LX) with Award
            BootBlock BIOS (GPO used for write protection)
           -added VIA VT8235 south bridge support
           -added STMicroelectronics M50LPW040, M50FW002 and M50LPW002 chips
           -added unprotect for STMicroelectronics LPC and FWH chips
           -found a way to unprotect Flash ROM on Abit BX133-RAID (GPO used),
            might work on other Abit i440BX based boards too
            BUT: Flashing failed with Winbond W49F002U - some cache problems?
1.28       -fixed -SAVE paramter (it was completely broken)
           -display Chipset and Flash ROM when only -QUIT parameter specified
           -fixed bug causing reset of ITE LPC Super I/Os (resulting in floppy
            and COM&LPT ports not working until reboot)
           -fixed Macronix chip detection
           -fixed Atmel AT29Cxxx detection (again, it really works now)
           -fixed Atmel programming routine (chip remained unprotected)
           -fixed some SiS chipset support
           -fixed Utron 128KB support (again)
           -fixed showing SUCCESS when bootblock mismatch and user answered NO
           -fixed the detection routine erased vendor and device IDs from some
            Winbond and SST chips (detected properly once but then unknown,
            BIOS displayed "Unknown Flash Type" message)
           -added repair feature to repair the erased IDs (-repair parameter)
           -added support for ALi FinALi 486 chipset
           -enable/disable menu items after redetect with/without Flash ROM
           -verify now shows unchanged areas
           -removed $4B and $D5 IDs for Macronix MX28F1000P (they were there
            because of the detection bug which is now fixed)
           -added logging for north bridge methods
           -added support for UMC UM8881F+UM8886BF chipset (no datasheets,
            reverse engineering used)
           -fixed hang when running under Award BootBlock BIOS with
            uninitialized or absent graphics card
           -added user friendly filename editing, default file names when
            saving a file and file browser when opening a file (press ENTER on
            the prompt, TAB to change drive)
           -added I/O error checking for all file operations
           -added -REBOOT patameter to reboot after flashing using -E
           -added -BASE parameter to set ROM base address manually and allow
            UniFlash to run without PCI bus
1.27       -added -MONO parameter for monochrome monitors
           -enhanced -PCIROM functionality, you can now manually specify
            a device by its BUS, DEVICE and FUNCTION numbers (decimal)
           -fixed HiNT VXPro-II (Utron UC85C501/502) 128KB Flash ROMs
           -added some VIA chipsets: ProSavage KM133(A), P4M266, P4X266(A)/333
           -added real VIA VT8233 support
           -fixed hang when EMM386.EXE is loaded (display error message now)
           -success chime sound also in emergency mode
           -fixed Atmel AT29Cxxx detection
           -added ITE IT8700F/8705F and IT8710 LPC Super I/O detection with
            SiS 540 and SiS 630 chipsets and all newer
           -added some SiS chipsets : SiS 635, SiS 640, SiS 645, SiS 645DX,
            SiS 650, SiS 730, SiS 735 and SiS 740 - I have no datasheets, but
            SiS 735 is tested and works
           -clear keyboard buffer before asking for file names and also on exit
           -fixed memory de-allocation bug when HIMEM.SYS is loaded
1.26       -added Intel E7500 chipset with 82801CA (ICH3-S) I/O Controller Hub
           -added some ALi chipsets: Aladdin III (M1521 and M1523(B)) and
            Aladdin IV/IV+ (M1531(B))
           -ALi FINALi 486 chipset (M1489) is not supported because it doesn't
            map Flash ROM below 4GB
           -added AMD 760MPX chipset with AMD-768 South Bridge
           -added OPTi Vendetta 82C750 chipset (removed the old disabled code)
           -added HiNT VXPro-II chipset (I think that it's Utron UC85C501/502,
            because this one matches it and has programmable Mfg.&Device IDs)
           -added -QUIT parameter - quits when processed, all comands after
            will be ignored (useful use: "UNIFLASH -SAVE BACKUP.BIN -QUIT")
           -added German language support (by Gerald Bottcher)
           -PCI-to-ISA posted write buffer is disabled on ALi chipsets during
            flashing to fix problems with some Flash ROMs (e.g. EON)
           -added unprotect for SST49LF002A/003A/004A/008A FWHs
1.25       -fixed crash in Windows on some machines - display error message
            (thanks to Alejando Pelaez)
           -pressing ESC in -chiplist will quit
           -CMOS size in log
           -added -CMOSS (Save CMOS), -CMOSR (Restore CMOS) and -CMOSC (Clear
            CMOS) options (they work also in Windows)
           -added support for 256b CMOS
           -fixed CMOS support to save/restore/clear also bytes 15 and 16
           -added ServerWorks ServerSet III LE and HE chipsets with Reliance
            NB6536 & NB6635 North Bridges (without any info from ServerWorks)
           -added National Semiconductor PicoPower Vesuvius-LS chipset
           -added National Semiconductor Geode GX1 CPU with North Bridge
            (Cyrix MediaGX) and CS5530(A) South Bridge (Cyrix CX5530(A))
1.24       -added support for some ALi chipsets: Aladdin Pro IV and ALiMAGiK 1
           -fixed 256KB and 512KB support for ALi chipsets
           -added VIA Apollo VP3 with VT82C596 South Bridge
           -implemented Redetect Flash ROM function
           -AMI Flash Interface is no longer automatically enabled to prevent
            hangs. You must use "-ami" parameter to activate it.
           -added two more IDs for Macronix MX28F1000P - $4B and $D5
           -simplified detection routine - removed support for multiple Flash
            ROMs and removed all 16-bit wide ROMs, cleaned up the code
           -pressing Q in -chiplist will quit (like MORE.COM)
           -fixed Macronix MX29F002(N)T slow erase bug
           -added Reliance/ServerWorks OSB4 South Bridge
1.23       -added Italian language support (by Enrico Antongiovanni)
           -added timeout to GenPageProgB and GenPageProgW (to prevent hangs
            with boot block protection enabled on Winbond Flash ROMs)
           -added auto-logging feature (-LOG parameter)
           -added support for Intel 830MP and 845 chipsets
           -new keyboard handler doesn't use BIOS - this allows UniFlash to
            work correctly under Award BootBlock BIOS (tested)
           -added simple help on the bottom of screen in menu
           -added new program/erase routines for Winbond Sectored Flash ROMs
            (may fix Winbond W29F002U?)
           -tried to fix but still not fixed SiS 501/5101/5501 support
           -some VIA reverse engineering (reserved registers seems to be used)
            but new VIA/AMD chipsets still not working (if you have "Flash
            Write Protect" option in BIOS, your chipset will work when you
            disable it)
1.22       -added error messages: running under Windows, PCI bus not found
           -fixed Flash ROM write protect enable/disable - fixed possible
            chipset register corruption
           -added new delay routine based on Time Stamp Counter (TSC), it's
            used on all CPUs that supports TSC (Pentium+), old CPUs use the
            old routine. This fixed all problems with slow performance on
            fast computers
           -modified waiting times for Page Write Flash ROMs (most of Atmel,
            SST and Winbond Flash ROMs) to prevent lock-ups
           -fixed i430MX South Bridge detection (thanks to Josh Little but he
            paid hard for that - his notebook doesn't work anymore because
            Intel 28F004-T support doesn't work)
           -fixed a _VERY_ NASTY BUG in Bulk Erase/Need Blanking chip support
            this one was there probably from the beginning of UniFlash and
            actually caused the same byte to be flashed to entire chip...
            This fixed almost all Bulk Erase/Need Blanking chips.
           -Nils Emil P. Larsen tested these Bulk Erase/Need Blanking chips,
            they're working CAT28F010, MX28F1000P, Intel 28F010 and also H.T.
            M21561 (which is actually MX28F1000P)
           -added support for Intel 860 chipset (Xeon) and ALi Aladdin V
           -added support for 1MB Flash ROMs with VIA VT82C596(A|B) and
            VT82C686(A) South Bridges
           -doesn't exit when no Flash ROM detected in PCI Option ROM mode
           -chiplist now pauses after each screen (no need for external more
            program) but not when stdout is redirected
           -fixed memory corruption when using -chiplist (thanks to Marusceac
            Claudiu Florin)
           -beep after successful flashing
           -heavy menu modifications, removed expert and debug modes - they're
            not needed anymore, add Home,PgUp/End,PgDown keys
           -removed BIOS info (I haven't seen it working anywhere)
           -added some Intel chips: 28F008-T series and 28F008-B series
           -added STMicroelectronics Flash ROMs: M28F256, M28F512, M28F101,
            M28F102, M28F201, M29F512B, M29F010B, M29F040(B), M29F080A,
            M29F016B, M29F002(B)(N)T, M29F002(B)B, M29F100(B)T, M29F100(B)B,
            M29F200(B)T, M29F200(B)B, M29F400(B)T, M29F400(B)B, M29F800AT,
            M29F800AB, M29F160BT, M29F160BB, M29W512B, M29W010B, M29W022BT,
            M29W022BB, M29W040(B), M29W200BT, M29W200BB, M29W400(B)T,
            M29W400(B)B, M29W800(A)T, M29W800(A)B, M29W160BB/DB, M29W004(B)T,
            M29W004(B)B, M29W008(A)T, M29W008(A)B, M50FW040 (FWH),
            M50FW080 (FWH) and M50LPW080 (LPC)
           -added Texas Instruments Flash ROMs: TMS28F210, TMS29xF040 and
            info about the others into docs
           -added Fujitsu Flash ROMs: MBM29F002TC, MBM29F002BC, MBM29F200TC,
            MBM29F200BC, MBM29F400TC, MBM29F400BC, MBM29F040C, MBM29F033C,
            MBM29LV160TE, MBM29LV160BE, MBM29PL160TD and MBM29PL160BD
           -modified Mosel support for SyncMOS chips F29C31004B and F29C31400T
           -fixed a bit PCI Option ROM enabling (for AGP cards), but flashing
            still does not work (looks like writes to ROM are ignored - like
            write protection, the Flash ROM is not responding to commands)
           -simplified the detection routine (note: new one is still not done)
1.21       -added support for SiS chipsets: 85C496+497, 85C501/5101/5501,
            5511, 5571,5591/5592, 5596, 5597/5598/5581/5120, 530, 540, 600,
            620 and 630 (all untested). It's unbelievable, but they are using
            5 (!) different methods to enable Flash ROM write and what's more,
            all their south bridges have the same device ID - $0008 (SiS 540
            and 630 can have either $0008 or $0018).
           -added support for SMSC VictoryBX-66 chipset
           -added support for Winbond/Symphony Labs W83C553F South Bridge
           -added support for ITE South Bridges IT8871F/2F and IT8888F
           -fixed Flash ROM detection - Device IDs can have even parity
           -changed sector structure array - can now hold more sectors (upto
            5*65535), 128b to 8MB each (see addchip.faq)
           -added support for Alliance Semiconductor Flash ROMs: AS29F040,
            AS29F002T, AS29F002B, AS29LV400T, AS29LV400B, AS29F200T,
            AS29F200B, AS29LV800T and AS29LV800B
           -added some AMD Flash ROMs: Am29LV001BT, Am29LV001BB, Am29LV010B,
            Am29F004BT, Am29F004BB, Am29LV040B, Am29LV081B, Am29LV008(B)T,
            Am29LV008(B)B, Am29LV800BT, Am29LV800BB, Am29SL800CT, Am29SL800CB,
            Am29F016(B), Am29F017B, Am29LV017B, Am29LV116BT, Am29LV116BB,
            Am29F160DT, Am29F160DB, Am29LV160BT/DT, Am29LV160BB/DB,
            Am29SL160CT, Am29SL160CB, Am29PL160CB, Am29F032B, Am29LV033C,
            Am29LV320DT, Am29LV320DB, Am29LV065D
           -added some Atmel Flash ROMs: AT29LV512, AT49x512, AT49x010,
            AT49x001(N)T, AT49x001(N), AT49x002(N)T, AT49x002(N),
            AT49x2048(A), AT49x4096(A), AT49x008AT, AT49x8192(A)T,
            AT49x8192(A), AT49x8011T, AT49x8011, AT49x160/161(4)T,
            AT49x160/161(4), AT49BV320T/321T, AT49BV320/321
           -added some Catalyst Flash ROMs: CAT28F010, CAT28F020, CAT28F102,
            CAT28F512
           -added EON Flash ROMs: EN29F040, EN29F080, EN29F800T, EN29F800B,
            EN29F002T, EN29F002B
           -added Hyundai Flash ROMs: HY29F002T, HY29F002B, HY29F040,
            HY29F040A, HY29F080, HY29F400T, HY29F400B, HY29F800T, HY29F800B,
            HY29LV160T, HY29LV160B
           -added IMT Flash ROMs: IM29F001T, IM29F001B, IM29F002T, IM29F002B,
            IM29F004T, IM29F004B, IM29LV004T, IM29LV004B
           -added some Intel chips: 28F256A, 28F512, 28F004Sx, 28F008Sx,
            28F008SA, 28F016Sx, 28F016S5/SA, 28F320J3A, 28F320J5, 28F640J3A,
            28F640J5, 28F128J3A
           -added ISSI (Integrated Silicon Solution) Flash ROMs: IS28F010 and
            IS28F020
           -removed Macronix MX28F1000PC and MX28F1000PPC (not existing)
           -added some Macronix chips: MX28F2000P, MX28F2000T, MX29F100T,
            MX29F100B, MX28F002T, MX28F002B, MX29F001T, MX29F001B,
            MX29F002(N)T, MX29F002(N)B, MX29F022T, MX29F022B, MX29F200T,
            MX29F200B, MX29F004T, MX29F004B, MX29F400T, MX29F400B, MX29LV004T,
            MX29LV004B, MX29LV400T, MX29LV400B, MX29F040, MX29LV040, MX29F080,
            MX29LV081, MX29F800T, MX29F800B, MX29LV008T, MX29LV800T,
            MX29LV800B, MX29F016, MX29L1611, MX29L1611G, MX29F1610A,
            MX29LV160T, MX29LV160B, MX29F1615, MX29L3211
           -added Mosel Vitelic Flash ROMs:
            V29C51000T, V29C51000B, V29C51001T, V29C51001B, V29C51002T,
            V29C51002B, V29C51004T, V29C51004B, V29C51400T, V29C51400B,
            V29C31004T, V29C31004B, V29LC51000, V29LC51001, V29LC51002
           -added PMC Flash ROMs: Pm39LV512R, Pm39LV010R, Pm29F002T,
            Pm29F002B, Pm29F004T/5V or Pm29LV104T, Pm29F004B or Pm29LV104B
           -added some SST Flash ROMs: 29SF512, 29VF512, 29SF010, 29VF010,
            29SF020, 29VF020, 29SF040, 29VF040, 39SF512, 39xF512, 39S010(A),
            39xF010, 39SF020(A), 39xF020, 39SF040, 39xF040, 39xF080, 39xF016,
            39xF200A, 39xF400A, 39xF800A, 39xF160, 49LF002(A), 49LF003A,
            49LF004, 49LF004A, 49LF008, 49LF008A, 49LF020, 49LF030, 49LF040,
            49LF080
           -added some Winbond Flash ROMs: W29C040, W49F002U, W49V002(A),
            W49V002F(A), W29F102 or W49F102, W49L102, W49F201, W49L201
           -some code size optimizations
1.20       -added support for these AMIC chips: A29001(1)T, A29001(1)B,
            A29010, A29002(1)T, A29002(1)B, A29400T, A29400B and A29040
            They're all sectored and use AMD commands.
            (For Matt Choudoir's broken ABIT KT7A with AMIC A29002T)
            A29002(1)T tested and works correctly, others are untested.
           -added support for newer VIA chipsets (all untested)
            Apollo MVP4, Apollo Pro, Apollo Pro Plus/133/133A,
            Apollo ProMedia, Apollo Pro 133Z/PM133, Apollo KX133,
            Apollo KT133(A), Apollo KT266, Apollo Pro 266.
            North Bridges: VT8501, VT82C691/693(A)/694X, VT82C693(A), VT8601,
            VT8605, VT8371, VT8363(A), VT8366, VT8633
            South Bridges: VT82C686(A), VT8231, VT8233 (last two may or may
            not work because I don't have datasheets).
            Plus some north bridges that aren't used anywhere (but are in
            VIA's INF file) - VT8653, VT8662, VT8615, VT8361, VT3133.
           -added support for AMD 750, 760 and 760MP chipsets (751,761 and
            762 north bridges, 756 and 766 south bridges). Registers are
            almost same as VIA. Untested.
1.19       -added support for Intel 8xx chipsets (Hub Architecture):
            i810, 810E, 810E2, 815, 815E(P), 815EM, 820, 820E, 840, 850
            with these I/O controller hubs:
            82801AA(ICH), 82801AB(ICH0), 82801BA(ICH2), 82801BAM(ICH2-M)
            (they're all not tested)
           -fixed ALi chipset detection
           -M1543 now support 512KB ROMs, but only some revisions of this chip
            can really support them (and according to ALi, there is no
            software way to detect that)
1.18       -I (Rainbow Software) am continuing the development of this program
            after it was abandoned for two years
           -added support for i440BX/ZX and i440GX chipsets
           -added support for ALi M1543 south bridge and ALi M1621 north
            bridge (ALi Aladdin Pro II chipset)
           -added some info about ASD chips into this DOC
           -added support for Intel 82802AB(4Mb)/AC(8Mb)Firmware Hubs
           -added support for Atmel AT49F002(N)T chip
1.17b      -fixed a bug in the -FORCE option, should work now
           -still having trouble correctly detecting flash chips, we can use
            all the input we can get on which chips are and aren't correctly
            identified by UNIFLASH !
1.17       -pre-1.20 release because of some important fixes, still working
            on some things we promised for 1.20, though
           -fixed flashing problems with Macronix & AMD chips
           -Integrated English & French version into one executable to avoid
            having to keep 2 versions synchronized
           -Cleaned up chipset detection
           -known bugs: chip detection still not 100% accurate
            (we're working on it, this will be fixed in v1.20)
1.16d      -Added AMI Flash Interface support
           -Added the "Additional BIOS Info" option
           -Added the Macronix MXIC 28F1000PPC/12V chip
            (not officially released by Adam's request)
1.16c      -Made the detection routine more accurate
1.16b      -Removed some (debugging?) code that messed up detection
1.16       -Fixed a stupid bug in the chip detection part, which made it
            impossible to identify Atmel chips, for example.
           -Tried to add TI chips and after long hours of work and of
            downloading datasheets figured out that TI chips are just
            "remarked" AMD & Intel chips (the same Mfg & Id numbers), so TI
            chips will be recognised as AMD or Intel ones.
           -Made the source code clearer. Wrote a FAQ explaining how to add
            your own chips.
           -Added the Intel 28F010/12V and 28F020/12V chips
           -Translation of the whole thing to french. The english 1.16 version
            equals french 1.00FRENCH version
1.15       -Fixed problems with AMD flash chips
           -Added VIA 82C570 chipset support
           -Tested Intel 28F001BX-T/28F001BN-T support
           TO DO before final release of V1.15: fix extended memory detection,
           does not work ok on a friends' system ...
1.14       -Added Macronix support
           -Added SST 28EE011 flash chip
           -Added AMD Am28F010, Am28F010A, Am28F020, Am28F020A, Am28F256
            Am28F256A, Am28F512 and Am28F512A flash chips
           -Removed valid PCI ROM check so it is possible to flash a ROM on a
            PCI card that does not (yet) contain a valid ROM
           -Added some safety stuff:
            -cache disabled during flashing (having the cache enabled seems to
             be a problem with some Cyrix chips (or chip/chipset combo's ?))
            -interrupts now fully disabled during actual communication with
             the flash chip for increased reliability
           -added multiple flash chips/single ROM image support (experimental)
1.13       -Added Catalyst support
           -Added OPTi chipset support (for 82C750 'Vendetta')
           -Added Intel 28F400/28F004 flash chips
           -Completely rewrote PCI option ROM support (still experimental)
1.12       -Fixed problem ID-ing Intel chips (oops)
           -Made first attempt at supporting PCI option ROMS (experimental)
1.11       -Added Atmel support
1.1        -Fixed memory allocation bug with sectored (Intel,AMD) flash ROM
            chips
           -Added VIA chipset support
1.0        -First public release


9.1            KNOWN BUGS
-------------------------
 - Intel 28F004-T doesn't work
 - PCI Option ROM Flashing (-pcirom parameter) doesn't work on many cards
 - 256KB BIOSes don't work on some i430VX/HX boards (AWDFLASH works!)
 - Some VIA and AMD chipsets don't work - maybe because of non-standard flash
   write protection on some boards.
 - Garbage on screen instead of flashing - on Asus P5A board with Aladdin V
   and 256K Flash ROM, but it works OK on Micronics C200 (same chipset and
   128K Flash ROM). On PC Partner VIB8x4DS board with VIA Apollo VPX, UniFlash
   flashes the SyncMOS F29C51002T chip OK but then hangs with garbage on
   screen. This problem appears to be associated with SyncMOS Flash ROMs only.
 - Many Abit boards do not work - looks like undocumented write protection


9.2            What's missing
-----------------------------
 - Support for ServerWorks, UMC, new VIA and new SiS chipsets because
   datasheets are unavailable (these companies are simply ignoring e-mails)
   I can't do much with only "unofficial" info.
 - Support for some exotic Flash ROMs like Intel 82802AA 2mbit Firmware Hub or
   Bright BM29FS040 (no datasheets available)


10.0           Compatibility tests
----------------------------------

Here is a list of tested & working motherboards/Flash ROM chip combinations.

Manufacturer  | Model + revision   | Chipset        | Flash ROM chip used
------------------------------------------------------------------------------
ASUSTeK       | T2P4 rev 2 & 3.10  | Intel 430HX    | SST 29EE010/5V
Expertboard   | 8661               | Intel 430VX    | Winbond W29EE011/5V
Soyo          | 5TA2               | Intel 430FX    | SST 29EE010/5V
Shuttle       | Hot-569            | Intel 430TX    | Atmel AT29C010A/5V
Shuttle       | Hot-565            | Intel 430TX    | Winbond W29EE011/5V
Shuttle       | Hot-603            | AMD 640        | Winbond W29EE011/5V
ASUSTeK       | P2B rev 1.10       | Intel 440BX    | Winbond W29EE011/5V
PC Chips      | M726 v3.4A         | Aladdin Pro 2  | ASD AE29F1008/5V
Abit          | BX6 rev. 2         | Intel 440BX    | AMIC A29002T/5V
MicroStar MSI | MS-5120 ver 1      | Intel 430FX    | Winbond W29EE011/5V
Abit          | BE6-R2             | Intel 440BX    | Winbond W29C020/5V
DFI           | P2-XLX             | Intel 440LX    | Winbond W29EE011/5V
FIC           | PT-2006            | Intel 430VX    | Intel 28F001/12V
PC Chips      | M726 v3.4A         | Aladdin Pro 2  | Winbond W29C020/5V
Abit          | BX6-R2             | Intel 440BX    | Winbond W29EE011/5V
Abit          | BX6-R2             | Intel 440BX    | Winbond W29C020(C)/5V
Abit          | BX6-R2             | Intel 440BX    | SST 29EE010/5V
Abit          | BX6-R2             | Intel 440BX    | CAT28F010/12V
Abit          | BX6-R2             | Intel 440BX    | Macronix MX28F1000P/12V
Abit          | BX6-R2             | Intel 440BX    | Intel 28F010/12V
AOpen         | AP5C/P             | Intel 430FX    | SST29EE010/5V
Gigabyte      | GA586SG            | SiS 5591+5595  | Atmel AT29C010A/5V
Chaintech     | 5IFM0              | Intel 430HX    | Macronix MX29F001B/5V
ASUSTeK       | P2B rev 1.10       | Intel 440BX    | Atmel AT49F002T/5V
Micronics     | C200               | Aladdin V      | SST 29EE010/5V
MicroStar MSI | MS-5120 ver 1      | Intel 430FX    | SST 29EE010/5V
MicroStar MSI | MS-5120 ver 1      | Intel 430FX    | Macronix MX28F1000P/12V
MicroStar MSI | MS-5120 ver 1      | Intel 430FX    | H.T. M21032T/12V
PC Chips      | M726 v3.4A         | Aladdin Pro 2  | Macronix MX29F002(N)T/5V
PC Chips      | M726 v3.4A         | Aladdin Pro 2  | EON EN29F002NT/5V
Mercury/Kobian| KOB 694X FSX r1.0  | Apollo Pro 133A| SST 39VF020/3V (PLCC32)
QDI           | LegendX            | Intel 440LX    | Winbond W29C020(C)/5V
PC Chips      | M741LMRT           | SiS 620+5595   | SST 29EE010/5V
PC Partner    | VIB8x4DS           | Apollo VPX     | SyncMOS F29C51002T/5V
Soyo          | 5EMA+ v1.1         | Apollo MVP3    | Macronix MX29F001T/5V
LuckyStar     | K7VAT+             | Apollo KT133   | Winbond W29EE011/5V
LuckyStar     | K7VAT+             | Apollo KT133   | Winbond W29C020(C)/5V
LuckyStar     | K7VAT+             | Apollo KT133   | SST 39SF020(A)/5V
Chaintech     | 7AIA5              | Apollo KT133A  | Winbond W49F002U/5V
PC Chips      | M571               | SiS 5598       | Winbond W29EE011/5V
PC Partner    | P5VB3+ Rev. B      | Apollo MVP3    | AMD Am29F010A/5V
Mercury/Kobian| KOB 630E FSFx r1.1 | SiS630+IT8705F | EON EN29F002T/5V
ECS           | K7S5A              | SiS735+IT8705F | Winbond W49F002U/5V
PowerTech     | MB532 v1.0         | Intel 430FX    | SST 29EE010/5V
Matsonic      | MS6260S rev.1.6A   | Aladdin V      | ASD AE29F1008/5V
PC Partner    | TXB820DS           | Intel 430TX    | Atmel AT29C010A/5V
PC Chips      | M570 v1.3          | SiS 5591+5595  | Atmel AT29C010A/5V
Gemlight/DTK  | GMB-P57IPS-V1      | Intel 430TX    | Winbond W29EE011/5V
PC Chips      | M918 V1.2A         | FinALi 486     | H.T. M21032T/12V
PC Chips      | M918 V1.2A         | FinALi 486     | Macronix MX28F1000P/12V
PC Chips      | M918 V1.2A         | FinALi 486     | Winbond W29EE011/5V
PC Chips      | M918 V1.2A         | FinALi 486     | Atmel AT29C010A/5V
GVC/BCM       | FR500              | SiS 5598       | AMD Am29F002(N)(B)T/5V
Asus          | A7V266-E           | Apollo KT266A  | SST 49LF020/3V
PC Chips      | M537DMA            | Apollo VPX     | H.T. M20271H/12V
QDI           | BrillianX 1        | Intel 440BX    | SST 29EE020/5V
ECS(?)        | TD-4IP-UMC-AIO     | UM8881F+8886BF | Winbond W29EE011/5V
PC Chips      | M919 V3.4B/F       | UM8881F+8886BF | Macronix MX28F1000P/12V
PC Chips      | M919 V3.4B/F       | UM8881F+8886BF | Winbond W29EE011/5V
PC Chips      | M715 V1.2A         | Intel 440LX    | ASD AE29F1008/5V
Zida          | 4DPS               | SiS 85C496+497 | SST 29EE010/5V
PC Chips      | M571LMR v5.0       | SiS 5598       | Macronix MX29F001T/5V
Iwill         | P55A2 v1.0         | Intel 430FX    | Intel 28F001BX/BN-T/12V
Asus          | P2B-F              | Intel 440BX    | Winbond W29C020(C)/5V
QDI           | WinneX 2 P6I810/W2 | Intel 810      | Intel 82802AB/3.3V
Asus          | P5A Rev 1.04       | ALi Aladdin V  | SST 39SF020(A)/5V
AOpen         | AP43               | SiS 85C496+497 | SST 29EE010/5V
FIC           | PT-2006 v2.2       | Intel 430VX    | Winbond W29C020(C)/5V
FIC           | PT-2006 v2.2       | Intel 430VX    | H.T. M38705/12V
MicroStar MSI | MS-5120 ver 1      | Intel 430FX    | Macronix MX28F1000/12V
PC Chips      | Unknown Socket 4   | ALi Aladdin    | ASD AE29F1008/5V
PC Chips      | Unknown Socket 4   | ALi Aladdin    | Macronix MX28F1000/12V
c't Flasher   | 8-bit ISA card     |                | AMD Am29F040B/5V
c't Flasher   | 8-bit ISA card     |                | Catalyst CAT28F010/12V
c't Flasher   | 8-bit ISA card     |                | Intel 28F001BX/BN-T/12V
QDI           | Titanium IB+ 1.0   | Intel 430TX    | SST 29EE010/5V
QDI           | KinetiZ 7B 1.0     | Apollo KT133   | SST 39SF020(A)/5V
QDI           | Advance 3 1.0      | Apollo MVP3    | SST 29EE020/5V
QDI           | BrillianX 9 2.0    | Intel 440BX    | Winbond W29C020(C)/5V
PC Chips      | M598MR v1.3B       | SiS 530        | Macronix MX29F002(N)T/5V
Abit          | BX133-RAID         | Intel 440BX    | PMC Pm29F002T/5V
QDI           | Advance 5/133 1.0  | Apollo Pro 133 | Winbond W29C020(C)/5V
c't Flasher   | 8-bit ISA card     |                | AMIC A29002T/5V
c't Flasher   | 8-bit ISA card     |                | AMIC A290021T/5V
c't Flasher   | 8-bit ISA card     |                | AMIC A29002T/5V
c't Flasher   | 8-bit ISA card     |                | ASD AE49F2008/5V
MicroStar MSI | MS-6337 v3.0       | Intel 815EP    | SST 49LF002(A)/3.3V
Procomp       | BVK2A=BioStar M7VKB| Apollo KT133(A)| AMIC A29002(1)T/5V
LiPPERT       | Thunderbird        | Intel 8255GME  | Intel 82802AC/3.3V
LiPPERT       | Thunderbird        | Intel 8255GME  | SST 49LF008A/3.3V
LiPPERT       | Thunderbird        | Intel 8255GME  | Atmel AT49LW080/3.3V
Gigabyte      | GA-6WMMC7-1        | Intel 810      | Intel 82802AB/3.3V
AOpen         | AP5CS              | SiS 5501       | Intel 28F010/12V
LuckyStar     | 6VBX2 rev 1.1      | Apollo Pro     | Winbond W29EE011/5V
Abit          | KG7-Lite           | AMD761+686B    | PMC Pm29F002T/5V
LuckyStar     | 5MVP3 rev 4.0+     | Apollo MVP3    | Winbond W29C011/5V
c't Flasher   | 8-bit ISA card     |                | SST 39VF020/3V (PLCC32)
Gemlight/DTK  | GMB-P6BIAK-V1 RB   | Intel 440BX    | Winbond W29C020/5V
ASRock        | K7S8XE+ r1.03      | SiS748+W83697HF| Winbond W49F002U/5V
ECS           | K7VTA3 rev. 1      | VIA KT266A     | Winbond W49F002U/5V
Mercury       | KOB P4X266NFSX v1.0| VIA P4X266     | Winbond W49F002U/5V
c't Flasher   | 8-bit ISA card     |                | SST 29EE010/5V
A-Trend       | ATC-1545           | OPTi Viper M   | SST 29EE010/5V
c't Flasher   | 8-bit ISA card     |                | Macronix MX29F001T/5V
Abit          | PT5 rev 2.11       | Intel 430FX    | Macronix MX28F1000P/12V
Asus          | A7V133 rev 1.05    | Apollo KT133A  | EON EN29F002NT/5V
Asus          | TXP4 rev 1.02      | Intel 430TX    | Intel 28F001BX/BN-T/12V
Asus          | TXP4 rev 1.02      | Intel 430TX    | Macronix MX28F1000P/12V
Gigabyte      | GA-586ATV rev 1A   | Intel 430VX    | SST 29EE010/5V
Gigabyte      | GA-7DPXDW-P        | AMD 760MPX     | SST 49LF020A/3V
Abit          | BF6                | Intel 440BX    | Winbond W29C020C/5V
Microstar MSI | MS-6337LE5         | Intel 815EP    | SST 49LF002(A)/3.3V
ECS           | K7VZA rev 3.0      | Apollo KT133A  | Winbond W49F002U/5V
Microstar MSI | MS-6153VA v2.1     | Apollo Pro 133 | Winbond W29C020C/5V
Abit          | KT7-RAID v1.02     | Apollo KT133   | Winbond W49F002U/5V
Abit          | KT7A v1.0          | Apollo KT133A  | PMC Pm29F002T/5V
QDI           | LegenX V           | Intel 440LX    | SST 29EE020/5V
DTK           | PRM0080I VBX RG    | Apollo Pro Plus| Winbond W29C020C/5V
ECS           | K7S6A rev 1.0      | SiS745+IT8705F | EON EN29F002T/5V
Asus          | A7V266 rev.1.07.   | Apollo KT266   | SST 49LF020/3V
DFI           | CS62-TC rev.B      | Intel 815EP    | SST 49LF002A/3.3V
Asus          | A7V8X-X            | Apollo KT400A  | SST 49LF020/3V
Abit          | ZM6                | Intel 440ZX    | Winbond W29C020(C)/5V
Asus   [-ASUS]| A7V133-C rev.1.05. | Apollo KT133A  | Winbond W49F002U/5V
Gigabyte      | GA-586VX rev 3.33  | Intel 430VX    | SST 29EE010/5V
Shuttle       | AV11 v3.0          | Apollo Pro 133 | Winbond W29C020(C)/5V
AOpen         | MX36LE             | Apollo ProMedia| SST 39SF020(A)/5V
PCPartner     | K333ASA-270        | Apollo KT333   | Winbond W49F002U/5V
MicroStar MSI | MS-6340 ver.1      | Apollo KT133   | Winbond W49F002U/5V
MicroStar MSI | K7T266 Pro2 v2.0   | Apollo KT266   | Winbond W49F002U/5V
MicroStar MSI | KT3 Ultra 2-R v1.0 | Apollo KT333   | Winbond W49F002U/5V
Asus          | TUV4X              | Apollo Pro 133T| SST 39SF020(A)/5V
TrangBow      | TB-6BX             | Intel 440BX    | Atmel AT29C010(A)/5V
Abit          | BE6                | Intel 440BX    | Winbond W29C020(C)/5V
Abit          | VA-20              | VIA KM400A     | EON EN29F002(A)T/5V

Note: [-ASUS] means that Asus flash interface (-ASUS parameter) must be used

UniFlash does NOT work on boards made by Intel. They use custom BIOS write
protection and have soldered Flash ROM chips (often in TSOP package) - so
there's nothing to hot-flash. They have recovery mode (activated by jumper)
in case something goes wrong with the BIOS.


11.0            Beta testing stuff
----------------------------------

We would like to extend our thanx to the following people who've been
very helpful with beta testing this program.
NOTE: YOU can be on this list too! All you have to do is send
information on a system where UNIFLASH doesn't work and help with
getting it to work on that system.
Please help us in making UNIFLASH the universal and reliable tool we had
in mind when we started this project. Thanx in advance!

                The heroes gallery (random order)
                ---------------------------------
                Enrico Antongiovanni
                Wim Bervoets
                Michael L. Croswell
                Polyvios Simopoulos
                Matthias David Siebler
                Matt Choudoir
                Nils Emil P. Larsen (really big thanks)
                Josh Little
                Tom Wiener
                Dennis Schulz (BIG thanks - provided 5 chips and wanted only
                               one of them back!)
                Miha Ovcak
                Alejando Pelaez
                RusH
                David Russell
                Highlander
                Kuzvesov
                Spec
                Ernst Ahlers (c't Flasher author)
                Alfred Glass, Alex Student, Jurgen Stauffer
                  at LiPPERT Automationstechnik GmbH
                Marc E.
                Marek Palka
                Peter Krauss
                Richard Guinness


12.0            Biz support
---------------------------

We would like to thank the following people at the various flash ROM
and chipset manufacturers for their support (in random order):

            Scotts Chen at Macronix International Co., Ltd.
            Darlene Browne at Acer Laboratories, Inc., (USA), Administrator
            Niel Smith, Application Engineering Manager, ALI USA
            Henry Ho at Macronix International Co., Ltd.
            Michael Solinas at Silicon Storage Technology, Inc. (SST), USA
            Phillip Chang at Megawin Technology Co., Ltd.
            Christopher Emerson and David Chu at Cypress Semiconductor Corp.


Thanks goes to Intel - all datasheets are freely available on their web page
upon release of new hardware. Guess why are Intel chipset the most compatible.
The companies in the list below should take this as an example of developer
support.

I would like NOT to THANK TO following COMPANIES for providing NO SUPPORT
for independent developers and NOT REPLYING TO E-MAILS:

            Silicon Integrated Systems (SiS)
            United Microelectronics Corporation (UMC)
            ServerWorks
            NVIDIA Corporation

I finally got some real e-mail from VIA, but only bad news:
"At this time, datasheets are only available to manufacturers under non
disclosure agreement who have a genuine application they are developing. This
policy is currently under review but at this time I cannot provide the
datasheets to you."

============================== END OF DOCUMENT ===============================
Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web5, load: 0.60