trunk/src/mess/drivers/c65.c
| r243353 | r243354 | |
| 70 | 70 | DECLARE_WRITE8_MEMBER(CIASelect_w); |
| 71 | 71 | |
| 72 | 72 | DECLARE_READ8_MEMBER(dummy_r); |
| 73 | DECLARE_WRITE_LINE_MEMBER(cia0_irq); |
| 73 | 74 | |
| 74 | 75 | // screen updates |
| 75 | 76 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| r243353 | r243354 | |
| 94 | 95 | UINT8 m_VIC3_ControlB; |
| 95 | 96 | void PalEntryFlush(UINT8 offset); |
| 96 | 97 | void DMAgicExecute(address_space &space,UINT32 address); |
| 98 | void IRQCheck(UINT8 irq_cause); |
| 97 | 99 | int inner_x_char(int xoffs); |
| 98 | 100 | int inner_y_char(int yoffs); |
| 99 | 101 | }; |
| r243353 | r243354 | |
| 161 | 163 | return res; |
| 162 | 164 | case 0x19: |
| 163 | 165 | return m_VIC2_IRQPend; |
| 166 | |
| 167 | case 0x1a: |
| 168 | return m_VIC2_IRQMask; |
| 164 | 169 | |
| 165 | 170 | case 0x20: |
| 166 | 171 | return m_VIC2_EXTColor; |
| r243353 | r243354 | |
| 181 | 186 | switch(offset) |
| 182 | 187 | { |
| 183 | 188 | case 0x19: |
| 184 | | m_VIC2_IRQPend = data & 0x8f; |
| 189 | m_VIC2_IRQPend &= ~data; |
| 190 | IRQCheck(0); |
| 185 | 191 | break; |
| 186 | 192 | case 0x1a: |
| 187 | 193 | m_VIC2_IRQMask = data & 0xf; |
| 194 | IRQCheck(0); |
| 188 | 195 | break; |
| 189 | 196 | case 0x20: |
| 190 | 197 | m_VIC2_EXTColor = data & 0xf; |
| r243353 | r243354 | |
| 476 | 483 | GFXDECODE_ENTRY( "maincpu", 0xd000, charlayout, 0, 16 ) // another identical copy is at 0x9000 |
| 477 | 484 | GFXDECODE_END |
| 478 | 485 | |
| 486 | void 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 | |
| 479 | 494 | INTERRUPT_GEN_MEMBER(c65_state::vic3_vblank_irq) |
| 480 | 495 | { |
| 496 | IRQCheck(1); |
| 481 | 497 | //if(m_VIC2_IRQMask & 1) |
| 482 | 498 | // m_maincpu->set_input_line(M4510_IRQ_LINE,HOLD_LINE); |
| 483 | 499 | } |
| 484 | 500 | |
| 501 | WRITE_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 | |
| 485 | 508 | static MACHINE_CONFIG_START( c65, c65_state ) |
| 486 | 509 | |
| 487 | 510 | /* basic machine hardware */ |
| r243353 | r243354 | |
| 491 | 514 | |
| 492 | 515 | MCFG_DEVICE_ADD("cia_0", MOS6526, MAIN_CLOCK) |
| 493 | 516 | 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)) |
| 495 | 518 | // MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c65_state, c65_cia0_port_a_r)) |
| 496 | 519 | // MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c65_state, c65_cia0_port_b_r)) |
| 497 | 520 | // MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c65_state, c65_cia0_port_b_w)) |