summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Robbbert <robbbert@users.noreply.github.com>2013-12-15 09:52:31 +0000
committer Robbbert <robbbert@users.noreply.github.com>2013-12-15 09:52:31 +0000
commit8093002724c9f1bd891aa57d23640eb615c1b23c (patch)
treeaa3a68338e74ae897b104b463cdecb27b2a9d41a /src
parent415e2cc8e974d39a210876410979c83c6b2432b4 (diff)
(MESS) v6809 : last bits
Diffstat (limited to 'src')
-rw-r--r--src/mess/drivers/v6809.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/mess/drivers/v6809.c b/src/mess/drivers/v6809.c
index 83828a1da4e..454aedbd85a 100644
--- a/src/mess/drivers/v6809.c
+++ b/src/mess/drivers/v6809.c
@@ -37,7 +37,7 @@ ToDo:
- Find the missing character generator rom.
- - Add sound. Pressing BEL character issues commands to the timer chip.
+ - Enable sound, when what seems to be a 6840 bug is fixed.
- Schematic is almost useless, riddled with omissions and errors.
All documents are in French, so no help there. The parts list
@@ -72,8 +72,11 @@ public:
, m_crtc(*this, "crtc")
, m_fdc(*this, "fdc")
, m_floppy0(*this, "fdc:0")
+ , m_speaker(*this, "speaker")
{ }
+ DECLARE_WRITE_LINE_MEMBER(speaker_en_w);
+ DECLARE_WRITE_LINE_MEMBER(speaker_w);
DECLARE_READ8_MEMBER(pb_r);
DECLARE_WRITE8_MEMBER(pa_w);
DECLARE_WRITE8_MEMBER(videoram_w);
@@ -85,6 +88,7 @@ public:
const UINT8 *m_p_chargen;
UINT16 m_video_address;
private:
+ bool m_speaker_en;
UINT8 m_video_index;
UINT8 m_term_data;
UINT8 m_vidbyte;
@@ -93,6 +97,7 @@ private:
required_device<mc6845_device> m_crtc;
required_device<mb8876_t> m_fdc;
required_device<floppy_connector> m_floppy0;
+ required_device<speaker_sound_device> m_speaker;
};
@@ -163,10 +168,7 @@ MC6845_UPDATE_ROW( v6809_update_row )
{
mem = (ma + x) & 0x7ff;
chr = state->m_p_videoram[mem];
- if (x == cursor_x)
- gfx = 0xff;
- else
- gfx = state->m_p_chargen[(chr<<4) | ra];
+ gfx = state->m_p_chargen[(chr<<4) | ra] ^ ((x == cursor_x) ? 0xff : 0);
/* Display a scanline of a character (8 pixels) */
*p++ = palette[BIT(gfx, 7)];
@@ -306,13 +308,26 @@ static const pia6821_interface pia1_intf =
DEVCB_CPU_INPUT_LINE("maincpu", M6809_IRQ_LINE) /* IRQB output */
};
+// this should output 1 to enable sound, then output 0 after a short time
+// however it continuously outputs 1
+WRITE_LINE_MEMBER( v6809_state::speaker_en_w )
+{
+ m_speaker_en = state;
+}
+
+WRITE_LINE_MEMBER( v6809_state::speaker_w )
+{
+// if (m_speaker_en)
+// m_speaker->level_w(state);
+}
+
static const ptm6840_interface mc6840_intf =
{
XTAL_16MHz / 4,
- { 0, 0, 0 },
+ { 4000000/14, 4000000/14, 4000000/14/8 },
{ DEVCB_NULL,
- DEVCB_DEVICE_LINE_MEMBER("speaker", speaker_sound_device, level_w),
- DEVCB_DEVICE_LINE_MEMBER("speaker", speaker_sound_device, level_w) },
+ DEVCB_DRIVER_LINE_MEMBER(v6809_state, speaker_w),
+ DEVCB_DRIVER_LINE_MEMBER(v6809_state, speaker_en_w) },
DEVCB_CPU_INPUT_LINE("maincpu", M6809_IRQ_LINE)
};