diff --git a/hash/wizard_cart.xml b/hash/wizard_cart.xml new file mode 100644 index 00000000000..1187f9b3a79 --- /dev/null +++ b/hash/wizard_cart.xml @@ -0,0 +1,51 @@ + + + + + + + + 3 Dimensional Spreadsheet (IQ-8B01) + 1990 + PCSG + + + + + + + + + + + + 8-Language Translator (IQ-703A) + 1988 + Sharp Corporation + + + + + + + + + + + + Time Expense Manager (IQ-701A) + 1988 + Traveling Software, Inc. + + + + + + + + + + + diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index ba5dd78e47b..93fcb0a4e7a 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3590,6 +3590,7 @@ files { MAME_DIR .. "src/mame/video/mz80.cpp", MAME_DIR .. "src/mame/machine/mz80.cpp", MAME_DIR .. "src/mame/drivers/mz2000.cpp", + MAME_DIR .. "src/mame/drivers/wizard.cpp", MAME_DIR .. "src/mame/drivers/x1.cpp", MAME_DIR .. "src/mame/includes/x1.h", MAME_DIR .. "src/mame/machine/x1.cpp", diff --git a/src/mame/drivers/wizard.cpp b/src/mame/drivers/wizard.cpp new file mode 100644 index 00000000000..6612ad24c44 --- /dev/null +++ b/src/mame/drivers/wizard.cpp @@ -0,0 +1,134 @@ +// license:BSD-3-Clause +// copyright-holders: + +/* +Sharp Wizard series of electronic organizers + +Currently only the IQ-7000 is dumped (sold in the US as OZ-7000) + +Other known undumped models are: +IQ-7100M +OZ-7200 WIZARD +IQ-7300M +IQ-7520M +IQ-7700M +IQ-7720M +IQ-8100M +IQ-8200 +IQ-8300M +IQ-8500M +IQ-8900G +IQ-8920G +OZ-9520 WIZARD +IQ-9000G +IQ-9200G + +Sharp followed up with the Zaurus series (see drivers/zaurus.cpp) +*/ + +#include "emu.h" + +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" +#include "cpu/arm7/arm7.h" // wrong, needs CPU core +#include "cpu/arm7/arm7core.h" + +#include "screen.h" +#include "softlist.h" +#include "speaker.h" +#include "screen.h" + + +namespace { + +class wizard_state : public driver_device +{ +public: + wizard_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_cart(*this, "cartslot") + , m_cart_region(nullptr) + { } + + void iq7000(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + void main_map(address_map &map); + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load); + + required_device m_maincpu; + required_device m_cart; + memory_region *m_cart_region; +}; + + +void wizard_state::machine_start() +{ + // if there's a cart, override the standard mapping + if (m_cart && m_cart->exists()) + { + m_cart_region = memregion(std::string(m_cart->tag()) + GENERIC_ROM_REGION_TAG); + } +} + +void wizard_state::machine_reset() +{ +} + +DEVICE_IMAGE_LOAD_MEMBER(wizard_state::cart_load) +{ + uint32_t size = m_cart->common_get_size("rom"); + + m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); + + return image_init_result::PASS; +} + +static INPUT_PORTS_START( iq7000 ) +INPUT_PORTS_END + +uint32_t wizard_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +void wizard_state::main_map(address_map &map) +{ +} + +void wizard_state::iq7000(machine_config &config) +{ + ARM9(config, m_maincpu, 240000000); // actually Sharp SC62015B02, currently unemulated + m_maincpu->set_addrmap(AS_PROGRAM, &wizard_state::main_map); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); // all wrong, TBD + screen.set_refresh_hz(50); + screen.set_screen_update(FUNC(wizard_state::screen_update)); + screen.set_size(96, 64); + screen.set_visarea_full(); + + GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "wizard_cart"); + m_cart->set_width(GENERIC_ROM16_WIDTH); + m_cart->set_device_load(FUNC(wizard_state::cart_load)); + + SOFTWARE_LIST(config, "cart_list").set_original("wizard_cart"); +} + +ROM_START( iq7000 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "iq7000.bin", 0x00000, 0x10000, CRC(04ba80ca) SHA1(fe25e7c892b1e57641ff75bcd703882e28627fda) ) +ROM_END + +} // Anonymous namespace + + +CONS( 2015, iq7000, 0, 0, iq7000, iq7000, wizard_state, empty_init, "Sharp", "IQ-7000", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index d5b000e3701..ae3fdf6b3a7 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -42158,6 +42158,9 @@ wiz // (c) 1985 Seibu Kaihatsu wizt // (c) 1985 Taito Corporation wizta // (c) 1985 Taito Corporation +@source:wizard.cpp +iq7000 // + @source:wmg.cpp wmg // Williams 6in1 Multigame, Clay Cowgill diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 17981558ed3..a8f97e43210 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -1110,6 +1110,7 @@ vtech2.cpp vtech_eu3a12.cpp wangpc.cpp wicat.cpp +wizard.cpp wrinkles.cpp wswan.cpp wxstar4000.cpp