void lsi53c810_device::dmaop_block_move() { UINT32 address; UINT32 count; INT32 dsps; address = FETCH(); count = dcmd & 0x00ffffff; // normal indirect if (dcmd & 0x20000000) address = m_fetch_cb(address); // table indirect if (dcmd & 0x10000000) { dsps = (INT32)address&0xffffff; // sign extend if (dsps & 0x00800000) { dsps |= 0xff000000; } logerror("table offset: %x, DSA = %x\n", dsps, dsa); dsps += dsa; logerror("Loading from table at %x\n", dsps); count = m_fetch_cb(dsps); address = m_fetch_cb(dsps + 4); } logerror("block move: address %x count %x phase %x\n", address, count, (dcmd>>24)&7); if (scntl0 & 0x01) { /* target mode */ fatalerror("LSI53C810: dmaop_block_move not implemented in target mode\n"); } else { /* initiator mode */ logerror("53c810: block_move not actually implemented\n"); } }
UINT32 lsi53c810_device::FETCH() { UINT32 r = m_fetch_cb(dsp); dsp += 4; return r; }
uint32_t lsi53c810_device::FETCH() { uint32_t r = m_fetch_cb(dsp); dsp += 4; return r; }