VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

What does a 82077AA FDC do when it executes a Read Data/Write Data/Format Track/Read ID command without any medium in the drive(nothing is inserted)?

UniPCemu so far has followed the Bochs-approach(hang the controller), which Windows NT seemed to notice as no medium being in the drive. The other two operating systems gave me a General failure reading drive(Windows 95) and Drive not Ready error(MS-DOS 6.22).
But what happens on a real 82077AA FDC controller(or one of it's predecessors) when executing Read/Write Data or Read ID commands?

Edit: Changing all checks for non-inserted disks and motor being off for read/write/format/read ID commands to raise a fault to the floppy disk controller with NID and NDAM set only(like https://github.com/kerheol/dingux-cap32/blob/master/fdc.c does) only seemed to change Windows NT, which no longer complains about an open drive door, but instead complains about an unformatted disk?

Although it sets both Not Ready and Unit Check bits. Perhaps it's just supposed to be Not Ready?

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

Reply 1 of 1, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. The only way to get at least one of the operating systems to recognise it properly(Windows NT 3.1 to be exact) is by using Bochs' hanging aproach. The other method used by the linked FDC emulation doesn't seem to work properly?

Edit: So far tested the Bochs approach on MS-DOS(working), Windows NT 3.1(working) and Windows 95 RTM(also working). So it seems that that's actually the only correct way to handle the drive not being ready to read/write/format without a medium?

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