summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/hawk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/hawk.cpp')
-rw-r--r--src/mame/drivers/hawk.cpp148
1 files changed, 148 insertions, 0 deletions
diff --git a/src/mame/drivers/hawk.cpp b/src/mame/drivers/hawk.cpp
new file mode 100644
index 00000000000..3c2d318196e
--- /dev/null
+++ b/src/mame/drivers/hawk.cpp
@@ -0,0 +1,148 @@
+// license:BSD-3-Clause
+// copyright-holders:Nigel Barnes
+/***************************************************************************
+
+ Husky Hawk
+
+ No schematics or manuals available.
+
+ Known RAM configurations:
+ Hawk - 352K
+
+****************************************************************************/
+
+#include "emu.h"
+#include "bus/rs232/rs232.h"
+#include "cpu/z180/z180.h"
+#include "machine/msm6242.h"
+#include "machine/ram.h"
+#include "machine/nvram.h"
+#include "sound/spkrdev.h"
+#include "emupal.h"
+#include "screen.h"
+#include "speaker.h"
+
+
+class hawk_state : public driver_device
+{
+public:
+ hawk_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_palette(*this, "palette")
+ , m_speaker(*this, "speaker")
+ , m_rs232(*this, "serial")
+ , m_ram(*this, RAM_TAG)
+ , m_nvram(*this, "nvram")
+ { }
+
+ void hawk(machine_config &config);
+
+ void init_hawk();
+
+protected:
+ virtual void machine_reset() override;
+
+private:
+ void hawk_palette(palette_device &palette) const;
+
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ void hawk_mem(address_map &map);
+ void hawk_io(address_map &map);
+
+ required_device<cpu_device> m_maincpu;
+ required_device<palette_device> m_palette;
+ required_device<speaker_sound_device> m_speaker;
+ required_device<rs232_port_device> m_rs232;
+ required_device<ram_device> m_ram;
+ required_device<nvram_device> m_nvram;
+};
+
+void hawk_state::hawk_io(address_map &map)
+{
+ map.unmap_value_high();
+ //map.global_mask(0xff);
+ //map(0x18, 0x18).nopw();
+ //map(0x40, 0x4f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write));
+ //map(0xcd, 0xcd).noprw(); // 0x00
+}
+
+void hawk_state::hawk_mem(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x7ffff).ram().share(RAM_TAG);
+}
+
+static INPUT_PORTS_START( hawk )
+INPUT_PORTS_END
+
+void hawk_state::machine_reset()
+{
+}
+
+void hawk_state::init_hawk()
+{
+ m_nvram->set_base(m_ram->pointer(), m_ram->size());
+}
+
+uint32_t hawk_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ // video RAM at 78000 ??
+ return 0;
+}
+
+void hawk_state::hawk_palette(palette_device &palette) const
+{
+ palette.set_pen_color(0, rgb_t(138, 146, 148));
+ palette.set_pen_color(1, rgb_t(92, 83, 88));
+}
+
+
+void hawk_state::hawk(machine_config &config)
+{
+ /* basic machine hardware */
+ Z180(config, m_maincpu, 12.288_MHz_XTAL / 2); /* HD64B180R0F */
+ m_maincpu->set_addrmap(AS_PROGRAM, &hawk_state::hawk_mem);
+ m_maincpu->set_addrmap(AS_IO, &hawk_state::hawk_io);
+
+ /* video hardware */
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
+ screen.set_refresh_hz(60);
+ screen.set_screen_update(FUNC(hawk_state::screen_update));
+ screen.set_size(240, 64);
+ screen.set_visarea(0, 239, 0, 63);
+ PALETTE(config, m_palette, FUNC(hawk_state::hawk_palette), 2);
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+
+ /* rtc */
+ MSM6242(config, "rtc", 32.768_kHz_XTAL); // M6242B
+
+ RS232_PORT(config, m_rs232, default_rs232_devices, nullptr);
+
+ /* internal ram */
+ RAM(config, m_ram).set_default_size("352K");
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+}
+
+
+ROM_START(hawk)
+ ROM_REGION(0x20000, "maincpu", ROMREGION_ERASEFF)
+ ROM_SYSTEM_BIOS(0, "120", "DEMOS 2.21 V1.20")
+ ROMX_LOAD("hawk-v1.20.rom", 0x00000, 0x20000, CRC(186b1974) SHA1(eb46041715266cc263d71aad4f09cdf0c913cd16), ROM_BIOS(0))
+ ROM_SYSTEM_BIOS(1, "110", "DEMOS 2.21 V1.10")
+ ROMX_LOAD("hawk-v1.10-0.rom", 0x00000, 0x08000, CRC(c933ed5c) SHA1(f7b8375099ade54e3573467bf8e7f62624958e4c), ROM_BIOS(1))
+ ROMX_LOAD("hawk-v1.10-1.rom", 0x08000, 0x08000, CRC(121b5ce0) SHA1(baf06bc0d16501b50cbf97b686612b00098c73ab), ROM_BIOS(1))
+ ROMX_LOAD("hawk-v1.10-2.rom", 0x10000, 0x08000, CRC(cd5d94c7) SHA1(44c996b4bf00185ccb303cf9ef9bbd705018390c), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS(2, "110a", "DEMOS 2.21 V1.10 (alt)")
+ ROMX_LOAD("v1.10_0.rom", 0x00000, 0x08000, CRC(7ad48dcf) SHA1(0e2b82dec0a082f4a8032b7a64cc9afdbf421521), ROM_BIOS(2))
+ ROMX_LOAD("v1.10_1.rom", 0x08000, 0x08000, CRC(121b5ce0) SHA1(baf06bc0d16501b50cbf97b686612b00098c73ab), ROM_BIOS(2))
+ ROMX_LOAD("v1.10_2.rom", 0x10000, 0x08000, CRC(cd5d94c7) SHA1(44c996b4bf00185ccb303cf9ef9bbd705018390c), ROM_BIOS(2))
+ ROMX_LOAD("56189.rom", 0x18000, 0x08000, CRC(1b2db82b) SHA1(2185d27816bde263c62db1a2441d8a6d2cb6d193), ROM_BIOS(2))
+ROM_END
+
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+COMP( 1987, hawk, 0, 0, hawk, hawk, hawk_state, init_hawk, "Husky Computers Ltd", "Husky Hawk", MACHINE_IS_SKELETON )