phat code A bus station is where a bus stops. A train station is where a train stops. On my desk I have a workstation.
Main

Downloads

Articles

Links

Downloads

Other

search for in   All BASIC Code / PHP / Misc
 

Super PC/Turbo XT BIOS 2.5

AuthorPlasma (Jon Ρetrosky)
Emailplasma@phatcode.net
Websitehttp://www.phatcode.net/
ReleasedMay 2 2012
PlatformAll
LanguageAssembly (TASM)
SourceYes
BinariesYes
Summary

This is a modification of the widely-distributed "(c) Anonymous Generic Turbo XT Anonymous" BIOS, which is actually a Taiwanese BIOS that was reverse-engineered by Ya'akov Miles in 1987.

Back in 2008 I put together an XT system and wanted a BIOS that supported booting from a hard drive. The Generic XT BIOS did not support this, but since source code was provided it was easy to add this feature. While I was at it, I fixed some bugs I found, added more features, and cleaned up the code. Initially I only modified this BIOS for my computer, but I decided I might as well release my new version in case it proves useful for someone else.

In 2011 I was informed that this BIOS did not work correctly with the original IBM PC (5150). I made some additional changes and now the 5150 is supported as well as the 5160 (XT) and just about all PC/XT clones.

You do not need to have a turbo motherboard to use this BIOS, but if you do, then you can use the "CTRL ALT -" key combination to toggle the computer speed between fast and slow. When the speed is toggled, the PC speaker will sound a high/low pitched blip to indicate the system speed selected.

Version 2.5 Changes:


Added

  • Option to clear user-defined memory region in upper memory area (UMA) for systems with non-EMS UMBs. These UMBs should be cleared before use or parity errors may occur. Define CLEAR_UMA and set the region with UMA_START and UMA_END. Because of ROM space limitations, TEST_VIDEO must be disabled if using CLEAR_UMA.
  • Option to display ROM BASIC boot prompt during warm boot (define WARM_BOOT_BASIC).


Version 2.4 Changes:


Added

  • Improved support for 101-key enhanced keyboards (define ENHANCED_KEYB to enable)
  • CPU test now optional (define TEST_CPU). Must be disabled if ENHANCED_KEYB is enabled due to ROM space limitations.
  • Video memory test now optional (define TEST_VIDEO). Applies only to Mono/Herc/CGA cards; video memory is never tested on EGA/VGA cards.


Changed

  • Int 16h extended keyboard functions now fully implemented (ah=00h/01h/02h/05h/10h/11h/12h). Note that ENHANCED_KEYB does not need to be enabled to use these functions.
  • KEYB_SHIFT_FIX removed; use ENHANCED_KEYB instead.
  • NO_MEM_CHECK now faster; only zeroes out memory and does not blank check.
  • Removed Int 15h hooks for future expansion BIOS (not used)


Version 2.3 Changes:


Changed

  • Int 16h enhanced keyboard functions (ah=10h/11h/12h) now mapped to standard functions (ah=00h/01h/02h) for programs that expect enhanced keyboard support.


Version 2.2 Changes:


Added

  • Make batch file generates proper 32K ROMs for IBM 5155 and 5160


Bug Fixed/Changed

  • FAST_MEM_CHECK option now clears memory after testing. This fixes problems with programs unable to find free interrupt vectors. However the "fast" memory check is now slower. For the fastest startup you can now disable the memory check with the NO_MEM_CHECK option.


Version 2.1 Changes


Added

  • Optional define for IBM PC 5150 support (config switches on motherboard are read differently)
  • Original IBM PC 5150 Int 2 (NMI) entry point now supported for better IBM PC compatibility
  • Optional define to disable turbo support completely (for non-turbo 4.77 MHz systems)
  • Int 15h hooks are called for future expansion BIOS to display drives and boot menu if present
  • Optional define to set boot delay length


Changed

  • Hard drive boot sector load is now only attempted 2 times rather than 4
  • Boot delay now based on system timer rather than fixed loops, useful for very fast systems
  • Pressing any key during boot delay message will end delay and start booting


Bug Fixes

  • Boots to BASIC if no floppy or hard drive controller (previously would hang)
  • Screen cleared after error if user chooses to continue booting


Version 2.0 Changes:


Code

  • Changed from MASM 4.x to TASM IDEAL mode
  • Cleaned up source code: added procs, more descriptive labels (...still some spaghetti due to necessary hard-coded entry points)


Bug Fixes

  • Warm boot flag restored after external ROM initialization code (fixes problem where CTRL+ALT+DEL does cold boot instead of warm boot)
  • Equipment Flag in BIOS Data Area now set correctly
  • Fixed cursor shape when using Hercules card (was in the middle of the character before)


Added

  • Optional define to always boot up in turbo mode (TURBO_BOOT)
  • Optional define for fast memory check (FAST_MEM_CHECK); uses one test pattern only
  • Optional define for 101-key keyboard shift+nav keys work-around (KEYB_SHIFT_FIX)
  • BIOS is now EGA/VGA aware; will only test video memory on Mono/Herc/CGA cards
  • Nicer boot screen with color support for CGA/EGA/VGA
  • Processor and Math Coprocessor detection
  • Memory test displays count every 8K; speeds up memory check on fast systems with slow video cards
  • User has option to boot ROM BASIC even if bootable disk present
  • Supports booting from hard drive (if external controller ROM present)
  • Toggling turbo on/off sounds high/low-pitched beep rather than changing cursor shape

 

Downloads

Click the filename to download the file.

Name Size Filename
Super PC/Turbo XT BIOS 2.5 641 kb pcxtbios25.zip
Super PC/Turbo XT BIOS 2.4 640 kb pcxtbios24.zip
Super PC/Turbo XT BIOS 2.3 639 kb pcxtbios23.zip
Super PC/Turbo XT BIOS 2.2 645 kb pcxtbios22.zip
Super PC/Turbo XT BIOS 2.1 612 kb pcxtbios21.zip
Turbo XT BIOS 2.0 646 kb xtbios2.zip
 
 

Screenshots

Click to see the full image.

 
Boot screen with 8088 and MDA
 
Boot screen with V20 and CGA
 
Boot screen with 8088 and VGA