trunk/src/mess/drivers/mathmagi.c
| r242295 | r242296 | |
| 22 | 22 | public: |
| 23 | 23 | mathmagi_state(const machine_config &mconfig, device_type type, const char *tag) |
| 24 | 24 | : driver_device(mconfig, type, tag), |
| 25 | | m_maincpu(*this, "maincpu") |
| 25 | m_maincpu(*this, "maincpu"), |
| 26 | m_button_matrix(*this, "IN") |
| 26 | 27 | { } |
| 27 | 28 | |
| 28 | 29 | required_device<cpu_device> m_maincpu; |
| 30 | optional_ioport_array<11> m_button_matrix; |
| 29 | 31 | |
| 30 | 32 | UINT16 m_o; |
| 31 | 33 | UINT16 m_r; |
| r242295 | r242296 | |
| 46 | 48 | |
| 47 | 49 | READ8_MEMBER(mathmagi_state::read_k) |
| 48 | 50 | { |
| 49 | | return 0; |
| 51 | printf("r"); |
| 52 | |
| 53 | UINT8 k = 0; |
| 54 | |
| 55 | // read selected button rows |
| 56 | for (int i = 0; i < 11; i++) |
| 57 | if (m_r >> i & 1) |
| 58 | k |= m_button_matrix[i]->read(); |
| 59 | |
| 60 | return k; |
| 50 | 61 | } |
| 51 | 62 | |
| 52 | 63 | WRITE16_MEMBER(mathmagi_state::write_o) |
| 53 | 64 | { |
| 65 | m_o = data; |
| 66 | |
| 67 | printf("\n%02X ",m_o); |
| 68 | for (int i=0;i<11;i++) printf("%d",m_r>>(10-i)&1); |
| 54 | 69 | } |
| 55 | 70 | |
| 56 | 71 | WRITE16_MEMBER(mathmagi_state::write_r) |
| 57 | 72 | { |
| 73 | m_r = data; |
| 74 | |
| 75 | printf("\n%02X ",m_o); |
| 76 | for (int i=0;i<11;i++) printf("%d",m_r>>(10-i)&1); |
| 58 | 77 | } |
| 59 | 78 | |
| 60 | 79 | |
| r242295 | r242296 | |
| 75 | 94 | */ |
| 76 | 95 | |
| 77 | 96 | static INPUT_PORTS_START( mathmagi ) |
| 97 | PORT_START("IN.0") // R0 |
| 98 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) |
| 99 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) |
| 100 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) |
| 101 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) |
| 102 | |
| 103 | PORT_START("IN.1") // R1 |
| 104 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) |
| 105 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) |
| 106 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) |
| 107 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) |
| 108 | |
| 109 | PORT_START("IN.2") // R2 |
| 110 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) |
| 111 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) |
| 112 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) |
| 113 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) |
| 114 | |
| 115 | PORT_START("IN.3") // R3 |
| 116 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) |
| 117 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) |
| 118 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) |
| 119 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) |
| 120 | |
| 121 | PORT_START("IN.4") // R4 |
| 122 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) |
| 123 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) |
| 124 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) |
| 125 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) |
| 126 | |
| 127 | PORT_START("IN.5") // R5 |
| 128 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) |
| 129 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) |
| 130 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) |
| 131 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) |
| 132 | |
| 133 | PORT_START("IN.6") // R6 |
| 134 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) |
| 135 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) |
| 136 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) |
| 137 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) |
| 138 | |
| 139 | PORT_START("IN.7") // R7 |
| 140 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) |
| 141 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) |
| 142 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) |
| 143 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) |
| 144 | |
| 145 | PORT_START("IN.8") // R8 |
| 146 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) |
| 147 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) |
| 148 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) |
| 149 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) |
| 150 | |
| 151 | PORT_START("IN.9") // R9 |
| 152 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD) |
| 153 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) |
| 154 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) |
| 155 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) |
| 156 | |
| 157 | PORT_START("IN.10") // R10 |
| 158 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) // 1P/2P switch? |
| 159 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) |
| 160 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) |
| 161 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) |
| 78 | 162 | INPUT_PORTS_END |
| 79 | 163 | |
| 80 | 164 | |
| r242295 | r242296 | |
| 108 | 192 | static MACHINE_CONFIG_START( mathmagi, mathmagi_state ) |
| 109 | 193 | |
| 110 | 194 | /* basic machine hardware */ |
| 111 | | MCFG_CPU_ADD("maincpu", TMS1100, MASTER_CLOCK) |
| 195 | // MCFG_CPU_ADD("maincpu", TMS1100, MASTER_CLOCK) |
| 196 | MCFG_CPU_ADD("maincpu", TMS1100, 10000) // temp |
| 112 | 197 | MCFG_TMS1XXX_OUTPUT_PLA(mathmagi_output_pla) |
| 113 | 198 | MCFG_TMS1XXX_READ_K_CB(READ8(mathmagi_state, read_k)) |
| 114 | 199 | MCFG_TMS1XXX_WRITE_O_CB(WRITE16(mathmagi_state, write_o)) |