trunk/src/mess/drivers/tispeak.c
| r245213 | r245214 | |
| 135 | 135 | Apparently QA never found out and it ended up in the final product. |
| 136 | 136 | |
| 137 | 137 | Speak & Math (US), 1986 |
| 138 | | - MCU: CD2708 |
| 138 | - MCU: CD2708, labeled CD2708N2L (die labeled TMC0270F 2708A) |
| 139 | 139 | - TMS51xx(1/2): 16KB CD2381 |
| 140 | 140 | - TMS51xx(2/2): 4KB CD2614 |
| 141 | 141 | |
| r245213 | r245214 | |
| 149 | 149 | Speak & Read: |
| 150 | 150 | |
| 151 | 151 | Speak & Read (US), 1980 |
| 152 | | - MCU: CD2705** |
| 152 | - MCU: CD2705, labeled CD2705B-N2L (die labeled TMC0270E 2705B) - 2nd revision? |
| 153 | 153 | - TMS51xx(1/2): 16KB CD2394 (rev.A) |
| 154 | 154 | - TMS51xx(2/2): 16KB CD2395 (rev.A) |
| 155 | 155 | |
| r245213 | r245214 | |
| 693 | 693 | INPUT_PORTS_END |
| 694 | 694 | |
| 695 | 695 | |
| 696 | static INPUT_PORTS_START( snread ) |
| 697 | PORT_INCLUDE( snspell ) |
| 698 | |
| 699 | PORT_MODIFY("IN.7") |
| 700 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Word Zapper") |
| 701 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Word Maker") |
| 702 | |
| 703 | PORT_MODIFY("IN.8") |
| 704 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("Read It") |
| 705 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Picture Read") |
| 706 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Letter Stumper") |
| 707 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Hear It") |
| 708 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Word Zap/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)1) |
| 709 | INPUT_PORTS_END |
| 710 | |
| 711 | |
| 696 | 712 | static INPUT_PORTS_START( lantutor ) |
| 697 | 713 | PORT_INCLUDE( snspell ) |
| 698 | 714 | |
| 699 | | PORT_MODIFY("IN.5") // R5 |
| 715 | PORT_MODIFY("IN.5") |
| 700 | 716 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Diacritical") |
| 701 | 717 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Space") |
| 702 | 718 | |
| 703 | | PORT_MODIFY("IN.6") // R6 |
| 719 | PORT_MODIFY("IN.6") |
| 704 | 720 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_NAME("1") |
| 705 | 721 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("2") |
| 706 | 722 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("3") |
| 707 | 723 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("4") |
| 708 | 724 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("5") |
| 709 | 725 | |
| 710 | | PORT_MODIFY("IN.7") // R7 |
| 726 | PORT_MODIFY("IN.7") |
| 711 | 727 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("6") |
| 712 | 728 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("7") |
| 713 | 729 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("8") |
| 714 | 730 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_NAME("9") |
| 715 | 731 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("0") |
| 716 | 732 | |
| 717 | | PORT_MODIFY("IN.8") // Vss! |
| 733 | PORT_MODIFY("IN.8") |
| 718 | 734 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("Translate") |
| 719 | 735 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("Learn") |
| 720 | 736 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("Phrase") |
| r245213 | r245214 | |
| 818 | 834 | MCFG_SOFTWARE_LIST_ADD("cart_list", "snspell") |
| 819 | 835 | MACHINE_CONFIG_END |
| 820 | 836 | |
| 837 | static MACHINE_CONFIG_DERIVED( snread, snmath ) |
| 838 | |
| 839 | /* basic machine hardware */ |
| 840 | MCFG_CPU_MODIFY("maincpu") |
| 841 | MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snspell_write_o)) |
| 842 | |
| 843 | /* cartridge */ |
| 844 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "snread") |
| 845 | MCFG_GENERIC_EXTENSIONS("vsm") |
| 846 | MCFG_GENERIC_LOAD(tispeak_state, tispeak_cartridge) |
| 847 | |
| 848 | MCFG_SOFTWARE_LIST_ADD("cart_list", "snread") |
| 849 | MACHINE_CONFIG_END |
| 850 | |
| 821 | 851 | static MACHINE_CONFIG_DERIVED( lantutor, snmath ) |
| 822 | 852 | |
| 823 | 853 | /* basic machine hardware */ |
| r245213 | r245214 | |
| 851 | 881 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 852 | 882 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 853 | 883 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 854 | | ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // taken from cd2708, need to verify if it's same as tmc0271 |
| 884 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified |
| 855 | 885 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 856 | 886 | ROM_LOAD( "tms0270_tmc0271_opla.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) |
| 857 | 887 | |
| r245213 | r245214 | |
| 867 | 897 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 868 | 898 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 869 | 899 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 870 | | ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // placeholder, use the one we have |
| 900 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified |
| 871 | 901 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 872 | 902 | ROM_LOAD( "tms0270_tmc0271_opla.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) |
| 873 | 903 | |
| r245213 | r245214 | |
| 882 | 912 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 883 | 913 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 884 | 914 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 885 | | ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // taken from cd2708, need to verify if it's same as tmc0271 |
| 915 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified |
| 886 | 916 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 887 | 917 | ROM_LOAD( "tms0270_tmc0271_opla.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) |
| 888 | 918 | |
| r245213 | r245214 | |
| 898 | 928 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 899 | 929 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 900 | 930 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 901 | | ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // placeholder, use the one we have |
| 931 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified |
| 902 | 932 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 903 | 933 | ROM_LOAD( "tms0270_tmc0271_opla.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) |
| 904 | 934 | |
| r245213 | r245214 | |
| 913 | 943 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 914 | 944 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 915 | 945 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 916 | | ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // taken from cd2708, need to verify if it's same as tmc0271 |
| 946 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified |
| 917 | 947 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 918 | 948 | ROM_LOAD( "tms0270_tmc0271_opla.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) |
| 919 | 949 | |
| r245213 | r245214 | |
| 929 | 959 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 930 | 960 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 931 | 961 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 932 | | ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // placeholder, use the one we have |
| 962 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified |
| 933 | 963 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 934 | 964 | ROM_LOAD( "tms0270_tmc0271_opla.pla", 0, 1246, BAD_DUMP CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) // placeholder, use the one we have |
| 935 | 965 | |
| r245213 | r245214 | |
| 945 | 975 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 946 | 976 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 947 | 977 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 948 | | ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) |
| 978 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) |
| 949 | 979 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 950 | 980 | ROM_LOAD( "tms0270_cd2708_opla.pla", 0, 1246, CRC(1abad753) SHA1(53d20b519ed73ce248368047a056836afbe3cd46) ) |
| 951 | 981 | |
| r245213 | r245214 | |
| 966 | 996 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 967 | 997 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 968 | 998 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 969 | | ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // taken from cd2708, need to verify if it's same as cd2704 |
| 999 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified |
| 970 | 1000 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 971 | | ROM_LOAD( "tms0270_cd2708_opla.pla", 0, 1246, BAD_DUMP CRC(1abad753) SHA1(53d20b519ed73ce248368047a056836afbe3cd46) ) // " |
| 1001 | ROM_LOAD( "tms0270_cd2708_opla.pla", 0, 1246, BAD_DUMP CRC(1abad753) SHA1(53d20b519ed73ce248368047a056836afbe3cd46) ) // taken from cd2708, need to verify if it's same as cd2704 |
| 972 | 1002 | |
| 973 | 1003 | ROM_REGION( 0x8000, "tms6100", 0 ) |
| 974 | 1004 | ROM_LOAD( "cd2392.vsm", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) ) |
| r245213 | r245214 | |
| 976 | 1006 | ROM_END |
| 977 | 1007 | |
| 978 | 1008 | |
| 1009 | ROM_START( snread ) |
| 1010 | ROM_REGION( 0x1000, "maincpu", 0 ) |
| 1011 | ROM_LOAD( "cd2705b-n2l", 0x0000, 0x1000, CRC(c235636e) SHA1(57b24dd8414bf76ec786a51d10cb8a5898b60e18) ) |
| 1012 | |
| 1013 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 1014 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 1015 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 1016 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) |
| 1017 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 1018 | ROM_LOAD( "tms0270_cd2705_opla.pla", 0, 1246, CRC(bf859848) SHA1(66b297fbf534968fa6db7413b99ef0e81cc35ddc) ) |
| 1019 | |
| 1020 | ROM_REGION( 0xc000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge |
| 1021 | ROM_LOAD( "cd2394a.vsm", 0x0000, 0x4000, CRC(cbb0e2b1) SHA1(5e322c683baf806523de171310258ae371671327) ) |
| 1022 | ROM_LOAD( "cd2395a.vsm", 0x4000, 0x4000, CRC(3d519504) SHA1(76b19ba5a9a3486005e09c98e8a6abc8b88288dd) ) |
| 1023 | ROM_END |
| 1024 | |
| 1025 | |
| 979 | 1026 | ROM_START( lantutor ) |
| 980 | 1027 | ROM_REGION( 0x1000, "maincpu", 0 ) |
| 981 | 1028 | ROM_LOAD( "us4631748_tmc0275", 0x0000, 0x1000, CRC(22818845) SHA1(1a84f15fb18ca66b1f2bf7491d76fbc56068984d) ) // extracted visually from patent 4631748, verified with source code |
| r245213 | r245214 | |
| 983 | 1030 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 984 | 1031 | ROM_LOAD( "tms0980_default_ipla.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 985 | 1032 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 986 | | ROM_LOAD( "tms0270_cd2708_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // taken from cd2708, need to verify if it's same as tmc0275 |
| 1033 | ROM_LOAD( "tms0270_default_mpla.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified |
| 987 | 1034 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 988 | 1035 | ROM_LOAD( "tms0270_tmc0271_opla.pla", 0, 1246, BAD_DUMP CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) // taken from snspell, mostly looks correct |
| 989 | 1036 | |
| r245213 | r245214 | |
| 1002 | 1049 | COMP( 1986, snmath, 0, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) |
| 1003 | 1050 | COMP( 1980, snmathp, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1980 version/prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 1004 | 1051 | |
| 1052 | COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, snspell, "Texas Instruments", "Speak & Read (US)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) |
| 1053 | |
| 1005 | 1054 | COMP( 1979, lantutor, 0, 0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |