deph wrote:
a-1. Is LBA just a method of expressing blocks in a linear mode?
As said above, yes.
deph wrote:
a-2. (you still have to convert lba address to chs in order to read from a device)
It depends. Maybe. Not necessarily. (Insert your weaselword of choice.) See answer to b.
deph wrote:
b. Whose extension is INT 0x13 AH=41 checking ? (BIOS extension AH=42 for reading blocks using LBA addressing mode ?!)
Originally, there was no LBA ... disks only had CHS mode. You used CHS mode by calling standardized BIOS INT13h functions with CHS values. This worked for 10 years, until disks outgrew CHS addressing. So disk manufacturers invented LBA28. The different BIOS manufacturers all created different ways of handling LBA. It took a few years for the BIOS industry to settle on a standard for LBA addressing, but eventually they did. They created a new standardized set of INT13h functions called "The INT13h Extensions". After not too long, all the BIOSes on all the PCs supported the Extensions. This was in the mid-1990's. The AH=41 BIOS call is simply checking itself to verify that this extended set of BIOS function calls is supported by the BIOS. And really, if the AH=41 call even exists, then all the Extensions exist -- but you can't know until you make the call.
So, the answer really is: if the BIOS of your target PC is older than the mid-1990's, then LBA mode will not be supported by the BIOS, and the INT13h Extensions will not be supported by the BIOS, and the AH=41 and AH=42 calls will return errors, and you will need to calculate CHS conversions for any LBA of any drive you want to access through the BIOS.
If all your target machines are newer than mid-1990's, then the INT13h Extensions are always supported, and you can access LBAs directly with no conversions ever.
So: do you really want to kill yourself trying to support 80486 machines that are 15 or more years old?