summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-11-10 22:21:23 -0500
committer AJR <ajrhacker@users.noreply.github.com>2018-11-10 22:21:23 -0500
commitd0e28392dce862dc32128cd8e4650fb890d6564e (patch)
treeac4071366d9ec7b87765b92a07e71e033805bd82
parent6459de6d865e16b0fa0acaafd0ceb7721bf70656 (diff)
ncd17c: Add screen raw parameters; improve documentation (nw)
-rw-r--r--src/emu/xtal.cpp1
-rw-r--r--src/mame/drivers/ncd17c.cpp67
2 files changed, 35 insertions, 33 deletions
diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp
index 03bcd3cee3a..1310fc1b000 100644
--- a/src/emu/xtal.cpp
+++ b/src/emu/xtal.cpp
@@ -373,6 +373,7 @@ const double XTAL::known_xtals[] = {
72'000'000, /* 72_MHz_XTAL Aristocrat MKV */
72'576'000, /* 72.576_MHz_XTAL Centipede, Millipede, Missile Command, Let's Go Bowling "Multipede" */
73'728'000, /* 73.728_MHz_XTAL Ms. Pac-Man/Galaga 20th Anniversary */
+ 77'414'400, /* 77.4144_MHz_XTAL NCD17c */
80'000'000, /* 80_MHz_XTAL ARM710 */
87'183'360, /* 87.18336_MHz_XTAL AT&T 630 MTG */
100'000'000, /* 100_MHz_XTAL PSX-based Namco System 12, Vegas, Sony ZN1-2-based */
diff --git a/src/mame/drivers/ncd17c.cpp b/src/mame/drivers/ncd17c.cpp
index baeb415640d..5732b1c93f2 100644
--- a/src/mame/drivers/ncd17c.cpp
+++ b/src/mame/drivers/ncd17c.cpp
@@ -6,10 +6,12 @@
NCD 17" color X terminal
Hardware:
- - MC68020 CPU, no FPU, no MMU
- - 2681 DUART (Logitech serial mouse)
+ - MC68020FE20E CPU, no FPU, no MMU
+ - SCN2681AC1N40 DUART (Logitech serial mouse)
- Unknown AMD Ethernet chip (c) 1987. LANCE or derivative?
- - Bt478 RAMDAC
+ - Bt478KPJ80 RAMDAC
+ - NMC9346N serial EEPROM
+ - 8 SIMM slots
1c8000 mask ff000000 - DUART?
****************************************************************************/
@@ -20,10 +22,10 @@
#include "machine/mc68681.h"
#include "screen.h"
-class ncd_17c_state : public driver_device
+class ncd17c_state : public driver_device
{
public:
- ncd_17c_state(const machine_config &mconfig, device_type type, const char *tag)
+ ncd17c_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_screen(*this, "screen"),
@@ -32,10 +34,10 @@ public:
{
}
- void ncd_17c(machine_config &config);
- void ncd_17c_map(address_map &map);
+ void ncd17c(machine_config &config);
+ void ncd17c_map(address_map &map);
- void init_ncd_17c();
+ void init_ncd17c();
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -43,7 +45,7 @@ public:
DECLARE_WRITE32_MEMBER(bt478_palette_w);
DECLARE_READ32_MEMBER(ramsize_r);
DECLARE_WRITE32_MEMBER(ramsize_w);
- INTERRUPT_GEN_MEMBER(vblank);
+ DECLARE_WRITE_LINE_MEMBER(vblank);
private:
virtual void machine_reset() override;
@@ -65,7 +67,7 @@ private:
#define ENABLE_VERBOSE_LOG (0)
-inline void ATTR_PRINTF(3,4) ncd_17c_state::verboselog( int n_level, const char *s_fmt, ... )
+inline void ATTR_PRINTF(3,4) ncd17c_state::verboselog( int n_level, const char *s_fmt, ... )
{
#if ENABLE_VERBOSE_LOG
if( VERBOSE_LEVEL >= n_level )
@@ -80,7 +82,7 @@ inline void ATTR_PRINTF(3,4) ncd_17c_state::verboselog( int n_level, const char
#endif
}
-void ncd_17c_state::machine_reset()
+void ncd17c_state::machine_reset()
{
m_entry = 0;
m_stage = 0;
@@ -88,13 +90,14 @@ void ncd_17c_state::machine_reset()
m_ramsize_phase = 0;
}
-INTERRUPT_GEN_MEMBER(ncd_17c_state::vblank)
+WRITE_LINE_MEMBER(ncd17c_state::vblank)
{
- m_maincpu->set_input_line(M68K_IRQ_5, HOLD_LINE);
+ if (state)
+ 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 ncd17c_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
uint32_t *scanline;
int x, y;
@@ -114,21 +117,21 @@ uint32_t ncd_17c_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma
return 0;
}
-void ncd_17c_state::ncd_17c_map(address_map &map)
+void ncd17c_state::ncd17c_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(0x001d0000, 0x001d0003).w(FUNC(ncd17c_state::bt478_palette_w));
+ map(0x01000000, 0x02ffffff).ram(); //w(FUNC(ncd17c_state::ramsize_r), FUNC(ncd17c_state::ramsize_w));
map(0x03000000, 0x03ffffff).ram().share("mainram");
}
-READ32_MEMBER(ncd_17c_state::ramsize_r)
+READ32_MEMBER(ncd17c_state::ramsize_r)
{
return m_ramsize_magic << 24;
}
-WRITE32_MEMBER(ncd_17c_state::ramsize_w)
+WRITE32_MEMBER(ncd17c_state::ramsize_w)
{
if (!m_ramsize_phase)
{
@@ -137,12 +140,12 @@ WRITE32_MEMBER(ncd_17c_state::ramsize_w)
m_ramsize_phase ^= 1;
}
-WRITE_LINE_MEMBER(ncd_17c_state::duart_irq_handler)
+WRITE_LINE_MEMBER(ncd17c_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)
+WRITE32_MEMBER(ncd17c_state::bt478_palette_w)
{
if (mem_mask & 0xff000000)
{
@@ -181,27 +184,25 @@ WRITE32_MEMBER(ncd_17c_state::bt478_palette_w)
}
}
-void ncd_17c_state::ncd_17c(machine_config &config)
+void ncd17c_state::ncd17c(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));
+ m_maincpu->set_addrmap(AS_PROGRAM, &ncd17c_state::ncd17c_map);
- SCN2681(config, m_duart, 3.6864_MHz_XTAL);
- m_duart->irq_cb().set(FUNC(ncd_17c_state::duart_irq_handler));
+ SCN2681(config, m_duart, 77.4144_MHz_XTAL / 21);
+ m_duart->irq_cb().set(FUNC(ncd17c_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));
+ m_screen->set_raw(77.4144_MHz_XTAL, 1376, 0, 1024, 803, 0, 768); // 56.260 kHz horizontal, 70.06 Hz vertical
+ m_screen->set_screen_update(FUNC(ncd17c_state::screen_update));
+ m_screen->screen_vblank().set(FUNC(ncd17c_state::vblank));
}
-static INPUT_PORTS_START( ncd_17c )
+static INPUT_PORTS_START( ncd17c )
INPUT_PORTS_END
-void ncd_17c_state::init_ncd_17c()
+void ncd17c_state::init_ncd17c()
{
// uint32_t *src = (uint32_t*)(memregion("maincpu")->base());
// uint32_t *dst = m_mainram;
@@ -227,4 +228,4 @@ ROM_START( ncd17c )
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 )
+COMP( 1990, ncd17c, 0, 0, ncd17c, ncd17c, ncd17c_state, init_ncd17c, "Network Computing Devices", "NCD17c Display Station", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )