• Please review our updated Terms and Rules here

XTIDE Universal BIOS

DOS can be booted only from first hard disk. That is why drives are swapped when you boot from microdrive. So it is normal that the microdrive appears as C and IBM drive as D.

Microdrive should appear as drive D if you boot from IBM drive. What DOS version does the IBM drive have? DOS 3.3 and older support partitions up to 32 MB. If the microdrive has been partitioned with later DOS then the old DOS does not understand the large partition.
 
XTIDE Universal BIOS v1.1.3 can be found here.

Here is what is new:
XTIDE Universal BIOS v1.1.3 (1 August 2010)
  • v1.1.1 broke booting from foreign drives, it is now fixed.
  • Improved error handling a bit.
  • Longer DRQ and IRQ timeouts to minimize write timouts with some (bad) CF cards.
  • Default boot menu drive should now be properly selected.
XTIDE Universal BIOS v1.1.2 (26 July 2010, no public release)
  • Fixed a bug where Disk Parameter Table was accessed with wrong pointer register after writing last block.
  • Cleaned AH=00h, Disk Controller Reset a bit.

This new release does not fix some of the CF problems mentioned in the XTIDE technical support thread. We are working on them. There are two different types of CF problems. Some of the CF cards seems to have some timing requirements that we are trying to figure out.

Then there are CF cards that are simply not usable as hard disks. Sometimes while writing they require delay that can be more than 14 seconds! Obviously you do not want to use such CF card as a hard disk. v1.1.3 increases transfer timeout to 14 seconds and that is the maximum delay supported by current timeout functions. It is not enough for some low quality CF cards.

Unfortunately CF cards do not have any class ratings like SD cards have. SD class rating specifies minimum sustained write speed while the speed rating on CF cards specify maximum read speed.

I'd like to mention that i exceeded write limit for 64MB Apacer CF card during testing. The card detects fine but i cannot create partition anymore. Based on my experiences i strongly recommend to use microdrives instead of CF cards. Hitachi microdrives are very good.
 
Microdrive should appear as drive D if you boot from IBM drive. What DOS version does the IBM drive have? DOS 3.3 and older support partitions up to 32 MB. If the microdrive has been partitioned with later DOS then the old DOS does not understand the large partition.

I installed MSDOS 6.22 in both disks and also on a floppy. If I boot from that floppy, I only see the IBM drive, not the microdrive. So the problem is that the microdrive only appears if I select it for boot from the XTIDE bios menu...

Another thing to remark, before installing the option ROM, the system shows 639kb of conventional memory and 1K reserved. Now with the option rom, there are 638kb of conventional memory and 2k reserved. Can this be related?
 
Ok I got 1.1.3 working. I had to toggle a setting in idecfg to overwrite the default ide_xt.bin. Same settings just needed overwriting?
 
So the problem is that the microdrive only appears if I select it for boot from the XTIDE bios menu...
Since DOS will reset drives during boot, i believe that your motherboard BIOS will reset all drive variables from BIOS Data Area when resetting any drive it recognizes. It means that only the IBM drive would be included in the hard disk count so DOS would not know that there are more drives.

If this is the case, then it should be easy to fix.

before installing the option ROM, the system shows 639kb of conventional memory and 1K reserved. Now with the option rom, there are 638kb of conventional memory and 2k reserved.
AT build by default will reserve 1K of conventional memory for drive parameters. You can disable full mode with idecfg.com. XTIDE Universal BIOS does not steal any conventional memory in lite mode since drive parameters will be stored to interrupt vector table. That area is not free on some systems but you can always try lite mode if you do not need more than one IDE controller.
 
Same settings just needed overwriting?
Binaries (those in the zip file) do not include checksum byte. Idecfg.com will generate the checksum byte when flashing or saving changes to file.
By the way, you should use AT build since you are using 386.
 
Since DOS will reset drives during boot, i believe that your motherboard BIOS will reset all drive variables from BIOS Data Area when resetting any drive it recognizes. It means that only the IBM drive would be included in the hard disk count so DOS would not know that there are more drives.

If this is the case, then it should be easy to fix.

That makes sense, because every time the system boots, after the POST "beep" but before showing the DOS booting message, the hard disk makes a characteristic sound like a quick spin up and head test. This is a logic response to a reset command, right?

Can I do something to fix it or is something to be done on XTIDE BIOS? I can report you feedback or debug info, if you want me to do anything on this hardware.


AT build by default will reserve 1K of conventional memory for drive parameters. You can disable full mode with idecfg.com. XTIDE Universal BIOS does not steal any conventional memory in lite mode since drive parameters will be stored to interrupt vector table. That area is not free on some systems but you can always try lite mode if you do not need more than one IDE controller.

Ok, I'll try lite mode.
 
By the way, the XTIDE works in an IBM XT (256k motherboard), with an Intel Inboard 386.

(both with a WD Caviar 1.6GB (WDAC21600-00H) hard drive and a SanDisk Ultra 2GB Compact Flash)

/bill

My setup is simalar to yours but I don't have the Inboard 386. I'm getting "Drive not ready error" durring extended write sessions (20+ mb) to SanDisk Ultra 2GB CF Card. The error comes up after several minutes of continuos writing of files(transfering from hard disk or Parallel Zip 100 disk). Note, this only happens writing to CF Card, not hard disk.
I wonder if you would be willing to run some long write tests with your CF Card to see if you can duplicate my problem. You're Inboard 386 would probably have to come out or be disabled temporarily to duplicate my system which contains the following:

IBM 5155 with 64-256kb MB Modified for 640kb.(4.77mhz) Latest bios (5/9/1986)
NEC V20
Intel 8087
Original floppy controller with two 360kb floppies attatched.
ATI EGA Wonder.
New XTIDE with XT+ build.(IDE_XTP.BIN)ver. 1.1.3
Fujitsu 3gb hard disk (master)
SanDisk Ultra 2GB 15Mb/s CF Card (slave) I've abandoned others because this one seems to work the best.
DOS 5.0

Thanks,

Greg

p.s. I've been posting on the XTIDE tech support thread about this and "aitotat" has been trying to help with this but so far no luck. He changed a timeout setting in the latest bios release 1.1.3 to try to help with what he calls "bad" CF cards. But the error still comes up and the CF Card becomes un-usable untill hard reset (power off).
 
XTIDE Universal BIOS v1.1.4 can be found here.

Here are the changes since v1.1.3:
  • Correct number of drives is now returned from AH=08h when it is redirected to foreign BIOS.
  • Interrupt controllers are now unmasked during drive reset.
  • OS hooks are now enabled for all builds. IRQ waiting no longer uses HLT instruction to fix some EMM386 and VCPI issues.
  • XT+ build is no more since it would now be the same as AT build.

There is no longer XT+ build since it would now had the same functionality as AT build. Use AT build if you previously used XT+.

EMM386/VCPI and HLT instruction bug was a strange one. I have been installing 386 system to gaming condition and of course that means it must have Gravis Ultrasound in it. GUS has Mega-EM utility to emulate Roland MT-32 and General Midi. When Mega-EM was loaded and game used it, the system would always crash to a EMM386 error #1.

Eventually i found that there were no problems when running the game from a hard disk managed by motherboard BIOS. After a lot of testing i found out that disabling interrupts would make everything work when running the game from XTIDE Universal BIOS managed drive. Again lots of testing revealed that HLT instruction was the reason for those EMM386 errors. Removing one single instruction made everything work. HLT simply puts the processor to sleep until any interrupts wakes it.

I'm not sure what exactly the problem was. EMM386 worked fine when Mega-EM was not used. I think Mega-EM uses VCPI so this all was somehow related to virtual x86 and protected mode since HLT is a system instruction.
 
I forgot to mention one thing. XT+ and AT builds had different default settings so you need to change IDE controller variables (port, bus type) and possibly enable late initialization when using AT build on XT systems. Maybe i should maintain the XT+ build anyway? Another alternative would be to allow loading default settings from configurator program.
 
It has been a while since last release. I've been rewriting library functions (menu system etc). It took 3-4 weeks to write them for the first time and 6 months to rewrite them. I was hoping to save maybe 1 kB but the new libraries actually requires more space than the old one. Once again I made a big mistake by rewriting code that already works.

XTIDE Universal BIOS does not yet use the new libraries (you'll have to wait v1.2.0 that hopefully won't take 6 months) but v1.1.5 comes with new configuration and flashing program that do use them. New flashing program is xtidecfg.com so make sure you use that. idecfg.com is still available since the new configurator does not have couple of settings that I'm going to remove from v1.2.0.

There are potential compatibility problems since new libraries write directly to screen AND uses BIOS for handling teletype characters. That is sort of a compromise between speed and code size.

Configurator menu now appears in colors but MDA is also supported. Monochrome attributes are automatically used in video mode 7. Black & White attributes are used in video modes 0 and 2 for color adapters connected to B&W monitor. DOS has mode.com that can be used to switch between color and B&W modes.

So here is XTIDE Universal BIOS v1.1.5. Just some bug fixes and I'm not sure that booter games work since I have none to test with.

XTIDE Universal BIOS v1.1.5 (28 November 2010)
* Errors are now being checked when calling previous INT 13h handler on AH=08h Read Disk Drive Parameters. This fixes infinite drive checking loop on unofficial MS-DOS 7.10 installer.
* Better INT 40h handler detection to fix floppy drive detection with AMI 286/386 BIOS.
* AA55h signature no longer required when booting from floppy drives. This should make booter games work.
 
Incompatibility: XTIDE Universal BIOS and first IBM 5170 BIOS

Incompatibility: XTIDE Universal BIOS and first IBM 5170 BIOS

Having the optional 360KB floppy drive fitted to my early IBM 5170 means that a second 5.25" form factor MFM hard drive is not a possibility (even half height). I decided to try a VCF XTIDE card with CF card to provide the second drive.

Initially, I could not get the XTIDE card (any of the few I have) to work in my early 5170. A friend tried to get his XTIDE card working in his 5170, and he also could not get it working. I switched from CF card to standard IDE drive and had the same problem.

I had no problem getting the XTIDE card to work in my 286 clone. If I took the working XTIDE_card/cable/drive combination from my 286 clone and placed it in my early 5170, no go.

To cut a very long story short, it appears that present versions of the XTIDE Universal BIOS are incompatible with the IBM BIOS fitted in the early model 5170s, specifically the first IBM BIOS which is dated 01/10/84 (U27=6181028/U47=6181029).

Substitute that IBM BIOS with either an AMI one (5170 compatible) or an Award one (5170 compatible), and the problem disappears.
Substitute that IBM BIOS with either the second revision IBM one (06/10/85) or the third revision IBM one (11/15/85), and the problem disappears.
Put the first revision IBM BIOS back in, and the problem returns.

I have 3 early 5170 motherboards that exhibit this same problem.

SYMPTOMS

Differs, dependent on version of the XTIDE Universal BIOS.

Version 1.1.0

1. Power on.
2. Master and slave identified as expected - good.
3. Boot menu appears - good.
4. On selecting the hard drive attached to the XTIDE card, "Boot sector found!" is displayed - good.
5. BAD - nothing else happens.

At this point, depending on the make/model of the hard drive attached, the drive access LED may be on solid.
At this point, a CTL-ALT-DEL will restart the 5170, but then the XTIDE Universal BIOS will report "not found" when trying to 'identify' the Master drive. A hard reset is required.

Additional info: At the menu, if one chooses the floppy drive, the 5170 will boot from the floppy.

Versions 1.1.3 / 1.1.4 / 1.1.5

1. Power on.
2. Master and slave identified as expected - good.
3. BAD - nothing else happens (5170 appears frozen).

At this point, depending on the make/model of the hard drive attached, the drive access LED may be on solid.
At this point, a CTL-ALT-DEL will restart the 5170, but then the XTIDE Universal BIOS will report "not found" when trying to 'identify' the Master drive. A hard reset is required.

OTHER

In attempting to get the XTIDE Universal BIOS / first 5170 BIOS combination working, I have tried:

* Minimum configuration (motherboard / PSU / XTIDE / hard drive/ video card)
* Different video cards (CGA and EGA)
* XTIDE card
* Generic 16-bit IDE card (no BIOS - all chips are TTL) with XTIDE Universal BIOS located on EPROMS in sockets U17/U37
* Acculogic sIDE-2 card with XTIDE Universal BIOS located on EPROMS in sockets U17/U37
* 5 different IDE hard drives (ranging from 80 MB to 6 GB)
* IDE to CF adapter
* Many different configuration settings within the XTIDE Universal BIOS
* Upping base RAM from 512K to 640K (stab in the dark)
 
* Many different configuration settings within the XTIDE Universal BIOS
So you've tried with Full operating mode disabled and enabled?
Have you tried different boot loader types (to disable boot menu)? If not, try other boot loaders with Full Operating mode enabled and be sure to use AT build.
 
So you've tried with Full operating mode disabled and enabled?
Have you tried different boot loader types (to disable boot menu)? If not, try other boot loaders with Full Operating mode enabled and be sure to use AT build.
Yes, I had tried many possible combinations, including those elements.

I have just now retried various combinations and seen the same result.
I list those combinations below.

------------------------------------------------------------------------------

The XTIDE card has the AT version of 1.1.5 loaded.

Minimum hardware configuration: motherboard / CGA card / floppy controller / XTIDE card / PSU / keyboard / battery

With the AMI BIOS in place, the XTIDE card works as expected.
That verifies that I haven't introduced a second problem (e.g. bad cable).
When I then swap the AMI BIOS for the first revision IBM one - problem appears as expected.

I then experiment with the XTIDE BIOS configuration as follows:

* Full=yes - Menu - interrupts off - block transfers on
* Full=yes - Menu - interrupts off - block transfers off

* Full=yes - Menu - interrupt=3 - block transfers on (for this test, jumper on XTIDE card added for IRQ3)
* Full=yes - Menu - interrupt=3 - block transfers off (for this test, jumper on XTIDE card added for IRQ3)

* Full=yes - 'A then C' - interrupts off - block transfers on

* Full=yes - System - interrupts off - block transfers on (if no boot floppy present, this boots to BASIC)

* Full=no - Menu - interrupts off - block transfers on

None of the combinations work.

------------------------------------------------------------------------------

SOMETHING POSSIBLY RELEVANT

I'd noticed this before, and have just verified it.

Whenever the EEPROM is flashed, the message "EEPROM was written successfully. Press any key to reboot." appears.
With the first revision IBM BIOS on the motherboard, pressing any key results in the screen going blank, but nothing more - no restart.

With the first revision IBM BIOS on the motherboard, GSETUP can successfully restart the 5170.

If I then upgrade the motherboard BIOS to the second revision one, XTIDECFG can then restart the 5170.
A bug in the first revision IBM BIOS for the 5170 ?
 
None of the combinations work.

No idea whats wrong. Does any part of the boot menu appear when it is enabled?
Can you try one more time with XT build? Enable Full operating mode and use A then C boot loader. Be sure to connect both master and slave drive. No need to try other settings if those won't work.


A bug in the first revision IBM BIOS for the 5170 ?
Reset is very simple:
Code:
.RebootComputer:
	mov	al, 0FEh			; System reset (AT+ keyboard controller)
	out	64h, al			; Reset computer (AT+)
	nop
	jmp	WORD 0F000h:0FFF0h	; XT reset
It first tries to reset using keyboard controller (AT and later systems only). If system did not reset, then there is a jump to BIOS initialization (only way to reset XT systems). Jumping to BIOS initialization is not reliable reset on later systems so the hardware might be in a state that the BIOS do not expect. That would mean the keyboard controller reset had failed. Anyone know how GSETUP does the reset?
 
Does any part of the boot menu appear when it is enabled?
No. With the menu enabled in 1.1.5, I see:

IDE Master at 0300: xxxxx
IDE Slave at 0300: xxxxxx

The cursor sits on the line directly underneath those two lines (at leftmost position).

Can you try one more time with XT build? Enable Full operating mode and use A then C boot loader. Be sure to connect both master and slave drive. No need to try other settings if those won't work.
I've just now tried all that. No change in symptoms. Both drives are identified on screen with cursor sitting underneath.
If I then put in the AMI BIOS, the 5170 proceeds past that point to then boot from C:

It first tries to reset using keyboard controller (AT and later systems only). If system did not reset, then there is a jump to BIOS initialization (only way to reset XT systems). Jumping to BIOS initialization is not reliable reset on later systems so the hardware might be in a state that the BIOS do not expect.

With the first IBM BIOS in place, I ran DEBUG to execute the AT reset code (mov al,fe / out 64,al). The 5170 reset.
I then started XTIDECFG them immediately exited XTIDECFG. Running the AT reset code reset the 5170.
I did various actions in XTIDECFG. The failure to reset only happened when XTIDECFG attempted its reset after EEPROM flashing.

That would mean the keyboard controller reset had failed
Or was taking longer than normal to happen.
 
Reset is very simple:
Code:
.RebootComputer:
	mov	al, 0FEh			; System reset (AT+ keyboard controller)
	out	64h, al			; Reset computer (AT+)
	nop
	jmp	WORD 0F000h:0FFF0h	; XT reset

Just to be on the safer side, it would maybe be better to use JMP WORD 0FFFFh:0000h; as this would better resemble the actual register status when the computer starts?
 
it would maybe be better to use JMP WORD 0FFFFh:0000h; as this would better resemble the actual register status when the computer starts?

True. I must have read 286 datasheet since CS:IP initial state is F000:FFF0h on a 286 but iAPX 86,88 User's Manual says FFFF:0000h for 8086/8088.

I'll change the reset code to this:
Code:
;--------------------------------------------------------------------
; .RebootComputer
;	Parameters:
; 		Nothing
;	Returns:
;		Nothing, function never returns
;	Corrupts registers:
;		Doesn't matter
;--------------------------------------------------------------------
.RebootComputer:
.ResetAT:
	mov	al, 0FEh	; System reset (AT+ keyboard controller)
	out	64h, al		; Reset computer (AT+)
	mov	ax, 10
	call	Delay_MicrosecondsFromAX
.ResetXT:
	xor	ax, ax
	push	ax
	popf			; Clear FLAGS (disables interrupt)
	mov	ds, ax
	mov	es, ax
	mov	ss, ax
	jmp	WORD 0FFFFh:0h	; XT reset
 
Back
Top