trunk/src/mess/drivers/ticalc1x.c
| r245358 | r245359 | |
| 43 | 43 | DECLARE_WRITE16_MEMBER(ti1270_write_r); |
| 44 | 44 | DECLARE_READ8_MEMBER(ti1270_read_k); |
| 45 | 45 | |
| 46 | DECLARE_WRITE16_MEMBER(ti1000_write_o); |
| 47 | DECLARE_WRITE16_MEMBER(ti1000_write_r); |
| 48 | DECLARE_READ8_MEMBER(ti1000_read_k); |
| 49 | |
| 46 | 50 | DECLARE_WRITE16_MEMBER(wizatron_write_o); |
| 47 | 51 | DECLARE_WRITE16_MEMBER(wizatron_write_r); |
| 48 | 52 | DECLARE_READ8_MEMBER(wizatron_read_k); |
| r245358 | r245359 | |
| 397 | 401 | |
| 398 | 402 | /*************************************************************************** |
| 399 | 403 | |
| 404 | TI-1000 |
| 405 | * TMS1990 MCU labeled TMC1991NL, die labeled 1991-91A |
| 406 | * 8-digit 7seg LED display |
| 407 | |
| 408 | ***************************************************************************/ |
| 409 | |
| 410 | WRITE16_MEMBER(ticalc1x_state::ti1000_write_r) |
| 411 | { |
| 412 | // R0-R7: select digit (right-to-left) |
| 413 | UINT8 o = BITSWAP8(m_o,7,4,3,2,1,0,6,5); |
| 414 | display_matrix_seg(8, 8, o, data, 0xff); |
| 415 | } |
| 416 | |
| 417 | WRITE16_MEMBER(ticalc1x_state::ti1000_write_o) |
| 418 | { |
| 419 | // O0-O3,O5(?): input mux |
| 420 | // O0-O7: digit segments |
| 421 | m_inp_mux = (data & 0xf) | (data >> 1 & 0x10); |
| 422 | m_o = data; |
| 423 | } |
| 424 | |
| 425 | READ8_MEMBER(ticalc1x_state::ti1000_read_k) |
| 426 | { |
| 427 | return read_inputs(5); |
| 428 | } |
| 429 | |
| 430 | |
| 431 | static INPUT_PORTS_START( ti1000 ) |
| 432 | PORT_START("IN.0") // O0 |
| 433 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") |
| 434 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") |
| 435 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") |
| 436 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+") |
| 437 | |
| 438 | PORT_START("IN.1") // O1 |
| 439 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") |
| 440 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5") |
| 441 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") |
| 442 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-") |
| 443 | |
| 444 | PORT_START("IN.2") // O2 |
| 445 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") |
| 446 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") |
| 447 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") |
| 448 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY) |
| 449 | |
| 450 | // note: even though power buttons are on the matrix, they are not CPU-controlled |
| 451 | PORT_START("IN.3") // O3 or O4? |
| 452 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false) |
| 453 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-") |
| 454 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("%") |
| 455 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) |
| 456 | |
| 457 | PORT_START("IN.4") // O5 |
| 458 | 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, power_button, (void *)true) |
| 459 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0") |
| 460 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".") |
| 461 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=") |
| 462 | INPUT_PORTS_END |
| 463 | |
| 464 | |
| 465 | static MACHINE_CONFIG_START( ti1000, ticalc1x_state ) |
| 466 | |
| 467 | /* basic machine hardware */ |
| 468 | MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed |
| 469 | MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti1000_read_k)) |
| 470 | MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti1000_write_o)) |
| 471 | MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti1000_write_r)) |
| 472 | |
| 473 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) |
| 474 | MCFG_DEFAULT_LAYOUT(layout_ti1270) |
| 475 | |
| 476 | /* no video! */ |
| 477 | |
| 478 | /* no sound! */ |
| 479 | MACHINE_CONFIG_END |
| 480 | |
| 481 | |
| 482 | |
| 483 | |
| 484 | |
| 485 | /*************************************************************************** |
| 486 | |
| 400 | 487 | TI WIZ-A-TRON |
| 401 | 488 | * TMS0970 MCU labeled TMC0907NL ZA0379, DP0907BS. die labeled 0970F-07B |
| 402 | 489 | * 9-digit 7seg LED display(one custom digit) |
| r245358 | r245359 | |
| 573 | 660 | |
| 574 | 661 | WRITE16_MEMBER(ticalc1x_state::lilprof78_write_o) |
| 575 | 662 | { |
| 576 | | // O0-O3,O5: input mux |
| 663 | // O0-O3,O5(?): input mux |
| 577 | 664 | // O0-O6: digit segments A-G |
| 578 | 665 | // O7: 6th digit |
| 579 | 666 | m_inp_mux = (data & 0xf) | (data >> 1 & 0x10); |
| r245358 | r245359 | |
| 656 | 743 | m_display_segmask[0] = 0xe2; |
| 657 | 744 | |
| 658 | 745 | // R0-R8: select digit |
| 659 | | display_matrix_seg(8, 9, BITSWAP8(m_o,7,5,2,1,4,0,6,3), data, 0xff); |
| 746 | UINT8 o = BITSWAP8(m_o,7,5,2,1,4,0,6,3); |
| 747 | display_matrix_seg(8, 9, o, data, 0xff); |
| 660 | 748 | } |
| 661 | 749 | |
| 662 | 750 | WRITE16_MEMBER(ticalc1x_state::ti30_write_o) |
| r245358 | r245359 | |
| 919 | 1007 | ROM_END |
| 920 | 1008 | |
| 921 | 1009 | |
| 1010 | ROM_START( ti1000 ) |
| 1011 | ROM_REGION( 0x0400, "maincpu", 0 ) |
| 1012 | ROM_LOAD( "tmc1991nl", 0x0000, 0x0400, CRC(2da5381d) SHA1(b5dc14553db2068ed48e130e5ec9109930d8cda9) ) |
| 1013 | |
| 1014 | ROM_REGION( 782, "maincpu:ipla", 0 ) |
| 1015 | ROM_LOAD( "tms0970_ti1000_ipla.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) ) |
| 1016 | ROM_REGION( 860, "maincpu:mpla", 0 ) |
| 1017 | ROM_LOAD( "tms0970_ti1000_mpla.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) ) |
| 1018 | ROM_REGION( 352, "maincpu:opla", 0 ) |
| 1019 | ROM_LOAD( "tms0970_ti1000_opla.pla", 0, 352, CRC(1d82061a) SHA1(90e4a4b0fb3b4ae5965da90479b7fed737ad8831) ) |
| 1020 | ROM_REGION( 157, "maincpu:spla", 0 ) |
| 1021 | ROM_LOAD( "tms0970_ti1000_spla.pla", 0, 157, CRC(234ca3a8) SHA1(76844dd87cb380a07c8fcbef143038087e98f138) ) |
| 1022 | ROM_END |
| 1023 | |
| 1024 | |
| 922 | 1025 | ROM_START( wizatron ) |
| 923 | 1026 | ROM_REGION( 0x0400, "maincpu", 0 ) |
| 924 | 1027 | ROM_LOAD( "za0379", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) ) |
| r245358 | r245359 | |
| 1014 | 1117 | COMP( 1975, tisr16ii, 0, 0, tisr16ii, tisr16ii, driver_device, 0, "Texas Instruments", "SR-16 II", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 1015 | 1118 | |
| 1016 | 1119 | COMP( 1976, ti1270, 0, 0, ti1270, ti1270, driver_device, 0, "Texas Instruments", "TI-1270", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 1120 | COMP( 1977, ti1000, 0, 0, ti1000, ti1000, driver_device, 0, "Texas Instruments", "TI-1000", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 1017 | 1121 | COMP( 1977, wizatron, 0, 0, wizatron, wizatron, driver_device, 0, "Texas Instruments", "Wiz-A-Tron", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 1018 | 1122 | COMP( 1976, lilprof, 0, 0, lilprof, lilprof, driver_device, 0, "Texas Instruments", "Little Professor (1976 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 1019 | 1123 | COMP( 1978, lilprof78, lilprof, 0, lilprof78, lilprof78, driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |