mirror of
https://github.com/holub/mame
synced 2025-04-29 03:20:50 +03:00
commit
1af492f420
@ -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++) {
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -1274,7 +1274,7 @@ bool phi_device::if_cmd_received(uint8_t byte)
|
|||||||
if (m_t_state == PHI_T_TADS) {
|
if (m_t_state == PHI_T_TADS) {
|
||||||
BIT_SET(word, REG_IFIFO_TALK_BIT);
|
BIT_SET(word, REG_IFIFO_TALK_BIT);
|
||||||
}
|
}
|
||||||
m_fifo_in.enqueue(word);
|
rx_n_data_freeze(word);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1320,13 +1320,8 @@ bool phi_device::byte_received(uint8_t byte , bool eoi)
|
|||||||
LOG_0(("..stalled\n"));
|
LOG_0(("..stalled\n"));
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
m_fifo_in.enqueue(word);
|
|
||||||
LOG_0(("..OK\n"));
|
LOG_0(("..OK\n"));
|
||||||
if (m_t_state != PHI_T_TACS && m_t_state != PHI_T_ID3 &&
|
rx_n_data_freeze(word);
|
||||||
m_t_state != PHI_T_ID5 && m_t_state != PHI_T_SPAS) {
|
|
||||||
// If PHI didn't send this byte to itself, set data freeze
|
|
||||||
BIT_SET(m_reg_status, REG_STATUS_DATA_FREEZE_BIT);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (end_of_transfer) {
|
if (end_of_transfer) {
|
||||||
@ -1340,6 +1335,15 @@ bool phi_device::byte_received(uint8_t byte , bool eoi)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void phi_device::rx_n_data_freeze(uint16_t word)
|
||||||
|
{
|
||||||
|
m_fifo_in.enqueue(word);
|
||||||
|
if (m_sh_state != PHI_SH_STRS) {
|
||||||
|
// If PHI didn't send this byte to itself, set data freeze
|
||||||
|
BIT_SET(m_reg_status, REG_STATUS_DATA_FREEZE_BIT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool phi_device::ton_msg(void) const
|
bool phi_device::ton_msg(void) const
|
||||||
{
|
{
|
||||||
return BIT(m_reg_address , REG_ADDR_TA_BIT);
|
return BIT(m_reg_address , REG_ADDR_TA_BIT);
|
||||||
|
@ -276,6 +276,7 @@ private:
|
|||||||
void clear_nba(nba_origin_t origin);
|
void clear_nba(nba_origin_t origin);
|
||||||
bool if_cmd_received(uint8_t byte);
|
bool if_cmd_received(uint8_t byte);
|
||||||
bool byte_received(uint8_t byte , bool eoi);
|
bool byte_received(uint8_t byte , bool eoi);
|
||||||
|
void rx_n_data_freeze(uint16_t word);
|
||||||
bool ton_msg(void) const;
|
bool ton_msg(void) const;
|
||||||
bool lon_msg(void) const;
|
bool lon_msg(void) const;
|
||||||
bool odd_parity(uint8_t byte) const;
|
bool odd_parity(uint8_t byte) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user