trunk/src/mame/drivers/ssfindo.c
| r20959 | r20960 | |
| 216 | 216 | { |
| 217 | 217 | public: |
| 218 | 218 | ssfindo_state(const machine_config &mconfig, device_type type, const char *tag) |
| 219 | | : driver_device(mconfig, type, tag) , |
| 220 | | m_vram(*this, "vram"){ } |
| 219 | : driver_device(mconfig, type, tag) |
| 220 | , m_vram(*this, "vram") |
| 221 | , m_maincpu(*this, "maincpu") |
| 222 | , m_region_user2(*this, "user2") |
| 223 | , m_io_ps7500(*this, "PS7500") |
| 224 | { } |
| 221 | 225 | |
| 222 | 226 | UINT32 m_PS7500_IO[MAXIO]; |
| 223 | 227 | UINT32 m_PS7500_FIFO[256]; |
| r20959 | r20960 | |
| 250 | 254 | INTERRUPT_GEN_MEMBER(ssfindo_interrupt); |
| 251 | 255 | TIMER_CALLBACK_MEMBER(PS7500_Timer0_callback); |
| 252 | 256 | TIMER_CALLBACK_MEMBER(PS7500_Timer1_callback); |
| 257 | |
| 258 | required_device<cpu_device> m_maincpu; |
| 259 | required_memory_region m_region_user2; |
| 260 | required_ioport m_io_ps7500; |
| 253 | 261 | }; |
| 254 | 262 | |
| 255 | 263 | |
| r20959 | r20960 | |
| 297 | 305 | m_PS7500_IO[IRQSTA]|=0x20; |
| 298 | 306 | if(m_PS7500_IO[IRQMSKA]&0x20) |
| 299 | 307 | { |
| 300 | | generic_pulse_irq_line(machine().device("maincpu")->execute(), ARM7_IRQ_LINE, 1); |
| 308 | generic_pulse_irq_line(m_maincpu, ARM7_IRQ_LINE, 1); |
| 301 | 309 | } |
| 302 | 310 | } |
| 303 | 311 | |
| r20959 | r20960 | |
| 317 | 325 | m_PS7500_IO[IRQSTA]|=0x40; |
| 318 | 326 | if(m_PS7500_IO[IRQMSKA]&0x40) |
| 319 | 327 | { |
| 320 | | generic_pulse_irq_line(machine().device("maincpu")->execute(), ARM7_IRQ_LINE, 1); |
| 328 | generic_pulse_irq_line(m_maincpu, ARM7_IRQ_LINE, 1); |
| 321 | 329 | } |
| 322 | 330 | } |
| 323 | 331 | |
| r20959 | r20960 | |
| 398 | 406 | |
| 399 | 407 | if( m_iocr_hack) |
| 400 | 408 | { |
| 401 | | return (ioport("PS7500")->read() & 0x80) | 0x34 | (machine().rand()&3); //eeprom read ? |
| 409 | return (m_io_ps7500->read() & 0x80) | 0x34 | (machine().rand()&3); //eeprom read ? |
| 402 | 410 | } |
| 403 | 411 | |
| 404 | | return (ioport("PS7500")->read() & 0x80) | 0x37; |
| 412 | return (m_io_ps7500->read() & 0x80) | 0x37; |
| 405 | 413 | |
| 406 | 414 | case VIDCR: |
| 407 | 415 | return (m_PS7500_IO[offset] | 0x50) & 0xfffffff0; |
| r20959 | r20960 | |
| 490 | 498 | |
| 491 | 499 | READ32_MEMBER(ssfindo_state::io_r) |
| 492 | 500 | { |
| 493 | | UINT16 *FLASH = (UINT16 *)machine().root_device().memregion("user2")->base(); //16 bit - WORD access |
| 501 | UINT16 *FLASH = (UINT16 *)m_region_user2->base(); //16 bit - WORD access |
| 494 | 502 | |
| 495 | 503 | int adr=m_flashAdr*0x200+(m_flashOffset); |
| 496 | 504 | |