hh class cleanup 2/2

This commit is contained in:
hap 2015-04-03 22:50:21 +02:00
parent 4d2d78e908
commit 177fc92622
7 changed files with 718 additions and 450 deletions

View File

@ -745,7 +745,7 @@ public:
: hh_hmcs40_state(mconfig, type, tag)
{ }
void cdkong_display();
void prepare_display();
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
@ -772,7 +772,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cdkong_state::speaker_decay_sim)
}
void cdkong_state::cdkong_display()
void cdkong_state::prepare_display()
{
UINT32 plate = BITSWAP32(m_plate,31,30,29,24,0,16,8,1,23,17,9,2,18,10,25,27,26,3,15,27,11,11,14,22,6,13,21,5,19,12,20,4);
display_matrix(29, 11, plate, m_grid);
@ -787,7 +787,7 @@ WRITE8_MEMBER(cdkong_state::plate_w)
// R0x-R6x: vfd matrix plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
cdkong_display();
prepare_display();
}
WRITE16_MEMBER(cdkong_state::grid_w)
@ -797,7 +797,7 @@ WRITE16_MEMBER(cdkong_state::grid_w)
// D4-D14: vfd matrix grid
m_grid = data >> 4 & 0x7ff;
cdkong_display();
prepare_display();
}
@ -879,7 +879,7 @@ public:
: hh_hmcs40_state(mconfig, type, tag)
{ }
void cgalaxn_display();
void prepare_display();
DECLARE_WRITE16_MEMBER(plate_w);
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_READ8_MEMBER(input_r);
@ -887,7 +887,7 @@ public:
// handlers
void cgalaxn_state::cgalaxn_display()
void cgalaxn_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,1,2,0,11,10,9,8,7,6,5,4,3);
UINT16 plate = BITSWAP16(m_plate,15,14,5,4,3,2,1,0,7,11,12,9,8,10,6,13);
@ -903,7 +903,7 @@ WRITE8_MEMBER(cgalaxn_state::grid_w)
// D2-D15: vfd matrix plate
m_plate = data >> 2 & 0x3fff;
cgalaxn_display();
prepare_display();
}
WRITE16_MEMBER(cgalaxn_state::plate_w)
@ -915,7 +915,7 @@ WRITE16_MEMBER(cgalaxn_state::plate_w)
// R1x-R3x: vfd matrix grid
int shift = (offset - HMCS40_PORT_R1X) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
cgalaxn_display();
prepare_display();
}
READ8_MEMBER(cgalaxn_state::input_r)
@ -1225,7 +1225,7 @@ public:
: hh_hmcs40_state(mconfig, type, tag)
{ }
void egalaxn2_display();
void prepare_display();
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
DECLARE_READ8_MEMBER(input_r);
@ -1233,7 +1233,7 @@ public:
// handlers
void egalaxn2_state::egalaxn2_display()
void egalaxn2_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14);
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,15,14,13,12,7,6,5,4,3,2,1,0,19,18,17,16,11,10,9,8);
@ -1250,7 +1250,7 @@ WRITE16_MEMBER(egalaxn2_state::grid_w)
// D1-D15: vfd matrix grid
m_grid = data >> 1;
egalaxn2_display();
prepare_display();
}
WRITE8_MEMBER(egalaxn2_state::plate_w)
@ -1258,7 +1258,7 @@ WRITE8_MEMBER(egalaxn2_state::plate_w)
// R1x-R6x: vfd matrix plate
int shift = (offset - HMCS40_PORT_R1X) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
egalaxn2_display();
prepare_display();
}
READ8_MEMBER(egalaxn2_state::input_r)
@ -1345,7 +1345,6 @@ public:
epacman2_state(const machine_config &mconfig, device_type type, const char *tag)
: egalaxn2_state(mconfig, type, tag)
{ }
};
// handlers are identical to Galaxian 2, so we can use those
@ -1515,7 +1514,7 @@ public:
: hh_hmcs40_state(mconfig, type, tag)
{ }
void kingman_display();
void prepare_display();
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
@ -1525,7 +1524,7 @@ public:
// handlers
void kingman_state::kingman_display()
void kingman_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8);
UINT32 plate = BITSWAP24(m_plate,23,6,7,5,4,3,2,1,0,13,12,20,19,18,17,16,10,11,9,8,14,15,13,12);
@ -1537,7 +1536,7 @@ WRITE8_MEMBER(kingman_state::plate_w)
// R0x-R3x: vfd matrix plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
kingman_display();
prepare_display();
}
WRITE16_MEMBER(kingman_state::grid_w)
@ -1558,7 +1557,7 @@ WRITE16_MEMBER(kingman_state::grid_w)
// D0-D4: more plates
m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x1f0000);
kingman_display();
prepare_display();
}
void kingman_state::update_int0()
@ -1636,7 +1635,7 @@ public:
: hh_hmcs40_state(mconfig, type, tag)
{ }
void tmtron_display();
void prepare_display();
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_WRITE16_MEMBER(grid_w);
@ -1646,7 +1645,7 @@ public:
// handlers
void tmtron_state::tmtron_display()
void tmtron_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,1,2,3,4,5,6,7,8,9,0);
UINT32 plate = BITSWAP24(m_plate,23,5,2,21,1,6,7,9,10,11,21,0,19,3,4,8,3,18,17,16,12,13,14,15);
@ -1658,7 +1657,7 @@ WRITE8_MEMBER(tmtron_state::plate_w)
// R0x-R3x: vfd matrix plate
int shift = offset * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
tmtron_display();
prepare_display();
}
WRITE16_MEMBER(tmtron_state::grid_w)
@ -1679,7 +1678,7 @@ WRITE16_MEMBER(tmtron_state::grid_w)
// D0-D3,D5: more plates
m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x2f0000);
tmtron_display();
prepare_display();
}
void tmtron_state::update_int1()

File diff suppressed because it is too large Load Diff

View File

@ -254,7 +254,7 @@ public:
: hh_ucom4_state(mconfig, type, tag)
{ }
void ssfball_display();
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_READ8_MEMBER(input_b_r);
@ -262,7 +262,7 @@ public:
// handlers
void ssfball_state::ssfball_display()
void ssfball_state::prepare_display()
{
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,10,9,8,0,1,2,4,5,6);
display_matrix(16, 9, plate, m_grid);
@ -273,7 +273,7 @@ WRITE8_MEMBER(ssfball_state::grid_w)
// C,D(,E3): vfd matrix grid 0-7(,8)
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
ssfball_display();
prepare_display();
}
WRITE8_MEMBER(ssfball_state::plate_w)
@ -292,7 +292,7 @@ WRITE8_MEMBER(ssfball_state::plate_w)
if (offset == NEC_UCOM4_PORTE)
grid_w(space, offset, data >> 3 & 1);
else
ssfball_display();
prepare_display();
}
READ8_MEMBER(ssfball_state::input_b_r)
@ -379,7 +379,7 @@ public:
: hh_ucom4_state(mconfig, type, tag)
{ }
void splasfgt_display();
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
DECLARE_READ8_MEMBER(input_b_r);
@ -387,7 +387,7 @@ public:
// handlers
void splasfgt_state::splasfgt_display()
void splasfgt_state::prepare_display()
{
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,13,1,0,8,6,0,10,11,14,15,16,9,5,7,4,2,3);
display_matrix(16, 9, plate, m_grid);
@ -406,7 +406,7 @@ WRITE8_MEMBER(splasfgt_state::grid_w)
if (offset == NEC_UCOM4_PORTI)
plate_w(space, 4 + NEC_UCOM4_PORTC, data >> 2 & 1);
else
splasfgt_display();
prepare_display();
}
WRITE8_MEMBER(splasfgt_state::plate_w)
@ -418,7 +418,7 @@ WRITE8_MEMBER(splasfgt_state::plate_w)
// C,D,E,F23(,I2): vfd matrix plate
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
splasfgt_display();
prepare_display();
}
READ8_MEMBER(splasfgt_state::input_b_r)
@ -533,14 +533,14 @@ public:
: hh_ucom4_state(mconfig, type, tag)
{ }
void astrocmd_display();
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
};
// handlers
void astrocmd_state::astrocmd_display()
void astrocmd_state::prepare_display()
{
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,4,5,6,7,0,1,2,3);
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,3,2,12,13,14,15,16,17,18,0,1,4,8,5,9,7,11,6,10);
@ -552,7 +552,7 @@ WRITE8_MEMBER(astrocmd_state::grid_w)
// C,D(,E3): vfd matrix grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
astrocmd_display();
prepare_display();
}
WRITE8_MEMBER(astrocmd_state::plate_w)
@ -570,7 +570,7 @@ WRITE8_MEMBER(astrocmd_state::plate_w)
grid_w(space, offset, data >> 3 & 1);
}
else
astrocmd_display();
prepare_display();
}
@ -901,14 +901,14 @@ public:
: hh_ucom4_state(mconfig, type, tag)
{ }
void tmpacman_display();
void prepare_display();
DECLARE_WRITE8_MEMBER(grid_w);
DECLARE_WRITE8_MEMBER(plate_w);
};
// handlers
void tmpacman_state::tmpacman_display()
void tmpacman_state::prepare_display()
{
UINT16 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15);
@ -920,7 +920,7 @@ WRITE8_MEMBER(tmpacman_state::grid_w)
// C,D: vfd matrix grid
int shift = (offset - NEC_UCOM4_PORTC) * 4;
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
tmpacman_display();
prepare_display();
}
WRITE8_MEMBER(tmpacman_state::plate_w)
@ -932,7 +932,7 @@ WRITE8_MEMBER(tmpacman_state::plate_w)
// E023,F,G,H,I: vfd matrix plate
int shift = (offset - NEC_UCOM4_PORTE) * 4;
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
tmpacman_display();
prepare_display();
}

View File

@ -8,7 +8,7 @@
* TMS1400NLL MP7332-N1.U1(Rev. B) or MP7332-N2LL(Rev. C), die labeled MP7332
(assume same ROM contents between revisions)
* SN75494N MOS-to-LED digit driver
* rotating reel + lightsensor
* rotating reel + lightsensor, 1bit-sound
This is a board game, it obviously requires game pieces and the board.
The emulated part is the centerpiece, a black tower with a rotating card
@ -32,7 +32,7 @@ public:
: hh_tms1k_state(mconfig, type, tag)
{ }
void mbdtower_display();
void prepare_display();
bool sensor_led_on() { return m_display_decay[0][0] != 0; }
int m_motor_pos;
@ -58,7 +58,7 @@ protected:
***************************************************************************/
void mbdtower_state::mbdtower_display()
void mbdtower_state::prepare_display()
{
// declare display matrix size and the 2 7segs
set_display_size(7, 3);
@ -148,7 +148,7 @@ WRITE16_MEMBER(mbdtower_state::write_r)
// R5-R7: tower lamps
// R8: rotation sensor led
m_r = data;
mbdtower_display();
prepare_display();
// R10: speaker out
m_speaker->level_w(~data >> 4 & data >> 10 & 1);
@ -159,7 +159,7 @@ WRITE16_MEMBER(mbdtower_state::write_o)
// O0-O6: led segments A-G
// O7: digit select
m_o = data;
mbdtower_display();
prepare_display();
}
READ8_MEMBER(mbdtower_state::read_k)
@ -226,13 +226,14 @@ void mbdtower_state::machine_start()
{
hh_tms1k_state::machine_start();
// zerofill/register for savestates
// zerofill
m_motor_pos = 0;
m_motor_pos_prev = -1;
m_motor_decay = 0;
m_motor_on = false;
m_sensor_blind = false;
// register for savestates
save_item(NAME(m_motor_pos));
/* save_item(NAME(m_motor_pos_prev)); */ // don't save!
save_item(NAME(m_motor_decay));

View File

@ -31,35 +31,6 @@ public:
: hh_tms1k_state(mconfig, type, tag)
{ }
// calculator-specific handlers
void tisr16_display();
DECLARE_WRITE16_MEMBER(tisr16_write_o);
DECLARE_WRITE16_MEMBER(tisr16_write_r);
DECLARE_READ8_MEMBER(tisr16_read_k);
DECLARE_WRITE16_MEMBER(ti1270_write_o);
DECLARE_WRITE16_MEMBER(ti1270_write_r);
DECLARE_READ8_MEMBER(ti1270_read_k);
DECLARE_WRITE16_MEMBER(ti1000_write_o);
DECLARE_WRITE16_MEMBER(ti1000_write_r);
DECLARE_READ8_MEMBER(ti1000_read_k);
DECLARE_WRITE16_MEMBER(wizatron_write_o);
DECLARE_WRITE16_MEMBER(wizatron_write_r);
DECLARE_READ8_MEMBER(wizatron_read_k);
DECLARE_WRITE16_MEMBER(lilprof_write_o);
DECLARE_READ8_MEMBER(lilprof_read_k);
DECLARE_WRITE16_MEMBER(lilprof78_write_o);
DECLARE_WRITE16_MEMBER(lilprof78_write_r);
DECLARE_READ8_MEMBER(lilprof78_read_k);
DECLARE_WRITE16_MEMBER(ti30_write_o);
DECLARE_WRITE16_MEMBER(ti30_write_r);
DECLARE_READ8_MEMBER(ti30_read_k);
protected:
virtual void machine_start();
};
@ -75,19 +46,37 @@ void ticalc1x_state::machine_start()
/***************************************************************************
Minidrivers (I/O, Inputs, Machine Config)
Minidrivers (subclass, I/O, Inputs, Machine Config)
***************************************************************************/
/***************************************************************************
TI SR-16
* TMS1000 MCU labeled TMS1001NL. die labeled 1000, 1001A
TI SR-16, SR-16 II
* SR-16: TMS1000 MCU labeled TMS1001NL. die labeled 1000, 1001A
* SR-16 II: TMS1000 MCU labeled TMS1016NL. die labeled 1000B, 1016A
* 12-digit 7seg LED display
SR-16 II is a cost-reduced 'sequel', [10^x] was removed, and [pi] was added.
***************************************************************************/
void ticalc1x_state::tisr16_display()
class tisr16_state : public ticalc1x_state
{
public:
tisr16_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag)
{ }
void prepare_display();
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_READ8_MEMBER(read_k);
};
// handlers
void tisr16_state::prepare_display()
{
// update leds state
for (int y = 0; y < 11; y++)
@ -101,27 +90,29 @@ void ticalc1x_state::tisr16_display()
display_update();
}
WRITE16_MEMBER(ticalc1x_state::tisr16_write_r)
WRITE16_MEMBER(tisr16_state::write_r)
{
// R0-R10: input mux
// R0-R10: select digit (right-to-left)
m_r = m_inp_mux = data;
tisr16_display();
prepare_display();
}
WRITE16_MEMBER(ticalc1x_state::tisr16_write_o)
WRITE16_MEMBER(tisr16_state::write_o)
{
// O0-O7: digit segments
m_o = data;
tisr16_display();
prepare_display();
}
READ8_MEMBER(ticalc1x_state::tisr16_read_k)
READ8_MEMBER(tisr16_state::read_k)
{
return read_inputs(11);
}
// config
static INPUT_PORTS_START( tisr16 )
PORT_START("IN.0") // R0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
@ -191,38 +182,6 @@ static INPUT_PORTS_START( tisr16 )
INPUT_PORTS_END
static MACHINE_CONFIG_START( tisr16, ticalc1x_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS1000, 300000) // RC osc. R=43K, C=68pf -> ~300kHz
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, tisr16_read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, tisr16_write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, tisr16_write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_tisr16)
/* no video! */
/* no sound! */
MACHINE_CONFIG_END
/***************************************************************************
TI SR-16 II
* TMS1000 MCU labeled TMS1016NL. die labeled 1000B, 1016A
* 12-digit 7seg LED display
A cost-reduced 'sequel', [10^x] was removed, and [pi] was added.
***************************************************************************/
// hardware is nearly identical to TI SR-16 above, so we simply use those handlers
static INPUT_PORTS_START( tisr16ii )
PORT_START("IN.0") // R0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
@ -292,10 +251,20 @@ static INPUT_PORTS_START( tisr16ii )
INPUT_PORTS_END
static MACHINE_CONFIG_DERIVED( tisr16ii, tisr16 )
static MACHINE_CONFIG_START( tisr16, tisr16_state )
/* basic machine hardware */
// the MCU RC osc. is different: R=30K, C=100pf -> ~300kHz(same freq as tisr16, no change needed)
MCFG_CPU_ADD("maincpu", TMS1000, 300000) // RC osc. R=43K, C=68pf -> ~300kHz (note: tisr16ii MCU RC osc. is different: R=30K, C=100pf -> also ~300kHz)
MCFG_TMS1XXX_READ_K_CB(READ8(tisr16_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tisr16_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tisr16_state, write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_tisr16)
/* no video! */
/* no sound! */
MACHINE_CONFIG_END
@ -310,13 +279,27 @@ MACHINE_CONFIG_END
***************************************************************************/
WRITE16_MEMBER(ticalc1x_state::ti1270_write_r)
class ti1270_state : public ticalc1x_state
{
public:
ti1270_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_READ8_MEMBER(read_k);
};
// handlers
WRITE16_MEMBER(ti1270_state::write_r)
{
// R0-R7: select digit (right-to-left)
display_matrix_seg(8, 8, m_o, data, 0xff);
}
WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
WRITE16_MEMBER(ti1270_state::write_o)
{
// O1-O5,O7: input mux
// O0-O7: digit segments
@ -324,12 +307,14 @@ WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
m_o = data;
}
READ8_MEMBER(ticalc1x_state::ti1270_read_k)
READ8_MEMBER(ti1270_state::read_k)
{
return read_inputs(6);
}
// config
static INPUT_PORTS_START( ti1270 )
PORT_START("IN.0") // O1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CE/C")
@ -368,14 +353,13 @@ static INPUT_PORTS_START( ti1270 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
INPUT_PORTS_END
static MACHINE_CONFIG_START( ti1270, ticalc1x_state )
static MACHINE_CONFIG_START( ti1270, ti1270_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti1270_read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti1270_write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti1270_write_r))
MCFG_TMS1XXX_READ_K_CB(READ8(ti1270_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1270_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1270_state, write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ti1270)
@ -397,14 +381,28 @@ MACHINE_CONFIG_END
***************************************************************************/
WRITE16_MEMBER(ticalc1x_state::ti1000_write_r)
class ti1000_state : public ticalc1x_state
{
public:
ti1000_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_READ8_MEMBER(read_k);
};
// handlers
WRITE16_MEMBER(ti1000_state::write_r)
{
// R0-R7: select digit (right-to-left)
UINT8 o = BITSWAP8(m_o,7,4,3,2,1,0,6,5);
display_matrix_seg(8, 8, o, data, 0xff);
}
WRITE16_MEMBER(ticalc1x_state::ti1000_write_o)
WRITE16_MEMBER(ti1000_state::write_o)
{
// O0-O3,O5(?): input mux
// O0-O7: digit segments
@ -412,12 +410,14 @@ WRITE16_MEMBER(ticalc1x_state::ti1000_write_o)
m_o = data;
}
READ8_MEMBER(ticalc1x_state::ti1000_read_k)
READ8_MEMBER(ti1000_state::read_k)
{
return read_inputs(5);
}
// config
static INPUT_PORTS_START( ti1000 )
PORT_START("IN.0") // O0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
@ -451,14 +451,13 @@ static INPUT_PORTS_START( ti1000 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
INPUT_PORTS_END
static MACHINE_CONFIG_START( ti1000, ticalc1x_state )
static MACHINE_CONFIG_START( ti1000, ti1000_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti1000_read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti1000_write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti1000_write_r))
MCFG_TMS1XXX_READ_K_CB(READ8(ti1000_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1000_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1000_state, write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ti1270)
@ -480,7 +479,21 @@ MACHINE_CONFIG_END
***************************************************************************/
WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
class wizatron_state : public ticalc1x_state
{
public:
wizatron_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag)
{ }
virtual DECLARE_WRITE16_MEMBER(write_o);
virtual DECLARE_WRITE16_MEMBER(write_r);
virtual DECLARE_READ8_MEMBER(read_k);
};
// handlers
WRITE16_MEMBER(wizatron_state::write_r)
{
// 6th digit is custom(not 7seg), for math symbols, like this:
// \./ GAB
@ -495,7 +508,7 @@ WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
display_matrix_seg(7, 9, m_o, data, 0x7f);
}
WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
WRITE16_MEMBER(wizatron_state::write_o)
{
// O1-O4: input mux
// O0-O6: digit segments A-G
@ -504,12 +517,14 @@ WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
m_o = data & 0x7f;
}
READ8_MEMBER(ticalc1x_state::wizatron_read_k)
READ8_MEMBER(wizatron_state::read_k)
{
return read_inputs(4);
}
// config
static INPUT_PORTS_START( wizatron )
PORT_START("IN.0") // O1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
@ -536,14 +551,13 @@ static INPUT_PORTS_START( wizatron )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
INPUT_PORTS_END
static MACHINE_CONFIG_START( wizatron, ticalc1x_state )
static MACHINE_CONFIG_START( wizatron, wizatron_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, wizatron_read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, wizatron_write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, wizatron_write_r))
MCFG_TMS1XXX_READ_K_CB(READ8(wizatron_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(wizatron_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_wizatron)
@ -568,7 +582,20 @@ MACHINE_CONFIG_END
***************************************************************************/
WRITE16_MEMBER(ticalc1x_state::lilprof_write_o)
class lilprof_state : public wizatron_state
{
public:
lilprof_state(const machine_config &mconfig, device_type type, const char *tag)
: wizatron_state(mconfig, type, tag)
{ }
virtual DECLARE_WRITE16_MEMBER(write_o);
virtual DECLARE_READ8_MEMBER(read_k);
};
// handlers
WRITE16_MEMBER(lilprof_state::write_o)
{
// O1-O4,O7: input mux
// O0-O6: digit segments A-G
@ -576,12 +603,14 @@ WRITE16_MEMBER(ticalc1x_state::lilprof_write_o)
m_o = data;
}
READ8_MEMBER(ticalc1x_state::lilprof_read_k)
READ8_MEMBER(lilprof_state::read_k)
{
return read_inputs(5);
}
// config
static INPUT_PORTS_START( lilprof )
PORT_INCLUDE( wizatron )
@ -597,14 +626,13 @@ static INPUT_PORTS_START( lilprof )
PORT_CONFSETTING( 0x08, "4" )
INPUT_PORTS_END
static MACHINE_CONFIG_START( lilprof, ticalc1x_state )
static MACHINE_CONFIG_START( lilprof, lilprof_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof_read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof_write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, wizatron_write_r))
MCFG_TMS1XXX_READ_K_CB(READ8(lilprof_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_wizatron)
@ -629,7 +657,21 @@ MACHINE_CONFIG_END
***************************************************************************/
WRITE16_MEMBER(ticalc1x_state::lilprof78_write_r)
class lilprof78_state : public ticalc1x_state
{
public:
lilprof78_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_READ8_MEMBER(read_k);
};
// handlers
WRITE16_MEMBER(lilprof78_state::write_r)
{
// update leds state
UINT8 o = BITSWAP8(m_o,7,4,3,2,1,0,6,5) & 0x7f;
@ -641,14 +683,14 @@ WRITE16_MEMBER(ticalc1x_state::lilprof78_write_r)
// 3rd digit A/G(equals sign) is from O7
m_display_state[3] = (m_o & 0x80) ? 0x41 : 0;
// 6th digit is a custom 7seg for math symbols (see wizatron_write_r)
// 6th digit is a custom 7seg for math symbols (see wizatron_state write_r)
m_display_state[6] = BITSWAP8(m_display_state[6],7,6,1,4,2,3,5,0);
set_display_size(7, 9);
display_update();
}
WRITE16_MEMBER(ticalc1x_state::lilprof78_write_o)
WRITE16_MEMBER(lilprof78_state::write_o)
{
// O0-O3,O5(?): input mux
// O0-O6: digit segments A-G
@ -657,12 +699,14 @@ WRITE16_MEMBER(ticalc1x_state::lilprof78_write_o)
m_o = data;
}
READ8_MEMBER(ticalc1x_state::lilprof78_read_k)
READ8_MEMBER(lilprof78_state::read_k)
{
return read_inputs(5);
}
// config
static INPUT_PORTS_START( lilprof78 )
PORT_START("IN.0") // O0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
@ -696,14 +740,13 @@ static INPUT_PORTS_START( lilprof78 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
INPUT_PORTS_END
static MACHINE_CONFIG_START( lilprof78, ticalc1x_state )
static MACHINE_CONFIG_START( lilprof78, lilprof78_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof78_read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof78_write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, lilprof78_write_r))
MCFG_TMS1XXX_READ_K_CB(READ8(lilprof78_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof78_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(lilprof78_state, write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_wizatron)
@ -727,7 +770,21 @@ MACHINE_CONFIG_END
***************************************************************************/
WRITE16_MEMBER(ticalc1x_state::ti30_write_r)
class majestic_state : public ticalc1x_state
{
public:
majestic_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag)
{ }
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_READ8_MEMBER(read_k);
};
// handlers
WRITE16_MEMBER(majestic_state::write_r)
{
// note: 1st digit only has segments B,F,G,DP
m_display_segmask[0] = 0xe2;
@ -737,7 +794,7 @@ WRITE16_MEMBER(ticalc1x_state::ti30_write_r)
display_matrix_seg(8, 9, o, data, 0xff);
}
WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
WRITE16_MEMBER(majestic_state::write_o)
{
// O0-O2,O4-O7: input mux
// O0-O7: digit segments
@ -745,13 +802,15 @@ WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
m_o = data;
}
READ8_MEMBER(ticalc1x_state::ti30_read_k)
READ8_MEMBER(majestic_state::read_k)
{
// note: the Vss row is always on
return m_inp_matrix[7]->read() | read_inputs(7);
}
// config
static INPUT_PORTS_START( ti30 )
PORT_START("IN.0") // O0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("y" UTF8_POW_X)
@ -933,14 +992,14 @@ static INPUT_PORTS_START( tibusan1 )
INPUT_PORTS_END
static MACHINE_CONFIG_START( ti30, ticalc1x_state )
static MACHINE_CONFIG_START( majestic, majestic_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0980, 400000) // guessed
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti30_read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti30_write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti30_write_r))
MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(ticalc1x_state, auto_power_off))
MCFG_TMS1XXX_READ_K_CB(READ8(majestic_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(majestic_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(majestic_state, write_r))
MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(hh_tms1k_state, auto_power_off))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ti30)
@ -1104,7 +1163,7 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
COMP( 1974, tisr16, 0, 0, tisr16, tisr16, driver_device, 0, "Texas Instruments", "SR-16", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1975, tisr16ii, 0, 0, tisr16ii, tisr16ii, driver_device, 0, "Texas Instruments", "SR-16 II", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1975, tisr16ii, 0, 0, tisr16, tisr16ii, driver_device, 0, "Texas Instruments", "SR-16 II", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1976, ti1270, 0, 0, ti1270, ti1270, driver_device, 0, "Texas Instruments", "TI-1270", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1977, ti1000, 0, 0, ti1000, ti1000, driver_device, 0, "Texas Instruments", "TI-1000", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
@ -1112,6 +1171,6 @@ COMP( 1977, wizatron, 0, 0, wizatron, wizatron, driver_device, 0, "Tex
COMP( 1976, lilprof, 0, 0, lilprof, lilprof, driver_device, 0, "Texas Instruments", "Little Professor (1976 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1978, lilprof78, lilprof, 0, lilprof78, lilprof78, driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1976, ti30, 0, 0, ti30, ti30, driver_device, 0, "Texas Instruments", "TI-30", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1977, tiprog, 0, 0, ti30, tiprog, driver_device, 0, "Texas Instruments", "TI Programmer", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1979, tibusan1, 0, 0, ti30, tibusan1, driver_device, 0, "Texas Instruments", "TI Business Analyst-I", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1976, ti30, 0, 0, majestic, ti30, driver_device, 0, "Texas Instruments", "TI-30", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1977, tiprog, 0, 0, majestic, tiprog, driver_device, 0, "Texas Instruments", "TI Programmer", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
COMP( 1979, tibusan1, 0, 0, majestic, tibusan1, driver_device, 0, "Texas Instruments", "TI Business Analyst-I", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )

View File

@ -327,7 +327,7 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(snspell_power_button);
void snspell_power_off();
void snspell_display();
void prepare_display();
protected:
virtual void machine_start();
@ -400,7 +400,7 @@ DRIVER_INIT_MEMBER(tispeak_state, lantutor)
// common/snspell
void tispeak_state::snspell_display()
void tispeak_state::prepare_display()
{
display_matrix_seg(16, 16, m_o, (m_r & 0x8000) ? (m_r & 0x21ff) : 0, 0x3fff);
}
@ -415,7 +415,7 @@ WRITE16_MEMBER(tispeak_state::snspell_write_r)
// R15: filament on
// other bits: MCU internal use
m_r = m_inp_mux = data;
snspell_display();
prepare_display();
}
WRITE16_MEMBER(tispeak_state::snspell_write_o)
@ -423,7 +423,7 @@ WRITE16_MEMBER(tispeak_state::snspell_write_o)
// reorder opla to led14seg, plus DP as d14 and AP as d15:
// E,D,C,G,B,A,I,M,L,K,N,J,[AP],H,F,[DP] (sidenote: TI KLMN = MAME MLNK)
m_o = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
snspell_display();
prepare_display();
}
READ8_MEMBER(tispeak_state::snspell_read_k)
@ -450,7 +450,7 @@ WRITE16_MEMBER(tispeak_state::snmath_write_o)
// reorder opla to led14seg, plus DP as d14 and AP as d15:
// [DP],D,C,H,F,B,I,M,L,K,N,J,[AP],E,G,A (sidenote: TI KLMN = MAME MLNK)
m_o = BITSWAP16(data,12,0,10,7,8,9,11,6,3,14,4,13,1,2,5,15);
snspell_display();
prepare_display();
}
@ -460,7 +460,7 @@ WRITE16_MEMBER(tispeak_state::lantutor_write_r)
{
// same as default, except R13 is used for an extra digit
m_r = m_inp_mux = data;
snspell_display();
prepare_display();
}

View File

@ -59,94 +59,6 @@ public:
void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
void display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask);
// game-specific handlers
void mathmagi_display();
DECLARE_WRITE16_MEMBER(mathmagi_write_r);
DECLARE_WRITE16_MEMBER(mathmagi_write_o);
DECLARE_READ8_MEMBER(mathmagi_read_k);
void amaztron_display();
DECLARE_WRITE16_MEMBER(amaztron_write_r);
DECLARE_WRITE16_MEMBER(amaztron_write_o);
DECLARE_READ8_MEMBER(amaztron_read_k);
void tc4_display();
DECLARE_WRITE16_MEMBER(tc4_write_r);
DECLARE_WRITE16_MEMBER(tc4_write_o);
DECLARE_READ8_MEMBER(tc4_read_k);
void ebball_display();
DECLARE_WRITE16_MEMBER(ebball_write_r);
DECLARE_WRITE16_MEMBER(ebball_write_o);
DECLARE_READ8_MEMBER(ebball_read_k);
void ebball2_display();
DECLARE_WRITE16_MEMBER(ebball2_write_r);
DECLARE_WRITE16_MEMBER(ebball2_write_o);
DECLARE_READ8_MEMBER(ebball2_read_k);
void ebball3_display();
DECLARE_WRITE16_MEMBER(ebball3_write_r);
DECLARE_WRITE16_MEMBER(ebball3_write_o);
DECLARE_READ8_MEMBER(ebball3_read_k);
void ebball3_set_clock();
DECLARE_INPUT_CHANGED_MEMBER(ebball3_difficulty_switch);
DECLARE_MACHINE_RESET(ebball3);
DECLARE_WRITE16_MEMBER(elecdet_write_r);
DECLARE_WRITE16_MEMBER(elecdet_write_o);
DECLARE_READ8_MEMBER(elecdet_read_k);
void starwbc_display();
DECLARE_WRITE16_MEMBER(starwbc_write_r);
DECLARE_WRITE16_MEMBER(starwbc_write_o);
DECLARE_READ8_MEMBER(starwbc_read_k);
void astro_display();
DECLARE_WRITE16_MEMBER(astro_write_r);
DECLARE_WRITE16_MEMBER(astro_write_o);
DECLARE_READ8_MEMBER(astro_read_k);
DECLARE_WRITE16_MEMBER(comp4_write_r);
DECLARE_WRITE16_MEMBER(comp4_write_o);
DECLARE_READ8_MEMBER(comp4_read_k);
DECLARE_WRITE16_MEMBER(simon_write_r);
DECLARE_WRITE16_MEMBER(simon_write_o);
DECLARE_READ8_MEMBER(simon_read_k);
DECLARE_WRITE16_MEMBER(ssimon_write_r);
DECLARE_WRITE16_MEMBER(ssimon_write_o);
DECLARE_READ8_MEMBER(ssimon_read_k);
void ssimon_set_clock();
DECLARE_INPUT_CHANGED_MEMBER(ssimon_speed_switch);
DECLARE_MACHINE_RESET(ssimon);
DECLARE_WRITE16_MEMBER(cnsector_write_r);
DECLARE_WRITE16_MEMBER(cnsector_write_o);
DECLARE_READ8_MEMBER(cnsector_read_k);
DECLARE_WRITE16_MEMBER(merlin_write_r);
DECLARE_WRITE16_MEMBER(merlin_write_o);
DECLARE_READ8_MEMBER(merlin_read_k);
DECLARE_WRITE16_MEMBER(stopthief_write_r);
DECLARE_WRITE16_MEMBER(stopthief_write_o);
DECLARE_READ8_MEMBER(stopthief_read_k);
DECLARE_WRITE16_MEMBER(bankshot_write_r);
DECLARE_WRITE16_MEMBER(bankshot_write_o);
DECLARE_READ8_MEMBER(bankshot_read_k);
DECLARE_WRITE16_MEMBER(splitsec_write_r);
DECLARE_WRITE16_MEMBER(splitsec_write_o);
DECLARE_READ8_MEMBER(splitsec_read_k);
void tandy12_display();
DECLARE_WRITE16_MEMBER(tandy12_write_r);
DECLARE_WRITE16_MEMBER(tandy12_write_o);
DECLARE_READ8_MEMBER(tandy12_read_k);
protected:
virtual void machine_start();
virtual void machine_reset();