mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
fidel6502: separate fdesdis class (nw)
This commit is contained in:
parent
1c3ceca74e
commit
6638f07f84
@ -514,10 +514,6 @@ public:
|
||||
void fdes2000(machine_config &config);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(fexcelv_bankswitch);
|
||||
|
||||
void fdes2000d(machine_config &config);
|
||||
void fdes2100d(machine_config &config);
|
||||
void init_fdesdis();
|
||||
|
||||
void fphantom(machine_config &config);
|
||||
void init_fphantom();
|
||||
|
||||
@ -601,11 +597,6 @@ private:
|
||||
void fexcelb_map(address_map &map);
|
||||
void fexcelp_map(address_map &map);
|
||||
|
||||
// Designer Display
|
||||
DECLARE_WRITE8_MEMBER(fdesdis_control_w);
|
||||
DECLARE_WRITE8_MEMBER(fdesdis_lcd_w);
|
||||
DECLARE_READ8_MEMBER(fdesdis_input_r);
|
||||
void fdesdis_map(address_map &map);
|
||||
|
||||
// Phantom
|
||||
DECLARE_MACHINE_RESET(fphantom);
|
||||
@ -643,6 +634,28 @@ void fidel6502_state::machine_reset()
|
||||
|
||||
|
||||
|
||||
class desdis_state : public fidelbase_state
|
||||
{
|
||||
public:
|
||||
desdis_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
fidelbase_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void fdes2000d(machine_config &config);
|
||||
void fdes2100d(machine_config &config);
|
||||
void init_fdes2100d();
|
||||
|
||||
private:
|
||||
void fdes2100d_map(address_map &map);
|
||||
|
||||
// I/O handlers
|
||||
DECLARE_WRITE8_MEMBER(control_w);
|
||||
DECLARE_WRITE8_MEMBER(lcd_w);
|
||||
DECLARE_READ8_MEMBER(input_r);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Helper Functions
|
||||
@ -1169,7 +1182,7 @@ READ8_MEMBER(fidel6502_state::fexcel_ttl_r)
|
||||
|
||||
// TTL/generic
|
||||
|
||||
WRITE8_MEMBER(fidel6502_state::fdesdis_control_w)
|
||||
WRITE8_MEMBER(desdis_state::control_w)
|
||||
{
|
||||
u8 q3_old = m_led_select & 8;
|
||||
|
||||
@ -1204,7 +1217,7 @@ WRITE8_MEMBER(fidel6502_state::fdesdis_control_w)
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fidel6502_state::fdesdis_lcd_w)
|
||||
WRITE8_MEMBER(desdis_state::lcd_w)
|
||||
{
|
||||
// a0-a2,d0-d3: 4*74259 to lcd digit segments
|
||||
u32 mask = bitswap<8>(1 << offset,3,7,6,0,1,2,4,5);
|
||||
@ -1215,13 +1228,13 @@ WRITE8_MEMBER(fidel6502_state::fdesdis_lcd_w)
|
||||
}
|
||||
}
|
||||
|
||||
READ8_MEMBER(fidel6502_state::fdesdis_input_r)
|
||||
READ8_MEMBER(desdis_state::input_r)
|
||||
{
|
||||
// a0-a2,d7: multiplexed inputs (active low)
|
||||
return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
|
||||
}
|
||||
|
||||
void fidel6502_state::init_fdesdis()
|
||||
void desdis_state::init_fdes2100d()
|
||||
{
|
||||
m_rombank->configure_entries(0, 2, memregion("rombank")->base(), 0x4000);
|
||||
}
|
||||
@ -1451,12 +1464,12 @@ void fidel6502_state::fexcelb_map(address_map &map)
|
||||
|
||||
// Designer Display, Phantom, Chesster
|
||||
|
||||
void fidel6502_state::fdesdis_map(address_map &map)
|
||||
void desdis_state::fdes2100d_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x1fff).ram();
|
||||
map(0x2000, 0x2007).mirror(0x1ff8).rw(FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::fdesdis_control_w));
|
||||
map(0x2000, 0x2007).mirror(0x1ff8).rw(FUNC(desdis_state::input_r), FUNC(desdis_state::control_w));
|
||||
map(0x4000, 0x7fff).bankr("rombank");
|
||||
map(0x6000, 0x6007).mirror(0x1ff8).w(FUNC(fidel6502_state::fdesdis_lcd_w));
|
||||
map(0x6000, 0x6007).mirror(0x1ff8).w(FUNC(desdis_state::lcd_w));
|
||||
map(0x8000, 0xffff).rom();
|
||||
}
|
||||
|
||||
@ -1802,7 +1815,7 @@ static INPUT_PORTS_START( fdes )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( fdesdis )
|
||||
static INPUT_PORTS_START( desdis )
|
||||
PORT_INCLUDE( fidel_cb_buttons )
|
||||
|
||||
PORT_START("IN.8")
|
||||
@ -1817,13 +1830,17 @@ static INPUT_PORTS_START( fdesdis )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( chesster )
|
||||
PORT_INCLUDE( fdesdis )
|
||||
PORT_INCLUDE( fidel_cb_buttons )
|
||||
|
||||
PORT_MODIFY("IN.8")
|
||||
PORT_START("IN.8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Move / No")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Hint / Yes")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Take Back / Repeat")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Level / New")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("Option / Replay")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Verify / Problem")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Shift")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -2214,16 +2231,16 @@ void fidel6502_state::fexceld(machine_config &config)
|
||||
config.set_default_layout(layout_fidel_exd);
|
||||
}
|
||||
|
||||
void fidel6502_state::fdes2100d(machine_config &config)
|
||||
void desdis_state::fdes2100d(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M65C02(config, m_maincpu, 6_MHz_XTAL); // W65C02P-6
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fdesdis_map);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &desdis_state::fdes2100d_map);
|
||||
|
||||
const attotime irq_period = attotime::from_hz(630); // from 556 timer (22nF, 102K, 1K)
|
||||
TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on<M6502_IRQ_LINE>), irq_period);
|
||||
TIMER(config, m_irq_on).configure_periodic(FUNC(desdis_state::irq_on<M6502_IRQ_LINE>), irq_period);
|
||||
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
|
||||
TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off<M6502_IRQ_LINE>), irq_period);
|
||||
TIMER(config, "irq_off").configure_periodic(FUNC(desdis_state::irq_off<M6502_IRQ_LINE>), irq_period);
|
||||
|
||||
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
|
||||
config.set_default_layout(layout_fidel_desdis);
|
||||
@ -2236,13 +2253,13 @@ void fidel6502_state::fdes2100d(machine_config &config)
|
||||
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
|
||||
}
|
||||
|
||||
void fidel6502_state::fdes2000d(machine_config &config)
|
||||
void desdis_state::fdes2000d(machine_config &config)
|
||||
{
|
||||
fdes2100d(config);
|
||||
|
||||
/* basic machine hardware */
|
||||
R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // R65C02P3
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fdesdis_map);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &desdis_state::fdes2100d_map);
|
||||
}
|
||||
|
||||
void fidel6502_state::fphantom(machine_config &config)
|
||||
@ -2907,8 +2924,8 @@ CONS( 1986, granits, fexcelp, 0, granits, fexcel, fidel6502_state, empt
|
||||
CONS( 1988, fdes2000, fexcelp, 0, fdes2000, fdes, fidel6502_state, empty_init, "Fidelity Electronics", "Designer 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // Excellence series hardware
|
||||
CONS( 1988, fdes2100, fexcelp, 0, fdes2100, fdes, fidel6502_state, empty_init, "Fidelity Electronics", "Designer 2100", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // "
|
||||
|
||||
CONS( 1988, fdes2100d, 0, 0, fdes2100d, fdesdis, fidel6502_state, init_fdesdis, "Fidelity Electronics", "Designer 2100 Display (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||
CONS( 1988, fdes2000d, fdes2100d,0, fdes2000d, fdesdis, fidel6502_state, init_fdesdis, "Fidelity Electronics", "Designer 2000 Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||
CONS( 1988, fdes2100d, 0, 0, fdes2100d, desdis, desdis_state, init_fdes2100d, "Fidelity Electronics", "Designer 2100 Display (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||
CONS( 1988, fdes2000d, fdes2100d,0, fdes2000d, desdis, desdis_state, init_fdes2100d, "Fidelity Electronics", "Designer 2000 Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||
|
||||
CONS( 1988, fphantom, 0, 0, fphantom, fphantom, fidel6502_state, init_fphantom, "Fidelity Electronics", "Phantom (Fidelity)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user