VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

Is there an ATA-1 BIOS(with only the documented commands) out there? I'm emulating an ATA-1 device(from the official documentation) connected to a PCI controller to change I/O port addressing. All I can find is the XT-IDE BIOS, which doesn't use the port 1Fx/3Fx ports (and uses undocumented commands). I'm trying to fix my hard disk ATA-1 disk emulation, but the XT-IDE BIOS will hang trying to seek somewhere (keeps seeking over and over again to the same location). It also won't use the PCI to set it up (I have to hardcode the default base PCI port to port 0x300 instead of value 0 in BAR1 to get it using the HDC). I need a BIOS that uses the actual ATA-1 specified commands (which I'm able to check and verify using the ATA-1 documentation) and runs on a PC XT(80(1)86 processor).
The XT-IDE BIOS starts executing some unknown command when I change the first byte to something else than 0x40. Currently it executes a IDENTIFY, followed by a CALIBRATE command and finished with a SEEK command (which repeats infinitely).

My current source code of my ATA-1 emulation (basic I/O without timing only(since timing is unknown it's disabled for now)):
https://bitbucket.org/superfury/x86emu/src/7b … ide.c?at=master

Anyone knows a ATA-1 BIOS that I can use to verify my ATA-1 emulation?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 1 of 2, by vladstamate

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

I do not actually know a direct answer to your question (I apologize) but the 8086/80186 computers did not have PCI controllers. Now that might not be an issue in the emulator but I assume doing anything PCI controller related just opens a lot of cans of worms that you might not want to deal with. It is possible that some ATA-1 BIOSes use 286 instructions for example.

For your question though, have you tried the minuszerodegrees.net ROMS page? http://www.minuszerodegrees.net/rom/rom.htm

Regards,
Vlad.

YouTube channel: https://www.youtube.com/channel/UC7HbC_nq8t1S9l7qGYL0mTA
Collection: http://www.digiloguemuseum.com/index.html
Emulator: https://sites.google.com/site/capex86/
Raytracer: https://sites.google.com/site/opaqueraytracer/

Reply 2 of 2, by superfury

User metadata
Rank l33t++
Rank
l33t++

I do remember a precursor to the ATA with only 7 ATA commands. I can't find it's name. Anyone knows what HDD controller this was? It should work with a correct base address in BAR1 during boot.

Edit: I think I've found it: WD1002:

https://www.redhat.com/archives/rhl-list/2008 … y/msg00482.html

Now all I still need is it's documentation. Anyone knows where to find it?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io