IDE selected channel is now reflected correctly in ide->select .
This commit is contained in:
@@ -1117,7 +1117,6 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
ide->select = val;
|
|
||||||
if (cur_ide[ide_board] != ((val>>4)&1)+(ide_board<<1))
|
if (cur_ide[ide_board] != ((val>>4)&1)+(ide_board<<1))
|
||||||
{
|
{
|
||||||
cur_ide[ide_board]=((val>>4)&1)+(ide_board<<1);
|
cur_ide[ide_board]=((val>>4)&1)+(ide_board<<1);
|
||||||
@@ -1143,6 +1142,7 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ide = &ide_drives[cur_ide[ide_board]];
|
ide = &ide_drives[cur_ide[ide_board]];
|
||||||
|
ide->select = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
ide->head = val & 0xF;
|
ide->head = val & 0xF;
|
||||||
@@ -1399,7 +1399,7 @@ uint8_t readide(int ide_board, uint16_t addr)
|
|||||||
|
|
||||||
case 0x1F6: /* Drive/Head */
|
case 0x1F6: /* Drive/Head */
|
||||||
// temp = (uint8_t)(ide->head | ((cur_ide[ide_board] & 1) ? 0x10 : 0) | (ide->lba ? 0x40 : 0) | 0xa0);
|
// temp = (uint8_t)(ide->head | ((cur_ide[ide_board] & 1) ? 0x10 : 0) | (ide->lba ? 0x40 : 0) | 0xa0);
|
||||||
temp = (uint8_t)ide->select;
|
temp = ((uint8_t)ide->select & 0xEF) | ((cur_ide[ide_board] & 1) ? 0x10 : 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1F7: /* Status */
|
case 0x1F7: /* Status */
|
||||||
|
Reference in New Issue
Block a user