Skip to content

Commit

Permalink
New systems marked not working
Browse files Browse the repository at this point in the history
------------------------------
Tektronix XD88 [CJ Reha]
  • Loading branch information
pmackinlay committed Jul 3, 2024
1 parent a6617e5 commit 759fe7b
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/mame/mame.lst
Original file line number Diff line number Diff line change
Expand Up @@ -44454,6 +44454,9 @@ tek6130 // Tektronix 6130
@source:tektronix/tekxp33x.cpp
tekxp330 //

@source:tektronix/xd88.cpp
xd88_01

@source:telenova/compis.cpp
compis // 1985 Telenova Compis
compis2 // 1985 Telenova Compis
Expand Down
95 changes: 95 additions & 0 deletions src/mame/tektronix/xd88.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
// license:BSD-3-Clause
// copyright-holders:Patrick Mackinlay

/*
* Tektronix XD88 systems.
*
* Sources:
* - https://wiki.unix-haters.org/doku.php?id=tektronix:xd88:resources
*
* TODO:
* - everything
*/

#include "emu.h"

#include "cpu/m88000/m88000.h"

#include "machine/mc88200.h"

//#define VERBOSE (LOG_GENERAL)
#include "logmacro.h"

namespace {

class xd88_state : public driver_device
{
public:
xd88_state(machine_config const &mconfig, device_type type, char const *tag)
: driver_device(mconfig, type, tag)
, m_cpu(*this, "cpu")
, m_cmmu(*this, "cmmu%u", 0U)
, m_boot(*this, "boot")
{
}

void xd88_01(machine_config &config);

protected:
virtual void machine_start() override;
virtual void machine_reset() override;

void cpu_map(address_map &map);

private:
required_device<mc88100_device> m_cpu;
required_device_array<mc88200_device, 8> m_cmmu;

memory_view m_boot;
};

void xd88_state::machine_start()
{
}

void xd88_state::machine_reset()
{
m_boot.select(0);
}

void xd88_state::cpu_map(address_map &map)
{
// TODO: RAM options (8M is standard)
map(0x0000'0000, 0x007f'ffff).ram();

map(0x0000'0000, 0x0003'ffff).view(m_boot);
m_boot[0](0x0000'0000, 0x0003'ffff).rom().region("eprom", 0);

map(0xfe00'0000, 0xfe03'ffff).rom().region("eprom", 0);
}

void xd88_state::xd88_01(machine_config &config)
{
MC88100(config, m_cpu, 20'000'000);
m_cpu->set_addrmap(AS_PROGRAM, &xd88_state::cpu_map);

for (unsigned i = 0; i < std::size(m_cmmu); i++)
MC88200(config, m_cmmu[i], 20'000'000, i).set_mbus(m_cpu, AS_PROGRAM);

// TODO: multiple i&d cmmu's
m_cpu->set_cmmu_d(m_cmmu[0]);
m_cpu->set_cmmu_i(m_cmmu[4]);
}

ROM_START(xd88_01)
ROM_REGION32_BE(0x40000, "eprom", 0)
ROMX_LOAD("160-5796-04__u3930_v1.4.u3930", 0, 0x10000, CRC(db2ef744) SHA1(82ddb494fc1e2693da3d021c1cfeea49ef06ed3e), ROM_SKIP(3))
ROMX_LOAD("160-5797-04__u4230_v1.4.u4230", 1, 0x10000, CRC(8fe40d66) SHA1(30cacd590c2598cb6db1933309d2d60e57f375eb), ROM_SKIP(3))
ROMX_LOAD("160-5798-04__u4530_v1.4.u4530", 2, 0x10000, CRC(2aa2503c) SHA1(edc869a7ac9b6ce68603146884cf9a95ee22d39e), ROM_SKIP(3))
ROMX_LOAD("160-5799-04__u4830_v1.4.u4830", 3, 0x10000, CRC(f7ecedae) SHA1(6063e616e4c1de5af048bd2cb61ad64a57c7f5a4), ROM_SKIP(3))
ROM_END

} // anonymous namespace

/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP(1990, xd88_01, 0, 0, xd88_01, 0, xd88_state, empty_init, "Tektronix", "XD88/01", MACHINE_IS_SKELETON)

0 comments on commit 759fe7b

Please sign in to comment.