diff --git a/src/main/java/de/neemann/digital/core/io/PowerSupply.java b/src/main/java/de/neemann/digital/core/io/PowerSupply.java
index f9e41cf27..f12a17f64 100644
--- a/src/main/java/de/neemann/digital/core/io/PowerSupply.java
+++ b/src/main/java/de/neemann/digital/core/io/PowerSupply.java
@@ -14,7 +14,7 @@ import static de.neemann.digital.core.element.PinInfo.input;
* Enforces a power supply
* Created by hneemann on 15.07.17.
*/
-public class PowerSupply implements Element {
+public class PowerSupply extends Node implements Element {
/**
* Enforces a power supply
@@ -24,6 +24,9 @@ public class PowerSupply implements Element {
.addAttribute(Keys.ROTATE)
.addAttribute(Keys.LABEL);
+ private ObservableValue vcc;
+ private ObservableValue gnd;
+
/**
* Creates a new instance
*
@@ -34,13 +37,8 @@ public class PowerSupply implements Element {
@Override
public void setInputs(ObservableValues inputs) throws NodeException {
- check(inputs.get(0).checkBits(1, null, 0), 1);
- check(inputs.get(1).checkBits(1, null, 1), 0);
- }
-
- private void check(ObservableValue val, int expected) throws NodeException {
- if (!val.isConstant() || val.getValue() != expected)
- throw new NodeException(Lang.get("err_errorInPowerSupply"), val);
+ vcc = inputs.get(0).checkBits(1, null, 0).addObserverToValue(this);
+ gnd = inputs.get(1).checkBits(1, null, 1).addObserverToValue(this);
}
@Override
@@ -49,6 +47,15 @@ public class PowerSupply implements Element {
}
@Override
- public void registerNodes(Model model) {
+ public void readInputs() throws NodeException {
+ if (vcc.getValue() != 1 || vcc.isHighZ())
+ throw new NodeException(Lang.get("err_errorInPowerSupply", "VCC"), vcc);
+ if (gnd.getValue() != 0 || gnd.isHighZ())
+ throw new NodeException(Lang.get("err_errorInPowerSupply", "GND"), gnd);
}
+
+ @Override
+ public void writeOutputs() throws NodeException {
+ }
+
}
diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java
index db3ad858d..f0b6d667c 100644
--- a/src/main/java/de/neemann/digital/gui/Main.java
+++ b/src/main/java/de/neemann/digital/gui/Main.java
@@ -9,6 +9,7 @@ import de.neemann.digital.core.element.ElementAttributes;
import de.neemann.digital.core.element.Key;
import de.neemann.digital.core.element.Keys;
import de.neemann.digital.core.io.In;
+import de.neemann.digital.core.io.InValue;
import de.neemann.digital.core.io.Out;
import de.neemann.digital.core.io.PowerSupply;
import de.neemann.digital.core.memory.ROM;
@@ -732,6 +733,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
.setShapeFactory(shapeFactory)
.setAttribute(Keys.LABEL, "VCC")
.setAttribute(Keys.PINNUMBER, maxNum)
+ .setAttribute(Keys.INPUT_DEFAULT, new InValue(1))
.setPos(new Vector(0, 0)));
list.add(new VisualElement(In.DESCRIPTION.getName())
.setShapeFactory(shapeFactory)
diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml
index e9db528c8..06eeb6280 100644
--- a/src/main/resources/lang/lang_de.xml
+++ b/src/main/resources/lang/lang_de.xml
@@ -555,7 +555,7 @@ Sind evtl. die Namen der Variablen nicht eindeutig?
Signal {0} wurde mehrfach verwendet!
Fehler beim Einlesen der Testdaten.
Die Modelkomponente {0} kann nicht analysiert werden.
- Fehler in der Stromversorgung.
+ Fehler in der Stromversorgung an {0}.
Adress-Bits
Anzahl der Adress-Bits die verwendet werden.
diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml
index f86c7b0d7..4b57aa35a 100644
--- a/src/main/resources/lang/lang_en.xml
+++ b/src/main/resources/lang/lang_en.xml
@@ -543,7 +543,7 @@ The names of the variables may not be unique.
Signal {0} is used twice!
Error parsing the test data.
The model component {0} can not be analysed.
- Error in wiring of power supply.
+ Error in wiring of power supply at {0}.
Address Bits
Number of address bits used.