- if( ATA_ReadDMA( Disk, extendedLBA, 1, &mbr ) != 0 )
- break; // Stop on Errors
-
- extendedLBA = 0;
-
- if( mbr.Parts[0].SystemID == 0 ) continue;
- if( mbr.Parts[0].Boot == 0x0 || mbr.Parts[0].Boot == 0x80 // LBA 28
- || mbr.Parts[0].Boot == 0x1 || mbr.Parts[0].Boot == 0x81 // LBA 48
- )
- {
- if(mbr.Parts[0].SystemID == 0xF || mbr.Parts[0].SystemID == 0x7)
- extendedLBA = mbr.Parts[0].LBAStart;
- else
- gATA_Disks[Disk].NumPartitions ++;
- }
-
- if( mbr.Parts[1].SystemID == 0 ) continue;
- if( mbr.Parts[1].Boot == 0x0 || mbr.Parts[1].Boot == 0x80 // LBA 28
- || mbr.Parts[1].Boot == 0x1 || mbr.Parts[1].Boot == 0x81 // LBA 48
- )
- {
- if(mbr.Parts[1].SystemID == 0xF || mbr.Parts[1].SystemID == 0x7) {
- if(extendedLBA == 0) {
- Warning("Disk %i has twp forward link in the extended partition",
- Disk);
- break;
- }
- extendedLBA = mbr.Parts[1].LBAStart;
- }
- else {
- if(extendedLBA != 0) {
- Warning("Disk %i lacks a forward link in the extended partition",
- Disk);
- break;
- }
- gATA_Disks[Disk].NumPartitions ++;
- }
- }
+ extendedLBA = ATA_MBR_int_ReadExt(Disk, extendedLBA, &base, &len);
+ if( extendedLBA == -1 ) return ;
+ gATA_Disks[Disk].NumPartitions ++;