[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

IDE board BIOS question

I have a functioning CP/M 2.2 BIOS, but my CF card does not appear to be in LBA mode.  My BIOS uses this sequence to put it into LBA mode:
        LD      D,11100000B            ;Data for IDE SDH reg (512bytes, LBA mode,single drive)
        LD      E,REGshd               ;00001110,(0EH) CS0,A2,A1,  
        CALL    IDEwr8D                ;Write byte to select the MASTER device
Word 49 of the drive ID has bit 9 set which indicates LBA mode is supported.  The drive reports there are 32 sectors per track and 16 heads.  When in LBA mode, if I attempt to read track 0, sector 33, an error is returned.  Going to track 1 and second 1 works, but again, only sectors up to 32 are valid on a given track.

My code has the wrlba function from MYIDE, but it appears to treat tracks/sectors as just tracks and sectors without an attempt to merge the two together into a single large LBA sector number.

My board is one of the early ones with a single IDE port.  Is there something slightly different about it so that the initialization sequence above won't work properly?  Am I missing some basic understanding of how the code is supposed to work?

Any advice is appreciated.