1 package net.mograsim.machine.mi;
3 import java.util.HashSet;
6 import net.mograsim.machine.MemoryObserver;
8 public class AssignableMicroInstructionMemory implements MicroInstructionMemory, MemoryObserver
10 private Set<MemoryObserver> observers = new HashSet<>();
11 MicroInstructionMemory real = null;
13 public AssignableMicroInstructionMemory(StandardMicroInstructionMemory standardMicroInstructionMemory)
15 real = standardMicroInstructionMemory;
16 real.registerObserver(this);
19 public void bind(MicroInstructionMemory real)
21 this.real.deregisterObserver(this);
23 real.registerObserver(this);
28 public MicroInstruction getCell(long address)
30 return real.getCell(address);
34 public void setCell(long address, MicroInstruction data)
36 real.setCell(address, data);
40 public void registerObserver(MemoryObserver ob)
46 public void deregisterObserver(MemoryObserver ob)
52 public void notifyObservers(long address)
54 observers.forEach(o -> o.update(address));
58 public MicroInstructionMemoryDefinition getDefinition()
60 return real.getDefinition();
64 public void update(long address)
66 notifyObservers(address);