Previous 199869 Revisions Next

r34842 Wednesday 4th February, 2015 at 20:42:22 UTC by Angelo Salese
Added bread-and-butter IRQ support. VIC3 blinks, CIA cries too.
[src/mess/drivers]c65.c

trunk/src/mess/drivers/c65.c
r243353r243354
7070   DECLARE_WRITE8_MEMBER(CIASelect_w);
7171   
7272   DECLARE_READ8_MEMBER(dummy_r);
73   DECLARE_WRITE_LINE_MEMBER(cia0_irq);
7374   
7475   // screen updates
7576   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
r243353r243354
9495   UINT8 m_VIC3_ControlB;
9596   void PalEntryFlush(UINT8 offset);
9697   void DMAgicExecute(address_space &space,UINT32 address);
98   void IRQCheck(UINT8 irq_cause);
9799   int inner_x_char(int xoffs);
98100   int inner_y_char(int yoffs);
99101};
r243353r243354
161163         return res;
162164      case 0x19:
163165         return m_VIC2_IRQPend;
166     
167      case 0x1a:
168         return m_VIC2_IRQMask;
164169         
165170      case 0x20:
166171         return m_VIC2_EXTColor;
r243353r243354
181186   switch(offset)
182187   {
183188      case 0x19:
184         m_VIC2_IRQPend = data & 0x8f;
189         m_VIC2_IRQPend &= ~data;
190         IRQCheck(0);
185191         break;
186192      case 0x1a:
187193         m_VIC2_IRQMask = data & 0xf;
194         IRQCheck(0);
188195         break;
189196      case 0x20:
190197         m_VIC2_EXTColor = data & 0xf;
r243353r243354
476483   GFXDECODE_ENTRY( "maincpu", 0xd000, charlayout,     0, 16 ) // another identical copy is at 0x9000
477484GFXDECODE_END
478485
486void c65_state::IRQCheck(UINT8 irq_cause)
487{
488   m_VIC2_IRQPend |= (irq_cause != 0) ? 0x80 : 0x00;
489   m_VIC2_IRQPend |= irq_cause;
490   
491   m_maincpu->set_input_line(M4510_IRQ_LINE,m_VIC2_IRQMask & m_VIC2_IRQPend ? ASSERT_LINE : CLEAR_LINE);
492}
493
479494INTERRUPT_GEN_MEMBER(c65_state::vic3_vblank_irq)
480495{
496   IRQCheck(1);
481497   //if(m_VIC2_IRQMask & 1)
482498   //   m_maincpu->set_input_line(M4510_IRQ_LINE,HOLD_LINE);
483499}
484500
501WRITE_LINE_MEMBER(c65_state::cia0_irq)
502{
503   printf("%d\n",state);
504//   m_cia0_irq = state;
505//   c65_irq(state || m_vicirq);
506}
507
485508static MACHINE_CONFIG_START( c65, c65_state )
486509
487510   /* basic machine hardware */
r243353r243354
491514
492515   MCFG_DEVICE_ADD("cia_0", MOS6526, MAIN_CLOCK)
493516   MCFG_MOS6526_TOD(60)
494//   MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c65_state, c65_cia0_interrupt))
517   MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c65_state, cia0_irq))
495518//   MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c65_state, c65_cia0_port_a_r))
496519//   MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c65_state, c65_cia0_port_b_r))
497520//   MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c65_state, c65_cia0_port_b_w))


Previous 199869 Revisions Next


© 1997-2024 The MAME Team