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

Function ide_initialize_drive_parameters

src/ide.cpp:652–676  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

650}
651
652static void ide_initialize_drive_parameters (struct ide_hdf *ide)
653{
654 if (ide->hdhfd.size) {
655 ide->hdhfd.secspertrack = ide->regs.ide_nsector == 0 ? 256 : ide->regs.ide_nsector;
656 ide->hdhfd.heads = (ide->regs.ide_select & 15) + 1;
657 if (ide->hdhfd.hfd.ci.pcyls)
658 ide->hdhfd.cyls = ide->hdhfd.hfd.ci.pcyls;
659 else
660 ide->hdhfd.cyls = (int)((ide->hdhfd.size / ide->blocksize) / ((uae_u64)ide->hdhfd.secspertrack * ide->hdhfd.heads));
661 if (ide->hdhfd.heads * ide->hdhfd.cyls * ide->hdhfd.secspertrack > 16515072 || ide->lba48) {
662 if (ide->hdhfd.hfd.ci.pcyls)
663 ide->hdhfd.cyls = ide->hdhfd.hfd.ci.pcyls;
664 else
665 ide->hdhfd.cyls = ide->hdhfd.cyls_def;
666 ide->hdhfd.heads = ide->hdhfd.heads_def;
667 ide->hdhfd.secspertrack = ide->hdhfd.secspertrack_def;
668 }
669 } else {
670 ide->regs.ide_error |= IDE_ERR_ABRT;
671 ide->regs.ide_status |= IDE_STATUS_ERR;
672 }
673 write_log (_T("IDE%d initialize drive parameters, CYL=%d,SPT=%d,HEAD=%d\n"),
674 ide->num, ide->hdhfd.cyls, ide->hdhfd.secspertrack, ide->hdhfd.heads);
675 ide_interrupt (ide);
676}
677
678static void ide_set_multiple_mode (struct ide_hdf *ide)
679{

Callers 1

ide_do_commandFunction · 0.85

Calls 2

ide_interruptFunction · 0.85
write_logFunction · 0.70

Tested by

no test coverage detected