MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / ide_write_reg

Function ide_write_reg

src/ide.cpp:1488–1561  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1486}
1487
1488void ide_write_reg (struct ide_hdf *ide, int ide_reg, uae_u32 val)
1489{
1490 if (!ide)
1491 return;
1492
1493 ide->regs1->ide_devcon &= ~0x80; /* clear HOB */
1494 ide->regs0->ide_devcon &= ~0x80; /* clear HOB */
1495 if (IDE_LOG > 2 && ide_reg > 0 && (1 || ide->num > 0))
1496 write_log (_T("IDE%d PUT register %d=%02X (%08X)\n"), ide->num, ide_reg, (uae_u32)val & 0xff, m68k_getpc ());
1497
1498 switch (ide_reg)
1499 {
1500 case IDE_DRVADDR:
1501 break;
1502 case IDE_DEVCON:
1503 if ((ide->regs.ide_devcon & 4) == 0 && (val & 4) != 0) {
1504 reset_device (ide, true, false);
1505 if (IDE_LOG > 1)
1506 write_log (_T("IDE%d: SRST\n"), ide->num);
1507 }
1508 ide->regs0->ide_devcon = val;
1509 ide->regs1->ide_devcon = val;
1510 break;
1511 case IDE_DATA:
1512 break;
1513 case IDE_ERROR:
1514 ide->regs0->ide_feat2 = ide->regs0->ide_feat;
1515 ide->regs0->ide_feat = val;
1516 ide->regs1->ide_feat2 = ide->regs1->ide_feat;
1517 ide->regs1->ide_feat = val;
1518 break;
1519 case IDE_NSECTOR:
1520 ide->regs0->ide_nsector2 = ide->regs0->ide_nsector;
1521 ide->regs0->ide_nsector = val;
1522 ide->regs1->ide_nsector2 = ide->regs1->ide_nsector;
1523 ide->regs1->ide_nsector = val;
1524 break;
1525 case IDE_SECTOR:
1526 ide->regs0->ide_sector2 = ide->regs0->ide_sector;
1527 ide->regs0->ide_sector = val;
1528 ide->regs1->ide_sector2 = ide->regs1->ide_sector;
1529 ide->regs1->ide_sector = val;
1530 break;
1531 case IDE_LCYL:
1532 ide->regs0->ide_lcyl2 = ide->regs0->ide_lcyl;
1533 ide->regs0->ide_lcyl = val;
1534 ide->regs1->ide_lcyl2 = ide->regs1->ide_lcyl;
1535 ide->regs1->ide_lcyl = val;
1536 break;
1537 case IDE_HCYL:
1538 ide->regs0->ide_hcyl2 = ide->regs0->ide_hcyl;
1539 ide->regs0->ide_hcyl = val;
1540 ide->regs1->ide_hcyl2 = ide->regs1->ide_hcyl;
1541 ide->regs1->ide_hcyl = val;
1542 break;
1543 case IDE_SELECT:
1544 ide->regs0->ide_select = val;
1545 ide->regs1->ide_select = val;

Callers 4

gayle_write2Function · 0.85
gayle_attr_writeFunction · 0.85
gayle_common_write_byteFunction · 0.85
put_ide_reg_multiFunction · 0.85

Calls 5

m68k_getpcFunction · 0.85
reset_deviceFunction · 0.85
ide_isdriveFunction · 0.85
ide_do_commandFunction · 0.85
write_logFunction · 0.70

Tested by

no test coverage detected