trunk/src/mess/drivers/hh_tms1k.c
| r244861 | r244862 | |
| 13 | 13 | -------------------------------------------------------------------- |
| 14 | 14 | @CP0904A TMS0970 1977, Milton Bradley Comp IV |
| 15 | 15 | @MP0905B TMS0970 1977, Parker Brothers Codename Sector |
| 16 | *MP0168 TMS1000? 1979, Conic Basketball |
| 16 | 17 | @MP0914 TMS1000 1979, Entex Baseball 1 |
| 17 | 18 | @MP1030 TMS1100 1980, APF Mathemagician |
| 18 | 19 | @MP1204 TMS1100 1980, Entex Baseball 3 |
| r244861 | r244862 | |
| 34 | 35 | MP3496 TMS1100 1980, MicroVision cartridge: Sea Duel |
| 35 | 36 | @MP6100A TMS0980 1979, Ideal Electronic Detective |
| 36 | 37 | @MP6101B TMS0980 1979, Parker Brothers Stop Thief |
| 38 | *MP6361 ? 1983, Defender Strikes |
| 37 | 39 | *MP7303 TMS1400? 19??, Tiger 7-in-1 Sports Stadium |
| 38 | 40 | @MP7313 TMS1400 1980, Parker Brothers Bank Shot |
| 39 | 41 | @MP7314 TMS1400 1980, Parker Brothers Split Second |
| r244861 | r244862 | |
| 151 | 153 | DECLARE_WRITE16_MEMBER(ebball_write_r); |
| 152 | 154 | DECLARE_WRITE16_MEMBER(ebball_write_o); |
| 153 | 155 | |
| 156 | void ebball3_display(); |
| 157 | DECLARE_READ8_MEMBER(ebball3_read_k); |
| 158 | DECLARE_WRITE16_MEMBER(ebball3_write_r); |
| 159 | DECLARE_WRITE16_MEMBER(ebball3_write_o); |
| 160 | |
| 154 | 161 | DECLARE_READ8_MEMBER(elecdet_read_k); |
| 155 | 162 | DECLARE_WRITE16_MEMBER(elecdet_write_r); |
| 156 | 163 | DECLARE_WRITE16_MEMBER(elecdet_write_o); |
| r244861 | r244862 | |
| 899 | 906 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Batter") |
| 900 | 907 | INPUT_PORTS_END |
| 901 | 908 | |
| 909 | |
| 902 | 910 | static MACHINE_CONFIG_START( ebball, hh_tms1k_state ) |
| 903 | 911 | |
| 904 | 912 | /* basic machine hardware */ |
| r244861 | r244862 | |
| 926 | 934 | /*************************************************************************** |
| 927 | 935 | |
| 928 | 936 | Entex Electronic Baseball 3 |
| 937 | * boards are labeled: Zeny |
| 929 | 938 | * TMS1100NLL 6007 MP1204 (die labeled MP1204) |
| 939 | * 2*SN75492N LED display driver |
| 930 | 940 | |
| 941 | |
| 942 | lamp translation table: led zz from game PCB = MESS lampyx: |
| 943 | note: unlabeled panel leds are listed here as Sz, Bz, Oz, Iz, z left-to-right |
| 944 | |
| 945 | 00 = - 10 = lamp75 20 = lamp72 |
| 946 | 01 = lamp60 11 = lamp65 21 = lamp84 |
| 947 | 02 = lamp61 12 = lamp55 22 = lamp85 |
| 948 | 03 = lamp62 13 = lamp52 23 = lamp90 |
| 949 | 04 = lamp63 14 = lamp80 24 = lamp92 |
| 950 | 05 = lamp73 15 = lamp81 25 = lamp91 |
| 951 | 06 = lamp53 16 = lamp51 26 = lamp93 |
| 952 | 07 = lamp74 17 = lamp82 27 = lamp95 |
| 953 | 08 = lamp64 18 = lamp83 28 = lamp94 |
| 954 | 09 = lamp54 19 = lamp50 |
| 955 | |
| 956 | S1,S2: lamp40,41 |
| 957 | B1-B3: lamp30-32 |
| 958 | O1,O2: lamp42,43 |
| 959 | I1-I6: lamp20-25, I7-I9: lamp33-35 |
| 960 | |
| 931 | 961 | ***************************************************************************/ |
| 932 | 962 | |
| 963 | void hh_tms1k_state::ebball3_display() |
| 964 | { |
| 965 | m_display_maxx = 7; |
| 966 | m_display_maxy = 10+2; |
| 967 | |
| 968 | // update current state |
| 969 | for (int y = 0; y < 10; y++) |
| 970 | m_display_state[y] = (m_r >> y & 1) ? m_o : 0; |
| 971 | |
| 972 | // R0,R1 are normal 7segs |
| 973 | m_7seg_mask[0] = m_7seg_mask[1] = 0x7f; |
| 974 | |
| 975 | // R4,R7 contain segments(only F and B) for the two other digits |
| 976 | m_display_state[10] = (m_display_state[4] & 0x20) | (m_display_state[7] & 0x02); |
| 977 | m_display_state[11] = ((m_display_state[4] & 0x10) | (m_display_state[7] & 0x01)) << 1; |
| 978 | m_7seg_mask[10] = m_7seg_mask[11] = 0x22; |
| 979 | |
| 980 | display_update(); |
| 981 | } |
| 982 | |
| 983 | READ8_MEMBER(hh_tms1k_state::ebball3_read_k) |
| 984 | { |
| 985 | //printf("%X ",m_r); |
| 986 | |
| 987 | return read_inputs(3); |
| 988 | } |
| 989 | |
| 990 | WRITE16_MEMBER(hh_tms1k_state::ebball3_write_r) |
| 991 | { |
| 992 | // R0-R2: input mux |
| 993 | m_inp_mux = data & 7; |
| 994 | |
| 995 | // R10: speaker out |
| 996 | m_speaker->level_w(data >> 10 & 1); |
| 997 | |
| 998 | // R0-R9: led columns |
| 999 | m_r = data; |
| 1000 | ebball3_display(); |
| 1001 | } |
| 1002 | |
| 1003 | WRITE16_MEMBER(hh_tms1k_state::ebball3_write_o) |
| 1004 | { |
| 1005 | // O0-O6: led row |
| 1006 | // O7: N/C |
| 1007 | m_o = data & 0x7f; |
| 1008 | ebball3_display(); |
| 1009 | } |
| 1010 | |
| 1011 | |
| 933 | 1012 | static INPUT_PORTS_START( ebball3 ) |
| 1013 | PORT_START("IN.0") // R0 |
| 1014 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) |
| 1015 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) |
| 1016 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) |
| 1017 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) |
| 1018 | |
| 1019 | PORT_START("IN.1") // R1 |
| 1020 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) |
| 1021 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON6 ) |
| 1022 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON7 ) |
| 1023 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8 ) |
| 1024 | |
| 1025 | PORT_START("IN.2") // R2 |
| 1026 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON10 ) |
| 1027 | // PORT_CONFNAME( 0x01, 0x01, "Pitcher" ) |
| 1028 | // PORT_CONFSETTING( 0x01, "Auto" ) |
| 1029 | // PORT_CONFSETTING( 0x00, "Manual" ) |
| 1030 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON9 ) |
| 1031 | // PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 1032 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) |
| 1033 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) |
| 934 | 1034 | INPUT_PORTS_END |
| 935 | 1035 | |
| 936 | 1036 | |
| r244861 | r244862 | |
| 938 | 1038 | |
| 939 | 1039 | /* basic machine hardware */ |
| 940 | 1040 | MCFG_CPU_ADD("maincpu", TMS1100, 425000) // RC osc. R=47K, C=33pf -> ~425kHz |
| 941 | | // MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ebball3_read_k)) |
| 942 | | // MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ebball3_write_r)) |
| 943 | | // MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ebball3_write_o)) |
| 1041 | MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ebball3_read_k)) |
| 1042 | MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ebball3_write_r)) |
| 1043 | MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ebball3_write_o)) |
| 944 | 1044 | |
| 945 | | // MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) |
| 1045 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) |
| 946 | 1046 | MCFG_DEFAULT_LAYOUT(layout_ebball3) |
| 947 | 1047 | |
| 948 | 1048 | /* no video! */ |