XTIDE Universal BIOS
XTIDE Universal BIOS makes it possible to use ATA hard disks or Compact Flash cards on old PC's. The XTIDE Universal BIOS can be used on any IBM PC, XT, AT or 100% compatible system.
Official Project Site
The official project site is hosted by Lo-tech.
License of Use
The XTIDE Universal BIOS project is run under GNU General Public License version 2.
In addition to that license through which the source code is made available, binary downloads provided from Lo-tech.co.uk are subject to the Lo-tech Terms and Conditions of Use.
Building from Source
For those wishing to build from source, for example for specific functionality not provided by the standard builds, instructions are maintained on the project site here.
Binary Downloads
Each release is automatically compiled, and the binaries are available at xtideuniversalbios.org/binaries.
The binary images must be configured to the requirements of the machine using XTIDECFG.COM, saved, and finally written out to the EEPROM or EPROM.
Configuring the BIOS
The provided binaries must be configured before use. This is done with the XTIDECFG.COM utility, which is included in the download. This is an MSDOS utility. The steps to get the BIOS onto the machine are:
- Download the latest build from xtideuniversalbios.org/binaries:
- XTIDECFG.COM, and
- The appropriate XT_xxx.bin file (see table below)
- Copy the two files to an MSDOS bootable floppy disk
- Boot the machine from the floppy
- Configure the BIOS binary by running XTIDECFG.COM
- Open the XT_xxx.bin file
- Configure according to system requirements
- Save the file
- For EPROMs or read-only cards (such as network cards), write out the configured file using an EPROM programmer off-system
- For 2816/2864 series EEPROMs in supported cards such as the original XTIDE, write the configured file directly to the EPROM using the XTIDECFG.COM utility
- For 29010/29020 EEPROMs as used by most Lo-tech boards, write the configured file using the Lo-tech XT-CF flash utility (see below)
- Reboot the machine and run FDISK and FORMAT as required
Programming Lo-tech Storage Boards
Lo-tech storage boards use SST 29xxx series EEPROMs, which cannot be written to by the XTIDECFG.COM utility. However, the BIOS file (XT_xxx.bin) still needs to be configured and saved using XTIDECFG.COM, before the file can be written to the Lo-tech boards using the Lo-tech XT-CF flash utility.
For users of Lo-tech CompactFlash based boards, a pre-configured XTIDE Universal BIOS (built on r566 is provided, which can be written directly to the cards using the Lo-tech XT-CF flash utility without the additional configuration step. See here for more information.
For users of the Lo-tech 8-bit IDE Adapter, a special build based on r567 is available - see here.
XTIDE BIOS Files
xtideuniversalbios.org/binaries The pre-built binaries download centre provides a number of builds for specific use-cases as detailed below.
File Name | Use-Case | Notes |
---|---|---|
ide_386.bin | Any PC with an 80386 or higher CPU | Standard build (8KB) |
ide_386l.bin | Any PC with an 80386 or higher CPU | Large build (10KB) |
ide_286.bin | Any PC with an 80286 or higher CPU | Standard build (8KB) |
ide_286l.bin | Any PC with an 80286 or higher CPU | Large build (10KB) |
ide_tiny.bin | Any PC | Tiny build (4KB) |
ide_xt.bin | Any PC/XT class machine with 8088 or 8086 CPU (or above) | Standard build (8KB) |
ide_xtl.bin | Any PC/XT class machine with 8088 or 8086 CPU (or above) | Large build (10KB) |
ide_xtp.bin | Any PC/XT class machine with NEC V20/V30 CPU (or equivalent providing 80186 instruction set) | Standard build (8KB) |
ide_xtpl.bin | Any PC/XT class machine with NEC V20/V30 CPU (or equivalent providing 80186 instruction set) | Large build (10KB) |
The XTIDECFG.COM utility is used to configure any of the above binary files, prior to writing to the EEPROM. EEPROMs can be written in-system to Lo-tech boards using the Lo-tech XT-CF flash utility.
The standard builds include a 'hot-key' user interface where users can boot from floppy by pressing 'A' at the initialisation screen and support for serial-connected drives. Large builds also include a full boot menu. The Tiny build includes only the most basic functionality, to enable the use of the BIOS on 4KB ROMs (serial devices are not supported).
Performance
A number of factors impact the performance of devices operating via the XTIDE Universal BIOS.
- Choose the BIOS binary file that most closely matches your system.
- If you have a V20 or V30 CPU, use the ide_xpl.bin file. This makes use of loop instructions not available on 8088/8086 and will provide a big performance increase on these systems.
- Even if you have an 'XT Class' 80286 based system, such as the Tandy 1000TL, use the ide_286.bin file.
- On slower machines, the multi-sector transfer capabilities of the storage device itself can greatly impact performance. Some devices, in particular many CompactFlash cards, allow the system to transfer only one sector at a time (512 bytes), which means the BIOS code must loop through sector read request code every 512 bytes. This is much slower than transferring a larger block of data in one go, as would be possible with a device supporting multi-sector transfers.
- Many 8-bit ISA 'XTIDE' derivatives support '16-bit transfers' using port mapping techniques that offload the effort of breaking 16-bit transfers into two 8-bit transfers to the system bus interface unit. This is known as 'Bus Interface Offload Mode' in the XTIDE Universal BIOS (BIU mode) and offers significant performance advantages for 8-bit ISA cards such as the original XTIDE card and most Lo-tech boards.
- When using the XTIDE Universal BIOS on later machines (386/486/Pentium), be sure to enable ROM shadowing in the BIOS for the region where the ROM is stored. For example, if the ROM is at C800h, enable ROM shadowing for C800h to CA00h (assuming standard 8KB build). This will greatly improve performance, since otherwise each instruction in the ROM code must be fetched over the slow 8-bit ISA bus, instead of from system memory or CPU cache.
See Also
- Former project hosting: https://code.google.com/p/xtideuniversalbios/
- VintageComputer.com BIOS v2.0 Development Thread