diff options
Diffstat (limited to 'src/mame/drivers/micromon.cpp')
-rw-r--r-- | src/mame/drivers/micromon.cpp | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/src/mame/drivers/micromon.cpp b/src/mame/drivers/micromon.cpp new file mode 100644 index 00000000000..6d38665db7b --- /dev/null +++ b/src/mame/drivers/micromon.cpp @@ -0,0 +1,96 @@ +// license:BSD-3-Clause +// copyright-holders:Robbbert +/* + +Micromon 7141 ECG unit for hospitals. + +No manuals or schematic found. + +From the photos, we can see a CDP1802ACE CPU, 2.4576 crystal, +a GM76C28A-10 2Kx8 static RAM (like 6116), 2 ROMS and a bunch of small chips. +There's also 4 dipswitches in a single package. 1=on,2=off,3=off,4=on. +The unit has an audible alarm, presumably a speaker, but it doesn't appear in any photo. + +The front panel has a CRT display (looks like cyan on black), some buttons with unknown +symbols, a 5-position rotary switch, a plug for the ECG device, a socket called "Sync" +and some LEDs. + +Date of manufacture unknown, however the chips have date codes of 1994 and 1995. + +*****************************************************************************************/ + +#include "emu.h" +#include "cpu/cosmac/cosmac.h" + + +class micromon_state : public driver_device +{ +public: + micromon_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + { } + + void micromon(machine_config &config); + +private: + DECLARE_READ_LINE_MEMBER(clear_r); + + void micromon_io(address_map &map); + void micromon_mem(address_map &map); + + virtual void machine_reset() override; + uint8_t m_resetcnt; + required_device<cosmac_device> m_maincpu; +}; + +void micromon_state::micromon_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("maincpu", 0); + map(0x2000, 0x3fff).ram(); +} + +void micromon_state::micromon_io(address_map &map) +{ +} + +static INPUT_PORTS_START( micromon ) +INPUT_PORTS_END + +READ_LINE_MEMBER( micromon_state::clear_r ) +{ + if (m_resetcnt < 0x10) + m_maincpu->set_state_int(cosmac_device::COSMAC_R0, 0x0000); + if (m_resetcnt < 0x20) + m_resetcnt++; + // set reset pin to normal + return 1; +} + +void micromon_state::machine_reset() +{ + m_resetcnt = 0; +} + + +void micromon_state::micromon(machine_config &config) +{ + // basic machine hardware + CDP1802(config, m_maincpu, 2457600); + m_maincpu->set_addrmap(AS_PROGRAM, µmon_state::micromon_mem); + m_maincpu->set_addrmap(AS_IO, µmon_state::micromon_io); + m_maincpu->wait_cb().set_constant(1); + m_maincpu->clear_cb().set(FUNC(micromon_state::clear_r)); + + // video hardware + + // sound +} + +ROM_START( micromon7141 ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD( "721421_rev4.0_25_7_95.ic2", 0x0000, 0x1000, CRC(b2a26439) SHA1(66a65d19b3cff185e82b10fc7ecb965c51751b7c) ) + ROM_LOAD( "702423_rev4.0_25_7_95.ic41", 0x1000, 0x1000, CRC(5efe6b4b) SHA1(b3670c53e2527e824cc22e4a54db9abf5a07239f) ) +ROM_END + +SYST( 1995?, micromon7141, 0, 0, micromon, micromon, micromon_state, empty_init, "Kontron Instruments", "Micromon 7141 ECG unit", MACHINE_IS_SKELETON ) |