mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
fidel6502: added cpu freq select for sc9 (nw)
This commit is contained in:
parent
661e9b8d4f
commit
7b28917307
@ -217,9 +217,12 @@ with magnet sensors and came with CB9 and CB16.
|
||||
8*(8+1) buttons, 8*8+1 LEDs
|
||||
36-pin edge connector, assume same as SC12
|
||||
4KB RAM(TMM2016P), 2*8KB ROM(HN48364P)
|
||||
R6502-13, 1.4MHz from resonator
|
||||
R6502-13, 1.4MHz from resonator, another pcb with the same resonator was measured 1.49MHz*
|
||||
PCB label 510-1046C01 2-1-82
|
||||
|
||||
*: 2 other boards were measured 1.60MHz and 1.88MHz(newest serial). Online references
|
||||
suggest 3 versions of SC9(A) total: 1.5MHz, 1.6MHz, and 1.9MHz.
|
||||
|
||||
I/O is via TTL, not further documented here
|
||||
|
||||
|
||||
@ -475,6 +478,9 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(sc9_control_w);
|
||||
DECLARE_WRITE8_MEMBER(sc9_led_w);
|
||||
DECLARE_READ8_MEMBER(sc9_input_r);
|
||||
DECLARE_MACHINE_RESET(sc9);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(sc9_cpu_freq);
|
||||
void sc9_set_cpu_freq();
|
||||
|
||||
// SC12
|
||||
DECLARE_WRITE8_MEMBER(sc12_control_w);
|
||||
@ -762,6 +768,19 @@ READ8_MEMBER(fidel6502_state::sc9_input_r)
|
||||
return read_inputs(9) ^ 0xff;
|
||||
}
|
||||
|
||||
void fidel6502_state::sc9_set_cpu_freq()
|
||||
{
|
||||
// SC9(A) was released with 1.5MHz, 1.6MHz, or 1.9MHz CPU
|
||||
u8 inp = ioport("FAKE")->read();
|
||||
m_maincpu->set_unscaled_clock((inp & 2) ? 1900000 : ((inp & 1) ? 1600000 : 1500000));
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(fidel6502_state, sc9)
|
||||
{
|
||||
fidelbase_state::machine_reset();
|
||||
sc9_set_cpu_freq();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@ -1360,6 +1379,21 @@ static INPUT_PORTS_START( playmatic )
|
||||
PORT_INCLUDE( sc12_base )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( sc9 )
|
||||
PORT_INCLUDE( sc12 )
|
||||
|
||||
PORT_START("FAKE")
|
||||
PORT_CONFNAME( 0x03, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, fidel6502_state, sc9_cpu_freq, nullptr) // factory set
|
||||
PORT_CONFSETTING( 0x00, "1.5MHz" )
|
||||
PORT_CONFSETTING( 0x01, "1.6MHz" )
|
||||
PORT_CONFSETTING( 0x02, "1.9MHz" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_CHANGED_MEMBER(fidel6502_state::sc9_cpu_freq)
|
||||
{
|
||||
sc9_set_cpu_freq();
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START( fexcelb )
|
||||
PORT_INCLUDE( fidel_cb_buttons )
|
||||
@ -1557,11 +1591,11 @@ static MACHINE_CONFIG_DERIVED( eag, eas )
|
||||
MCFG_DEFAULT_LAYOUT(layout_fidel_eag)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( sc9 )
|
||||
static MACHINE_CONFIG_START( sc9b )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M6502, 1400000) // from ceramic resonator "681 JSA", measured. Also released as 1.5MHz, 1.6MHz, 1.9MHz
|
||||
MCFG_CPU_PROGRAM_MAP(sc9_map)
|
||||
MCFG_CPU_ADD("maincpu", M6502, XTAL_3_9MHz/2) // R6502AP, 3.9MHz resonator
|
||||
MCFG_CPU_PROGRAM_MAP(sc9b_map)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(610)) // from 555 timer (22nF, 102K, 2.7K)
|
||||
MCFG_TIMER_START_DELAY(attotime::from_hz(610) - attotime::from_usec(41)) // active for 41us
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(610))
|
||||
@ -1582,14 +1616,16 @@ static MACHINE_CONFIG_START( sc9 )
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( sc9b, sc9 )
|
||||
static MACHINE_CONFIG_DERIVED( sc9, sc9b )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_REPLACE("maincpu", M6502, XTAL_3_9MHz/2) // R6502AP, 3.9MHz resonator
|
||||
MCFG_CPU_PROGRAM_MAP(sc9b_map)
|
||||
MCFG_CPU_REPLACE("maincpu", M6502, 1500000) // from ceramic resonator "681 JSA", measured, see sc9_set_cpu_freq
|
||||
MCFG_CPU_PROGRAM_MAP(sc9_map)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(fidel6502_state, sc9)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( playmatic, sc9 )
|
||||
static MACHINE_CONFIG_DERIVED( playmatic, sc9b )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_REPLACE("maincpu", M6502, 3100000) // approximation
|
||||
@ -2230,7 +2266,7 @@ CONS( 1986, feag2100sp, feag2100, 0, eag, eagg, fidel6502_state, 0,
|
||||
CONS( 1986, feag2100g, feag2100, 0, eag, eagg, fidel6502_state, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1986, feag2100fr, feag2100, 0, eag, eagg, fidel6502_state, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
CONS( 1982, fscc9, 0, 0, sc9, sc12, fidel6502_state, 0, "Fidelity Electronics", "Sensory Chess Challenger 9", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1982, fscc9, 0, 0, sc9, sc9, fidel6502_state, 0, "Fidelity Electronics", "Sensory Chess Challenger 9", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1982, fscc9b, fscc9, 0, sc9b, sc12, fidel6502_state, 0, "Fidelity Electronics", "Sensory Chess Challenger 9 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1983, fscc9ps, fscc9, 0, playmatic, playmatic, fidel6502_state, 0, "Fidelity Electronics", "Sensory 9 Playmatic 'S'", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // Fidelity West Germany
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user