Previous 199869 Revisions Next

r19823 Wednesday 26th December, 2012 at 05:54:23 UTC by Barry Rodewald
s11,s11a,s11b: Improved background music board communications, and adjusted clock of the 68B09E.  Some music can now play in System 11B games.
[src/mame/drivers]s11.c s11a.c s11b.c

trunk/src/mame/drivers/s11.c
r19822r19823
4242   m_pia2c(*this, "pia2c"),
4343   m_pia30(*this, "pia30"),
4444   m_pia34(*this, "pia34"),
45   m_pia40(*this, "pia40")
45   m_pia40(*this, "pia40"),
46   m_ym(*this, "ym2151")
4647   { }
4748
4849   DECLARE_READ8_MEMBER(dac_r);
r19822r19823
6162   DECLARE_WRITE8_MEMBER(pia34_pb_w);
6263   DECLARE_WRITE_LINE_MEMBER(pia34_cb2_w);
6364   DECLARE_WRITE8_MEMBER(pia40_pa_w);
65   DECLARE_WRITE_LINE_MEMBER(pia40_ca2_w);
66   DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w);
6467   DECLARE_READ8_MEMBER(dips_r);
6568   DECLARE_READ8_MEMBER(switch_r);
6669   DECLARE_WRITE8_MEMBER(switch_w);
r19822r19823
100103   required_device<pia6821_device> m_pia30;
101104   required_device<pia6821_device> m_pia34;
102105   required_device<pia6821_device> m_pia40;
106   required_device<ym2151_device> m_ym;
103107private:
104108   UINT8 m_sound_data;
105109   UINT8 m_strobe;
r19822r19823
433437WRITE8_MEMBER( s11_state::pia34_pb_w )
434438{
435439   m_pia40->portb_w(data);
436   m_pia40->cb1_w(1);
437   m_pia40->cb1_w(0);
438440}
439441
440442WRITE_LINE_MEMBER( s11_state::pia34_cb2_w )
441443{
442
444   m_pia40->cb1_w(state);  // MCB2 through CPU interface
443445}
444446
445447static const pia6821_interface pia34_intf =
r19822r19823
514516
515517WRITE_LINE_MEMBER( s11_state::ym2151_irq_w)
516518{
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);
518523}
519524
525WRITE_LINE_MEMBER( s11_state::pia40_ca2_w)
526{
527   if(state == ASSERT_LINE)
528      m_ym->reset();
529}
530
531WRITE_LINE_MEMBER( s11_state::pia40_cb2_w)
532{
533   m_pia34->cb1_w(state);  // To Widget MCB1 through CPU Data interface
534}
535
520536static const pia6821_interface pia40_intf =
521537{
522538   DEVCB_NULL,      /* port A in */
r19822r19823
527543   DEVCB_NULL,      /* line CB2 in */
528544   DEVCB_DRIVER_MEMBER(s11_state, pia40_pa_w),      /* port A out */
529545   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 */
532548   DEVCB_CPU_INPUT_LINE("bgcpu", M6809_FIRQ_LINE),      /* IRQA */
533549   DEVCB_CPU_INPUT_LINE("bgcpu", INPUT_LINE_NMI)      /* IRQB */
534550};
r19822r19823
585601   MCFG_PIA6821_ADD("pias", pias_intf)
586602
587603   /* Add the background music card */
588   MCFG_CPU_ADD("bgcpu", M6809E, 4000000) // MC68B09E
604   MCFG_CPU_ADD("bgcpu", M6809E, 8000000) // MC68B09E
589605   MCFG_CPU_PROGRAM_MAP(s11_bg_map)
590606
591607   MCFG_SPEAKER_STANDARD_MONO("bg")
trunk/src/mame/drivers/s11b.c
r19822r19823
3636   m_pia2c(*this, "pia2c"),
3737   m_pia30(*this, "pia30"),
3838   m_pia34(*this, "pia34"),
39   m_pia40(*this, "pia40")
39   m_pia40(*this, "pia40"),
40   m_ym(*this, "ym2151")
4041   { }
4142
4243   DECLARE_READ8_MEMBER(dac_r);
r19822r19823
5455   DECLARE_WRITE8_MEMBER(pia2c_pb_w);
5556   DECLARE_WRITE8_MEMBER(pia34_pa_w);
5657   DECLARE_WRITE8_MEMBER(pia34_pb_w);
58   DECLARE_WRITE_LINE_MEMBER(pia34_cb2_w);
5759   DECLARE_WRITE8_MEMBER(pia40_pa_w);
60   DECLARE_WRITE_LINE_MEMBER(pia40_ca2_w);
61   DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w);
5862   DECLARE_READ8_MEMBER(dips_r);
5963   DECLARE_READ8_MEMBER(switch_r);
6064   DECLARE_WRITE8_MEMBER(switch_w);
r19822r19823
9599   required_device<pia6821_device> m_pia30;
96100   required_device<pia6821_device> m_pia34;
97101   required_device<pia6821_device> m_pia40;
102   required_device<ym2151_device> m_ym;
98103private:
99104   UINT8 m_sound_data;
100105   UINT8 m_strobe;
r19822r19823
446451
447452WRITE8_MEMBER( s11b_state::pia34_pb_w )
448453{
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
452455}
453456
457WRITE_LINE_MEMBER( s11b_state::pia34_cb2_w )
458{
459   m_pia40->cb1_w(state);  // MCB2 through CPU interface
460}
461
454462static const pia6821_interface pia34_intf =
455463{
456464   DEVCB_NULL,      /* port A in */
r19822r19823
462470   DEVCB_DRIVER_MEMBER(s11b_state, pia34_pa_w),      /* port A out */
463471   DEVCB_DRIVER_MEMBER(s11b_state, pia34_pb_w),      /* port B out */
464472   DEVCB_NULL,      /* line CA2 out */
465   DEVCB_NULL,      /* line CB2 out */
473   DEVCB_DRIVER_LINE_MEMBER(s11b_state, pia34_cb2_w),      /* line CB2 out */
466474   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),   /* IRQA */
467475   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
468476};
r19822r19823
475483
476484WRITE8_MEMBER( s11b_state::bgbank_w )
477485{
478   membank("bgbank")->set_entry(BIT(data, 0));
486   membank("bgbank")->set_entry(data & 0x03);
479487}
480488
481489READ_LINE_MEMBER( s11b_state::pias_ca1_r )
r19822r19823
528536
529537WRITE_LINE_MEMBER( s11b_state::ym2151_irq_w)
530538{
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);
532543}
533544
545WRITE_LINE_MEMBER( s11b_state::pia40_ca2_w)
546{
547   if(state == ASSERT_LINE)
548      m_ym->reset();
549}
550
551WRITE_LINE_MEMBER( s11b_state::pia40_cb2_w)
552{
553   m_pia34->cb1_w(state);  // To Widget MCB1 through CPU Data interface
554}
555
534556static const pia6821_interface pia40_intf =
535557{
536558   DEVCB_NULL,      /* port A in */
r19822r19823
541563   DEVCB_NULL,      /* line CB2 in */
542564   DEVCB_DRIVER_MEMBER(s11b_state, pia40_pa_w),      /* port A out */
543565   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 */
546568   DEVCB_CPU_INPUT_LINE("bgcpu", M6809_FIRQ_LINE),      /* IRQA */
547569   DEVCB_CPU_INPUT_LINE("bgcpu", INPUT_LINE_NMI)      /* IRQB */
548570};
r19822r19823
616638   MCFG_PIA6821_ADD("pias", pias_intf)
617639
618640   /* Add the background music card */
619   MCFG_CPU_ADD("bgcpu", M6809E, 4000000) // MC68B09E
641   MCFG_CPU_ADD("bgcpu", M6809E, 8000000) // MC68B09E
620642   MCFG_CPU_PROGRAM_MAP(s11b_bg_map)
643   MCFG_QUANTUM_TIME(attotime::from_hz(50))
621644
622645   MCFG_SPEAKER_STANDARD_MONO("bg")
623646   MCFG_YM2151_ADD("ym2151", 3580000)
trunk/src/mame/drivers/s11a.c
r19822r19823
4747   m_pia2c(*this, "pia2c"),
4848   m_pia30(*this, "pia30"),
4949   m_pia34(*this, "pia34"),
50   m_pia40(*this, "pia40")
50   m_pia40(*this, "pia40"),
51   m_ym(*this, "ym2151")
5152   { }
5253
5354   DECLARE_READ8_MEMBER(dac_r);
r19822r19823
6566   DECLARE_WRITE8_MEMBER(pia2c_pb_w);
6667   DECLARE_WRITE8_MEMBER(pia34_pa_w);
6768   DECLARE_WRITE8_MEMBER(pia34_pb_w);
69   DECLARE_WRITE_LINE_MEMBER(pia34_cb2_w);
6870   DECLARE_WRITE8_MEMBER(pia40_pa_w);
71   DECLARE_WRITE_LINE_MEMBER(pia40_ca2_w);
72   DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w);
6973   DECLARE_READ8_MEMBER(dips_r);
7074   DECLARE_READ8_MEMBER(switch_r);
7175   DECLARE_WRITE8_MEMBER(switch_w);
r19822r19823
105109   required_device<pia6821_device> m_pia30;
106110   required_device<pia6821_device> m_pia34;
107111   required_device<pia6821_device> m_pia40;
112   required_device<ym2151_device> m_ym;
108113private:
109114   UINT8 m_sound_data;
110115   UINT8 m_strobe;
r19822r19823
441446WRITE8_MEMBER( s11a_state::pia34_pb_w )
442447{
443448   m_pia40->portb_w(data);
444   m_pia40->cb1_w(1);
445   m_pia40->cb1_w(0);
446449}
447450
451WRITE_LINE_MEMBER( s11a_state::pia34_cb2_w )
452{
453   m_pia40->cb1_w(state);  // MCB2 through CPU interface
454}
455
448456static const pia6821_interface pia34_intf =
449457{
450458   DEVCB_NULL,      /* port A in */
r19822r19823
456464   DEVCB_DRIVER_MEMBER(s11a_state, pia34_pa_w),      /* port A out */
457465   DEVCB_DRIVER_MEMBER(s11a_state, pia34_pb_w),      /* port B out */
458466   DEVCB_NULL,      /* line CA2 out */
459   DEVCB_NULL,      /* line CB2 out */
467   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia34_cb2_w),      /* line CB2 out */
460468   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),   /* IRQA */
461469   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
462470};
r19822r19823
499507   m_dac->write_unsigned8(data);
500508}
501509
510WRITE_LINE_MEMBER( s11a_state::pia40_ca2_w)
511{
512   if(state == ASSERT_LINE)
513      m_ym->reset();
514}
515
516WRITE_LINE_MEMBER( s11a_state::pia40_cb2_w)
517{
518   m_pia34->cb1_w(state);  // To Widget MCB1 through CPU Data interface
519}
520
502521static const pia6821_interface pias_intf =
503522{
504523   DEVCB_DRIVER_MEMBER(s11a_state, dac_r),      /* port A in */
r19822r19823
509528   DEVCB_NULL,      /* line CB2 in */
510529   DEVCB_DRIVER_MEMBER(s11a_state, sound_w),      /* port A out */
511530   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 */
514533   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE),      /* IRQA */
515534   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE)      /* IRQB */
516535};
r19822r19823
522541
523542WRITE_LINE_MEMBER( s11a_state::ym2151_irq_w)
524543{
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);
526548}
527549
528550static const pia6821_interface pia40_intf =
r19822r19823
596618   MCFG_PIA6821_ADD("pias", pias_intf)
597619
598620   /* Add the background music card */
599   MCFG_CPU_ADD("bgcpu", M6809E, 4000000) // MC68B09E
621   MCFG_CPU_ADD("bgcpu", M6809E, 8000000) // MC68B09E
600622   MCFG_CPU_PROGRAM_MAP(s11a_bg_map)
601623
602624   MCFG_SPEAKER_STANDARD_MONO("bg")

Previous 199869 Revisions Next


© 1997-2024 The MAME Team