New machines added as MACHINE_NOT_WORKING:

- Network Computing Devices NCD-17C [R. Belmont, Al Kossow]
This commit is contained in:
arbee 2018-11-10 20:23:00 -05:00
parent 9ec3f459cd
commit 9047b3e753
3 changed files with 234 additions and 0 deletions

View File

@ -1105,6 +1105,7 @@ function linkProjects_mame_mess(_target, _subtarget)
"multitch",
"nakajima",
"nascom",
"ncd",
"ne",
"nec",
"netronic",

230
src/mame/drivers/ncd17c.cpp Normal file
View File

@ -0,0 +1,230 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
/****************************************************************************
drivers/ncd17c.cpp
NCD 17" color X terminal
Hardware:
- MC68020 CPU, no FPU, no MMU
- 2681 DUART (Logitech serial mouse)
- Unknown AMD Ethernet chip (c) 1987. LANCE or derivative?
- Bt478 RAMDAC
1c8000 mask ff000000 - DUART?
****************************************************************************/
#include "emu.h"
#include "bus/rs232/rs232.h"
#include "cpu/m68000/m68000.h"
#include "machine/mc68681.h"
#include "screen.h"
class ncd_17c_state : public driver_device
{
public:
ncd_17c_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_screen(*this, "screen"),
m_mainram(*this, "mainram"),
m_duart(*this, "duart")
{
}
void ncd_17c(machine_config &config);
void ncd_17c_map(address_map &map);
void init_ncd_17c();
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
DECLARE_WRITE32_MEMBER(bt478_palette_w);
DECLARE_READ32_MEMBER(ramsize_r);
DECLARE_WRITE32_MEMBER(ramsize_w);
INTERRUPT_GEN_MEMBER(vblank);
private:
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
required_shared_ptr<uint32_t> m_mainram;
required_device<scn2681_device> m_duart;
inline void ATTR_PRINTF(3,4) verboselog( int n_level, const char *s_fmt, ... );
u32 m_palette[256];
u8 m_r, m_g, m_b, m_entry, m_stage;
u8 m_ramsize_magic, m_ramsize_phase;
};
#define VERBOSE_LEVEL ( 0 )
#define ENABLE_VERBOSE_LOG (0)
inline void ATTR_PRINTF(3,4) ncd_17c_state::verboselog( int n_level, const char *s_fmt, ... )
{
#if ENABLE_VERBOSE_LOG
if( VERBOSE_LEVEL >= n_level )
{
va_list v;
char buf[ 32768 ];
va_start( v, s_fmt );
vsprintf( buf, s_fmt, v );
va_end( v );
logerror("%s: %s", machine().describe_context(), buf);
}
#endif
}
void ncd_17c_state::machine_reset()
{
m_entry = 0;
m_stage = 0;
m_r = m_g = m_b = 0;
m_ramsize_phase = 0;
}
INTERRUPT_GEN_MEMBER(ncd_17c_state::vblank)
{
m_maincpu->set_input_line(M68K_IRQ_5, HOLD_LINE);
}
uint32_t ncd_17c_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
uint32_t *scanline;
int x, y;
uint8_t pixels;
uint8_t *m_vram = (uint8_t *)m_mainram.target();
for (y = 0; y < 768; y++)
{
scanline = &bitmap.pix32(y);
for (x = 0; x < 1024; x++)
{
pixels = m_vram[(y * 1024) + (BYTE4_XOR_BE(x))];
*scanline++ = m_palette[pixels];
}
}
return 0;
}
void ncd_17c_state::ncd_17c_map(address_map &map)
{
map(0x00000000, 0x000bffff).rom().region("maincpu", 0);
map(0x001c8000, 0x001c803f).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask32(0xff000000);
map(0x001d0000, 0x001d0003).w(FUNC(ncd_17c_state::bt478_palette_w));
map(0x01000000, 0x02ffffff).ram(); //w(FUNC(ncd_17c_state::ramsize_r), FUNC(ncd_17c_state::ramsize_w));
map(0x03000000, 0x03ffffff).ram().share("mainram");
}
READ32_MEMBER(ncd_17c_state::ramsize_r)
{
return m_ramsize_magic << 24;
}
WRITE32_MEMBER(ncd_17c_state::ramsize_w)
{
if (!m_ramsize_phase)
{
m_ramsize_magic = (data >> 24);
}
m_ramsize_phase ^= 1;
}
WRITE_LINE_MEMBER(ncd_17c_state::duart_irq_handler)
{
//m_maincpu->set_input_line_and_vector(M68K_IRQ_6, state, M68K_INT_ACK_AUTOVECTOR);
}
WRITE32_MEMBER(ncd_17c_state::bt478_palette_w)
{
if (mem_mask & 0xff000000)
{
m_entry = data >> 24;
m_stage = 0;
m_r = m_g = m_b = 0;
}
else if (mem_mask & 0x00ff0000)
{
switch (m_stage)
{
case 0:
m_r = (data>>16) & 0xff;
m_stage++;
break;
case 1:
m_g = (data>>16) & 0xff;
m_stage++;
break;
case 2:
m_b = (data>>16) & 0xff;
m_palette[m_entry] = rgb_t(m_r, m_g, m_b);
//printf("palette[%d] = RGB(%02x, %02x, %02x)\n", m_entry, m_r, m_g, m_b);
m_entry++;
m_entry &= 0xff;
m_stage = 0;
m_r = m_g = m_b = 0;
break;
}
}
else if (mem_mask & 0x0000ff00)
{
// pixel mask register, unsure if this is used yet
}
}
void ncd_17c_state::ncd_17c(machine_config &config)
{
/* basic machine hardware */
M68020(config, m_maincpu, 20000000);
m_maincpu->set_addrmap(AS_PROGRAM, &ncd_17c_state::ncd_17c_map);
m_maincpu->set_periodic_int(FUNC(ncd_17c_state::vblank), attotime::from_hz(72));
SCN2681(config, m_duart, 3.6864_MHz_XTAL);
m_duart->irq_cb().set(FUNC(ncd_17c_state::duart_irq_handler));
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(72);
m_screen->set_visarea(0, 1024-1, 0, 768-1);
m_screen->set_size(1152, 800);
m_screen->set_screen_update(FUNC(ncd_17c_state::screen_update));
}
static INPUT_PORTS_START( ncd_17c )
INPUT_PORTS_END
void ncd_17c_state::init_ncd_17c()
{
// uint32_t *src = (uint32_t*)(memregion("maincpu")->base());
// uint32_t *dst = m_mainram;
// memcpy(dst, src, 8);
// m_maincpu->reset();
}
/***************************************************************************
ROM definition(s)
***************************************************************************/
ROM_START( ncd17c )
ROM_REGION32_BE(0xc0000, "maincpu", 0)
ROM_LOAD16_BYTE( "ncd17c_v2.2.1_b0e.bin", 0x000000, 0x020000, CRC(c47648af) SHA1(563e17ea8f5c9d418fd81f1e797a226937c0e187) )
ROM_LOAD16_BYTE( "ncd17c_v2.2.1_b0o.bin", 0x000001, 0x020000, CRC(b6a8c3ca) SHA1(f02e33d88861ebcb402fb554719c1cb072a5fd14) )
ROM_LOAD16_BYTE( "ncd17c_v2.2.1_b1e.bin", 0x040000, 0x020000, CRC(25500987) SHA1(cebdf07c69f1c783a67b92d6efdfdd7067dc910f) )
ROM_LOAD16_BYTE( "ncd17c_v2.2.1_b1o.bin", 0x040001, 0x020000, CRC(a5d5ab8a) SHA1(51ddb7020abd5f83224bff48eab254375e9d27f9) )
ROM_LOAD16_BYTE( "ncd17c_v2.2.1_b2e.bin", 0x080000, 0x020000, CRC(390dac65) SHA1(3f9c886433dff87847135b8f3d8e8ead75d3abf3) )
ROM_LOAD16_BYTE( "ncd17c_v2.2.1_b2o.bin", 0x080001, 0x020000, CRC(2e5ebfaa) SHA1(d222c6cc743046a1c1dec1829c24fa918a54849d) )
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1990, ncd17c, 0, 0, ncd_17c, ncd_17c, ncd_17c_state, init_ncd_17c, "Network Computing Devices", "NCD-17C", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )

View File

@ -29820,6 +29820,9 @@ nc100 // 1992 NC100
nc150 // 1992 NC150
nc200 // 1993 NC200
@source:ncd17c.cpp
ncd17c // 1990 Network Computing Devices
@source:nds.cpp
nds // 2004 Nintendo