diff --git a/src/emu/machine/64h156.c b/src/emu/machine/64h156.c index b4f1354b515..05c18e02b6b 100644 --- a/src/emu/machine/64h156.c +++ b/src/emu/machine/64h156.c @@ -97,7 +97,7 @@ inline void c64h156_device::receive_bit() if (m_zero_count >= m_cycles_until_random_flux) { m_bit_sync = 1; - + m_zero_count = 0; m_cycles_until_random_flux = (rand() % 367) + 33; } @@ -387,9 +387,10 @@ void c64h156_device::execute_run() if (m_mtr) { receive_bit(); - decode_bit(); } + decode_bit(); + m_icount--; } while (m_icount > 0); } diff --git a/src/lib/formats/g64_dsk.c b/src/lib/formats/g64_dsk.c index 3b5a4b0dbc7..49542e0fae7 100644 --- a/src/lib/formats/g64_dsk.c +++ b/src/lib/formats/g64_dsk.c @@ -71,6 +71,7 @@ bool g64_format::load(io_generic *io, UINT32 form_factor, floppy_image *image) { offs_t track_offset = pick_integer_le(img, TRACK_OFFSET + (track * 4), 4); if (track_offset > size) throw emu_fatalerror("g64_format: Track %u offset %06x out of bounds", track, track_offset); + if (!track_offset) continue; offs_t speed_zone = pick_integer_le(img, SPEED_ZONE + (track * 4), 4); if (speed_zone > 3) throw emu_fatalerror("g64_format: Unsupported variable speed zones on track %d", track);