From 063928663ca090dd8e21b9ba598e85e74e2282d9 Mon Sep 17 00:00:00 2001 From: Dirk Best Date: Tue, 27 Jul 2021 09:05:07 +0200 Subject: New machines marked as NOT_WORKING ---------------------------------- ACT Apricot XEN [John Elliott] --- scripts/target/mame/mess.lua | 1 + src/mame/drivers/apxen.cpp | 214 +++++++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 + src/mame/mess.flt | 1 + 4 files changed, 219 insertions(+) create mode 100644 src/mame/drivers/apxen.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 24f8e044852..4ef88975da0 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -1676,6 +1676,7 @@ files { MAME_DIR .. "src/mame/drivers/apricot.cpp", MAME_DIR .. "src/mame/drivers/apricotf.cpp", MAME_DIR .. "src/mame/drivers/apricotp.cpp", + MAME_DIR .. "src/mame/drivers/apxen.cpp", MAME_DIR .. "src/mame/machine/apricotkb.cpp", MAME_DIR .. "src/mame/machine/apricotkb.h", MAME_DIR .. "src/mame/drivers/victor9k.cpp", diff --git a/src/mame/drivers/apxen.cpp b/src/mame/drivers/apxen.cpp new file mode 100644 index 00000000000..2727a1d1a7d --- /dev/null +++ b/src/mame/drivers/apxen.cpp @@ -0,0 +1,214 @@ +// license: BSD-3-Clause +// copyright-holders: Dirk Best +/*************************************************************************** + + ACT Apricot XEN + + Codename "Candyfloss". The system is not IBM compatible but can run + MS-DOS (and Windows) as well as Xenix. + + Models: + - XEN FD (512 KB RAM, 2x 720 KB floppy) + - XEN HD (1 MB RAM, 1x 720 KB or 1.2 MB floppy, 20M HDD) + - XEN WS (1 MB RAM, no drives) + + TODO: + - Everything + + Notes: + - Two graphics cards: Mono and colour boards + +***************************************************************************/ + +#include "emu.h" +#include "cpu/i86/i286.h" +#include "machine/pic8259.h" +#include "machine/wd_fdc.h" +#include "machine/z80sio.h" +#include "video/mc6845.h" +#include "imagedev/floppy.h" +#include "formats/apridisk.h" +#include "emupal.h" +#include "screen.h" + + +namespace { + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class apxen_state : public driver_device +{ +public: + apxen_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_pic(*this, "pic%u", 0U), + m_crtc(*this, "crtc"), + m_mono_palette(*this, "mono_palette") + { } + + void apxen(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + required_device m_maincpu; + required_device_array m_pic; + required_device m_crtc; + required_device m_mono_palette; + + void mem_map(address_map &map); + void io_map(address_map &map); + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + MC6845_UPDATE_ROW(crtc_update_row); + + uint8_t get_slave_ack(offs_t offset); +}; + + +//************************************************************************** +// ADDRESS MAPS +//************************************************************************** + +void apxen_state::mem_map(address_map &map) +{ + map(0x000000, 0x07ffff).ram(); + map(0x0f0000, 0x0fffff).rom().region("bios", 0); + map(0xff0000, 0xffffff).rom().region("bios", 0); +} + +void apxen_state::io_map(address_map &map) +{ + map(0x068, 0x068).w(m_crtc, FUNC(hd6845s_device::address_w)); + map(0x06a, 0x06a).rw(m_crtc, FUNC(hd6845s_device::register_r), FUNC(hd6845s_device::register_w)); +// map(0xc00, 0xc00) leds +// map(0xc20, 0xc20) printer +// map(0xc30, 0xc31) SN76489 +// map(0xc40, 0xc47) CIO +// map(0xc50, 0xc57) SIO +// map(0xc60, 0xc6f) MM5827 RTC +// map(0xc80, 0xc87) FDC +// map(0xc90, 0xc93) uPD7261 HDC + map(0xca0, 0xca3).rw(m_pic[0], FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0xca4, 0xca7).rw(m_pic[1], FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); +// map(0xcb0, 0xcb7) PIT +// map(0xcc0, 0xccd) uPD71071 DMA 1 +// map(0xcd0, 0xcdd) uPD71071 DMA 2 +// map(0xce0, 0xce0) cpu control +// map(0xcf0, 0xcf0) cpu reset +} + + +//************************************************************************** +// INPUT DEFINITIONS +//************************************************************************** + +static INPUT_PORTS_START( apxen ) +INPUT_PORTS_END + + +//************************************************************************** +// VIDEO EMULATION +//************************************************************************** + +uint32_t apxen_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +MC6845_UPDATE_ROW( apxen_state::crtc_update_row ) +{ +} + + +//************************************************************************** +// MACHINE EMULATION +//************************************************************************** + +void apxen_state::machine_start() +{ +} + +void apxen_state::machine_reset() +{ +} + +uint8_t apxen_state::get_slave_ack(offs_t offset) +{ + if (offset == 2) + return m_pic[1]->acknowledge(); + + return 0x00; +} + + +//************************************************************************** +// MACHINE DEFINTIONS +//************************************************************************** + +void apxen_state::apxen(machine_config &config) +{ + I80286(config, m_maincpu, 15_MHz_XTAL / 2); + m_maincpu->set_addrmap(AS_PROGRAM, &apxen_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &apxen_state::io_map); + m_maincpu->set_irq_acknowledge_callback(m_pic[0], FUNC(pic8259_device::inta_cb)); + + PIC8259(config, m_pic[0], 0); + m_pic[0]->out_int_callback().set_inputline(m_maincpu, 0); + m_pic[0]->in_sp_callback().set_constant(1); + m_pic[0]->read_slave_ack_callback().set(FUNC(apxen_state::get_slave_ack)); + + PIC8259(config, m_pic[1], 0); + m_pic[1]->out_int_callback().set(m_pic[0], FUNC(pic8259_device::ir2_w)); + m_pic[1]->in_sp_callback().set_constant(0); + + // video hardware + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_color(rgb_t::green()); + screen.set_size(800, 400); + screen.set_visarea(0, 800-1, 0, 400-1); + screen.set_refresh_hz(72); + screen.set_screen_update(FUNC(apxen_state::screen_update)); + + PALETTE(config, m_mono_palette, palette_device::MONOCHROME_HIGHLIGHT); + + HD6845S(config, m_crtc, 24_MHz_XTAL / 20); // actually MB89321B + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(10); + m_crtc->set_update_row_callback(FUNC(apxen_state::crtc_update_row)); +} + + +//************************************************************************** +// ROM DEFINITIONS +//************************************************************************** + +ROM_START( apxen ) + ROM_REGION16_LE(0x10000, "bios", 0) + // LO-XEN 3.1.3 7143 (checksum matches) + ROM_LOAD16_BYTE("lo-xen_313.ic80", 0x0000, 0x8000, CRC(c2a1fd6e) SHA1(8dfc711dd910bc3d43c1120978ba199a13463068)) + // HI-XEN 3.1.3 9BF0 (checksum matches) + ROM_LOAD16_BYTE("hi-xen_313.ic37", 0x0001, 0x8000, CRC(72ee2f09) SHA1(da11043d40a694802f6d3d27a4359067dd19c8e6)) + + // should probably be moved elsewhere + ROM_REGION(0x2000, "hdd", 0) + ROM_LOAD("rodime_ro3055.bin", 0x0000, 0x2000, CRC(61d1544a) SHA1(2177a4c6409c0ee3d3e3e6c659085adf236f8726)) +ROM_END + + +} // anonymous namespace + + +//************************************************************************** +// SYSTEM DRIVERS +//************************************************************************** + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1985, apxen, 0, 0, apxen, apxen, apxen_state, empty_init, "ACT", "Apricot XEN", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a4c6e472b32..169f37d4526 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -1484,6 +1484,9 @@ f2 // @source:apricotp.cpp fp // +@source:apxen.cpp +apxen // 1985 ACT + @source:aquarium.cpp aquarium // (c) 1996 Excellent System aquariumj // (c) 1996 Excellent System diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 9feb275f7c0..c08748404cc 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -80,6 +80,7 @@ applix.cpp apricot.cpp apricotf.cpp apricotp.cpp +apxen.cpp aquarius.cpp arcadia.cpp argo.cpp -- cgit v1.2.3