trunk/src/emu/video/upd7220.c
| r31769 | r31770 | |
| 506 | 506 | if (mod) |
| 507 | 507 | LOG (("uPD7220 RDAT used with mod = %02x?\n",mod)); |
| 508 | 508 | |
| 509 | | for (int i = 0; i < m_figs.m_dc; i++) |
| 509 | while (m_figs.m_dc && m_fifo_ptr < (type ? 15 : 14)) |
| 510 | 510 | { |
| 511 | 511 | switch(type) |
| 512 | 512 | { |
| r31769 | r31770 | |
| 522 | 522 | break; |
| 523 | 523 | } |
| 524 | 524 | |
| 525 | m_figs.m_dc--; |
| 525 | 526 | advance_ead(); |
| 526 | 527 | } |
| 528 | |
| 529 | if (m_figs.m_dc == 0) |
| 530 | reset_figs_param(); |
| 527 | 531 | } |
| 528 | 532 | |
| 529 | 533 | |
| r31769 | r31770 | |
| 1371 | 1375 | fifo_set_direction(FIFO_READ); |
| 1372 | 1376 | |
| 1373 | 1377 | read_vram((m_cr & 0x18) >> 3,m_cr & 3); |
| 1374 | | reset_figs_param(); |
| 1375 | 1378 | |
| 1376 | 1379 | m_sr |= UPD7220_SR_DATA_READY; |
| 1377 | 1380 | break; |
| r31769 | r31770 | |
| 1411 | 1414 | |
| 1412 | 1415 | |
| 1413 | 1416 | //------------------------------------------------- |
| 1417 | // continue command |
| 1418 | //------------------------------------------------- |
| 1419 | |
| 1420 | void upd7220_device::continue_command() |
| 1421 | { |
| 1422 | // continue RDAT command when data to read are larger than the FIFO (a5105 and dmv text scrolling) |
| 1423 | if (m_figs.m_dc && translate_command(m_cr) == COMMAND_RDAT) |
| 1424 | { |
| 1425 | read_vram((m_cr & 0x18) >> 3, m_cr & 3); |
| 1426 | m_sr |= UPD7220_SR_DATA_READY; |
| 1427 | } |
| 1428 | } |
| 1429 | |
| 1430 | |
| 1431 | //------------------------------------------------- |
| 1414 | 1432 | // read - |
| 1415 | 1433 | //------------------------------------------------- |
| 1416 | 1434 | |
| r31769 | r31770 | |
| 1424 | 1442 | int flag; |
| 1425 | 1443 | fifo_set_direction(FIFO_READ); |
| 1426 | 1444 | dequeue(&data, &flag); |
| 1445 | |
| 1446 | continue_command(); |
| 1427 | 1447 | } |
| 1428 | 1448 | else |
| 1429 | 1449 | { |