diff options
author | 2009-09-16 22:45:38 +0000 | |
---|---|---|
committer | 2009-09-16 22:45:38 +0000 | |
commit | c8402e45ef8374350f41a4ca3514ad9267ff9bde (patch) | |
tree | e8dbc2194fc6e36f9bf3cff8c68e1a33a13386ca /src/emu/machine/z80dma.c | |
parent | 024832f2990d4babacf6e3e54cce0fea6bdefcde (diff) |
z80dma: Fixed Initiate read command
Diffstat (limited to 'src/emu/machine/z80dma.c')
-rw-r--r-- | src/emu/machine/z80dma.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/emu/machine/z80dma.c b/src/emu/machine/z80dma.c index 4a677dcb2d5..a8d33f7c2d8 100644 --- a/src/emu/machine/z80dma.c +++ b/src/emu/machine/z80dma.c @@ -362,12 +362,12 @@ WRITE8_DEVICE_HANDLER( z80dma_w ) case 0xA7: /* Initiate read sequence */ cntx->read_cur_follow = cntx->read_num_follow = 0; if(READ_MASK(cntx) & 0x01) { cntx->read_regs_follow[cntx->read_num_follow++] = cntx->status; } - if(READ_MASK(cntx) & 0x02) { cntx->read_regs_follow[cntx->read_num_follow++] = GET_REGNUM(cntx, BLOCKLEN_L(cntx)); } //byte counter (low) - if(READ_MASK(cntx) & 0x04) { cntx->read_regs_follow[cntx->read_num_follow++] = GET_REGNUM(cntx, BLOCKLEN_H(cntx)); } //byte counter (high) - if(READ_MASK(cntx) & 0x08) { cntx->read_regs_follow[cntx->read_num_follow++] = GET_REGNUM(cntx, PORTA_ADDRESS_L(cntx)); } //port A address (low) - if(READ_MASK(cntx) & 0x10) { cntx->read_regs_follow[cntx->read_num_follow++] = GET_REGNUM(cntx, PORTA_ADDRESS_H(cntx)); } //port A address (high) - if(READ_MASK(cntx) & 0x20) { cntx->read_regs_follow[cntx->read_num_follow++] = GET_REGNUM(cntx, PORTB_ADDRESS_L(cntx)); } //port B address (low) - if(READ_MASK(cntx) & 0x40) { cntx->read_regs_follow[cntx->read_num_follow++] = GET_REGNUM(cntx, PORTA_ADDRESS_H(cntx)); } //port B address (high) + if(READ_MASK(cntx) & 0x02) { cntx->read_regs_follow[cntx->read_num_follow++] = BLOCKLEN_L(cntx); } //byte counter (low) + if(READ_MASK(cntx) & 0x04) { cntx->read_regs_follow[cntx->read_num_follow++] = BLOCKLEN_H(cntx); } //byte counter (high) + if(READ_MASK(cntx) & 0x08) { cntx->read_regs_follow[cntx->read_num_follow++] = PORTA_ADDRESS_L(cntx); } //port A address (low) + if(READ_MASK(cntx) & 0x10) { cntx->read_regs_follow[cntx->read_num_follow++] = PORTA_ADDRESS_H(cntx); } //port A address (high) + if(READ_MASK(cntx) & 0x20) { cntx->read_regs_follow[cntx->read_num_follow++] = PORTB_ADDRESS_L(cntx); } //port B address (low) + if(READ_MASK(cntx) & 0x40) { cntx->read_regs_follow[cntx->read_num_follow++] = PORTA_ADDRESS_H(cntx); } //port B address (high) break; case 0xC3: /* Reset */ LOG(("Reset\n")); @@ -415,6 +415,9 @@ WRITE8_DEVICE_HANDLER( z80dma_w ) /* FIXME: docs says these two is 1, but behaviour makes me think it's a 0, investigate */ cntx->status &= ~0x30; break; + case 0xFB: + LOG(("Z80DMA undocumented command triggered!\n")); + break; default: fatalerror("Unknown WR6 command %02x", data); } |