hp9845: fixed a weird case of missed synchronization in 9895 drive

This commit is contained in:
fulivi 2017-01-31 15:20:31 +01:00
parent 2602b52517
commit 78f2381549
3 changed files with 3 additions and 24 deletions

View File

@ -48,8 +48,8 @@
Hardware Maintenance Manual Hardware Maintenance Manual
TODO/Issues: TODO/Issues:
* floppy_image_device sometimes reports the wrong state for ready & * floppy_image_device sometimes reports the wrong state for wpt
wpt signals signal
* IBM mode hasn't been tested yet * IBM mode hasn't been tested yet
*********************************************************************/ *********************************************************************/
@ -232,10 +232,6 @@ void hp9895_device::device_reset()
m_timeout_timer->reset(); m_timeout_timer->reset();
m_byte_timer->reset(); m_byte_timer->reset();
m_half_bit_timer->reset(); m_half_bit_timer->reset();
#if 0
// DEBUG DEBUG DEBUG DEBUG
for (auto& r : m_ready) r = 2;
#endif
} }
void hp9895_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) void hp9895_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
@ -705,19 +701,6 @@ READ8_MEMBER(hp9895_device::switches2_r)
void hp9895_device::floppy_ready_cb(floppy_image_device *floppy , int state) void hp9895_device::floppy_ready_cb(floppy_image_device *floppy , int state)
{ {
#if 0
// DEBUG DEBUG DEBUG DEBUG
for (unsigned i = 0; i < 2; i++) {
if (floppy == m_drives[ i ]->get_device()) {
if (m_ready[ i ] != state) {
LOG(("Ready %u=%d\n" , i , state));
m_ready[ i ] = state;
}
break;
}
}
#endif
if (state) { if (state) {
// Set Disk Changed flag when a drive is not ready // Set Disk Changed flag when a drive is not ready
for (unsigned i = 0; i < 2; i++) { for (unsigned i = 0; i < 2; i++) {

View File

@ -109,10 +109,6 @@ private:
uint8_t m_sync_cnt; // U28 & U73 uint8_t m_sync_cnt; // U28 & U73
bool m_hiden; bool m_hiden;
bool m_mgnena; bool m_mgnena;
#if 0
// DEBUG DEBUG DEBUG DEBUG
int m_ready[ 2 ];
#endif
// Timers // Timers
emu_timer *m_timeout_timer; emu_timer *m_timeout_timer;

View File

@ -80,7 +80,7 @@ int fdc_pll_t::feed_read_data(attotime &tm, const attotime& edge, const attotime
ctime = next; ctime = next;
tm = next; tm = next;
if(edge.is_never() || edge >= next) { if(edge.is_never() || edge > next) {
// No transition in the window means 0 and pll in free run mode // No transition in the window means 0 and pll in free run mode
phase_adjust = attotime::zero; phase_adjust = attotime::zero;
return 0; return 0;