void pla_device::device_start() { assert(m_terms < MAX_TERMS); assert(m_inputs < 32 && m_outputs <= 32); if (m_input_mask == 0) m_input_mask = ((UINT64)1 << m_inputs) - 1; m_input_mask = ((UINT64)m_input_mask << 32) | m_input_mask; // parse fusemap parse_fusemap(); // initialize cache m_cache2_ptr = 0; for (auto & elem : m_cache2) elem = 0x80000000; m_cache_size = 0; int csize = 1 << ((m_inputs > MAX_CACHE_BITS) ? MAX_CACHE_BITS : m_inputs); m_cache.resize(csize); for (int i = 0; i < csize; i++) m_cache[i] = read(i); m_cache_size = csize; }
void pls100_device::device_start() { // parse fusemap assert(machine().region(tag()) != NULL); parse_fusemap(); // register for state saving save_item(NAME(m_i)); save_item(NAME(m_s)); }
void pla_device::device_start() { assert(machine().root_device().memregion(tag()) != NULL); // parse fusemap parse_fusemap(); // clear cache for (int i = 0; i < CACHE_SIZE; i++) { m_cache[i] = 0; } m_cache_ptr = 0; }