trunk/src/emu/bus/ql/sandy_superqboard.c
| r30672 | r30673 | |
| 70 | 70 | WRITE_LINE_MEMBER( sandy_superqboard_t::busy_w ) |
| 71 | 71 | { |
| 72 | 72 | m_busy = state; |
| 73 | check_interrupt(); |
| 73 | 74 | } |
| 74 | 75 | |
| 75 | 76 | |
| r30672 | r30673 | |
| 120 | 121 | m_ram(*this, "ram"), |
| 121 | 122 | m_busy(1), |
| 122 | 123 | m_int2(0), |
| 123 | | m_int3(0) |
| 124 | m_int3(0), |
| 125 | m_fd6(0), |
| 126 | m_fd7(0) |
| 124 | 127 | { |
| 125 | 128 | } |
| 126 | 129 | |
| r30672 | r30673 | |
| 141 | 144 | void sandy_superqboard_t::device_reset() |
| 142 | 145 | { |
| 143 | 146 | m_fdc->reset(); |
| 147 | m_fdc->set_floppy(NULL); |
| 148 | m_fdc->dden_w(0); |
| 149 | |
| 144 | 150 | m_latch->write(0); |
| 151 | m_centronics->write_strobe(1); |
| 145 | 152 | |
| 146 | 153 | m_int2 = 0; |
| 147 | 154 | m_int3 = 0; |
| 155 | m_fd6 = 0; |
| 156 | m_fd7 = 0; |
| 148 | 157 | } |
| 149 | 158 | |
| 150 | 159 | |
| r30672 | r30673 | |
| 224 | 233 | 3 M ON0 |
| 225 | 234 | 4 /DDEN |
| 226 | 235 | 5 STROBE inverted |
| 227 | | 6 GAL pin 11 |
| 228 | | 7 GAL pin 9 |
| 236 | 6 enable printer interrupt (GAL pin 11) |
| 237 | 7 enable mouse interrupt (GAL pin 9) |
| 229 | 238 | |
| 230 | 239 | */ |
| 231 | 240 | |
| r30672 | r30673 | |
| 251 | 260 | m_fdc->dden_w(BIT(data, 4)); |
| 252 | 261 | |
| 253 | 262 | m_centronics->write_strobe(!BIT(data, 5)); |
| 263 | |
| 264 | m_fd6 = BIT(data, 6); |
| 265 | m_fd7 = BIT(data, 7); |
| 266 | check_interrupt(); |
| 254 | 267 | } |
| 255 | 268 | break; |
| 256 | 269 | |
| r30672 | r30673 | |
| 261 | 274 | case 4: |
| 262 | 275 | m_int2 = 0; |
| 263 | 276 | m_int3 = 0; |
| 277 | check_interrupt(); |
| 264 | 278 | break; |
| 265 | 279 | |
| 266 | 280 | case 5: |
| r30672 | r30673 | |
| 270 | 284 | } |
| 271 | 285 | } |
| 272 | 286 | } |
| 287 | |
| 288 | void sandy_superqboard_t::check_interrupt() |
| 289 | { |
| 290 | int extint = (m_fd6 && m_busy) || (m_fd7 && (m_int2 || m_int3)); |
| 291 | |
| 292 | m_slot->extintl_w(extint ? ASSERT_LINE : CLEAR_LINE); |
| 293 | } |