package net.mograsim.plugin.launch;
+import static net.mograsim.plugin.preferences.PluginPreferences.MAX_MEMORY_CHANGE_INTERVAL;
+
import java.math.BigInteger;
import java.util.HashSet;
import java.util.Set;
import net.mograsim.machine.MainMemoryDefinition;
import net.mograsim.machine.Memory.MemoryCellModifiedListener;
import net.mograsim.plugin.MograsimActivator;
-import net.mograsim.preferences.Preferences;
public class MainMemoryBlockExtension extends PlatformObject implements IMemoryBlockExtension
{
if (baseAddrWords.compareTo(minAddrWords) < 0 || baseAddrWords.compareTo(maxAddrWords) > 0)
throwDebugException("Base address out of range");
- if (baseAddrWords.add(lengthWords).compareTo(maxAddrWords) > 0)
+ if (baseAddrWords.add(lengthWords).subtract(BigInteger.ONE).compareTo(maxAddrWords) > 0)
throwDebugException("End address out of range");
this.clients = new HashSet<>();
this.memListener = a -> queueFireContentChangeEvent();
this.memListenerRegistered = new AtomicBoolean();
- this.maxContentChangeInterval = Preferences.current().getInt("net.mograsim.plugin.core.maxmemchangeinterval");
+ // TODO add a listener
+ this.maxContentChangeInterval = MograsimActivator.instance().getPluginPrefs().getInt(MAX_MEMORY_CHANGE_INTERVAL);
this.contentChangeLock = new Object();
this.nextContentChangeAllowedMillis = System.currentTimeMillis() - maxContentChangeInterval - 1;
}
@Override
public int getAddressSize() throws DebugException
{
- return Long.BYTES;
+ return (getBigLength().bitLength() + 7) / 8;
}
@Override