• Please review our updated Terms and Rules here

XTIDE Universal BIOS

Most excellent work!

I will probably have a chance to give this a shot tonight.

I'll be *extremely* impressed if you manage to squeeze CDROM boot and HD FDD support and everything else you've listed into an 8k image. ;)
 
Is this the one that was mentioned somewhere in the big XTIDE thread as being suitable for putting in a spare ROM socket (like a network card) and providing for large drives on old systems with BIOSes that wouldn't otherwise support them?
 
yes, you could do that, provided you had a way of disabling the BIOS that the motherboard or plug-in card may be executing to support your hard drives.
You don't want 2 hunks of software trying to talk to the same piece of hardware.
 
I'll be *extremely* impressed if you manage to squeeze CDROM boot and HD FDD support and everything else you've listed into an 8k image. ;)

At the moment about 4kB is used. HD FDD support must be kept minimal since FDD controller is far more complex than IDE controller. Minimal support would mean PIO transfers only and no support for 2.88MB drives or any other features that later controllers support. Even then i'm not sure that there will be enough space left. I'll try once the most important IDE features are implemented and tested to work.

I have no idea what CD-ROM boot would require. BIOS build-in setup is another thing that might never happen. 8kB should be enough for all the other features that i listed.
 
Is this the one that was mentioned somewhere in the big XTIDE thread as being suitable for putting in a spare ROM socket

That is possible. At the moment there is no support for 16-bit transfers. I should be able to support them soon and after that XTIDE won't be required (but it is still useful as an EEPROM programmer even when no drives are connected to it).
 
Most excellent work!

I will probably have a chance to give this a shot tonight.

I'll be *extremely* impressed if you manage to squeeze CDROM boot and HD FDD support and everything else you've listed into an 8k image. ;)

Is there any reason why a bigger rom could not be used, though of course you'd need to patch in another address line and possibly modify the decoder slightly.

aitotat, are you going to release the source ?

Cheers.

Phill.
 
Some people on this forum are so talented they probably could design a bank switching daughterboard that goes into the BIOS ROM socket and through some I/O location (?) switches in another block of 4-8K. :lol:
 
aitotat, are you going to release the source ?

I can send sources to anyone that wants it as long as any modifications will be send back to me. XTIDE Universal BIOS is written in 100% Assembly using Nasm syntax. It compiles with Nasm and Yasm (i recommend Nasm since Yasm has a buggy CPU directive).
 
I've finally completed configuration program for XTIDE Universal BIOS. It has build-in flash utility so flash.com will no longer be needed. I'll release configuration program with XTIDE Univeral BIOS beta3. That should take maybe two weeks.

I have found some bugs on beta2:
  • Slave drives are not detected without Master
  • XTIDE Univeral BIOS does not work when system has hard disks controlled by some other BIOSes
 
Excellent work, aitotat! :)

I'm particularly happy about the improved XT+ version for V20/V30 systems. It's so awesome to see the additional abilities of these CPUs being put to good use for improved disk I/O performance. :)

I have a suggestion, though: with all these releases, beta versions, special hardware-specific versions, and so on, wouldn't it be easier both for you and for us if you checked the code into an SCM repository (such as Subversion or Git), perhaps in a public repository such as SourceForge or Google Code?
 
I think that i'm going to release few beta versions before publicly releasing sources. I'll release sources on SourceForge or Google Code when BIOS has been tested to be stable enough. What open source license would be the best for this kind of project?

I was ready to release beta3 since it works nicely on my 286 (no more conflicts with other HD bioses). I decided to do a quick test with Tandy 1000 SX and it froze during drive detection.

I changed timeouts to use system timer and probably Tandy BIOS hasn't initialized system timer when it starts to search ROMs. It seems that ROM initialization routines just can't rely any hardware to be initialized or BIOS functions to be usable.
 
I changed timeouts to use system timer and probably Tandy BIOS hasn't initialized system timer when it starts to search ROMs. It seems that ROM initialization routines just can't rely any hardware to be initialized or BIOS functions to be usable.

yep, there's all kinds of hurdles like that, and it's different from machine to machine. I found that my z8088 was able to accept keyboard input during rom scan/init, but not my XT machine. Lots of junk like this will come up, but we'll get through it and this BIOS will be spectacular.
 
very cool. something i was thinking about earlier tonight involving the XT IDE BIOS was to hijack the ROM's BIOS briefly when the PC's BIOS runs it to jump to a small bit of code i'd place after all the normal XTIDE BIOS code that fills in the BIOS data area in RAM with the parameters of a 1.44 MB floppy drive. then it would return back to the normal code for execution.

that way, it would be possible to load MS-DOS on something other than a 360 KB disk in an XT. DR-DOS works anyway because it manually probes the controller hardware (the code is all fit into the boot sector) instead of assuming it's 360 KB.

the same procedure as what i described in the first paragraph is actually implemented in the boot procedure of a MINIX root floppy in an XT. they have a tiny program that fills out the parameter info into BIOS data RAM that runs from the first sector of a separate floppy. you boot that floppy, then pull it out and insert the regular MINIX boot disk which then works normally.

you need a 1.44 MB disk controller card obviously, but it gets around the BIOS being ignorant of it. that'd be a pretty useful feature imo.
 
I've finally completed configuration program for XTIDE Universal BIOS. It has build-in flash utility so flash.com will no longer be needed. I'll release configuration program with XTIDE Univeral BIOS beta3. That should take maybe two weeks.

I have found some bugs on beta2:
  • Slave drives are not detected without Master
  • XTIDE Univeral BIOS does not work when system has hard disks controlled by some other BIOSes

aitotat: thanks for the hard work on this. some pretty nice improvements it looks like. lots of stuff i'd have love to do myself if i had a little better knowledge of assembly.

i'm going to try your latest beta. dude if you get el torito cd-rom booting work, i want to have your children. even though it won't do anything else, it would give me a chuckle to boot an XP CD-ROM and at least see "the setup is analyzing your hardware configuration" message on a 25 year old computer... before it locks up.
 
aitotat: thanks for the hard work on this. some pretty nice improvements it looks like. lots of stuff i'd have love to do myself if i had a little better knowledge of assembly.

i'm going to try your latest beta. dude if you get el torito cd-rom booting work, i want to have your children. even though it won't do anything else, it would give me a chuckle to boot an XP CD-ROM and at least see "the setup is analyzing your hardware configuration" message on a 25 year old computer... before it locks up.



EDIT: another idea i've been kicking around is looking into embedding a minimal FreeDOS that could be used as an alternate boot option. kinda like the way the tandy 1000hx embedded DOS 2.11. beat that boot time, vista.
 
Beta3 is finally released!

Here are the changes since beta2:
  • BIOS configuration and flashing program finally available
  • No more conflicts with other hard disk BIOSes
  • Slave drives should now be detected without master
  • Timeouts now use system timer
  • Variables can now be located to top of base memory
  • Completely rewritten interrupt handling
  • Minor optimizations to 8-bit transfers
  • CTRL can be held down to skip initialization
  • Late initialization to fix compatibility issues with old systems

Configuration program is a bit slow on XT systems. It uses BIOS functions to print single character at a time. I need to rewrite my print library functions sometime to speed things and to support colors. EEPROM Software Data Protection is enabled by default since new XTIDE cards should come with Atmel EEPROMs. Disable SDP if you have SEEQ EEPROM. SEEQ does not support SDP so data verify fails when SDP is enabled. It is safe to use larger page sizes for faster flashing. 7.16MHz V20 is fast enough for 4-byte pages but not larger. 16MHz 286 easily handles 64-byte pages (largest possible). SEEQ does not support 64-byte pages (32-byte works fine).

BIOS variables can now be located to top of base RAM and it is the default setting. It will steal 1kB of base RAM but it ensures that nothing accidentally corrupts BIOS variables. Top of interrupt vectors (30:0h) can be used if necessary. All Tandy 1000 models with 640kB or less RAM require that top of interrupt vectors are used.

Late initialization is how i fixed the Tandy problem i mentioned in my last post. Late initialization detects drives when main BIOS calls boot loader (int 19h). This will ensure that all main BIOS functions are available. Late initialization is default on XT builds while AT build defaults to early initialization.

Edit:
I almost forgot: Initialization can be skipped by holding CTRL down. This is useful if something goes wrong and the system won't boot otherwise. XTIDE Universal BIOS boot loader is always installed when late initialization is used. CTRL will skip all the rest (drive detection, int 13h revectoring etc) but XTIDE Universal BIOS boot loader is still used for booting.
 
Last edited:
that way, it would be possible to load MS-DOS on something other than a 360 KB disk in an XT.

If i understood correctly, the only thing you want is to replace 360kB Diskette Parameter Table with other disk type? HD support would require HD controller, HD drive and HD BIOS so the only useful thing i could do is to force BIOS to report 720kB drive correctly.

Is that what you mean? It should be easy and DOS should then be able to format 3.5" DD diskettes as 720kB and not 360kB.
 
Finally had some time to test microdrives. I tested following microdrives with XTIDE Universal BIOS beta3:
Hitachi, 6 GB (model: HMS360606D5CF00)
Seagate ST1.2 Drive, 4 GB (model: ST64022CF)
Magicstor, 4 GB (model: GS10040A-11 47)

Hitachi and Seagate work fine, just like any CF card or hard disk.

Magicstor does not work properly for some reason. I can create partitions and format them. Formatting is a lot slower than with Hitachi or Seagate. Booting does not work with Magicstor. Boot sector is found but system freezes before any DOS strings. Same thing happens on a 486 with Award BIOS and large drive support. This means that there is something odd about Magicstor drive itself. It does work fine with a CF-to-USB adapter that i have.

Microdrives seem to be good drives as long as you avoid Macigstor drives. Microdrives are silent, have good transfer rates (they are faster than ISA can handle) and there is no write limit like on CF cards. CF cards have much better seek times since microdrives are real hard disks. Microdrives are a lot cheaper than CF cards with same capacity. There are lots of cheap microdrives on ebay: 2.5 to 6 GB models cost 8 to 13 USD with shipping.
 
Back
Top