Shponglefan wrote on 2022-09-26, 13:41:Fortunately I do have some older CF cards in the 32 to 128MB range. […]
Show full quote
Jo22 wrote on 2022-09-25, 18:25:It's maybe not very helpful, but you can use fake CHS settings just fine, often. […]
Show full quote
It's maybe not very helpful, but you can use fake CHS settings just fine, often.
The only precondition is that the fictitious values are within the limits of both the CF cards (capacity) and the PC BIOS.
That means 1023 cylinders, 16 heads (numbered 0-15 sometimes), 63 sectors.
Or in other words, just choose a setting that's closest to your CF card.
If you're having an older (vintage) CF card from the early 2000s, with say, 32MB, 64MB or 128MB then this workaround is not so bad.
Fortunately I do have some older CF cards in the 32 to 128MB range.
That said, does using fake values limit which computers the CF card can be used on? I do want the ability to connect the CF card to my modern PCs for file transfers, and/or possibly use between other older machines.
If I setup a CF card with incorrect values and then partition and format it, would it impact being able to swap it between machines?
Oh, well, I don't know exactly. It depends on the PC and Operating System in question.
The drive geometry used is described in the partition record, which FDISK created.
Normally, if you're using an USB card reader, the OS should be able to use this information and things are fine.
If you use a real IDE port and an IDE-CF adapter in your modern PC, the BIOS *might* interfere during boot up, does its own LBA mechanism.
For the better or worse, dunno. 🤷♂️
The method/workaround I mentioned originated from the old days of early MFM/IDE HDDs.
So it works -partially- even with ancient hardware:
You can use 4 heads, for example, if the HDD has 6. Or you can use 128 Cylinders, if the HDD has more than those. Using less, a subset, always works.
Starting with early IDE drives, not exceeding the capacity was the primary thing that mattered.
Back then, around 1989, IDE drives of higher capacity started to use external values (Logical CHS, L-CHS), for communication with the host that differed from the real, physical organization (Physical CHS, P-CHS).
Even though they didn't support LBA yet, they used a translation mechanism.
It just wasn't standardized yet, varied between models and manufacturers.
"The solution was sector translation: the drive "lies" to the controller,
acting as if it has, say, 10 heads and 1024 cylinders when it actually has 5 heads and 2048 cylinders.
As long as the total space is correct, the BIOS can't tell the difference and there is no need for driver software.
A more advanced form of sector translation allows drive manufacturers to put extra sectors on the outer tracks
(which have more room) but still juggles the extra space back into simple terms that the BIOS can understand.
Nearly all drives over about 60Mb use sector translation."
Source: http://redhill.net.au/o/glos2.html#sectrans
Some/many also people used the "correct" logical values written on the HDD's label (there was a chart or table sometimes, with different sets of valid values) .
This provided the total capacity of the HDD on PCs with BIOS limitations or older software.
However, technically, other settings were usable with these HDDs, as well.
These HDDs had little on-board computers, which even had a debug port for a serial terminal.
The HDD's firmware was kind of intelligent enough to handle other random values reported by the computer.
https://www.os2museum.com/wp/can-this-conner-talk/
In essence, LBA is just a standardized way of using fake/logical values.
It's a translation-mechanism, so to say.
To old software, there's no difference between CHS and LBA really, they're just sets of numbers.
In the past, a few incomaptible LBA versions existed, however (-> DDOs).
- That's why older versions of, say, XT-IDE Universal BIOS are incompatible with newer versions, for example - different translation-mechanism.
Upgrading the XT-IDE BIOS thus requires re-partitioning of the previously used CF cards.
MS-DOS 6.22 and before always use CHS, even if the BIOS and HDD agree on using LBA.
MS-DOS 7 was the first DOS to be "LBA-aware", whatever that means.
CF cards and other flash media rather think in continuous sector numbers, in which their absolute addresses can be formed in different ways (CHS, E-CHS, LBA).
And so, the CF card just essentially uses what's trown at it. It doesn't judge.
However, it reports it official drive geometry, nevertheless - which is also used to tell maximum capacity.
Anyway, that's just a simple explanation.
Or a try of providing one. The underlying concept isn't as complicated as it sounds. 😅
I'm pretty sure what I wrote it's not complete or fully correct, I'm afraid.
If some else can explain it, please go on. 🙂👍
"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel
//My video channel//