summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/evmbug.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/evmbug.cpp')
-rw-r--r--src/mame/drivers/evmbug.cpp66
1 files changed, 26 insertions, 40 deletions
diff --git a/src/mame/drivers/evmbug.cpp b/src/mame/drivers/evmbug.cpp
index bc742bb35d9..f93e2da9e2d 100644
--- a/src/mame/drivers/evmbug.cpp
+++ b/src/mame/drivers/evmbug.cpp
@@ -2,23 +2,17 @@
// copyright-holders:Robbbert
/***************************************************************************
-Stuart's Breadboard Project. TMS9995 evaluation kit TMAM6095.
+ Stuart's Breadboard Project. TMS9995 evaluation kit TMAM6095.
-2013-06-02 Skeleton driver.
+ 2013-06-02 Skeleton driver.
-http://www.stuartconner.me.uk/tms9995_eval_module/tms9995_eval_module.htm
+ http://www.avjd51.dsl.pipex.com/tms9995_eval_module/tms9995_eval_module.htm
-It uses TMS9902 UART for comms, but our implementation of that chip is
-not ready for rs232.h as yet.
-
-Press any key to get it started. All input to be in uppercase. Haven't found
-any commands that work as yet.
****************************************************************************/
#include "emu.h"
#include "cpu/tms9900/tms9995.h"
-//#include "machine/tms9902.h"
#include "machine/terminal.h"
@@ -39,9 +33,7 @@ private:
virtual void machine_reset() override;
uint8_t m_term_data;
uint8_t m_term_out;
- bool m_rin;
- bool m_rbrl;
- required_device<tms9995_device> m_maincpu;
+ required_device<cpu_device> m_maincpu;
required_device<generic_terminal_device> m_terminal;
};
@@ -52,10 +44,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map, AS_IO, 8, evmbug_state )
ADDRESS_MAP_UNMAP_HIGH
- //AM_RANGE(0x0000, 0x0003) AM_DEVREAD("uart1", tms9902_device, cruread)
- //AM_RANGE(0x0000, 0x001f) AM_DEVWRITE("uart1", tms9902_device, cruwrite)
- AM_RANGE(0x0000, 0x0003) AM_READ(rs232_r)
- AM_RANGE(0x0000, 0x001f) AM_WRITE(rs232_w)
+ AM_RANGE(0x0000, 0x0007) AM_WRITE(rs232_w)
+ AM_RANGE(0x0000, 0x0002) AM_READ(rs232_r)
ADDRESS_MAP_END
/* Input ports */
@@ -64,64 +54,60 @@ INPUT_PORTS_END
READ8_MEMBER( evmbug_state::rs232_r )
{
- if (offset == 0)
- return m_term_data;
- else
+ static uint8_t temp = 0;
+ temp^=0xff;
+ if (offset == 1)
+ return temp;
+
if (offset == 2)
- return (m_rbrl ? 0x20 : 0) | 0xc0;
- else
{
- m_rin ^= 1;
- return m_rin << 7;
+ return 0xff;//(m_term_data) ? 0 : 0xff;
}
+
+ uint8_t ret = m_term_data;
+ m_term_data = 0;
+ return ret;
}
WRITE8_MEMBER( evmbug_state::rs232_w )
{
- if (offset < 8)
- {
- if (offset == 0)
- m_term_out = 0;
+ if (offset == 0)
+ m_term_out = 0;
- m_term_out |= (data << offset);
+ m_term_out |= (data << offset);
- if (offset == 7)
- m_terminal->write(space, 0, m_term_out & 0x7f);
- }
- else
- if (offset == 18)
- m_rbrl = 0;
+ if (offset == 7)
+ m_terminal->write(space, 0, m_term_out & 0x7f);
}
void evmbug_state::kbd_put(u8 data)
{
m_term_data = data;
- m_rbrl = data ? 1 : 0;
}
void evmbug_state::machine_reset()
{
- m_rbrl = 0;
+ m_term_data = 0;
// Disable auto wait state generation by raising the READY line on reset
- m_maincpu->ready_line(ASSERT_LINE);
+ static_cast<tms9995_device*>(machine().device("maincpu"))->ready_line(ASSERT_LINE);
}
static MACHINE_CONFIG_START( evmbug )
// basic machine hardware
// TMS9995 CPU @ 12.0 MHz
// We have no lines connected yet
- MCFG_TMS99xx_ADD("maincpu", TMS9995, XTAL_12MHz, mem_map, io_map )
+ MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, mem_map, io_map )
/* video hardware */
MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(evmbug_state, kbd_put))
-
- //MCFG_DEVICE_ADD("uart1", TMS9902, XTAL_12MHz / 4)
MACHINE_CONFIG_END
/* ROM definition */
ROM_START( evmbug )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+// ROM_LOAD( "u8.bin", 0x0000, 0x1000, CRC(bdb8c7bd) SHA1(340829dcb7a65f2e830fd5aff82a312e3ed7918f) )
+// ROM_LOAD( "u9.bin", 0x1000, 0x0800, CRC(4de459ea) SHA1(00a42fe556d4ffe1f85b2ce369f544b07fbd06d9) )
ROM_LOAD( "evmbug.bin", 0x0000, 0x8000, CRC(a239ec56) SHA1(65b500d7d0f897ce0c320cf3ec32ff4042774599) )
ROM_END