mirror of
https://github.com/holub/mame
synced 2025-05-03 21:13:18 +03:00
poly1: Add software-selected baud rate divider (nw)
This commit is contained in:
parent
25a2a8bd27
commit
3302c1a0c0
@ -54,6 +54,7 @@ public:
|
|||||||
, m_pia1(*this, "pia1")
|
, m_pia1(*this, "pia1")
|
||||||
, m_ptm(*this, "ptm")
|
, m_ptm(*this, "ptm")
|
||||||
, m_speaker(*this, "speaker")
|
, m_speaker(*this, "speaker")
|
||||||
|
, m_acia_clock(*this, "acia_clock")
|
||||||
, m_videoram(*this, "videoram")
|
, m_videoram(*this, "videoram")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -62,6 +63,7 @@ public:
|
|||||||
DECLARE_READ8_MEMBER(videoram_r);
|
DECLARE_READ8_MEMBER(videoram_r);
|
||||||
DECLARE_WRITE_LINE_MEMBER( ptm_o2_callback );
|
DECLARE_WRITE_LINE_MEMBER( ptm_o2_callback );
|
||||||
DECLARE_WRITE_LINE_MEMBER( ptm_o3_callback );
|
DECLARE_WRITE_LINE_MEMBER( ptm_o3_callback );
|
||||||
|
DECLARE_WRITE8_MEMBER(baud_rate_w);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
@ -72,6 +74,7 @@ private:
|
|||||||
required_device<pia6821_device> m_pia1;
|
required_device<pia6821_device> m_pia1;
|
||||||
required_device<ptm6840_device> m_ptm;
|
required_device<ptm6840_device> m_ptm;
|
||||||
required_device<speaker_sound_device> m_speaker;
|
required_device<speaker_sound_device> m_speaker;
|
||||||
|
required_device<clock_device> m_acia_clock;
|
||||||
required_shared_ptr<uint8_t> m_videoram;
|
required_shared_ptr<uint8_t> m_videoram;
|
||||||
uint8_t m_term_data;
|
uint8_t m_term_data;
|
||||||
};
|
};
|
||||||
@ -85,7 +88,7 @@ static ADDRESS_MAP_START(poly_mem, AS_PROGRAM, 8, poly_state)
|
|||||||
AM_RANGE(0xe000,0xe003) AM_DEVREADWRITE("pia0", pia6821_device, read, write) //video control PIA 6821
|
AM_RANGE(0xe000,0xe003) AM_DEVREADWRITE("pia0", pia6821_device, read, write) //video control PIA 6821
|
||||||
AM_RANGE(0xe004,0xe004) AM_DEVREADWRITE("acia", acia6850_device, status_r, control_w)
|
AM_RANGE(0xe004,0xe004) AM_DEVREADWRITE("acia", acia6850_device, status_r, control_w)
|
||||||
AM_RANGE(0xe005,0xe005) AM_DEVREADWRITE("acia", acia6850_device, data_r, data_w)
|
AM_RANGE(0xe005,0xe005) AM_DEVREADWRITE("acia", acia6850_device, data_r, data_w)
|
||||||
//AM_RANGE(0xe006, 0xe006) // baud rate controller (0=9600,2=4800,4=2400,6=1200,8=600,A=300)
|
AM_RANGE(0xe006,0xe006) AM_WRITE(baud_rate_w)
|
||||||
AM_RANGE(0xe00c,0xe00f) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //keyboard PIA 6821
|
AM_RANGE(0xe00c,0xe00f) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //keyboard PIA 6821
|
||||||
AM_RANGE(0xe020,0xe027) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) //timer 6840
|
AM_RANGE(0xe020,0xe027) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) //timer 6840
|
||||||
AM_RANGE(0xe030,0xe037) AM_DEVREADWRITE("adlc", mc6854_device, read, write) //Data Link Controller 6854
|
AM_RANGE(0xe030,0xe037) AM_DEVREADWRITE("adlc", mc6854_device, read, write) //Data Link Controller 6854
|
||||||
@ -141,6 +144,13 @@ WRITE_LINE_MEMBER( poly_state::ptm_o3_callback )
|
|||||||
m_speaker->level_w(state);
|
m_speaker->level_w(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WRITE8_MEMBER(poly_state::baud_rate_w)
|
||||||
|
{
|
||||||
|
// baud rate controller (0=9600,2=4800,4=2400,6=1200,8=600,A=300)
|
||||||
|
int selector = (data & 0x0e) >> 1;
|
||||||
|
m_acia_clock->set_clock_scale((selector <= 5) ? 1.0 / (1 << selector) : 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( poly )
|
static MACHINE_CONFIG_START( poly )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", M6809E, XTAL_12MHz / 3) // 12.0576MHz
|
MCFG_CPU_ADD("maincpu", M6809E, XTAL_12MHz / 3) // 12.0576MHz
|
||||||
@ -184,9 +194,9 @@ static MACHINE_CONFIG_START( poly )
|
|||||||
//MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
|
//MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
|
||||||
//MCFG_ACIA6850_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts))
|
//MCFG_ACIA6850_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts))
|
||||||
|
|
||||||
//MCFG_DEVICE_ADD("acia_clock", CLOCK, 153600)
|
MCFG_DEVICE_ADD("acia_clock", CLOCK, 153600)
|
||||||
//MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("acia", acia6850_device, write_txc))
|
MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("acia", acia6850_device, write_txc))
|
||||||
//MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("acia", acia6850_device, write_rxc))
|
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("acia", acia6850_device, write_rxc))
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("adlc", MC6854, 0)
|
MCFG_DEVICE_ADD("adlc", MC6854, 0)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user