Previous 199869 Revisions Next

r36614 Tuesday 24th March, 2015 at 23:09:57 UTC by hap
first rename lilprof to lilprof78

added Little Professor (1976 ver)
[src/mess]mess.lst
[src/mess/drivers]ticalc1x.c

trunk/src/mess/drivers/ticalc1x.c
r245125r245126
88
99
1010  TODO:
11  - MCU clocks are unknown
12  - lilprof equals-sign is always on
11  - MCU clocks are unknown where noted
12  - lilprof78 equals-sign is always on
1313
1414***************************************************************************/
1515
r245125r245126
7070   void display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask);
7171   
7272   // calculator-specific handlers
73   void tisr16_display_update();
73   void tisr16_display();
7474   DECLARE_WRITE16_MEMBER(tisr16_write_o);
7575   DECLARE_WRITE16_MEMBER(tisr16_write_r);
7676   DECLARE_READ8_MEMBER(tisr16_read_k);
r245125r245126
8484   DECLARE_READ8_MEMBER(wizatron_read_k);
8585
8686   DECLARE_WRITE16_MEMBER(lilprof_write_o);
87   DECLARE_WRITE16_MEMBER(lilprof_write_r);
8887   DECLARE_READ8_MEMBER(lilprof_read_k);
8988
89   DECLARE_WRITE16_MEMBER(lilprof78_write_o);
90   DECLARE_WRITE16_MEMBER(lilprof78_write_r);
91   DECLARE_READ8_MEMBER(lilprof78_read_k);
92
9093   DECLARE_WRITE16_MEMBER(ti30_write_o);
9194   DECLARE_WRITE16_MEMBER(ti30_write_r);
9295   DECLARE_READ8_MEMBER(ti30_read_k);
r245125r245126
256259
257260***************************************************************************/
258261
259void ticalc1x_state::tisr16_display_update()
262void ticalc1x_state::tisr16_display()
260263{
261264   // update leds state
262265   for (int y = 0; y < 11; y++)
r245125r245126
275278   // R0-R10: input mux
276279   // R0-R10: select digit (right-to-left)
277280   m_r = m_inp_mux = data;
278   tisr16_display_update();
281   tisr16_display();
279282}
280283
281284WRITE16_MEMBER(ticalc1x_state::tisr16_write_o)
282285{
283286   // O0-O7: digit segments
284287   m_o = data;
285   tisr16_display_update();
288   tisr16_display();
286289}
287290
288291READ8_MEMBER(ticalc1x_state::tisr16_read_k)
r245125r245126
475478
476479WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
477480{
478   // note: 6th digit is custom(not 7seg), for math symbols, and 3rd digit
479   // only has A and G for =, though some newer revisions use a custom digit too.
481   // 6th digit is custom(not 7seg), for math symbols, like this:
482   //   \./    GAB
483   //   ---     F
484   //   /.\    EDC
485   
486   // 3rd digit only has A and G for =, though some newer hardware revisions
487   // (goes for both wizatron and lilprof) use a custom equals-sign digit here
480488   m_display_segmask[3] = 0x41;
481489   
482490   // R0-R8: select digit (right-to-left)
483   display_matrix_seg(8, 9, m_o, data, 0x7f);
491   display_matrix_seg(7, 9, m_o, data, 0x7f);
484492}
485493
486494WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
r245125r245126
500508
501509static INPUT_PORTS_START( wizatron )
502510   PORT_START("IN.0") // O1
503   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("CLEAR")
511   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
504512   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
505513   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
506514   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
r245125r245126
547555
548556/***************************************************************************
549557
550  TI Little Professor '78
558  TI Little Professor (1976 version)
559  * TMS0970 MCU labeled TMS0975NL ZA0356, GP0975CS. die labeled 0970D-75C
560 
561  The hardware is nearly identical to Wiz-A-Tron (or vice versa, since this
562  one is older).
563
564***************************************************************************/
565
566WRITE16_MEMBER(ticalc1x_state::lilprof_write_o)
567{
568   // O1-O4,O7: input mux
569   // O0-O6: digit segments A-G
570   m_inp_mux = (data >> 1 & 0xf) | (data >> 3 & 0x10);
571   m_o = data;
572}
573
574READ8_MEMBER(ticalc1x_state::lilprof_read_k)
575{
576   return read_inputs(5);
577}
578
579
580static INPUT_PORTS_START( lilprof )
581   PORT_INCLUDE( wizatron )
582
583   PORT_MODIFY("IN.0")
584   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CODE(KEYCODE_DEL) PORT_NAME("Set")
585   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Go")
586
587   PORT_START("IN.4") // O7
588   PORT_CONFNAME( 0x0f, 0x01, "Level")
589   PORT_CONFSETTING(    0x01, "1" )
590   PORT_CONFSETTING(    0x02, "2" )
591   PORT_CONFSETTING(    0x04, "3" )
592   PORT_CONFSETTING(    0x08, "4" )
593INPUT_PORTS_END
594
595
596static MACHINE_CONFIG_START( lilprof, ticalc1x_state )
597
598   /* basic machine hardware */
599   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
600   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof_read_k))
601   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof_write_o))
602   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, wizatron_write_r))
603
604   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
605   MCFG_DEFAULT_LAYOUT(layout_wizatron)
606
607   /* no video! */
608
609   /* no sound! */
610MACHINE_CONFIG_END
611
612
613
614
615
616/***************************************************************************
617
618  TI Little Professor (1978 version, same as 1980 version)
551619  * TMS1990 MCU labeled TMC1993NL. die labeled 1990C-c3C
552620
553621***************************************************************************/
554622
555WRITE16_MEMBER(ticalc1x_state::lilprof_write_r)
623WRITE16_MEMBER(ticalc1x_state::lilprof78_write_r)
556624{
557625   // update leds state
558626   UINT8 o = BITSWAP8(m_o,7,4,3,2,1,0,6,5) & 0x7f;
r245125r245126
564632   // 3rd digit A/G(equals sign) is from O7
565633   m_display_state[3] = (m_o & 0x80) ? 0x41 : 0;
566634   
567   // 6th digit is a custom 7seg for math symbols
635   // 6th digit is a custom 7seg for math symbols (see wizatron_write_r)
568636   m_display_state[6] = BITSWAP8(m_display_state[6],7,6,1,4,2,3,5,0);
569637
570   m_display_maxx = 8;
638   m_display_maxx = 7;
571639   m_display_maxy = 9;
572640   display_update();
573641}
574642
575WRITE16_MEMBER(ticalc1x_state::lilprof_write_o)
643WRITE16_MEMBER(ticalc1x_state::lilprof78_write_o)
576644{
577645   // O0-O3,O5: input mux
578646   // O0-O6: digit segments A-G
r245125r245126
581649   m_o = data;
582650}
583651
584READ8_MEMBER(ticalc1x_state::lilprof_read_k)
652READ8_MEMBER(ticalc1x_state::lilprof78_read_k)
585653{
586654   return read_inputs(5);
587655}
588656
589657
590static INPUT_PORTS_START( lilprof )
658static INPUT_PORTS_START( lilprof78 )
591659   PORT_START("IN.0") // O0
592660   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
593661   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
r245125r245126
621689INPUT_PORTS_END
622690
623691
624static MACHINE_CONFIG_START( lilprof, ticalc1x_state )
692static MACHINE_CONFIG_START( lilprof78, ticalc1x_state )
625693
626694   /* basic machine hardware */
627695   MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
628   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof_read_k))
629   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof_write_o))
630   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, lilprof_write_r))
696   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof78_read_k))
697   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof78_write_o))
698   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, lilprof78_write_r))
631699
632700   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
633701   MCFG_DEFAULT_LAYOUT(layout_wizatron)
r245125r245126
895963
896964ROM_START( ti1270 )
897965   ROM_REGION( 0x0400, "maincpu", 0 )
898   ROM_LOAD( "tms0974nl", 0x0000, 0x0400, CRC(48e09b4b) SHA1(17f27167164df223f9f06082ece4c3fc3900eda3) )
966   ROM_LOAD( "za0355", 0x0000, 0x0400, CRC(48e09b4b) SHA1(17f27167164df223f9f06082ece4c3fc3900eda3) )
899967
900968   ROM_REGION( 782, "maincpu:ipla", 0 )
901969   ROM_LOAD( "tms0970_ti1270_ipla.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
r245125r245126
910978
911979ROM_START( wizatron )
912980   ROM_REGION( 0x0400, "maincpu", 0 )
913   ROM_LOAD( "dp0907bs", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) )
981   ROM_LOAD( "za0379", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) )
914982
915983   ROM_REGION( 782, "maincpu:ipla", 0 )
916984   ROM_LOAD( "tms0970_wizatron_ipla.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
r245125r245126
925993
926994ROM_START( lilprof )
927995   ROM_REGION( 0x0400, "maincpu", 0 )
996   ROM_LOAD( "za0356", 0x0000, 0x0400, CRC(fef9dd39) SHA1(5c9614c9c5092d55dabeee2d6e0387d50d6ad4d5) )
997
998   ROM_REGION( 782, "maincpu:ipla", 0 )
999   ROM_LOAD( "tms0970_lilprof_ipla.pla", 0, 782, BAD_DUMP CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) ) // not verified
1000   ROM_REGION( 860, "maincpu:mpla", 0 )
1001   ROM_LOAD( "tms0970_lilprof_mpla.pla", 0, 860, BAD_DUMP CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) ) // not verified
1002   ROM_REGION( 352, "maincpu:opla", 0 )
1003   ROM_LOAD( "tms0970_lilprof_opla.pla", 0, 352, BAD_DUMP CRC(c74daf97) SHA1(c4948000196171b34d4fe9cdd2962a945da9883d) ) // not verified
1004   ROM_REGION( 157, "maincpu:spla", 0 )
1005   ROM_LOAD( "tms0970_lilprof_spla.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
1006ROM_END
1007
1008
1009ROM_START( lilprof78 )
1010   ROM_REGION( 0x0400, "maincpu", 0 )
9281011   ROM_LOAD( "tmc1993nl", 0x0000, 0x0400, CRC(e941316b) SHA1(7e1542045d1e731cea81a639c9ac9e91bb233b15) )
9291012
9301013   ROM_REGION( 782, "maincpu:ipla", 0 )
r245125r245126
9891072
9901073COMP( 1976, ti1270,    0,        0, ti1270,    ti1270,    driver_device, 0, "Texas Instruments", "TI-1270", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
9911074COMP( 1977, wizatron,  0,        0, wizatron,  wizatron,  driver_device, 0, "Texas Instruments", "Wiz-A-Tron", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
992COMP( 1978, lilprof,   0,        0, lilprof,   lilprof,   driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) // original is from 1976
1075COMP( 1976, lilprof,   0,        0, lilprof,   lilprof,   driver_device, 0, "Texas Instruments", "Little Professor (1976 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
1076COMP( 1978, lilprof78, lilprof,  0, lilprof78, lilprof78, driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
9931077
9941078COMP( 1976, ti30,      0,        0, ti30,      ti30,      driver_device, 0, "Texas Instruments", "TI-30", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
9951079COMP( 1977, tiprog,    0,        0, ti30,      tiprog,    driver_device, 0, "Texas Instruments", "TI Programmer", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
trunk/src/mess/mess.lst
r245125r245126
10861086tibusan1
10871087wizatron
10881088lilprof
1089lilprof78
10891090ti73      // 1990 TI-73
10901091ti74      // 1985 TI-74
10911092ti95      // 1986 TI-95


Previous 199869 Revisions Next


© 1997-2024 The MAME Team