Fixed X/U/Z handling in GUIAm2904RegCTInstrDecode/ShiftInstrDecode
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 19 Aug 2019 08:45:35 +0000 (10:45 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 19 Aug 2019 08:45:35 +0000 (10:45 +0200)
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904RegCTInstrDecode.java
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904ShiftInstrDecode.java

index d010b30..b9e7b2b 100644 (file)
@@ -8,6 +8,7 @@ import static net.mograsim.logic.core.types.Bit.ZERO;
 import java.util.Map;
 
 import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
 import net.mograsim.logic.core.wires.Wire.ReadEnd;
 import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
 import net.mograsim.logic.model.model.ViewModelModifiable;
@@ -71,12 +72,12 @@ public class GUIAm2904RegCTInstrDecode extends SimpleRectangularHardcodedGUIComp
                                break;
                        case U:
                                for (ReadWriteEnd e : readWriteEnds.values())
-                                       e.feedSignals(U);
+                                       e.feedSignals(BitVector.of(U, e.length()));
                                return null;
                        case X:
                        case Z:
                                for (ReadWriteEnd e : readWriteEnds.values())
-                                       e.feedSignals(X);
+                                       e.feedSignals(BitVector.of(X, e.length()));
                                return null;
                        case ZERO:
                                break;
index 64935e8..dda3e92 100644 (file)
@@ -77,20 +77,20 @@ public class GUIAm2904ShiftInstrDecode extends SimpleRectangularHardcodedGUIComp
                                IAsInt |= 1 << i;
                                break;
                        case U:
-                               readWriteEnds.get("SIO0_MUX").feedSignals(U);
-                               readWriteEnds.get("SIOn_MUX").feedSignals(U);
-                               readWriteEnds.get("QIO0_MUX").feedSignals(U);
-                               readWriteEnds.get("QIOn_MUX").feedSignals(U);
-                               readWriteEnds.get("MC_MUX").feedSignals(U);
+                               readWriteEnds.get("SIO0_MUX").feedSignals(U, U, U);
+                               readWriteEnds.get("SIOn_MUX").feedSignals(U, U, U);
+                               readWriteEnds.get("QIO0_MUX").feedSignals(U, U, U);
+                               readWriteEnds.get("QIOn_MUX").feedSignals(U, U, U);
+                               readWriteEnds.get("MC_MUX").feedSignals(U, U);
                                readWriteEnds.get("MC_EN").feedSignals(U);
                                return null;
                        case X:
                        case Z:
-                               readWriteEnds.get("SIO0_MUX").feedSignals(X);
-                               readWriteEnds.get("SIOn_MUX").feedSignals(X);
-                               readWriteEnds.get("QIO0_MUX").feedSignals(X);
-                               readWriteEnds.get("QIOn_MUX").feedSignals(X);
-                               readWriteEnds.get("MC_MUX").feedSignals(X);
+                               readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
+                               readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
+                               readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
+                               readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
+                               readWriteEnds.get("MC_MUX").feedSignals(X, X);
                                readWriteEnds.get("MC_EN").feedSignals(X);
                                return null;
                        case ZERO: