diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 3f0dcc4d5ac..f31d2bd657d 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -4114,6 +4114,7 @@ files { MAME_DIR .. "src/mame/drivers/ms9540.cpp", MAME_DIR .. "src/mame/drivers/mstation.cpp", MAME_DIR .. "src/mame/drivers/mt735.cpp", + MAME_DIR .. "src/mame/drivers/mtd1256.cpp", MAME_DIR .. "src/mame/drivers/mx2178.cpp", MAME_DIR .. "src/mame/drivers/mycom.cpp", MAME_DIR .. "src/mame/drivers/myvision.cpp", diff --git a/src/mame/drivers/mtd1256.cpp b/src/mame/drivers/mtd1256.cpp new file mode 100644 index 00000000000..95864efc3fe --- /dev/null +++ b/src/mame/drivers/mtd1256.cpp @@ -0,0 +1,93 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/********************************************************************************** + + Skeleton driver for data acquisition station by Geonica S.A. + +**********************************************************************************/ + +#include "emu.h" +//#include "bus/rs232/rs232.h" +#include "cpu/mc68hc11/mc68hc11.h" +#include "machine/bankdev.h" +//#include "machine/icl7109.h" +#include "machine/mm58274c.h" +#include "machine/mm74c922.h" +//#include "machine/nvram.h" +//#include "screen.h" + +class mtd1256_state : public driver_device +{ +public: + mtd1256_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_bank0(*this, "bank0") + { + } + + void mtd1256(machine_config &config); + +private: + void portd_w(u8 data); + + void bank0_map(address_map &map); + void mem_map(address_map &map); + + required_device m_maincpu; + required_device m_bank0; +}; + + +void mtd1256_state::portd_w(u8 data) +{ + m_bank0->set_bank(BIT(data, 5)); +} + +void mtd1256_state::bank0_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x100f).rw("rtc", FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)); +} + +void mtd1256_state::mem_map(address_map &map) +{ + map(0x0000, 0x0fff).m(m_bank0, FUNC(address_map_bank_device::amap8)); + map(0x1000, 0x1fff).ram(); + map(0x2000, 0xffff).rom().region("program", 0x2000); // partly overlaid by internal spaces +} + + +static INPUT_PORTS_START(mtd1256) +INPUT_PORTS_END + +void mtd1256_state::mtd1256(machine_config &config) +{ + MC68HC11A1(config, m_maincpu, 1.8432_MHz_XTAL); // yes, this appears to be the CPU XTAL + m_maincpu->set_addrmap(AS_PROGRAM, &mtd1256_state::mem_map); + m_maincpu->out_pd_callback().set(FUNC(mtd1256_state::portd_w)); + + ADDRESS_MAP_BANK(config, m_bank0); + m_bank0->set_addrmap(0, &mtd1256_state::bank0_map); + m_bank0->set_data_width(8); + m_bank0->set_endianness(ENDIANNESS_BIG); + m_bank0->set_addr_width(13); + m_bank0->set_stride(0x1000); + + MM58274C(config, "rtc", 32.768_kHz_XTAL); // TODO: 1 second interrupt output configured + + MM74C923(config, "encoder", 0); // timing parameters unknown + + // TODO: add 4x NEC µPD431000AGW-70L 128Kx8 SRAMs + 3V lithium battery + // TODO: add Maxim ICL7109CQH 12-bit A/D converter + // TODO: add STN LCD panel + // TODO: add RS232 port (through ADM202JRW) +} + + +ROM_START(mtd1256) + ROM_REGION(0x10000, "program", 0) + ROM_LOAD("cieenres.b_26-11-92.u7", 0x00000, 0x10000, CRC(a507effd) SHA1(46b3399c0c26c6952a5582c79c14663515e3e180)) +ROM_END + +SYST(1992, mtd1256, 0, 0, mtd1256, mtd1256, mtd1256_state, empty_init, "Geonica", "Meteodata 1256", MACHINE_IS_SKELETON) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f637267dcc3..391207a5a25 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -29332,6 +29332,9 @@ yis60464 // @source:mt735.cpp mt735 // +@source:mtd1256.cpp +mtd1256 // + @source:mtouchxl.cpp mtouchxl // 1997 Merit Industries mtchxl5k // 1998 Merit Industries diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 9992bd6dd59..c1345f91d73 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -533,6 +533,7 @@ msbc1.cpp mstation.cpp msx.cpp mt735.cpp +mtd1256.cpp mtx.cpp multi16.cpp multi8.cpp