summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2015-03-15 04:38:38 +0100
committer hap <happppp@users.noreply.github.com>2015-03-15 04:38:38 +0100
commit327d6dece9cc26133748f1ca65e396a683953993 (patch)
treefbd7659f00fe6a6745f9ebb2b63fe0d8382deb82
parent2b40bfdf2068a2d2c24ec1198c12177788695756 (diff)
ticalc1x.c cleanup part 2
-rw-r--r--src/mess/drivers/ticalc1x.c165
1 files changed, 51 insertions, 114 deletions
diff --git a/src/mess/drivers/ticalc1x.c b/src/mess/drivers/ticalc1x.c
index f0e48fa4e14..f2980c56f1c 100644
--- a/src/mess/drivers/ticalc1x.c
+++ b/src/mess/drivers/ticalc1x.c
@@ -66,7 +66,7 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
void display_update();
- void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
+ void display_matrix_7seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 _7segmask);
// calculator-specific handlers
DECLARE_READ8_MEMBER(tisr16_read_k);
@@ -96,7 +96,7 @@ void ticalc1x_state::machine_start()
memset(m_display_state, 0, sizeof(m_display_state));
memset(m_display_cache, 0, sizeof(m_display_cache));
memset(m_display_decay, 0, sizeof(m_display_decay));
- memset(m_7seg_mask, 0, sizeof(m_7seg_mask));
+ memset(m_7seg_mask, ~0, sizeof(m_7seg_mask)); // !
m_o = 0;
m_r = 0;
@@ -181,15 +181,18 @@ TIMER_DEVICE_CALLBACK_MEMBER(ticalc1x_state::display_decay_tick)
display_update();
}
-void ticalc1x_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety)
+void ticalc1x_state::display_matrix_7seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 _7segmask)
{
m_display_maxx = maxx;
m_display_maxy = maxy;
// update current state
- UINT32 mask = (1 << maxx) - 1;
+ UINT32 colmask = (1 << maxx) - 1;
for (int y = 0; y < maxy; y++)
- m_display_state[y] = (sety >> y & 1) ? (setx & mask) : 0;
+ {
+ m_7seg_mask[y] &= _7segmask;
+ m_display_state[y] = (sety >> y & 1) ? (setx & colmask) : 0;
+ }
display_update();
}
@@ -238,36 +241,27 @@ INPUT_CHANGED_MEMBER(ticalc1x_state::tms0980_power_button)
void ticalc1x_state::tisr16_display_update()
{
// update leds state
- for (int i = 0; i < 11; i++)
- if (m_r >> i & 1)
- m_display_state[i] = m_o;
+ for (int y = 0; y < 11; y++)
+ m_display_state[y] = (m_r >> y & 1) ? m_o : 0;
// exponent sign (not 100% sure this is correct)
- m_display_state[11] = (m_display_state[0] | m_display_state[1]) ? 0x40 : 0;
+ m_display_state[11] = (m_display_state[0] || m_display_state[1]) ? 0x40 : 0;
- // send to output
- for (int i = 0; i < 12; i++)
- output_set_digit_value(i, m_display_state[i]);
+ m_display_maxx = 8;
+ m_display_maxy = 12;
+ display_update();
}
READ8_MEMBER(ticalc1x_state::tisr16_read_k)
{
- UINT8 k = 0;
-
- // read selected button rows
- for (int i = 0; i < 11; i++)
- if (m_r >> i & 1)
- k |= m_inp_matrix[i]->read();
-
- return k;
+ return read_inputs(11);
}
WRITE16_MEMBER(ticalc1x_state::tisr16_write_r)
{
// R0-R10: input mux
// R0-R10: select digit (right-to-left)
- m_r = data;
-
+ m_r = m_inp_mux = data;
tisr16_display_update();
}
@@ -275,7 +269,6 @@ WRITE16_MEMBER(ticalc1x_state::tisr16_write_o)
{
// O0-O7: digit segments
m_o = data;
-
tisr16_display_update();
}
@@ -284,35 +277,20 @@ WRITE16_MEMBER(ticalc1x_state::tisr16_write_o)
READ8_MEMBER(ticalc1x_state::ti1270_read_k)
{
- UINT8 k = 0;
-
- // read selected button rows
- for (int i = 0; i < 7; i++)
- if (m_o >> (i+1) & 1)
- k |= m_inp_matrix[i]->read();
-
- return k;
+ return read_inputs(6);
}
WRITE16_MEMBER(ticalc1x_state::ti1270_write_r)
{
- m_display_maxx = 8;
- m_display_maxy = 8;
-
// R0-R7: select digit (right-to-left)
- for (int i = 0; i < 8; i++)
- {
- m_7seg_mask[i] = 0xff;
- m_display_state[i] = (data >> i & 1) ? m_o : 0;
- }
-
- display_update();
+ display_matrix_7seg(8, 8, m_o, data, 0xff);
}
WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
{
// O1-O5,O7: input mux
// O0-O7: digit segments
+ m_inp_mux = (data >> 1 & 0x1f) | (data >> 2 & 0x20);
m_o = data;
}
@@ -321,33 +299,17 @@ WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
READ8_MEMBER(ticalc1x_state::wizatron_read_k)
{
- UINT8 k = 0;
-
- // read selected button rows
- for (int i = 0; i < 4; i++)
- if (m_o >> (i+1) & 1)
- k |= m_inp_matrix[i]->read();
-
- return k;
+ return read_inputs(4);
}
WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
{
- m_display_maxx = 8;
- m_display_maxy = 9;
-
+ // note: 3rd digit is custom(not 7seg), for math symbols, and 6th digit
+ // only has A and G for =, though some newer revisions use a custom digit too.
+ m_7seg_mask[3] = 0x41;
+
// R0-R8: select digit (right-to-left)
- // note: 3rd digit is custom(not 7seg), for math symbols
- for (int i = 0; i < 9; i++)
- {
- m_7seg_mask[i] = 0x7f;
- m_display_state[i] = (data >> i & 1) ? m_o : 0;
- }
-
- // 6th digit only has A and G for =
- m_display_state[3] &= 0x41;
-
- display_update();
+ display_matrix_7seg(8, 9, m_o, data, 0x7f);
}
WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
@@ -355,6 +317,7 @@ WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
// O1-O4: input mux
// O0-O6: digit segments A-G
// O7: N/C
+ m_inp_mux = data >> 1 & 0xf;
m_o = data & 0x7f;
}
@@ -365,40 +328,24 @@ WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
READ8_MEMBER(ticalc1x_state::ti30_read_k)
{
- // the Vss row is always on
- UINT8 k = m_inp_matrix[8]->read();
-
- // read selected button rows
- for (int i = 0; i < 8; i++)
- if (m_o >> i & 1)
- k |= m_inp_matrix[i]->read();
-
- return k;
+ // note: the Vss row is always on
+ return m_inp_matrix[7]->read() | read_inputs(7);
}
WRITE16_MEMBER(ticalc1x_state::ti30_write_r)
{
- m_display_maxx = 8;
- m_display_maxy = 9;
+ // note: 1st digit only has segments B,F,G,DP
+ m_7seg_mask[0] = 0xe2;
// R0-R8: select digit
- UINT8 o = BITSWAP8(m_o,7,5,2,1,4,0,6,3);
- for (int i = 0; i < 9; i++)
- {
- m_7seg_mask[i] = 0xff;
- m_display_state[i] = (data >> i & 1) ? o : 0;
- }
-
- // 1st digit only has segments B,F,G,DP
- m_display_state[0] &= 0xe2;
-
- display_update();
+ display_matrix_7seg(8, 9, BITSWAP8(m_o,7,5,2,1,4,0,6,3), data, 0xff);
}
WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
{
- // O1-O5,O7: input mux
+ // O0-O2,O4-O7: input mux
// O0-O7: digit segments
+ m_inp_mux = (data & 7) | (data >> 1 & 0x78);
m_o = data;
}
@@ -510,10 +457,7 @@ static INPUT_PORTS_START( ti1270 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CODE(KEYCODE_I) PORT_NAME(UTF8_SMALL_PI)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
- PORT_START("IN.5") // O6
- PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("IN.6") // O7
+ PORT_START("IN.5") // O7
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x")
@@ -573,31 +517,28 @@ static INPUT_PORTS_START( ti30 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
- PORT_START("IN.3") // O3
- PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("IN.4") // O4
+ PORT_START("IN.3") // O4
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_NAME(UTF8_SMALL_PI)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("(")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("%")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME(")")
- PORT_START("IN.5") // O5
+ PORT_START("IN.4") // O5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("SUM")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
- PORT_START("IN.6") // O6
+ PORT_START("IN.5") // O6
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_NAME("DRG")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_NAME("INV")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_NAME("cos")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_NAME("sin")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_NAME("tan")
- PORT_START("IN.7") // O7
+ PORT_START("IN.6") // O7
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_NAME("EXC")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
@@ -605,7 +546,7 @@ static INPUT_PORTS_START( ti30 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
// note: even though power buttons are on the matrix, they are not CPU-controlled
- PORT_START("IN.8") // Vss!
+ PORT_START("IN.7") // Vss!
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, tms0980_power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x")
@@ -636,31 +577,28 @@ static INPUT_PORTS_START( tiprog )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
- PORT_START("IN.3") // O3
- PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("IN.4") // O4
+ PORT_START("IN.3") // O4
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TILDE) PORT_NAME("1'sC")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_NAME("b")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_NAME("A")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_NAME("C")
- PORT_START("IN.5") // O5
+ PORT_START("IN.4") // O5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("XOR")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
- PORT_START("IN.6") // O6
+ PORT_START("IN.5") // O6
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME(")")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("STO")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("SUM")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("RCL")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("(")
- PORT_START("IN.7") // O7
+ PORT_START("IN.6") // O7
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
@@ -668,7 +606,7 @@ static INPUT_PORTS_START( tiprog )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
// note: even though power buttons are on the matrix, they are not CPU-controlled
- PORT_START("IN.8") // Vss!
+ PORT_START("IN.7") // Vss!
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_PGUP) PORT_NAME("C/ON") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, tms0980_power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_NAME("DEC")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_NAME("OCT")
@@ -700,31 +638,28 @@ static INPUT_PORTS_START( tibusan1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
- PORT_START("IN.3") // O3
- PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("IN.4") // O4
+ PORT_START("IN.3") // O4
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME(UTF8_CAPITAL_SIGMA"+ " UTF8_CAPITAL_SIGMA"-")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("( AN-CI\"")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("x<>y L.R.")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME(") 1/x")
- PORT_START("IN.5") // O5
+ PORT_START("IN.4") // O5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("SUM x" UTF8_PRIME)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
- PORT_START("IN.6") // O6
+ PORT_START("IN.5") // O6
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_NAME("FV")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_NAME("N")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_NAME("PMT")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_NAME("%i")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_NAME("PV")
- PORT_START("IN.7") // O7
+ PORT_START("IN.6") // O7
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_NAME("EXC x" UTF8_PRIME)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
@@ -732,7 +667,7 @@ static INPUT_PORTS_START( tibusan1 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
// note: even though power buttons are on the matrix, they are not CPU-controlled
- PORT_START("IN.8") // Vss!
+ PORT_START("IN.7") // Vss!
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, tms0980_power_button, (void *)true)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("2nd")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2" " UTF8_SQUAREROOT"x")
@@ -756,6 +691,8 @@ static MACHINE_CONFIG_START( tisr16, ticalc1x_state )
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", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
+
MCFG_DEFAULT_LAYOUT(layout_tisr16)
MACHINE_CONFIG_END