First post, by superfury
How does the ATA/ATAPI drive controller handle slave drive selection and related functionality when there is no slave connected?
UniPCemu:
- Execute Drive Diagnostic(command 90h) sets the master error register to 1, slave to 0.
- Recalibrate: clears error register and reports an error(ERR=1).
- Seek: invalid command.
- Read sector(s):
- Read verify sector(s): Error(ERR=1), ID mark not found = 1.
- Write sector(s):
- Initialize device parameters: Executes normally.
- Identify packet device: Invalid command.
- Identify device: Invalid command.
- Packet command: Invalid command.
- Get Media Status: Sets accordingly, not read only, no media.
- Disable/Enable Media Status Notification(features set): Invalid command.
- ATAPI Device Reset: Invalid command.
- Set Multiple mode: Honors request as hard disk.
- Unknown commands/invalid commands: Error register becomes 4, reports normal error.
- ATA Registers themselves(e.g. xx1h-xx6h)): All readable/writable like normal ATA registers for an existing drive.
Is that correct behaviour?
Edit: Just implemented Bochs' behaviour on those. Windows 95 seems to like the HDD controller without a slave/master(single drive) much better now 😁
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io