mirror of
https://github.com/holub/mame
synced 2025-06-26 22:29:10 +03:00
smc777: Correct master XTAL frequency; add undumped 8041A to configuration
This commit is contained in:
parent
36f358d2a3
commit
edbfe76b37
@ -109,7 +109,6 @@ const double XTAL::known_xtals[] = {
|
|||||||
3'900'000, // 3.9_MHz_XTAL Resonator - Used on some Fidelity boards
|
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)
|
3'932'160, // 3.93216_MHz_XTAL Apple Lisa COP421 (197-0016A)
|
||||||
4'000'000, // 4_MHz_XTAL -
|
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'032'000, // 4.032_MHz_XTAL GRiD Compass modem board
|
||||||
4'096'000, // 4.096_MHz_XTAL Used to drive OKI M9810 chips
|
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
|
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'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'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'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'256'000, // 32.256_MHz_XTAL Hitachi MB-6890
|
||||||
32'317'400, // 32.3174_MHz_XTAL DEC VT330, VT340
|
32'317'400, // 32.3174_MHz_XTAL DEC VT330, VT340
|
||||||
32'530'470, // 32.53047_MHz_XTAL Seta 2
|
32'530'470, // 32.53047_MHz_XTAL Seta 2
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
|
||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
|
#include "cpu/mcs48/mcs48.h"
|
||||||
#include "imagedev/floppy.h"
|
#include "imagedev/floppy.h"
|
||||||
#include "imagedev/snapquik.h"
|
#include "imagedev/snapquik.h"
|
||||||
#include "machine/timer.h"
|
#include "machine/timer.h"
|
||||||
@ -38,8 +39,6 @@
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
#define MASTER_CLOCK 4.028_MHz_XTAL
|
|
||||||
|
|
||||||
#define mc6845_h_char_total (m_crtc_vreg[0]+1)
|
#define mc6845_h_char_total (m_crtc_vreg[0]+1)
|
||||||
#define mc6845_h_display (m_crtc_vreg[1])
|
#define mc6845_h_display (m_crtc_vreg[1])
|
||||||
#define mc6845_h_sync_pos (m_crtc_vreg[2])
|
#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)
|
void smc777_state::smc777(machine_config &config)
|
||||||
{
|
{
|
||||||
|
constexpr XTAL MASTER_CLOCK = 32.2238_MHz_XTAL;
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* 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_PROGRAM, &smc777_state::smc777_mem);
|
||||||
m_maincpu->set_addrmap(AS_IO, &smc777_state::smc777_io);
|
m_maincpu->set_addrmap(AS_IO, &smc777_state::smc777_io);
|
||||||
|
|
||||||
|
I8041A(config, "mcu", 6_MHz_XTAL).set_disable();
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||||
m_screen->set_refresh_hz(60);
|
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);
|
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_screen(m_screen);
|
||||||
m_crtc->set_show_border_area(true);
|
m_crtc->set_show_border_area(true);
|
||||||
m_crtc->set_char_width(8);
|
m_crtc->set_char_width(8);
|
||||||
m_crtc->out_vsync_callback().set(FUNC(smc777_state::vsync_w));
|
m_crtc->out_vsync_callback().set(FUNC(smc777_state::vsync_w));
|
||||||
|
|
||||||
// floppy controller
|
// 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->intrq_wr_callback().set(FUNC(smc777_state::fdc_intrq_w));
|
||||||
m_fdc->drq_wr_callback().set(FUNC(smc777_state::fdc_drq_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 */
|
/* sound hardware */
|
||||||
SPEAKER(config, "mono").front_center();
|
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
|
BEEP(config, m_beeper, 300); // TODO: correct frequency
|
||||||
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.50);
|
m_beeper->add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||||
|
Loading…
Reference in New Issue
Block a user