void cs4031_device::config_data_w(uint8_t data) { if (m_address_valid) { LOGREGISTER("cs4031_device: write %s = %02x\n", m_register_names[m_address], data); // update register with new data m_registers[m_address] = data; // execute command switch (m_address) { case DMA_WAIT_STATE: update_dma_clock(); break; case 0x05: break; case 0x06: break; case 0x07: break; case 0x08: break; case 0x09: break; case DMA_CLOCK: update_dma_clock(); break; case 0x10: break; case 0x11: break; case 0x12: break; case 0x13: break; case 0x14: break; case 0x15: break; case 0x16: break; case 0x17: break; case 0x18: break; case SHADOW_READ: update_read_regions(); break; case SHADOW_WRITE: update_write_regions(); break; case ROMCS: update_read_regions(); update_write_regions(); break; case SOFT_RESET_AND_GATEA20: update_a20m(); break; } } // after a write the selected address needs to be reset m_address_valid = false; }
void cs4031_device::device_reset() { // setup default values memset(&m_registers, 0x00, sizeof(m_registers)); m_registers[ROMCS] = 0x60; // update rom/ram regions below 1mb update_read_regions(); update_write_regions(); }
void cs4031_device::device_reset() { // setup default values memset(&m_registers, 0x00, sizeof(m_registers)); m_registers[ROMCS] = 0x60; // update rom/ram regions below 1mb update_read_regions(); update_write_regions(); // initialize dma controller clocks update_dma_clock(); }