trunk/src/mame/drivers/s11.c
| r19822 | r19823 | |
| 42 | 42 | m_pia2c(*this, "pia2c"), |
| 43 | 43 | m_pia30(*this, "pia30"), |
| 44 | 44 | m_pia34(*this, "pia34"), |
| 45 | | m_pia40(*this, "pia40") |
| 45 | m_pia40(*this, "pia40"), |
| 46 | m_ym(*this, "ym2151") |
| 46 | 47 | { } |
| 47 | 48 | |
| 48 | 49 | DECLARE_READ8_MEMBER(dac_r); |
| r19822 | r19823 | |
| 61 | 62 | DECLARE_WRITE8_MEMBER(pia34_pb_w); |
| 62 | 63 | DECLARE_WRITE_LINE_MEMBER(pia34_cb2_w); |
| 63 | 64 | DECLARE_WRITE8_MEMBER(pia40_pa_w); |
| 65 | DECLARE_WRITE_LINE_MEMBER(pia40_ca2_w); |
| 66 | DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w); |
| 64 | 67 | DECLARE_READ8_MEMBER(dips_r); |
| 65 | 68 | DECLARE_READ8_MEMBER(switch_r); |
| 66 | 69 | DECLARE_WRITE8_MEMBER(switch_w); |
| r19822 | r19823 | |
| 100 | 103 | required_device<pia6821_device> m_pia30; |
| 101 | 104 | required_device<pia6821_device> m_pia34; |
| 102 | 105 | required_device<pia6821_device> m_pia40; |
| 106 | required_device<ym2151_device> m_ym; |
| 103 | 107 | private: |
| 104 | 108 | UINT8 m_sound_data; |
| 105 | 109 | UINT8 m_strobe; |
| r19822 | r19823 | |
| 433 | 437 | WRITE8_MEMBER( s11_state::pia34_pb_w ) |
| 434 | 438 | { |
| 435 | 439 | m_pia40->portb_w(data); |
| 436 | | m_pia40->cb1_w(1); |
| 437 | | m_pia40->cb1_w(0); |
| 438 | 440 | } |
| 439 | 441 | |
| 440 | 442 | WRITE_LINE_MEMBER( s11_state::pia34_cb2_w ) |
| 441 | 443 | { |
| 442 | | |
| 444 | m_pia40->cb1_w(state); // MCB2 through CPU interface |
| 443 | 445 | } |
| 444 | 446 | |
| 445 | 447 | static const pia6821_interface pia34_intf = |
| r19822 | r19823 | |
| 514 | 516 | |
| 515 | 517 | WRITE_LINE_MEMBER( s11_state::ym2151_irq_w) |
| 516 | 518 | { |
| 517 | | m_pia40->ca1_w(!state); |
| 519 | if(state == CLEAR_LINE) |
| 520 | m_pia40->ca1_w(1); |
| 521 | else |
| 522 | m_pia40->ca1_w(0); |
| 518 | 523 | } |
| 519 | 524 | |
| 525 | WRITE_LINE_MEMBER( s11_state::pia40_ca2_w) |
| 526 | { |
| 527 | if(state == ASSERT_LINE) |
| 528 | m_ym->reset(); |
| 529 | } |
| 530 | |
| 531 | WRITE_LINE_MEMBER( s11_state::pia40_cb2_w) |
| 532 | { |
| 533 | m_pia34->cb1_w(state); // To Widget MCB1 through CPU Data interface |
| 534 | } |
| 535 | |
| 520 | 536 | static const pia6821_interface pia40_intf = |
| 521 | 537 | { |
| 522 | 538 | DEVCB_NULL, /* port A in */ |
| r19822 | r19823 | |
| 527 | 543 | DEVCB_NULL, /* line CB2 in */ |
| 528 | 544 | DEVCB_DRIVER_MEMBER(s11_state, pia40_pa_w), /* port A out */ |
| 529 | 545 | DEVCB_DRIVER_MEMBER(s11_state, dac_w), /* port B out */ |
| 530 | | DEVCB_DRIVER_LINE_MEMBER(s11_state, pias_ca2_w), /* line CA2 out */ |
| 531 | | DEVCB_DRIVER_LINE_MEMBER(s11_state, pias_cb2_w), /* line CB2 out */ |
| 546 | DEVCB_DRIVER_LINE_MEMBER(s11_state, pia40_ca2_w), /* line CA2 out */ |
| 547 | DEVCB_DRIVER_LINE_MEMBER(s11_state, pia40_cb2_w), /* line CB2 out */ |
| 532 | 548 | DEVCB_CPU_INPUT_LINE("bgcpu", M6809_FIRQ_LINE), /* IRQA */ |
| 533 | 549 | DEVCB_CPU_INPUT_LINE("bgcpu", INPUT_LINE_NMI) /* IRQB */ |
| 534 | 550 | }; |
| r19822 | r19823 | |
| 585 | 601 | MCFG_PIA6821_ADD("pias", pias_intf) |
| 586 | 602 | |
| 587 | 603 | /* Add the background music card */ |
| 588 | | MCFG_CPU_ADD("bgcpu", M6809E, 4000000) // MC68B09E |
| 604 | MCFG_CPU_ADD("bgcpu", M6809E, 8000000) // MC68B09E |
| 589 | 605 | MCFG_CPU_PROGRAM_MAP(s11_bg_map) |
| 590 | 606 | |
| 591 | 607 | MCFG_SPEAKER_STANDARD_MONO("bg") |
trunk/src/mame/drivers/s11b.c
| r19822 | r19823 | |
| 36 | 36 | m_pia2c(*this, "pia2c"), |
| 37 | 37 | m_pia30(*this, "pia30"), |
| 38 | 38 | m_pia34(*this, "pia34"), |
| 39 | | m_pia40(*this, "pia40") |
| 39 | m_pia40(*this, "pia40"), |
| 40 | m_ym(*this, "ym2151") |
| 40 | 41 | { } |
| 41 | 42 | |
| 42 | 43 | DECLARE_READ8_MEMBER(dac_r); |
| r19822 | r19823 | |
| 54 | 55 | DECLARE_WRITE8_MEMBER(pia2c_pb_w); |
| 55 | 56 | DECLARE_WRITE8_MEMBER(pia34_pa_w); |
| 56 | 57 | DECLARE_WRITE8_MEMBER(pia34_pb_w); |
| 58 | DECLARE_WRITE_LINE_MEMBER(pia34_cb2_w); |
| 57 | 59 | DECLARE_WRITE8_MEMBER(pia40_pa_w); |
| 60 | DECLARE_WRITE_LINE_MEMBER(pia40_ca2_w); |
| 61 | DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w); |
| 58 | 62 | DECLARE_READ8_MEMBER(dips_r); |
| 59 | 63 | DECLARE_READ8_MEMBER(switch_r); |
| 60 | 64 | DECLARE_WRITE8_MEMBER(switch_w); |
| r19822 | r19823 | |
| 95 | 99 | required_device<pia6821_device> m_pia30; |
| 96 | 100 | required_device<pia6821_device> m_pia34; |
| 97 | 101 | required_device<pia6821_device> m_pia40; |
| 102 | required_device<ym2151_device> m_ym; |
| 98 | 103 | private: |
| 99 | 104 | UINT8 m_sound_data; |
| 100 | 105 | UINT8 m_strobe; |
| r19822 | r19823 | |
| 446 | 451 | |
| 447 | 452 | WRITE8_MEMBER( s11b_state::pia34_pb_w ) |
| 448 | 453 | { |
| 449 | | m_pia40->portb_w(data); |
| 450 | | m_pia40->cb1_w(1); |
| 451 | | m_pia40->cb1_w(0); |
| 454 | m_pia40->portb_w(data); // MD1-8 through CPU interface |
| 452 | 455 | } |
| 453 | 456 | |
| 457 | WRITE_LINE_MEMBER( s11b_state::pia34_cb2_w ) |
| 458 | { |
| 459 | m_pia40->cb1_w(state); // MCB2 through CPU interface |
| 460 | } |
| 461 | |
| 454 | 462 | static const pia6821_interface pia34_intf = |
| 455 | 463 | { |
| 456 | 464 | DEVCB_NULL, /* port A in */ |
| r19822 | r19823 | |
| 462 | 470 | DEVCB_DRIVER_MEMBER(s11b_state, pia34_pa_w), /* port A out */ |
| 463 | 471 | DEVCB_DRIVER_MEMBER(s11b_state, pia34_pb_w), /* port B out */ |
| 464 | 472 | DEVCB_NULL, /* line CA2 out */ |
| 465 | | DEVCB_NULL, /* line CB2 out */ |
| 473 | DEVCB_DRIVER_LINE_MEMBER(s11b_state, pia34_cb2_w), /* line CB2 out */ |
| 466 | 474 | DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */ |
| 467 | 475 | DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */ |
| 468 | 476 | }; |
| r19822 | r19823 | |
| 475 | 483 | |
| 476 | 484 | WRITE8_MEMBER( s11b_state::bgbank_w ) |
| 477 | 485 | { |
| 478 | | membank("bgbank")->set_entry(BIT(data, 0)); |
| 486 | membank("bgbank")->set_entry(data & 0x03); |
| 479 | 487 | } |
| 480 | 488 | |
| 481 | 489 | READ_LINE_MEMBER( s11b_state::pias_ca1_r ) |
| r19822 | r19823 | |
| 528 | 536 | |
| 529 | 537 | WRITE_LINE_MEMBER( s11b_state::ym2151_irq_w) |
| 530 | 538 | { |
| 531 | | m_pia40->ca1_w(!state); |
| 539 | if(state == CLEAR_LINE) |
| 540 | m_pia40->ca1_w(1); |
| 541 | else |
| 542 | m_pia40->ca1_w(0); |
| 532 | 543 | } |
| 533 | 544 | |
| 545 | WRITE_LINE_MEMBER( s11b_state::pia40_ca2_w) |
| 546 | { |
| 547 | if(state == ASSERT_LINE) |
| 548 | m_ym->reset(); |
| 549 | } |
| 550 | |
| 551 | WRITE_LINE_MEMBER( s11b_state::pia40_cb2_w) |
| 552 | { |
| 553 | m_pia34->cb1_w(state); // To Widget MCB1 through CPU Data interface |
| 554 | } |
| 555 | |
| 534 | 556 | static const pia6821_interface pia40_intf = |
| 535 | 557 | { |
| 536 | 558 | DEVCB_NULL, /* port A in */ |
| r19822 | r19823 | |
| 541 | 563 | DEVCB_NULL, /* line CB2 in */ |
| 542 | 564 | DEVCB_DRIVER_MEMBER(s11b_state, pia40_pa_w), /* port A out */ |
| 543 | 565 | DEVCB_DRIVER_MEMBER(s11b_state, dac_w), /* port B out */ |
| 544 | | DEVCB_DRIVER_LINE_MEMBER(s11b_state, pias_ca2_w), /* line CA2 out */ |
| 545 | | DEVCB_DRIVER_LINE_MEMBER(s11b_state, pias_cb2_w), /* line CB2 out */ |
| 566 | DEVCB_DRIVER_LINE_MEMBER(s11b_state, pia40_ca2_w), /* line CA2 out */ |
| 567 | DEVCB_DRIVER_LINE_MEMBER(s11b_state, pia40_cb2_w), /* line CB2 out */ |
| 546 | 568 | DEVCB_CPU_INPUT_LINE("bgcpu", M6809_FIRQ_LINE), /* IRQA */ |
| 547 | 569 | DEVCB_CPU_INPUT_LINE("bgcpu", INPUT_LINE_NMI) /* IRQB */ |
| 548 | 570 | }; |
| r19822 | r19823 | |
| 616 | 638 | MCFG_PIA6821_ADD("pias", pias_intf) |
| 617 | 639 | |
| 618 | 640 | /* Add the background music card */ |
| 619 | | MCFG_CPU_ADD("bgcpu", M6809E, 4000000) // MC68B09E |
| 641 | MCFG_CPU_ADD("bgcpu", M6809E, 8000000) // MC68B09E |
| 620 | 642 | MCFG_CPU_PROGRAM_MAP(s11b_bg_map) |
| 643 | MCFG_QUANTUM_TIME(attotime::from_hz(50)) |
| 621 | 644 | |
| 622 | 645 | MCFG_SPEAKER_STANDARD_MONO("bg") |
| 623 | 646 | MCFG_YM2151_ADD("ym2151", 3580000) |
trunk/src/mame/drivers/s11a.c
| r19822 | r19823 | |
| 47 | 47 | m_pia2c(*this, "pia2c"), |
| 48 | 48 | m_pia30(*this, "pia30"), |
| 49 | 49 | m_pia34(*this, "pia34"), |
| 50 | | m_pia40(*this, "pia40") |
| 50 | m_pia40(*this, "pia40"), |
| 51 | m_ym(*this, "ym2151") |
| 51 | 52 | { } |
| 52 | 53 | |
| 53 | 54 | DECLARE_READ8_MEMBER(dac_r); |
| r19822 | r19823 | |
| 65 | 66 | DECLARE_WRITE8_MEMBER(pia2c_pb_w); |
| 66 | 67 | DECLARE_WRITE8_MEMBER(pia34_pa_w); |
| 67 | 68 | DECLARE_WRITE8_MEMBER(pia34_pb_w); |
| 69 | DECLARE_WRITE_LINE_MEMBER(pia34_cb2_w); |
| 68 | 70 | DECLARE_WRITE8_MEMBER(pia40_pa_w); |
| 71 | DECLARE_WRITE_LINE_MEMBER(pia40_ca2_w); |
| 72 | DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w); |
| 69 | 73 | DECLARE_READ8_MEMBER(dips_r); |
| 70 | 74 | DECLARE_READ8_MEMBER(switch_r); |
| 71 | 75 | DECLARE_WRITE8_MEMBER(switch_w); |
| r19822 | r19823 | |
| 105 | 109 | required_device<pia6821_device> m_pia30; |
| 106 | 110 | required_device<pia6821_device> m_pia34; |
| 107 | 111 | required_device<pia6821_device> m_pia40; |
| 112 | required_device<ym2151_device> m_ym; |
| 108 | 113 | private: |
| 109 | 114 | UINT8 m_sound_data; |
| 110 | 115 | UINT8 m_strobe; |
| r19822 | r19823 | |
| 441 | 446 | WRITE8_MEMBER( s11a_state::pia34_pb_w ) |
| 442 | 447 | { |
| 443 | 448 | m_pia40->portb_w(data); |
| 444 | | m_pia40->cb1_w(1); |
| 445 | | m_pia40->cb1_w(0); |
| 446 | 449 | } |
| 447 | 450 | |
| 451 | WRITE_LINE_MEMBER( s11a_state::pia34_cb2_w ) |
| 452 | { |
| 453 | m_pia40->cb1_w(state); // MCB2 through CPU interface |
| 454 | } |
| 455 | |
| 448 | 456 | static const pia6821_interface pia34_intf = |
| 449 | 457 | { |
| 450 | 458 | DEVCB_NULL, /* port A in */ |
| r19822 | r19823 | |
| 456 | 464 | DEVCB_DRIVER_MEMBER(s11a_state, pia34_pa_w), /* port A out */ |
| 457 | 465 | DEVCB_DRIVER_MEMBER(s11a_state, pia34_pb_w), /* port B out */ |
| 458 | 466 | DEVCB_NULL, /* line CA2 out */ |
| 459 | | DEVCB_NULL, /* line CB2 out */ |
| 467 | DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia34_cb2_w), /* line CB2 out */ |
| 460 | 468 | DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */ |
| 461 | 469 | DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */ |
| 462 | 470 | }; |
| r19822 | r19823 | |
| 499 | 507 | m_dac->write_unsigned8(data); |
| 500 | 508 | } |
| 501 | 509 | |
| 510 | WRITE_LINE_MEMBER( s11a_state::pia40_ca2_w) |
| 511 | { |
| 512 | if(state == ASSERT_LINE) |
| 513 | m_ym->reset(); |
| 514 | } |
| 515 | |
| 516 | WRITE_LINE_MEMBER( s11a_state::pia40_cb2_w) |
| 517 | { |
| 518 | m_pia34->cb1_w(state); // To Widget MCB1 through CPU Data interface |
| 519 | } |
| 520 | |
| 502 | 521 | static const pia6821_interface pias_intf = |
| 503 | 522 | { |
| 504 | 523 | DEVCB_DRIVER_MEMBER(s11a_state, dac_r), /* port A in */ |
| r19822 | r19823 | |
| 509 | 528 | DEVCB_NULL, /* line CB2 in */ |
| 510 | 529 | DEVCB_DRIVER_MEMBER(s11a_state, sound_w), /* port A out */ |
| 511 | 530 | DEVCB_DRIVER_MEMBER(s11a_state, dac_w), /* port B out */ |
| 512 | | DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_ca2_w), /* line CA2 out */ |
| 513 | | DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_cb2_w), /* line CB2 out */ |
| 531 | DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia40_ca2_w), /* line CA2 out */ |
| 532 | DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia40_cb2_w), /* line CB2 out */ |
| 514 | 533 | DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE), /* IRQA */ |
| 515 | 534 | DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE) /* IRQB */ |
| 516 | 535 | }; |
| r19822 | r19823 | |
| 522 | 541 | |
| 523 | 542 | WRITE_LINE_MEMBER( s11a_state::ym2151_irq_w) |
| 524 | 543 | { |
| 525 | | m_pia40->ca1_w(!state); |
| 544 | if(state == CLEAR_LINE) |
| 545 | m_pia40->ca1_w(1); |
| 546 | else |
| 547 | m_pia40->ca1_w(0); |
| 526 | 548 | } |
| 527 | 549 | |
| 528 | 550 | static const pia6821_interface pia40_intf = |
| r19822 | r19823 | |
| 596 | 618 | MCFG_PIA6821_ADD("pias", pias_intf) |
| 597 | 619 | |
| 598 | 620 | /* Add the background music card */ |
| 599 | | MCFG_CPU_ADD("bgcpu", M6809E, 4000000) // MC68B09E |
| 621 | MCFG_CPU_ADD("bgcpu", M6809E, 8000000) // MC68B09E |
| 600 | 622 | MCFG_CPU_PROGRAM_MAP(s11a_bg_map) |
| 601 | 623 | |
| 602 | 624 | MCFG_SPEAKER_STANDARD_MONO("bg") |