Previous 199869 Revisions Next

r36429 Sunday 15th March, 2015 at 03:57:05 UTC by hap
ticalc1x.c cleanup part 3
[src/mess/drivers]ticalc1x.c

trunk/src/mess/drivers/ticalc1x.c
r244940r244941
232232
233233/***************************************************************************
234234
235  I/O
235  Minidrivers (I/O, Inputs, Machine Config)
236236
237237***************************************************************************/
238238
239// SR-16: TMS1000 MCU labeled TMS1001NL. die labeled 1001A
239/***************************************************************************
240240
241  TI SR-16
242  * TMS1000 MCU labeled TMS1001NL. die labeled 1001A
243
244***************************************************************************/
245
241246void ticalc1x_state::tisr16_display_update()
242247{
243248   // update leds state
r244940r244941
273278}
274279
275280
276// TI-1270: TMS0970 MCU labeled TMC0974NL ZA0355, DP0974A. die labeled 0970D-74A
277
278READ8_MEMBER(ticalc1x_state::ti1270_read_k)
279{
280   return read_inputs(6);
281}
282
283WRITE16_MEMBER(ticalc1x_state::ti1270_write_r)
284{
285   // R0-R7: select digit (right-to-left)
286   display_matrix_7seg(8, 8, m_o, data, 0xff);
287}
288
289WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
290{
291   // O1-O5,O7: input mux
292   // O0-O7: digit segments
293   m_inp_mux = (data >> 1 & 0x1f) | (data >> 2 & 0x20);
294   m_o = data;
295}
296
297
298// WIZ-A-TRON (educational toy): TMS0970 MCU labeled TMC0907NL ZA0379, DP0907BS. die labeled 0970F-07B
299
300READ8_MEMBER(ticalc1x_state::wizatron_read_k)
301{
302   return read_inputs(4);
303}
304
305WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
306{
307   // note: 3rd digit is custom(not 7seg), for math symbols, and 6th digit
308   // only has A and G for =, though some newer revisions use a custom digit too.
309   m_7seg_mask[3] = 0x41;
310   
311   // R0-R8: select digit (right-to-left)
312   display_matrix_7seg(8, 9, m_o, data, 0x7f);
313}
314
315WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
316{
317   // O1-O4: input mux
318   // O0-O6: digit segments A-G
319   // O7: N/C
320   m_inp_mux = data >> 1 & 0xf;
321   m_o = data & 0x7f;
322}
323
324
325// TI-30: TMS0980 MCU labeled TMC0981NL. die labeled 0980B-81F
326// TI Programmer: TMS0980 MCU labeled ZA0675NL, JP0983AT. die labeled 0980B-83
327// TI Business Analyst-I: TMS0980 MCU labeled TMC0982NL. die labeled 0980B-82F
328
329READ8_MEMBER(ticalc1x_state::ti30_read_k)
330{
331   // note: the Vss row is always on
332   return m_inp_matrix[7]->read() | read_inputs(7);
333}
334
335WRITE16_MEMBER(ticalc1x_state::ti30_write_r)
336{
337   // note: 1st digit only has segments B,F,G,DP
338   m_7seg_mask[0] = 0xe2;
339
340   // R0-R8: select digit
341   display_matrix_7seg(8, 9, BITSWAP8(m_o,7,5,2,1,4,0,6,3), data, 0xff);
342}
343
344WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
345{
346   // O0-O2,O4-O7: input mux
347   // O0-O7: digit segments
348   m_inp_mux = (data & 7) | (data >> 1 & 0x78);
349   m_o = data;
350}
351
352
353
354/***************************************************************************
355
356  Inputs
357
358***************************************************************************/
359
360281static INPUT_PORTS_START( tisr16 )
361282   PORT_START("IN.0") // R0
362283   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
r244940r244941
426347INPUT_PORTS_END
427348
428349
350static MACHINE_CONFIG_START( tisr16, ticalc1x_state )
351
352   /* basic machine hardware */
353   MCFG_CPU_ADD("maincpu", TMS1000, 250000) // guessed
354   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, tisr16_read_k))
355   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, tisr16_write_o))
356   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, tisr16_write_r))
357
358   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
359   MCFG_DEFAULT_LAYOUT(layout_tisr16)
360
361   /* no video! */
362
363   /* no sound! */
364MACHINE_CONFIG_END
365
366
367
368
369
370/***************************************************************************
371
372  TI-1270
373  * TMS0970 MCU labeled TMC0974NL ZA0355, DP0974A. die labeled 0970D-74A
374
375***************************************************************************/
376
377READ8_MEMBER(ticalc1x_state::ti1270_read_k)
378{
379   return read_inputs(6);
380}
381
382WRITE16_MEMBER(ticalc1x_state::ti1270_write_r)
383{
384   // R0-R7: select digit (right-to-left)
385   display_matrix_7seg(8, 8, m_o, data, 0xff);
386}
387
388WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
389{
390   // O1-O5,O7: input mux
391   // O0-O7: digit segments
392   m_inp_mux = (data >> 1 & 0x1f) | (data >> 2 & 0x20);
393   m_o = data;
394}
395
396
429397static INPUT_PORTS_START( ti1270 )
430398   PORT_START("IN.0") // O1
431399   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CE/C")
r244940r244941
465433INPUT_PORTS_END
466434
467435
436static MACHINE_CONFIG_START( ti1270, ticalc1x_state )
437
438   /* basic machine hardware */
439   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
440   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti1270_read_k))
441   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti1270_write_o))
442   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti1270_write_r))
443
444   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
445   MCFG_DEFAULT_LAYOUT(layout_ti1270)
446
447   /* no video! */
448
449   /* no sound! */
450MACHINE_CONFIG_END
451
452
453
454
455
456/***************************************************************************
457
458  TI WIZ-A-TRON (educational toy)
459  * TMS0970 MCU labeled TMC0907NL ZA0379, DP0907BS. die labeled 0970F-07B
460
461***************************************************************************/
462
463READ8_MEMBER(ticalc1x_state::wizatron_read_k)
464{
465   return read_inputs(4);
466}
467
468WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
469{
470   // note: 3rd digit is custom(not 7seg), for math symbols, and 6th digit
471   // only has A and G for =, though some newer revisions use a custom digit too.
472   m_7seg_mask[3] = 0x41;
473   
474   // R0-R8: select digit (right-to-left)
475   display_matrix_7seg(8, 9, m_o, data, 0x7f);
476}
477
478WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
479{
480   // O1-O4: input mux
481   // O0-O6: digit segments A-G
482   // O7: N/C
483   m_inp_mux = data >> 1 & 0xf;
484   m_o = data & 0x7f;
485}
486
487
468488static INPUT_PORTS_START( wizatron )
469489   PORT_START("IN.0") // O1
470490   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("CLEAR")
r244940r244941
491511   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
492512INPUT_PORTS_END
493513
494static INPUT_PORTS_START( lilprof )
495INPUT_PORTS_END
496514
515static MACHINE_CONFIG_START( wizatron, ticalc1x_state )
497516
517   /* basic machine hardware */
518   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
519   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, wizatron_read_k))
520   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, wizatron_write_o))
521   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, wizatron_write_r))
522
523   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
524   MCFG_DEFAULT_LAYOUT(layout_wizatron)
525
526   /* no video! */
527
528   /* no sound! */
529MACHINE_CONFIG_END
530
531
532
533
534
535/***************************************************************************
536
537  Majestic-line calculators:
538  * TI-30: TMS0980 MCU labeled TMC0981NL. die labeled 0980B-81F
539  * TI Programmer: TMS0980 MCU labeled ZA0675NL, JP0983AT. die labeled 0980B-83
540  * TI Business Analyst-I: TMS0980 MCU labeled TMC0982NL. die labeled 0980B-82F
541
542***************************************************************************/
543
544READ8_MEMBER(ticalc1x_state::ti30_read_k)
545{
546   // note: the Vss row is always on
547   return m_inp_matrix[7]->read() | read_inputs(7);
548}
549
550WRITE16_MEMBER(ticalc1x_state::ti30_write_r)
551{
552   // note: 1st digit only has segments B,F,G,DP
553   m_7seg_mask[0] = 0xe2;
554
555   // R0-R8: select digit
556   display_matrix_7seg(8, 9, BITSWAP8(m_o,7,5,2,1,4,0,6,3), data, 0xff);
557}
558
559WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
560{
561   // O0-O2,O4-O7: input mux
562   // O0-O7: digit segments
563   m_inp_mux = (data & 7) | (data >> 1 & 0x78);
564   m_o = data;
565}
566
567
498568static INPUT_PORTS_START( ti30 )
499569   PORT_START("IN.0") // O0
500570   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("y" UTF8_POW_X)
r244940r244941
676746INPUT_PORTS_END
677747
678748
749static MACHINE_CONFIG_START( ti30, ticalc1x_state )
679750
680/***************************************************************************
681
682  Machine Config(s)
683
684***************************************************************************/
685
686static MACHINE_CONFIG_START( tisr16, ticalc1x_state )
687
688751   /* basic machine hardware */
689   MCFG_CPU_ADD("maincpu", TMS1000, 250000) // guessed
690   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, tisr16_read_k))
691   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, tisr16_write_o))
692   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, tisr16_write_r))
752   MCFG_CPU_ADD("maincpu", TMS0980, 400000) // guessed
753   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti30_read_k))
754   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti30_write_o))
755   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti30_write_r))
756   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(ticalc1x_state, tms0980_auto_power_off))
693757
694758   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
759   MCFG_DEFAULT_LAYOUT(layout_ti30)
695760
696   MCFG_DEFAULT_LAYOUT(layout_tisr16)
761   /* no video! */
762
763   /* no sound! */
697764MACHINE_CONFIG_END
698765
699766
700static MACHINE_CONFIG_START( t9base, ticalc1x_state )
701767
702   /* basic machine hardware */
703   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
704768
705   /* no video! */
706769
707   /* no sound! */
708MACHINE_CONFIG_END
709770
710static MACHINE_CONFIG_DERIVED( ti1270, t9base )
711771
712   /* basic machine hardware */
713   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
714   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti1270_read_k))
715   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti1270_write_o))
716   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti1270_write_r))
772static INPUT_PORTS_START( lilprof )
773INPUT_PORTS_END
717774
718   MCFG_DEFAULT_LAYOUT(layout_ti1270)
719MACHINE_CONFIG_END
720775
721static MACHINE_CONFIG_DERIVED( wizatron, t9base )
722776
723   /* basic machine hardware */
724   MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
725   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, wizatron_read_k))
726   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, wizatron_write_o))
727   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, wizatron_write_r))
728777
729   MCFG_DEFAULT_LAYOUT(layout_wizatron)
730MACHINE_CONFIG_END
731778
732static MACHINE_CONFIG_DERIVED( lilprof, t9base )
733779
780static MACHINE_CONFIG_START( lilprof, ticalc1x_state )
781
734782   /* basic machine hardware */
735783   MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
736784//   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof_read_k))
737785//   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof_write_o))
738786//   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, lilprof_write_r))
739787
788   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
740789   MCFG_DEFAULT_LAYOUT(layout_wizatron)
741MACHINE_CONFIG_END
742790
791   /* no video! */
743792
744static MACHINE_CONFIG_DERIVED( ti30, t9base )
745
746   /* basic machine hardware */
747   MCFG_CPU_ADD("maincpu", TMS0980, 400000) // guessed
748   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti30_read_k))
749   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti30_write_o))
750   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti30_write_r))
751   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(ticalc1x_state, tms0980_auto_power_off))
752
753   MCFG_DEFAULT_LAYOUT(layout_ti30)
793   /* no sound! */
754794MACHINE_CONFIG_END
755795
756796
757
758797/***************************************************************************
759798
760799  Game driver(s)
r244940r244941
771810   ROM_LOAD( "tms1000_sr16_opla.pla", 0, 365, CRC(29b08739) SHA1(d55f01e40a2d493d45ea422f12e63b01bcde08fb) )
772811ROM_END
773812
813
774814ROM_START( ti1270 )
775815   ROM_REGION( 0x0400, "maincpu", 0 )
776816   ROM_LOAD( "tms0974nl", 0x0000, 0x0400, CRC(48e09b4b) SHA1(17f27167164df223f9f06082ece4c3fc3900eda3) )
r244940r244941
785825   ROM_LOAD( "tms0970_ti1270_spla.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
786826ROM_END
787827
828
788829ROM_START( wizatron )
789830   ROM_REGION( 0x0400, "maincpu", 0 )
790831   ROM_LOAD( "dp0907bs", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) )
r244940r244941
799840   ROM_LOAD( "tms0970_wizatron_spla.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
800841ROM_END
801842
843
802844ROM_START( lilprof )
803845   ROM_REGION( 0x0400, "maincpu", 0 )
804846   ROM_LOAD( "tmc1993nl", 0x0000, 0x0400, CRC(e941316b) SHA1(7e1542045d1e731cea81a639c9ac9e91bb233b15) )
r244940r244941
813855   ROM_LOAD( "tms0970_lilprof_spla.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
814856ROM_END
815857
858
816859ROM_START( ti30 )
817860   ROM_REGION( 0x1000, "maincpu", 0 )
818861   ROM_LOAD16_WORD( "tmc0981nl", 0x0000, 0x1000, CRC(41298a14) SHA1(06f654c70add4044a612d3a38b0c2831c188fd0c) )
r244940r244941
827870   ROM_LOAD( "tms0980_ti30_spla.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
828871ROM_END
829872
873
830874ROM_START( tibusan1 )
831875   ROM_REGION( 0x1000, "maincpu", 0 )
832876   ROM_LOAD16_WORD( "tmc0982nl", 0x0000, 0x1000, CRC(6954560a) SHA1(6c153a0c9239a811e3514a43d809964c06f8f88e) )
r244940r244941
841885   ROM_LOAD( "tms0980_tibusan1_spla.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
842886ROM_END
843887
888
844889ROM_START( tiprog )
845890   ROM_REGION( 0x1000, "maincpu", 0 )
846891   ROM_LOAD16_WORD( "za0675nl", 0x0000, 0x1000, CRC(82355854) SHA1(03fab373bce04df8ea3fe25352525e8539213626) )
r244940r244941
857902
858903
859904
860COMP( 1974, tisr16,   0, 0, tisr16,   tisr16,   driver_device, 0, "Texas Instruments", "SR-16 (Texas Instruments)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
905/*    YEAR  NAME       PARENT COMPAT MACHINE   INPUT      INIT              COMPANY, FULLNAME, FLAGS */
906COMP( 1974, tisr16,    0,        0, tisr16,    tisr16,    driver_device, 0, "Texas Instruments", "SR-16 (Texas Instruments)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
861907
862COMP( 1976, ti1270,   0, 0, ti1270,   ti1270,   driver_device, 0, "Texas Instruments", "TI-1270", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
863COMP( 1977, wizatron, 0, 0, wizatron, wizatron, driver_device, 0, "Texas Instruments", "Wiz-A-Tron", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
864COMP( 1978, lilprof , 0, 0, lilprof,  lilprof,  driver_device, 0, "Texas Instruments", "Little Professor", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW | GAME_NOT_WORKING ) // 1978 version, original is from 1976
908COMP( 1976, ti1270,    0,        0, ti1270,    ti1270,    driver_device, 0, "Texas Instruments", "TI-1270", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
909COMP( 1977, wizatron,  0,        0, wizatron,  wizatron,  driver_device, 0, "Texas Instruments", "Wiz-A-Tron", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
910COMP( 1978, lilprof,   0,        0, lilprof,   lilprof,   driver_device, 0, "Texas Instruments", "Little Professor", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW | GAME_NOT_WORKING ) // 1978 version, original is from 1976
865911
866COMP( 1976, ti30,     0, 0, ti30,     ti30,     driver_device, 0, "Texas Instruments", "TI-30", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
867COMP( 1977, tiprog,   0, 0, ti30,     tiprog,   driver_device, 0, "Texas Instruments", "TI Programmer", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
868COMP( 1979, tibusan1, 0, 0, ti30,     tibusan1, driver_device, 0, "Texas Instruments", "TI Business Analyst-I", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
912COMP( 1976, ti30,      0,        0, ti30,      ti30,      driver_device, 0, "Texas Instruments", "TI-30", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
913COMP( 1977, tiprog,    0,        0, ti30,      tiprog,    driver_device, 0, "Texas Instruments", "TI Programmer", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
914COMP( 1979, tibusan1,  0,        0, ti30,      tibusan1,  driver_device, 0, "Texas Instruments", "TI Business Analyst-I", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )


Previous 199869 Revisions Next


© 1997-2024 The MAME Team