diff options
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 |
commit | d0e28392dce862dc32128cd8e4650fb890d6564e (patch) | |
tree | ac4071366d9ec7b87765b92a07e71e033805bd82 | |
parent | 6459de6d865e16b0fa0acaafd0ceb7721bf70656 (diff) |
ncd17c: Add screen raw parameters; improve documentation (nw)
-rw-r--r-- | src/emu/xtal.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/ncd17c.cpp | 67 |
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 ) |