I'm using System 7.5.3 w/ SheepShaver 2.3 on Windows 10 x64. Just out of my curiosity I've been playing with some old IDE, calling low-level PB... functions (PBOpen, PBControl / PBStatus, RBRead / PBWrite, PBClose) from there. As I can see, the rest of calls works OK. But something does not.
For example, I'm trying to work with Disk Driver in such way:
1. open the Driver by calling PBOpenSync with .Disk name and internal drive number (= 2) as parameters;
2. read some bytes from the disk by calling PBReadSync (bytes count = 512, position mode = 1 (fsFromStart), position offset = 0);
3. get the drive status by calling PBStatusSync w/ status code = 8 (drvStsCode);
4. close the Driver by calling PBCloseSync.
So, everything goes fine besides receiving the drive status.
I'm always getting -56 error from the Driver that reads
(according to Mac Error Codes list)error -56 nsDrvErr: no such drive (tried to mount a bad drive num)
But why I cannot get the status when I'm able to successfully open the disk and read from it? I wonder how accurately SS emulates Drivers and Managers... Is it my own mistake or Driver functionality is implemented just partially?
I've double-checked my code and it seems to be correct. Also tried to run this test app in another emulator but have not succeed with anything (I need PowerPC processor for that, but unfortunately PearPC is unable to run Classic environment). It would be nice to have a real Mac here but I don't have one.