trunk/src/mess/drivers/pv1000.c
| r19780 | r19781 | |
| 94 | 94 | emu_timer *m_irq_off_timer; |
| 95 | 95 | UINT8 m_pcg_bank; |
| 96 | 96 | UINT8 m_force_pattern; |
| 97 | UINT8 m_fd_buffer_flag; |
| 97 | 98 | |
| 98 | 99 | required_device<cpu_device> m_maincpu; |
| 99 | 100 | required_device<screen_device> m_screen; |
| r19780 | r19781 | |
| 171 | 172 | /* Bit 1 = 1 => Data is available in port FD */ |
| 172 | 173 | /* Bit 0 = 1 => Buffer at port FD is empty */ |
| 173 | 174 | data = 0; |
| 174 | | data = ( m_screen->vpos() >= 212 && m_screen->vpos() <= 220 ) ? 1 : 0; |
| 175 | data = m_fd_buffer_flag & 1; |
| 175 | 176 | data |= m_fd_data ? 2 : 0; |
| 177 | m_fd_buffer_flag &= ~1; |
| 176 | 178 | break; |
| 177 | 179 | case 0x05: |
| 178 | 180 | static const char *const joynames[] = { "IN0", "IN1", "IN2", "IN3" }; |
| r19780 | r19781 | |
| 355 | 357 | TIMER_CALLBACK_MEMBER(pv1000_state::d65010_irq_on_cb) |
| 356 | 358 | { |
| 357 | 359 | int vpos = m_screen->vpos(); |
| 358 | | int next_vpos = vpos + 12; |
| 360 | int next_vpos = vpos + 4; |
| 359 | 361 | |
| 362 | if(vpos == 195) |
| 363 | m_fd_buffer_flag |= 1; /* TODO: exact timing of this */ |
| 364 | |
| 360 | 365 | /* Set IRQ line and schedule release of IRQ line */ |
| 361 | 366 | m_maincpu->set_input_line(0, ASSERT_LINE ); |
| 362 | 367 | m_irq_off_timer->adjust( m_screen->time_until_pos(vpos, 380/2 ) ); |
| r19780 | r19781 | |
| 449 | 454 | |
| 450 | 455 | |
| 451 | 456 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 452 | | CONS( 1983, pv1000, 0, 0, pv1000, pv1000, driver_device, 0, "Casio", "PV-1000", GAME_NOT_WORKING ) |
| 457 | CONS( 1983, pv1000, 0, 0, pv1000, pv1000, driver_device, 0, "Casio", "PV-1000", 0 ) |