Previous 199869 Revisions Next

r26438 Thursday 28th November, 2013 at 16:14:04 UTC by smf
fix for divide by zero, if there is no chd. (nw)
[src/emu/machine]idehd.c

trunk/src/emu/machine/idehd.c
r26437r26438
2222ata_mass_storage_device::ata_mass_storage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock,const char *shortname, const char *source)
2323   : ata_hle_device(mconfig, type, name, tag, owner, clock, shortname, source),
2424   m_can_identify_device(0),
25   m_num_cylinders(0),
26   m_num_sectors(0),
27   m_num_heads(0),
2528   m_master_password(NULL),
2629   m_user_password(NULL)
2730{
r26437r26438
341344
342345attotime ata_mass_storage_device::seek_time()
343346{
344   /* just set a timer */
347   int sectors_per_cylinder =  m_num_heads * m_num_sectors;
348
349   if (sectors_per_cylinder == 0 || m_num_cylinders == 0)
350      return attotime::zero;
351
345352   int new_lba = lba_address();
346
347   int old_cylinder = m_cur_lba / (m_num_heads * m_num_sectors);
348   int new_cylinder = new_lba / (m_num_heads * m_num_sectors);
353   int old_cylinder = m_cur_lba / sectors_per_cylinder;
354   int new_cylinder = new_lba / sectors_per_cylinder;
349355   int diff = abs(old_cylinder - new_cylinder);
350356
351357   m_cur_lba = new_lba;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team