On Fri, 26 Jun 2020, W2HX via cctech wrote: > Thanks for previous help on this project. I am working on an old 486 > computer and I have replaced a 40 pin IDE hard drive with this SD > adapter... > https://www.amazon.com/gp/product/B07G29TZPS/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
There is a worrisome note there about the requirement to use the LBA rather than CHS storage device addressing mode with the adapter. A PC BIOS that old may not support LBA. IIRC the two modes are told apart by a bit set in one of the ATA control registers used to select the sector to perform an operation on. If that bit is silently ignored by the adapter's firmware, then the storage device may appear to work, however CHS sector addresses presented by the PC BIOS will not correspond to LBA sector addresses interpreted by the firmware. Consequently things will undoubtedly break and data corruption will likely happen sooner or later, depending on whether the OS installed uses the PC BIOS interface or has its own driver using LBA. Also accesses to inexistent sectors may be attempted. An additional complication is that the PC BIOS CHS API, which predates ATA and has been designed with MFM and ESDI disks in mind, has a range mismatch with the ATA CHS API. Consequently the CHS sector range accessible via the PC BIOS is limited to the intersection of the two ranges. Once LBA support has become available in PC BIOS implementations for ATA storage devices a translation scheme was introduced so that the full range of the PC BIOS CHS API could be used by the OS. > In general it seems to mostly be working. I can see a directory listing > of several thousands files located on a 2GB SD card from yesteryear. The > SD card was new when I installed it (has been in my possession for > years). What OS do you use that works with the 2GB SD card correctly? > However, I do get errors "sector not found" and if I A)bort I get INT 24 > error. I am trying to get windows 95 installed and this is certainly > preventing that. INT 24 is the software interrupt invoked by DOS for I/O error recovery, the handler of which asks the user how to proceed. I gather you're using DOS then? > In the BIOS settings I have the hard drive set as "USER" and these parameters: > CY:[1024] HD:[16] ST:[63] LZ:[1024] WP:[0] > These were the parameters in use while I was still using the actual hard > drive. These are the intersection of the maximum values both the PC BIOS and ATA supported, which corresponds to 528MB (or 504MiB); for a 2GB ATA storage device that's the best you can do here. All but some very early ATA disks actually report their CHS configuration via the ATA IDENTIFY DEVICE command. Unfortunately it took years for PC BIOS implementers to discover the existence of that command and add an auto-detect feature. Software exists for various OSes that can retrieve and print ATA IDENTIFY DEVICE information in a human parseable format, e.g. with my non-LBA disk from 1993 I get: /dev/hda: ATA device, with non-removable media Model Number: Maxtor 7245 AT Serial Number: [...] Firmware Revision: 6ADF1E57 Standards: Likely used: 1 Configuration: hard sectored not MFM encoded head switch time > 15us fixed drive disk xfer rate > 5Mbs, <= 10Mbs format speed tolerance gap reqd Logical max current cylinders 967 967 heads 16 16 sectors/track 31 31 -- bytes/track: 19778 bytes/sector: 638 CHS current addressable sectors: 479632 device size with M = 1024*1024: 234 MBytes device size with M = 1000*1000: 245 MBytes Capabilities: no IORDY Buffer type: 0003: dual port, multi-sector with read caching ability Buffer size: 64.0kB bytes avail on r/w long: 11 Can perform double-word IO R/W multiple sector transfer: Max = 32 Current = ? DMA: sdma2 PIO: pio0 pio1 pio2 (this is output from the `hdparm -I' command on Linux). > Question 1: Now that I am using an SD card instead of an IDE drive, > what, if anything, should I be doing with these BIOS parameters? You will need them for the bootloader, which will use PC BIOS calls to load the OS, and possibly also the OS itself. Unless your PC BIOS does LBA this generally means you'll have to partition the boot storage device and keep the boot partition within the first 528MB of the device. The rest can be used as a second partition, provided that the OS has its own ATA driver and does not use the PC BIOS to access the device; otherwise it'll remain inaccessible. > Question 2: The BIOS has an option to format the hard drive. Should I > format the SD card using this facility? I doubt it. The operation was meant for magnetic media, to set up tracks and sectors across the device, like with floppy disks (DOS nomenclature, where formatting, depending on the context have meant both actual medium formatting and filesystem creation, or the latter only, caused further confusion). AFAIK for ATA devices a format command interface has never been standardised, though a FORMAT TRACK command code has been reserved. This was partially due to zone bit recording most (though not all) ATA disks used, however SCSI actually defined an interface also for ZBR disks, and I used it in the past (this was a way to set up a non-standard sector size some SCSI disks supported, in particular for RAID preparation with a hardware RAID controller). MFM and ESDI disks did support formatting normally as they didn't support ZBR and therefore the interface was straightforward, like with floppy media. > I did not explicitly put a filesystem on that SD card. I placed it in a > windows 7 machine, it was recognized, and I began copying files to it. I > then place the SD card into the 486 machine where I saw the sector not > found errors. Indeed that seems likely due to the mismatch between LBA and CHS addressing. Making a piece of software retrieve ATA IDENTIFY DEVICE information might help determining whether the adapter supports CHS addressing properly. If not, then you may have to find another adapter. HTH, Maciej