From edbfe76b376dc66669abde929bacfbaffb90d02d Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 7 Sep 2024 16:00:48 -0400 Subject: smc777: Correct master XTAL frequency; add undumped 8041A to configuration --- src/emu/xtal.cpp | 2 +- src/mame/sony/smc777.cpp | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp index 6d09f56c84f..4435f27ef73 100644 --- a/src/emu/xtal.cpp +++ b/src/emu/xtal.cpp @@ -109,7 +109,6 @@ const double XTAL::known_xtals[] = { 3'900'000, // 3.9_MHz_XTAL Resonator - Used on some Fidelity boards 3'932'160, // 3.93216_MHz_XTAL Apple Lisa COP421 (197-0016A) 4'000'000, // 4_MHz_XTAL - - 4'028'000, // 4.028_MHz_XTAL Sony SMC-777 4'032'000, // 4.032_MHz_XTAL GRiD Compass modem board 4'096'000, // 4.096_MHz_XTAL Used to drive OKI M9810 chips 4'194'304, // 4.194304_MHz_XTAL Used to drive MC146818 / Nintendo Game Boy @@ -420,6 +419,7 @@ const double XTAL::known_xtals[] = { 32'147'000, // 32.147_MHz_XTAL Ampex 210+ 132-column display clock 32'215'900, // 32.2159_MHz_XTAL Sega System 32, Sega Game Gear (close to 9x NTSC subcarrier which is 32.215905Mhz 32'220'000, // 32.22_MHz_XTAL Typically used on 90's Data East PCBs + 32'223'800, // 32.2238_MHz_XTAL Sony SMC-777 (~2048x NTSC line rate) 32'256'000, // 32.256_MHz_XTAL Hitachi MB-6890 32'317'400, // 32.3174_MHz_XTAL DEC VT330, VT340 32'530'470, // 32.53047_MHz_XTAL Seta 2 diff --git a/src/mame/sony/smc777.cpp b/src/mame/sony/smc777.cpp index 90ac6db57d0..beffbc6a243 100644 --- a/src/mame/sony/smc777.cpp +++ b/src/mame/sony/smc777.cpp @@ -22,6 +22,7 @@ #include "emu.h" #include "cpu/z80/z80.h" +#include "cpu/mcs48/mcs48.h" #include "imagedev/floppy.h" #include "imagedev/snapquik.h" #include "machine/timer.h" @@ -38,8 +39,6 @@ namespace { -#define MASTER_CLOCK 4.028_MHz_XTAL - #define mc6845_h_char_total (m_crtc_vreg[0]+1) #define mc6845_h_display (m_crtc_vreg[1]) #define mc6845_h_sync_pos (m_crtc_vreg[2]) @@ -1104,11 +1103,15 @@ static void smc777_floppies(device_slot_interface &device) void smc777_state::smc777(machine_config &config) { + constexpr XTAL MASTER_CLOCK = 32.2238_MHz_XTAL; + /* basic machine hardware */ - Z80(config, m_maincpu, MASTER_CLOCK); + Z80(config, m_maincpu, MASTER_CLOCK / 8); // nominally 4.028 MHz m_maincpu->set_addrmap(AS_PROGRAM, &smc777_state::smc777_mem); m_maincpu->set_addrmap(AS_IO, &smc777_state::smc777_io); + I8041A(config, "mcu", 6_MHz_XTAL).set_disable(); + /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); @@ -1122,14 +1125,14 @@ void smc777_state::smc777(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty); - HD6845S(config, m_crtc, MASTER_CLOCK/2); /* HD68A45SP; unknown clock, hand tuned to get ~60 fps */ + HD6845S(config, m_crtc, MASTER_CLOCK / 16); // HD68A45SP; unknown clock, hand tuned to get ~60 fps m_crtc->set_screen(m_screen); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); m_crtc->out_vsync_callback().set(FUNC(smc777_state::vsync_w)); // floppy controller - MB8876(config, m_fdc, 1_MHz_XTAL); + MB8876(config, m_fdc, MASTER_CLOCK / 32); // divider not confirmed m_fdc->intrq_wr_callback().set(FUNC(smc777_state::fdc_intrq_w)); m_fdc->drq_wr_callback().set(FUNC(smc777_state::fdc_drq_w)); @@ -1143,7 +1146,7 @@ void smc777_state::smc777(machine_config &config) /* sound hardware */ SPEAKER(config, "mono").front_center(); - SN76489A(config, "sn1", MASTER_CLOCK).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown clock / divider + SN76489A(config, "sn1", MASTER_CLOCK / 8).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown clock / divider BEEP(config, m_beeper, 300); // TODO: correct frequency m_beeper->add_route(ALL_OUTPUTS, "mono", 0.50); -- cgit v1.2.3