summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/z80dma.c
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2009-09-16 22:45:38 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2009-09-16 22:45:38 +0000
commitc8402e45ef8374350f41a4ca3514ad9267ff9bde (patch)
treee8dbc2194fc6e36f9bf3cff8c68e1a33a13386ca /src/emu/machine/z80dma.c
parent024832f2990d4babacf6e3e54cce0fea6bdefcde (diff)
z80dma: Fixed Initiate read command
Diffstat (limited to 'src/emu/machine/z80dma.c')
-rw-r--r--src/emu/machine/z80dma.c15
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);
}