fidel6502: added cpu freq select for sc9 (nw)

This commit is contained in:
hap 2017-05-22 23:34:47 +02:00
parent 661e9b8d4f
commit 7b28917307

View File

@ -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