trunk/src/mess/machine/b2m.c
| r19544 | r19545 | |
| 203 | 203 | void b2m_state::b2m_fdc_drq(bool state) |
| 204 | 204 | { |
| 205 | 205 | /* Clears HALT state of CPU when data is ready to read */ |
| 206 | | if(state==1) { |
| 206 | if (state) |
| 207 | 207 | m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); |
| 208 | | } |
| 209 | 208 | } |
| 210 | 209 | |
| 211 | 210 | |
| r19544 | r19545 | |
| 222 | 221 | |
| 223 | 222 | floppy->mon_w(0); |
| 224 | 223 | m_fdc->set_floppy(floppy); |
| 225 | | m_fdc->setup_drq_cb(fd1793_t::line_cb(FUNC(b2m_state::b2m_fdc_drq), this)); |
| 226 | 224 | if (m_b2m_drive!=drive) { |
| 227 | 225 | m_b2m_drive = drive; |
| 228 | 226 | } |
| r19544 | r19545 | |
| 235 | 233 | When bit 5 is set CPU is in HALT state and stay there until |
| 236 | 234 | DRQ is triggered from floppy side |
| 237 | 235 | */ |
| 238 | | if (BIT(data,5) && m_first_start==0 && m_cnt <=0) { |
| 236 | |
| 237 | if ((data & 0xf0)==0x20) { |
| 239 | 238 | m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); |
| 240 | 239 | } |
| 241 | | m_first_start = 0; |
| 242 | | if (BIT(data,5)) m_cnt--; |
| 243 | | |
| 244 | 240 | } |
| 245 | 241 | |
| 246 | 242 | I8255A_INTERFACE( b2m_ppi8255_interface_2 ) |
| r19544 | r19545 | |
| 334 | 330 | m_fdc = machine().device<fd1793_t>("fd1793"); |
| 335 | 331 | m_speaker = machine().device(SPEAKER_TAG); |
| 336 | 332 | |
| 333 | m_fdc->setup_drq_cb(fd1793_t::line_cb(FUNC(b2m_state::b2m_fdc_drq), this)); |
| 334 | |
| 337 | 335 | /* register for state saving */ |
| 338 | 336 | save_item(NAME(m_b2m_8255_porta)); |
| 339 | 337 | save_item(NAME(m_b2m_video_scroll)); |
| r19544 | r19545 | |
| 377 | 375 | |
| 378 | 376 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(b2m_irq_callback); |
| 379 | 377 | b2m_set_bank(machine(), 7); |
| 380 | | m_first_start = 1; |
| 381 | | m_cnt = 2; |
| 382 | 378 | } |