132 lines
4.4 KiB
C++
132 lines
4.4 KiB
C++
// license:BSD-3-Clause
|
|
// copyright-holders:
|
|
/***********************************************************************************************************************************
|
|
|
|
Skeleton driver for Relisys TR-175 II color terminal.
|
|
|
|
************************************************************************************************************************************/
|
|
|
|
#include "emu.h"
|
|
#include "cpu/m68000/m68000.h"
|
|
#include "machine/mc68681.h"
|
|
#include "video/ramdac.h"
|
|
#include "video/scn2674.h"
|
|
#include "screen.h"
|
|
|
|
class tr175_state : public driver_device
|
|
{
|
|
public:
|
|
tr175_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
: driver_device(mconfig, type, tag)
|
|
, m_maincpu(*this, "maincpu")
|
|
{ }
|
|
|
|
void tr175(machine_config &config);
|
|
|
|
private:
|
|
DECLARE_WRITE8_MEMBER(ffec01_w);
|
|
DECLARE_WRITE8_MEMBER(fff000_w);
|
|
DECLARE_READ8_MEMBER(fff400_r);
|
|
SCN2674_DRAW_CHARACTER_MEMBER(draw_character);
|
|
|
|
void mem_map(address_map &map);
|
|
void ramdac_map(address_map &map);
|
|
void vram_map(address_map &map);
|
|
|
|
required_device<cpu_device> m_maincpu;
|
|
};
|
|
|
|
WRITE8_MEMBER(tr175_state::ffec01_w)
|
|
{
|
|
logerror("%s: Writing %02X to FFEC01\n", machine().describe_context(), data);
|
|
}
|
|
|
|
WRITE8_MEMBER(tr175_state::fff000_w)
|
|
{
|
|
logerror("%s: Writing %02X to FFF000\n", machine().describe_context(), data);
|
|
}
|
|
|
|
READ8_MEMBER(tr175_state::fff400_r)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void tr175_state::mem_map(address_map &map)
|
|
{
|
|
map(0x000000, 0x01ffff).rom().region("maincpu", 0);
|
|
map(0xfe8000, 0xfebfff).ram(); // 8-bit?
|
|
map(0xfefe00, 0xfefedd).nopw(); // 8-bit; cleared at startup
|
|
map(0xff8000, 0xffbfff).ram(); // main RAM
|
|
map(0xff0000, 0xff7fff).ram(); // video RAM?
|
|
map(0xffe000, 0xffe01f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0xff00);
|
|
map(0xffe400, 0xffe40f).rw("avdc", FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0xff00);
|
|
map(0xffe800, 0xffe805).unmaprw(); //AM_DEVREADWRITE8("pai", um82c11_device, read, write, 0xff00)
|
|
map(0xffec01, 0xffec01).w(FUNC(tr175_state::ffec01_w));
|
|
map(0xfff000, 0xfff000).w(FUNC(tr175_state::fff000_w));
|
|
map(0xfff400, 0xfff400).r(FUNC(tr175_state::fff400_r));
|
|
map(0xfffc01, 0xfffc01).w("ramdac", FUNC(ramdac_device::index_w));
|
|
map(0xfffc03, 0xfffc03).w("ramdac", FUNC(ramdac_device::pal_w));
|
|
map(0xfffc05, 0xfffc05).w("ramdac", FUNC(ramdac_device::mask_w));
|
|
}
|
|
|
|
SCN2674_DRAW_CHARACTER_MEMBER(tr175_state::draw_character)
|
|
{
|
|
}
|
|
|
|
void tr175_state::vram_map(address_map &map)
|
|
{
|
|
map(0x0000, 0x3fff).nopr();
|
|
}
|
|
|
|
void tr175_state::ramdac_map(address_map &map)
|
|
{
|
|
map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
|
|
}
|
|
|
|
static INPUT_PORTS_START( tr175 )
|
|
INPUT_PORTS_END
|
|
|
|
void tr175_state::tr175(machine_config &config)
|
|
{
|
|
M68000(config, m_maincpu, 12'000'000);
|
|
m_maincpu->set_addrmap(AS_PROGRAM, &tr175_state::mem_map);
|
|
|
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
|
screen.set_raw(28.322_MHz_XTAL, 900, 0, 720, 449, 0, 416); // guess
|
|
screen.set_screen_update("avdc", FUNC(scn2674_device::screen_update));
|
|
|
|
scn2674_device &avdc(SCN2674(config, "avdc", 28.322_MHz_XTAL / 18)); // guess
|
|
avdc.intr_callback().set_inputline("maincpu", M68K_IRQ_2);
|
|
avdc.set_character_width(18); // guess
|
|
avdc.set_display_callback(FUNC(tr175_state::draw_character));
|
|
avdc.set_addrmap(0, &tr175_state::vram_map);
|
|
avdc.set_screen("screen");
|
|
|
|
scn2681_device &duart(SCN2681(config, "duart", 11.0592_MHz_XTAL / 3)); // is this the right clock?
|
|
duart.irq_cb().set_inputline("maincpu", M68K_IRQ_1);
|
|
|
|
PALETTE(config, "palette", 0x100);
|
|
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0));
|
|
ramdac.set_addrmap(0, &tr175_state::ramdac_map);
|
|
ramdac.set_palette("palette");
|
|
}
|
|
|
|
|
|
|
|
/**************************************************************************************************************
|
|
|
|
Relisys TR-175 II.
|
|
Chips: MC68000P12, HM82C11C, SCN2681, 3x W24257-70L, KDA0476BCN-66 (RAMDAC), 4 undumped proms, Beeper, Button battery
|
|
Crystals: 28.322, 46.448, 11.0592, unknown.
|
|
Colour screen (VGA).
|
|
|
|
***************************************************************************************************************/
|
|
|
|
ROM_START( tr175 )
|
|
ROM_REGION(0x20000, "maincpu", 0)
|
|
ROM_LOAD16_BYTE( "v6.05.u50", 0x00001, 0x10000, CRC(5a33b6b3) SHA1(d673f50dd88f8a154ddaabe34cfcc9ab91435a4c) )
|
|
ROM_LOAD16_BYTE( "v6.05.u45", 0x00000, 0x10000, CRC(e220befe) SHA1(8402280577e6de4b85843222bbd6b06a3f625b3b) )
|
|
ROM_END
|
|
|
|
COMP( 1982, tr175, 0, 0, tr175, tr175, tr175_state, empty_init, "Relisys", "TR-175 II", MACHINE_IS_SKELETON )
|