New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
heath/h19.cpp Implement Shift-Reset functionality #11339
Conversation
src/mame/heathkit/tlb.cpp
Outdated
{ | ||
m_reset_pending = false; | ||
reset(); | ||
m_reset(ASSERT_LINE); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be immediately followed by an m_reset(CLEAR_LINE);
? I've seen that for some other systems.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CPU devices don't run while the reset line is asserted, which mirrors how real chips typically behave. So it's generally a good idea to clear the line when it's not being asserted for consistency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How does it work in real life? Does it use a monostable to generate a pulse? If that’s the case, you can use a timer to deassert it after an appropriate amount of time.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I looks like it is actually held in reset while the keys are both pressed. When one of the keys is released, the reset line is cleared.
src/mame/heathkit/z37_fdc.cpp
Outdated
void heath_z37_fdc_device::device_reset() | ||
{ | ||
m_control_reg = 0; | ||
m_interface_reg = 0; | ||
|
||
m_intrq_allowed = false; | ||
m_drq_allowed = false; | ||
m_access_track_sector = false; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the interrupt and/or DMA request outputs were asserted before the device was reset, they should be deasserted due to m_intrq_allowed
and m_drq_allowed
becoming false here, shouldn’t they? You need to call the callbacks to notify whatever’s connected of the change.
heathkit/h89.cpp: Hold the main CPU in reset while keys pressed. heathkit/z37_fdc.cpp: Implemented device reset.
heathkit/h89.cpp: Hold the main CPU in reset while keys pressed. heathkit/z37_fdc.cpp: Implemented device reset.
Attempt 2 of implementing reset functionality for H19/H89 previous pr - #11330 was reverted. This PR address comments on the reverted one.
Original Info from reverted PR: