From bb515c3c05eb11e107150c01e711901bda240732 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 4 Nov 2023 04:12:09 +0100 Subject: [PATCH] Fixed the accidentally broken LBA mode on IDE hard disks. --- src/disk/hdc_ide.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index 126a9d583..14ceb6504 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -1544,17 +1544,15 @@ ide_writeb(uint16_t addr, uint8_t val, void *priv) if (!reset) { if (!(ide->tf->atastat & (BSY_STAT | DRQ_STAT))) { - ide->tf->head = val & 0xf; - ide->tf->lba = val & 0x40; - - ide->lba_addr = (ide->lba_addr & 0x0ffffff) | (ide->tf->head << 24); + ide->tf->drvsel = val & 0xef; + ide->lba_addr = (ide->lba_addr & 0x0ffffff) | + (ide->tf->head << 24); } if (!(ide_other->tf->atastat & (BSY_STAT | DRQ_STAT))) { - ide_other->tf->head = val & 0xf; - ide_other->tf->lba = val & 0x40; - - ide_other->lba_addr = (ide_other->lba_addr & 0x0ffffff) | (ide->tf->head << 24); + ide_other->tf->drvsel = val & 0xef; + ide_other->lba_addr = (ide_other->lba_addr & 0x0ffffff) | + (ide->tf->head << 24); } } break;