sunnuntai 7. heinäkuuta 2013

XTIDE Universal BIOS beta 3 bugs

What's going on with XTIDEUniversal BIOS? It's been four months since v2.0.0 beta 3 was released.

Beta 3 was supposed to be last and quick beta testing phase before releasing stable v2.0.4. Well, beta 3 turned out to be a lot more buggy than I thought it would. It is buggy but fortunately most of the bugs are quite minor and doesn't effect many users, except that slave drive support is broken.

I believe most people use XTIDE Universal BIOS on their XT systems along with XTIDE or Lo-tech XT-CF boards. Actually I do most of the testing with Pentium system so AT builds get most of my attention. I have 8 MHz Turbo board for testing XT builds but I don't have enough space to keep all my testing equipment available all the time. I also test with my gaming 286 and 486 systems from time to time.

Back to the bugs in beta 3. I started to do lots of testing to get stable version released and I fixed those minor bugs quite soon I found one. I decided to try to install Windows 95 and 98 along the testing process. There were no problems to install Windows 95 but Windows 98 was something else. One bug was exceptionally hard to fix and it took weeks.

Windows 98 install always crashed to blue screen at certain point. I was able to install Windows 98 using motherboard BIOS but again I got the very same blue screen when loading Windows once I had switched back to XTIDE Universal BIOS. Eventually I found out that the blue screen happened when Windows 98 tried to load protected mode floppy driver (HSFLOP.PDR). Renaming it forced Windows to use real mode floppy driver and that helped. Next I had to find out how XTIDE Universal BIOS was incompatible with Windows 98 floppy driver.

If you are familiar with XTIDE Universal BIOS, then you must know that it has a feature to allow install DOS from any floppy drive to any hard drive on the system. DOS itself only supports boot from first floppy or hard drive on the system. Drive number translation, or swapping, is a way around this limitation. During drive detection, you can use hot keys to select what drive(s) are to be set as primary. For example to boot from second hard drive in the system, press D. This sets second drive to be drive C and first drive to be D. Next you can press A to boot from floppy drive containing DOS install disk. Or you can press B to set second floppy drive as primary floppy drive and boot from it. Now you can install DOS from second floppy drive to second hard drive.

Floppy drives are handled by motherboard BIOS and there can be hard disks handled by other BIOSes as well. They don't know anything about drive swapping so XTIDE Universal BIOS must do all the drive number translations. One thing to complicate this is that the other BIOSes can make recursive INT 13h calls (INT 13h contains drive access functions) so XTIDE Universal BIOS must not translate the drive number more than once.

Previously XTIDE Universal BIOS temporarily restored system INT 13h handler before calling it. This way the system BIOS could do as much recursive calls as it needed to. Replacing the INT 13h handler was something Windows didn't expect and that caused blue screen. Now XTIDE Universal BIOS disables drive swapping before it calls system INT 13h.

I still have more testing and fixing do to before stable version can be released. I just don't have as much time for coding as I would like.



Ei kommentteja:

Lähetä kommentti