trunk/src/mame/drivers/mpu4vid.c
| r20549 | r20550 | |
| 224 | 224 | m_vid_mainram(*this, "vid_mainram"), |
| 225 | 225 | m_acia_0(*this, "acia6850_0"), |
| 226 | 226 | m_acia_1(*this, "acia6850_1"), |
| 227 | | m_ptm(*this, "6840ptm_68k") |
| 227 | m_ptm(*this, "6840ptm_68k"), |
| 228 | m_trackx_port(*this, "TRACKX"), |
| 229 | m_tracky_port(*this, "TRACKY") |
| 228 | 230 | { |
| 229 | 231 | } |
| 230 | 232 | |
| r20549 | r20550 | |
| 235 | 237 | required_device<acia6850_device> m_acia_0; |
| 236 | 238 | required_device<acia6850_device> m_acia_1; |
| 237 | 239 | required_device<ptm6840_device> m_ptm; |
| 240 | optional_ioport m_trackx_port; |
| 241 | optional_ioport m_tracky_port; |
| 238 | 242 | |
| 239 | 243 | struct ef9369_t m_pal; |
| 240 | 244 | struct bt471_t m_bt471; |
| r20549 | r20550 | |
| 329 | 333 | static void update_mpu68_interrupts(running_machine &machine) |
| 330 | 334 | { |
| 331 | 335 | mpu4vid_state *state = machine.driver_data<mpu4vid_state>(); |
| 332 | | machine.device("video")->execute().set_input_line(1, state->m_m6840_irq_state ? ASSERT_LINE : CLEAR_LINE); |
| 333 | | machine.device("video")->execute().set_input_line(2, state->m_m6850_irq_state ? ASSERT_LINE : CLEAR_LINE); |
| 334 | | machine.device("video")->execute().set_input_line(3, state->m_scn2674->get_irq_state() ? ASSERT_LINE : CLEAR_LINE); |
| 336 | state->m_videocpu->set_input_line(1, state->m_m6840_irq_state ? ASSERT_LINE : CLEAR_LINE); |
| 337 | state->m_videocpu->set_input_line(2, state->m_m6850_irq_state ? ASSERT_LINE : CLEAR_LINE); |
| 338 | state->m_videocpu->set_input_line(3, state->m_scn2674->get_irq_state() ? ASSERT_LINE : CLEAR_LINE); |
| 335 | 339 | } |
| 336 | 340 | |
| 337 | 341 | /* Communications with 6809 board */ |
| r20549 | r20550 | |
| 364 | 368 | WRITE_LINE_MEMBER(mpu4vid_state::m6809_acia_irq) |
| 365 | 369 | { |
| 366 | 370 | m_m68k_acia_cts = state; |
| 367 | | machine().device("maincpu")->execute().set_input_line(M6809_IRQ_LINE, state); |
| 371 | m_maincpu->set_input_line(M6809_IRQ_LINE, state); |
| 368 | 372 | } |
| 369 | 373 | |
| 370 | 374 | static ACIA6850_INTERFACE( m6809_acia_if ) |
| r20549 | r20550 | |
| 740 | 744 | LOG(("%s: IC5 PIA Read of Port A (AUX1)\n",machine().describe_context())); |
| 741 | 745 | |
| 742 | 746 | |
| 743 | | UINT8 data = ioport("AUX1")->read(); |
| 747 | UINT8 data = m_aux1_port->read(); |
| 744 | 748 | |
| 745 | | INT8 dx = ioport("TRACKX")->read(); |
| 746 | | INT8 dy = ioport("TRACKY")->read(); |
| 749 | INT8 dx = m_trackx_port->read(); |
| 750 | INT8 dy = m_tracky_port->read(); |
| 747 | 751 | |
| 748 | 752 | m_cur[0] = dy + dx; |
| 749 | 753 | m_cur[1] = dy - dx; |
| r20549 | r20550 | |
| 1122 | 1126 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SPECIAL) |
| 1123 | 1127 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_SPECIAL) |
| 1124 | 1128 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_SPECIAL) |
| 1125 | | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("10p")PORT_IMPULSE(5) |
| 1126 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_COIN2) PORT_NAME("20p")PORT_IMPULSE(5) |
| 1127 | | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_COIN3) PORT_NAME("50p")PORT_IMPULSE(5) |
| 1128 | | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_COIN4) PORT_NAME("100p")PORT_IMPULSE(5) |
| 1129 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("10p")//PORT_IMPULSE(5) |
| 1130 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_COIN2) PORT_NAME("20p")//PORT_IMPULSE(5) |
| 1131 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_COIN3) PORT_NAME("50p")//PORT_IMPULSE(5) |
| 1132 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_COIN4) PORT_NAME("100p")//PORT_IMPULSE(5) |
| 1129 | 1133 | INPUT_PORTS_END |
| 1130 | 1134 | |
| 1131 | 1135 | static INPUT_PORTS_START( turnover ) |
| r20549 | r20550 | |
| 1236 | 1240 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SPECIAL) |
| 1237 | 1241 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_SPECIAL) |
| 1238 | 1242 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_SPECIAL) |
| 1239 | | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("10p")PORT_IMPULSE(5) |
| 1240 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_COIN2) PORT_NAME("20p")PORT_IMPULSE(5) |
| 1241 | | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_COIN3) PORT_NAME("50p")PORT_IMPULSE(5) |
| 1242 | | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_COIN4) PORT_NAME("100p")PORT_IMPULSE(5) |
| 1243 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("10p")//PORT_IMPULSE(5) |
| 1244 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_COIN2) PORT_NAME("20p")//PORT_IMPULSE(5) |
| 1245 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_COIN3) PORT_NAME("50p")//PORT_IMPULSE(5) |
| 1246 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_COIN4) PORT_NAME("100p")//PORT_IMPULSE(5) |
| 1243 | 1247 | INPUT_PORTS_END |
| 1244 | 1248 | |
| 1245 | 1249 | static INPUT_PORTS_START( adders ) |
| r20549 | r20550 | |
| 1350 | 1354 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SPECIAL) |
| 1351 | 1355 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_SPECIAL) |
| 1352 | 1356 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_SPECIAL) |
| 1353 | | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("10p")PORT_IMPULSE(5) |
| 1354 | | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_COIN2) PORT_NAME("20p")PORT_IMPULSE(5) |
| 1355 | | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_COIN3) PORT_NAME("50p")PORT_IMPULSE(5) |
| 1356 | | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_COIN4) PORT_NAME("100p")PORT_IMPULSE(5) |
| 1357 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("10p")//PORT_IMPULSE(5) |
| 1358 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_COIN2) PORT_NAME("20p")//PORT_IMPULSE(5) |
| 1359 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_COIN3) PORT_NAME("50p")//PORT_IMPULSE(5) |
| 1360 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_COIN4) PORT_NAME("100p")//PORT_IMPULSE(5) |
| 1357 | 1361 | INPUT_PORTS_END |
| 1358 | 1362 | |
| 1359 | 1363 | static void video_reset(device_t *device) |
| r20549 | r20550 | |
| 1376 | 1380 | MechMtr_config(machine(),8); |
| 1377 | 1381 | |
| 1378 | 1382 | /* Hook the reset line */ |
| 1379 | | m68k_set_reset_callback(machine().device("video"), ::video_reset); |
| 1383 | m68k_set_reset_callback(m_videocpu, ::video_reset); |
| 1380 | 1384 | } |
| 1381 | 1385 | |
| 1382 | 1386 | MACHINE_RESET_MEMBER(mpu4vid_state,mpu4_vid) |