trunk/src/mess/includes/c64.h
| r18382 | r18383 | |
| 88 | 88 | DECLARE_READ8_MEMBER( read ); |
| 89 | 89 | DECLARE_WRITE8_MEMBER( write ); |
| 90 | 90 | |
| 91 | INTERRUPT_GEN_MEMBER( frame_interrupt ); |
| 91 | 92 | DECLARE_READ8_MEMBER( vic_videoram_r ); |
| 92 | 93 | DECLARE_WRITE_LINE_MEMBER( vic_irq_w ); |
| 93 | | DECLARE_READ8_MEMBER( vic_lightpen_x_cb ); |
| 94 | | DECLARE_READ8_MEMBER( vic_lightpen_y_cb ); |
| 95 | | DECLARE_READ8_MEMBER( vic_lightpen_button_cb ); |
| 96 | | DECLARE_READ8_MEMBER( vic_rdy_cb ); |
| 97 | 94 | |
| 98 | 95 | DECLARE_READ8_MEMBER( sid_potx_r ); |
| 99 | 96 | DECLARE_READ8_MEMBER( sid_poty_r ); |
| r18382 | r18383 | |
| 141 | 138 | int m_exp_nmi; |
| 142 | 139 | int m_cass_rd; |
| 143 | 140 | int m_iec_srq; |
| 144 | | DECLARE_DRIVER_INIT(c64pal); |
| 145 | | INTERRUPT_GEN_MEMBER(c64_frame_interrupt); |
| 146 | 141 | }; |
| 147 | 142 | |
| 148 | 143 | |
| r18382 | r18383 | |
| 183 | 178 | }; |
| 184 | 179 | |
| 185 | 180 | |
| 186 | | int c64_paddle_read (device_t *device, address_space &space, int which); |
| 187 | 181 | |
| 188 | | |
| 189 | 182 | #endif |
trunk/src/mess/drivers/c64.c
| r18382 | r18383 | |
| 49 | 49 | { |
| 50 | 50 | int restore = BIT(ioport("SPECIAL")->read(), 7); |
| 51 | 51 | |
| 52 | | m_maincpu->set_input_line(INPUT_LINE_IRQ0, m_cia1_irq || m_vic_irq || m_exp_irq); |
| 52 | m_maincpu->set_input_line(M6510_IRQ_LINE, m_cia1_irq || m_vic_irq || m_exp_irq); |
| 53 | 53 | m_maincpu->set_input_line(INPUT_LINE_NMI, m_cia2_irq || restore || m_exp_nmi); |
| 54 | 54 | |
| 55 | 55 | m_cia1->flag_w(m_cass_rd && m_iec_srq); |
| r18382 | r18383 | |
| 58 | 58 | |
| 59 | 59 | |
| 60 | 60 | //************************************************************************** |
| 61 | | // MEMORY MANAGEMENT UNIT |
| 61 | // ADDRESS DECODING |
| 62 | 62 | //************************************************************************** |
| 63 | 63 | |
| 64 | 64 | //------------------------------------------------- |
| r18382 | r18383 | |
| 368 | 368 | // vic2_interface vic_intf |
| 369 | 369 | //------------------------------------------------- |
| 370 | 370 | |
| 371 | | INTERRUPT_GEN_MEMBER(c64_state::c64_frame_interrupt) |
| 371 | INTERRUPT_GEN_MEMBER( c64_state::frame_interrupt ) |
| 372 | 372 | { |
| 373 | | |
| 374 | 373 | check_interrupts(); |
| 375 | 374 | cbm_common_interrupt(&device); |
| 376 | 375 | } |
| r18382 | r18383 | |
| 382 | 381 | check_interrupts(); |
| 383 | 382 | } |
| 384 | 383 | |
| 385 | | READ8_MEMBER( c64_state::vic_lightpen_x_cb ) |
| 386 | | { |
| 387 | | return ioport("LIGHTX")->read() & ~0x01; |
| 388 | | } |
| 389 | | |
| 390 | | READ8_MEMBER( c64_state::vic_lightpen_y_cb ) |
| 391 | | { |
| 392 | | return ioport("LIGHTY")->read() & ~0x01; |
| 393 | | } |
| 394 | | |
| 395 | | READ8_MEMBER( c64_state::vic_lightpen_button_cb ) |
| 396 | | { |
| 397 | | return ioport("OTHER")->read() & 0x04; |
| 398 | | } |
| 399 | | |
| 400 | | READ8_MEMBER( c64_state::vic_rdy_cb ) |
| 401 | | { |
| 402 | | return ioport("CYCLES")->read() & 0x07; |
| 403 | | } |
| 404 | | |
| 405 | 384 | static MOS6567_INTERFACE( vic_intf ) |
| 406 | 385 | { |
| 407 | 386 | SCREEN_TAG, |
| 408 | 387 | M6510_TAG, |
| 409 | 388 | DEVCB_DRIVER_LINE_MEMBER(c64_state, vic_irq_w), |
| 410 | 389 | DEVCB_NULL, // RDY |
| 411 | | DEVCB_DRIVER_MEMBER(c64_state, vic_lightpen_x_cb), |
| 412 | | DEVCB_DRIVER_MEMBER(c64_state, vic_lightpen_y_cb), |
| 413 | | DEVCB_DRIVER_MEMBER(c64_state, vic_lightpen_button_cb), |
| 414 | | DEVCB_DRIVER_MEMBER(c64_state, vic_rdy_cb) |
| 390 | DEVCB_NULL, |
| 391 | DEVCB_NULL, |
| 392 | DEVCB_NULL, |
| 393 | DEVCB_NULL |
| 415 | 394 | }; |
| 416 | 395 | |
| 417 | 396 | |
| r18382 | r18383 | |
| 457 | 436 | |
| 458 | 437 | |
| 459 | 438 | //------------------------------------------------- |
| 460 | | // legacy_mos6526_interface cia1_intf |
| 439 | // MOS6526_INTERFACE( cia1_intf ) |
| 461 | 440 | //------------------------------------------------- |
| 462 | 441 | |
| 463 | 442 | WRITE_LINE_MEMBER( c64_state::cia1_irq_w ) |
| r18382 | r18383 | |
| 545 | 524 | |
| 546 | 525 | |
| 547 | 526 | //------------------------------------------------- |
| 548 | | // legacy_mos6526_interface cia2_intf |
| 527 | // MOS6526_INTERFACE( cia2_intf ) |
| 549 | 528 | //------------------------------------------------- |
| 550 | 529 | |
| 551 | 530 | WRITE_LINE_MEMBER( c64_state::cia2_irq_w ) |
| r18382 | r18383 | |
| 965 | 944 | { |
| 966 | 945 | m_maincpu->reset(); |
| 967 | 946 | |
| 947 | m_cia1->reset(); |
| 948 | m_cia2->reset(); |
| 968 | 949 | m_iec->reset(); |
| 969 | 950 | m_exp->reset(); |
| 970 | 951 | m_user->reset(); |
| r18382 | r18383 | |
| 985 | 966 | MCFG_CPU_ADD(M6510_TAG, M6510, VIC6567_CLOCK) |
| 986 | 967 | MCFG_CPU_PROGRAM_MAP(c64_mem) |
| 987 | 968 | MCFG_CPU_CONFIG(cpu_intf) |
| 988 | | MCFG_CPU_VBLANK_INT_DRIVER(SCREEN_TAG, c64_state, c64_frame_interrupt) |
| 969 | MCFG_CPU_VBLANK_INT_DRIVER(SCREEN_TAG, c64_state, frame_interrupt) |
| 989 | 970 | MCFG_QUANTUM_PERFECT_CPU(M6510_TAG) |
| 990 | 971 | |
| 991 | 972 | // video hardware |
| r18382 | r18383 | |
| 1084 | 1065 | MCFG_CPU_ADD(M6510_TAG, M6510, VIC6569_CLOCK) |
| 1085 | 1066 | MCFG_CPU_PROGRAM_MAP(c64_mem) |
| 1086 | 1067 | MCFG_CPU_CONFIG(cpu_intf) |
| 1087 | | MCFG_CPU_VBLANK_INT_DRIVER(SCREEN_TAG, c64_state, c64_frame_interrupt) |
| 1068 | MCFG_CPU_VBLANK_INT_DRIVER(SCREEN_TAG, c64_state, frame_interrupt) |
| 1088 | 1069 | MCFG_QUANTUM_PERFECT_CPU(M6510_TAG) |
| 1089 | 1070 | |
| 1090 | 1071 | // video hardware |
| r18382 | r18383 | |
| 1161 | 1142 | MCFG_CPU_ADD(M6510_TAG, M6510, VIC6569_CLOCK) |
| 1162 | 1143 | MCFG_CPU_PROGRAM_MAP(c64_mem) |
| 1163 | 1144 | MCFG_CPU_CONFIG(c64gs_cpu_intf) |
| 1164 | | MCFG_CPU_VBLANK_INT_DRIVER(SCREEN_TAG, c64_state, c64_frame_interrupt) |
| 1145 | MCFG_CPU_VBLANK_INT_DRIVER(SCREEN_TAG, c64_state, frame_interrupt) |
| 1165 | 1146 | MCFG_QUANTUM_PERFECT_CPU(M6510_TAG) |
| 1166 | 1147 | |
| 1167 | 1148 | // video hardware |