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

Function ide_read_reg

src/ide.cpp:1386–1486  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1384}
1385
1386uae_u32 ide_read_reg (struct ide_hdf *ide, int ide_reg)
1387{
1388 uae_u8 v = 0;
1389 bool isdrv = ide_isdrive (ide);
1390
1391 if (!ide)
1392 goto end;
1393
1394 if (ide->regs.ide_status & IDE_STATUS_BSY)
1395 ide_reg = IDE_STATUS;
1396 if (!ide_isdrive (ide)) {
1397 if (ide_reg == IDE_STATUS || ide_reg == IDE_DEVCON) {
1398 if (ide->pair->irq)
1399 ide->pair->irq = 0;
1400 if (ide_isdrive (ide->pair))
1401 v = 0x01;
1402 else
1403 v = 0xff;
1404 } else {
1405 v = 0;
1406 }
1407 goto end;
1408 }
1409
1410 switch (ide_reg)
1411 {
1412 case IDE_SECONDARY:
1413 case IDE_SECONDARY + 1:
1414 case IDE_SECONDARY + 2:
1415 case IDE_SECONDARY + 3:
1416 case IDE_SECONDARY + 4:
1417 case IDE_SECONDARY + 5:
1418 v = 0xff;
1419 break;
1420 case IDE_DRVADDR:
1421 v = ((ide->ide_drv ? 2 : 1) | ((ide->regs.ide_select & 15) << 2)) ^ 0xff;
1422 break;
1423 case IDE_DATA:
1424 break;
1425 case IDE_ERROR:
1426 v = ide->regs.ide_error;
1427 break;
1428 case IDE_NSECTOR:
1429 if (isdrv) {
1430 if (ide->regs.ide_devcon & 0x80)
1431 v = ide->regs.ide_nsector2;
1432 else
1433 v = ide->regs.ide_nsector;
1434 }
1435 break;
1436 case IDE_SECTOR:
1437 if (isdrv) {
1438 if (ide->regs.ide_devcon & 0x80)
1439 v = ide->regs.ide_sector2;
1440 else
1441 v = ide->regs.ide_sector;
1442 check_maxtransfer (ide, 2);
1443 }

Callers 4

gayle_read2Function · 0.85
gayle_attr_readFunction · 0.85
gayle_common_read_byteFunction · 0.85
get_ide_reg_multiFunction · 0.85

Calls 4

ide_isdriveFunction · 0.85
check_maxtransferFunction · 0.85
m68k_getpcFunction · 0.85
write_logFunction · 0.70

Tested by

no test coverage detected