trunk/src/mame/drivers/s11.c
| r19577 | r19578 | |
| 7 | 7 | |
| 8 | 8 | |
| 9 | 9 | ToDo: |
| 10 | | - Determine what drives the background sound (atm it's a guess) |
| 10 | - Background music is slow in High Speed |
| 11 | 11 | - Can coin up but not start |
| 12 | - Doesn't react to the Advance button very well |
| 12 | 13 | |
| 13 | 14 | *****************************************************************************************/ |
| 14 | 15 | |
| r19577 | r19578 | |
| 58 | 59 | DECLARE_WRITE8_MEMBER(pia2c_pb_w); |
| 59 | 60 | DECLARE_WRITE8_MEMBER(pia34_pa_w); |
| 60 | 61 | DECLARE_WRITE8_MEMBER(pia34_pb_w); |
| 62 | DECLARE_WRITE_LINE_MEMBER(pia34_cb2_w); |
| 61 | 63 | DECLARE_WRITE8_MEMBER(pia40_pa_w); |
| 62 | 64 | DECLARE_READ8_MEMBER(dips_r); |
| 63 | 65 | DECLARE_READ8_MEMBER(switch_r); |
| 64 | 66 | DECLARE_WRITE8_MEMBER(switch_w); |
| 65 | 67 | DECLARE_READ_LINE_MEMBER(pias_ca1_r); |
| 66 | 68 | DECLARE_READ_LINE_MEMBER(pia21_ca1_r); |
| 69 | DECLARE_READ8_MEMBER(pia28_w7_r); |
| 67 | 70 | DECLARE_READ_LINE_MEMBER(pia28_ca1_r); |
| 68 | 71 | DECLARE_READ_LINE_MEMBER(pia28_cb1_r); |
| 69 | 72 | DECLARE_WRITE_LINE_MEMBER(pias_ca2_w); |
| r19577 | r19578 | |
| 208 | 211 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, s11_state, audio_nmi, 1) |
| 209 | 212 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, s11_state, main_nmi, 1) |
| 210 | 213 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_0) |
| 211 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_9) |
| 214 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_9) PORT_TOGGLE |
| 215 | PORT_CONFNAME( 0x10, 0x00, "Language" ) |
| 216 | PORT_CONFSETTING( 0x00, "German" ) |
| 217 | PORT_CONFSETTING( 0x10, "English" ) |
| 212 | 218 | INPUT_PORTS_END |
| 213 | 219 | |
| 214 | 220 | MACHINE_RESET_MEMBER( s11_state, s11 ) |
| r19577 | r19578 | |
| 289 | 295 | |
| 290 | 296 | READ_LINE_MEMBER( s11_state::pia28_ca1_r ) |
| 291 | 297 | { |
| 292 | | return BIT(ioport("DIAGS")->read(), 2); // advance button |
| 298 | return BIT(ioport("DIAGS")->read(), 2) ? 1 : 0; // advance button |
| 293 | 299 | } |
| 294 | 300 | |
| 295 | 301 | READ_LINE_MEMBER( s11_state::pia28_cb1_r ) |
| 296 | 302 | { |
| 297 | | return BIT(ioport("DIAGS")->read(), 3); // up/down switch |
| 303 | return BIT(ioport("DIAGS")->read(), 3) ? 1 : 0; // up/down switch |
| 298 | 304 | } |
| 299 | 305 | |
| 300 | 306 | WRITE8_MEMBER( s11_state::dig0_w ) |
| r19577 | r19578 | |
| 318 | 324 | } |
| 319 | 325 | } |
| 320 | 326 | |
| 327 | READ8_MEMBER( s11_state::pia28_w7_r) |
| 328 | { |
| 329 | if(BIT(ioport("DIAGS")->read(), 4)) // W7 Jumper |
| 330 | return 0x00; |
| 331 | return 0x80; |
| 332 | } |
| 333 | |
| 321 | 334 | static const pia6821_interface pia28_intf = |
| 322 | 335 | { |
| 323 | | DEVCB_NULL, /* port A in */ |
| 336 | DEVCB_DRIVER_MEMBER(s11_state, pia28_w7_r), /* port A in */ |
| 324 | 337 | DEVCB_NULL, /* port B in */ |
| 325 | 338 | DEVCB_DRIVER_LINE_MEMBER(s11_state, pia28_ca1_r), /* line CA1 in */ |
| 326 | 339 | DEVCB_DRIVER_LINE_MEMBER(s11_state, pia28_cb1_r), /* line CB1 in */ |
| r19577 | r19578 | |
| 413 | 426 | |
| 414 | 427 | WRITE8_MEMBER( s11_state::pia34_pb_w ) |
| 415 | 428 | { |
| 429 | m_pia40->portb_w(data); |
| 430 | m_pia40->cb1_w(1); |
| 431 | m_pia40->cb1_w(0); |
| 416 | 432 | } |
| 417 | 433 | |
| 434 | WRITE_LINE_MEMBER( s11_state::pia34_cb2_w ) |
| 435 | { |
| 436 | |
| 437 | } |
| 438 | |
| 418 | 439 | static const pia6821_interface pia34_intf = |
| 419 | 440 | { |
| 420 | 441 | DEVCB_NULL, /* port A in */ |
| r19577 | r19578 | |
| 426 | 447 | DEVCB_DRIVER_MEMBER(s11_state, pia34_pa_w), /* port A out */ |
| 427 | 448 | DEVCB_DRIVER_MEMBER(s11_state, pia34_pb_w), /* port B out */ |
| 428 | 449 | DEVCB_NULL, /* line CA2 out */ |
| 429 | | DEVCB_NULL, /* line CB2 out */ |
| 450 | DEVCB_DRIVER_LINE_MEMBER(s11_state, pia34_cb2_w), /* line CB2 out */ |
| 430 | 451 | DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */ |
| 431 | 452 | DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */ |
| 432 | 453 | }; |
| r19577 | r19578 | |
| 493 | 514 | static const pia6821_interface pia40_intf = |
| 494 | 515 | { |
| 495 | 516 | DEVCB_NULL, /* port A in */ |
| 496 | | DEVCB_DRIVER_MEMBER(s11_state, dac_r), /* port B in */ |
| 517 | DEVCB_NULL,//_DRIVER_MEMBER(s11_state, dac_r), /* port B in */ |
| 497 | 518 | DEVCB_DRIVER_LINE_MEMBER(s11_state, pias_ca1_r), /* line CA1 in */ |
| 498 | 519 | DEVCB_NULL, /* line CB1 in */ |
| 499 | 520 | DEVCB_LINE_VCC, /* line CA2 in */ |
| r19577 | r19578 | |
| 530 | 551 | /* basic machine hardware */ |
| 531 | 552 | MCFG_CPU_ADD("maincpu", M6800, 4000000) |
| 532 | 553 | MCFG_CPU_PROGRAM_MAP(s11_main_map) |
| 533 | | MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s11_state, irq, attotime::from_hz(250)) |
| 554 | MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s11_state, irq, attotime::from_hz(500)) |
| 534 | 555 | MCFG_MACHINE_RESET_OVERRIDE(s11_state, s11) |
| 535 | 556 | |
| 536 | 557 | /* Video */ |