diff --git a/src/main/dig/cmos/dec.dig b/src/main/dig/cmos/dec.dig
new file mode 100644
index 000000000..04e264644
--- /dev/null
+++ b/src/main/dig/cmos/dec.dig
@@ -0,0 +1,138 @@
+
+
+ 1
+
+
+ Width
+ 2
+
+
+
+
+ Decoder
+
+
+ Selector Bits
+ 2
+
+
+
+
+
+ Splitter
+
+
+ Input Splitting
+ 1,1
+
+
+ Output Splitting
+ 2
+
+
+
+
+
+ In
+
+
+ Label
+ 0
+
+
+
+
+
+ In
+
+
+ Label
+ 1
+
+
+
+
+
+ Out
+
+
+ Label
+ a
+
+
+
+
+
+ Out
+
+
+ Label
+ b
+
+
+
+
+
+ Out
+
+
+ Label
+ c
+
+
+
+
+
+ Out
+
+
+ Label
+ d
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/dig/cmos/eprom.dig b/src/main/dig/cmos/eprom.dig
index 7885cb30d..178d93e16 100644
--- a/src/main/dig/cmos/eprom.dig
+++ b/src/main/dig/cmos/eprom.dig
@@ -3,30 +3,6 @@
1
-
- Decoder
-
-
- Selector Bits
- 2
-
-
-
-
-
- Splitter
-
-
- Input Splitting
- 1,1
-
-
- Output Splitting
- 2
-
-
-
-
In
@@ -35,7 +11,7 @@
A_0
-
+
In
@@ -45,7 +21,7 @@
A_1
-
+
PullUp
@@ -67,30 +43,6 @@
-
- Decoder
-
-
- Selector Bits
- 2
-
-
-
-
-
- Splitter
-
-
- Input Splitting
- 1,1
-
-
- Output Splitting
- 2
-
-
-
-
In
@@ -99,7 +51,7 @@
A_2
-
+
In
@@ -109,7 +61,7 @@
A_3
-
+
NFET
@@ -262,7 +214,7 @@
1
-
+
Ground
@@ -364,6 +316,16 @@
+
+ dec.dig
+
+
+
+
+ dec.dig
+
+
+
@@ -394,18 +356,10 @@
-
-
-
-
-
-
-
-
@@ -446,6 +400,10 @@
+
+
+
+
@@ -467,12 +425,8 @@
-
-
-
-
-
-
+
+
@@ -495,17 +449,17 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -522,6 +476,10 @@
+
+
+
+
@@ -543,12 +501,8 @@
-
-
-
-
-
-
+
+
@@ -583,12 +537,16 @@
-
-
+
+
-
-
+
+
+
+
+
+
@@ -642,10 +600,6 @@
-
-
-
-
@@ -654,14 +608,6 @@
-
-
-
-
-
-
-
-
@@ -830,14 +776,6 @@
-
-
-
-
-
-
-
-
@@ -888,7 +826,15 @@
-
+
+
+
+
+
+
+
+
+
diff --git a/src/main/dig/cmos/prom.dig b/src/main/dig/cmos/prom.dig
index d30c603f2..e2ac477e3 100644
--- a/src/main/dig/cmos/prom.dig
+++ b/src/main/dig/cmos/prom.dig
@@ -3,30 +3,6 @@
1
-
- Decoder
-
-
- Selector Bits
- 2
-
-
-
-
-
- Splitter
-
-
- Input Splitting
- 1,1
-
-
- Output Splitting
- 2
-
-
-
-
In
@@ -35,7 +11,7 @@
A_0
-
+
In
@@ -45,7 +21,7 @@
A_1
-
+
PullUp
@@ -137,30 +113,6 @@
-
- Decoder
-
-
- Selector Bits
- 2
-
-
-
-
-
- Splitter
-
-
- Input Splitting
- 1,1
-
-
- Output Splitting
- 2
-
-
-
-
In
@@ -169,7 +121,7 @@
A_2
-
+
In
@@ -179,7 +131,7 @@
A_3
-
+
NFET
@@ -304,11 +256,271 @@
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0
+
+
+
+
+# transitions
+0 0 0 0 0
+0 0 0 1 0
+0 0 0 0 0
+0 0 1 0 0
+0 0 0 0 0
+0 0 1 1 0
+0 0 0 0 0
+0 1 0 0 0
+0 0 0 0 0
+0 1 0 1 0
+0 0 0 0 0
+0 1 1 0 1
+0 0 0 0 0
+0 1 1 1 0
+0 0 0 0 0
+1 0 0 0 0
+0 0 0 0 0
+1 0 0 1 1
+0 0 0 0 0
+1 0 1 0 0
+0 0 0 0 0
+1 0 1 1 0
+0 0 0 0 0
+1 1 0 0 0
+0 0 0 0 0
+1 1 0 1 0
+0 0 0 0 0
+1 1 1 0 0
+0 0 0 0 0
+1 1 1 1 0
+0 0 0 0 0
+0 0 0 1 0
+0 0 1 0 0
+0 0 0 1 0
+0 0 1 1 0
+0 0 0 1 0
+0 1 0 0 0
+0 0 0 1 0
+0 1 0 1 0
+0 0 0 1 0
+0 1 1 0 1
+0 0 0 1 0
+0 1 1 1 0
+0 0 0 1 0
+1 0 0 0 0
+0 0 0 1 0
+1 0 0 1 1
+0 0 0 1 0
+1 0 1 0 0
+0 0 0 1 0
+1 0 1 1 0
+0 0 0 1 0
+1 1 0 0 0
+0 0 0 1 0
+1 1 0 1 0
+0 0 0 1 0
+1 1 1 0 0
+0 0 0 1 0
+1 1 1 1 0
+0 0 0 1 0
+0 0 1 0 0
+0 0 1 1 0
+0 0 1 0 0
+0 1 0 0 0
+0 0 1 0 0
+0 1 0 1 0
+0 0 1 0 0
+0 1 1 0 1
+0 0 1 0 0
+0 1 1 1 0
+0 0 1 0 0
+1 0 0 0 0
+0 0 1 0 0
+1 0 0 1 1
+0 0 1 0 0
+1 0 1 0 0
+0 0 1 0 0
+1 0 1 1 0
+0 0 1 0 0
+1 1 0 0 0
+0 0 1 0 0
+1 1 0 1 0
+0 0 1 0 0
+1 1 1 0 0
+0 0 1 0 0
+1 1 1 1 0
+0 0 1 0 0
+0 0 1 1 0
+0 1 0 0 0
+0 0 1 1 0
+0 1 0 1 0
+0 0 1 1 0
+0 1 1 0 1
+0 0 1 1 0
+0 1 1 1 0
+0 0 1 1 0
+1 0 0 0 0
+0 0 1 1 0
+1 0 0 1 1
+0 0 1 1 0
+1 0 1 0 0
+0 0 1 1 0
+1 0 1 1 0
+0 0 1 1 0
+1 1 0 0 0
+0 0 1 1 0
+1 1 0 1 0
+0 0 1 1 0
+1 1 1 0 0
+0 0 1 1 0
+1 1 1 1 0
+0 0 1 1 0
+0 1 0 0 0
+0 1 0 1 0
+0 1 0 0 0
+0 1 1 0 1
+0 1 0 0 0
+0 1 1 1 0
+0 1 0 0 0
+1 0 0 0 0
+0 1 0 0 0
+1 0 0 1 1
+0 1 0 0 0
+1 0 1 0 0
+0 1 0 0 0
+1 0 1 1 0
+0 1 0 0 0
+1 1 0 0 0
+0 1 0 0 0
+1 1 0 1 0
+0 1 0 0 0
+1 1 1 0 0
+0 1 0 0 0
+1 1 1 1 0
+0 1 0 0 0
+0 1 0 1 0
+0 1 1 0 1
+0 1 0 1 0
+0 1 1 1 0
+0 1 0 1 0
+1 0 0 0 0
+0 1 0 1 0
+1 0 0 1 1
+0 1 0 1 0
+1 0 1 0 0
+0 1 0 1 0
+1 0 1 1 0
+0 1 0 1 0
+1 1 0 0 0
+0 1 0 1 0
+1 1 0 1 0
+0 1 0 1 0
+1 1 1 0 0
+0 1 0 1 0
+1 1 1 1 0
+0 1 0 1 0
+0 1 1 0 1
+0 1 1 1 0
+0 1 1 0 1
+1 0 0 0 0
+0 1 1 0 1
+1 0 0 1 1
+0 1 1 0 1
+1 0 1 0 0
+0 1 1 0 1
+1 0 1 1 0
+0 1 1 0 1
+1 1 0 0 0
+0 1 1 0 1
+1 1 0 1 0
+0 1 1 0 1
+1 1 1 0 0
+0 1 1 0 1
+1 1 1 1 0
+0 1 1 0 1
+0 1 1 1 0
+1 0 0 0 0
+0 1 1 1 0
+1 0 0 1 1
+0 1 1 1 0
+1 0 1 0 0
+0 1 1 1 0
+1 0 1 1 0
+0 1 1 1 0
+1 1 0 0 0
+0 1 1 1 0
+1 1 0 1 0
+0 1 1 1 0
+1 1 1 0 0
+0 1 1 1 0
+1 1 1 1 0
+0 1 1 1 0
+1 0 0 0 0
+1 0 0 1 1
+1 0 0 0 0
+1 0 1 0 0
+1 0 0 0 0
+1 0 1 1 0
+1 0 0 0 0
+1 1 0 0 0
+1 0 0 0 0
+1 1 0 1 0
+1 0 0 0 0
+1 1 1 0 0
+1 0 0 0 0
+1 1 1 1 0
+1 0 0 0 0
+1 0 0 1 1
+1 0 1 0 0
+1 0 0 1 1
+1 0 1 1 0
+1 0 0 1 1
+1 1 0 0 0
+1 0 0 1 1
+1 1 0 1 0
+1 0 0 1 1
+1 1 1 0 0
+1 0 0 1 1
+1 1 1 1 0
+1 0 0 1 1
+1 0 1 0 0
+1 0 1 1 0
+1 0 1 0 0
+1 1 0 0 0
+1 0 1 0 0
+1 1 0 1 0
+1 0 1 0 0
+1 1 1 0 0
+1 0 1 0 0
+1 1 1 1 0
+1 0 1 0 0
+1 0 1 1 0
+1 1 0 0 0
+1 0 1 1 0
+1 1 0 1 0
+1 0 1 1 0
+1 1 1 0 0
+1 0 1 1 0
+1 1 1 1 0
+1 0 1 1 0
+1 1 0 0 0
+1 1 0 1 0
+1 1 0 0 0
+1 1 1 0 0
+1 1 0 0 0
+1 1 1 1 0
+1 1 0 0 0
+1 1 0 1 0
+1 1 1 0 0
+1 1 0 1 0
+1 1 1 1 0
+1 1 0 1 0
+1 1 1 0 0
+1 1 1 1 0
+1 1 1 0 0
-
+
Driver
@@ -332,7 +544,7 @@
1
-
+
NFET
@@ -355,72 +567,78 @@
- DiodeBackward
-
-
- rotation
-
-
-
+ Fuse
+
+
+
+
+ Fuse
+
+
+
+
+ Fuse
+
+
+
+
+ Fuse
+
- DiodeBackward
-
-
- rotation
-
-
-
+ Fuse
+
- DiodeBackward
-
-
- rotation
-
-
-
+ Fuse
+
- DiodeBackward
-
-
- rotation
-
-
-
+ Fuse
+
- DiodeBackward
-
-
- rotation
-
-
-
+ Fuse
+
- DiodeBackward
-
-
- rotation
-
-
-
+ Fuse
+
+
+
+
+ Fuse
+
+
+
+
+ Fuse
+
+
+
+
+ Fuse
+
- DiodeBackward
+ Fuse
+
+
+
+
+ Fuse
+
+
+
+
+ Fuse
-
- rotation
-
-
Blown
true
@@ -429,42 +647,8 @@
- DiodeBackward
+ Fuse
-
- rotation
-
-
-
-
-
-
- DiodeBackward
-
-
- rotation
-
-
-
-
-
-
- DiodeBackward
-
-
- rotation
-
-
-
-
-
-
- DiodeBackward
-
-
- rotation
-
-
Blown
true
@@ -473,65 +657,17 @@
- DiodeBackward
-
-
- rotation
-
-
-
-
+ dec.dig
+
+
- DiodeBackward
-
-
- rotation
-
-
-
-
-
-
- DiodeBackward
-
-
- rotation
-
-
-
-
-
-
- DiodeBackward
-
-
- rotation
-
-
-
-
-
-
- DiodeBackward
-
-
- rotation
-
-
-
-
+ dec.dig
+
+
-
-
-
-
-
-
-
-
@@ -604,6 +740,10 @@
+
+
+
+
@@ -625,8 +765,8 @@
-
-
+
+
@@ -692,10 +832,6 @@
-
-
-
-
@@ -716,10 +852,6 @@
-
-
-
-
@@ -752,6 +884,14 @@
+
+
+
+
+
+
+
+
@@ -772,10 +912,6 @@
-
-
-
-
@@ -792,6 +928,10 @@
+
+
+
+
@@ -812,6 +952,10 @@
+
+
+
+
@@ -828,14 +972,6 @@
-
-
-
-
-
-
-
-
@@ -853,21 +989,21 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -892,14 +1028,6 @@
-
-
-
-
-
-
-
-
@@ -1076,17 +1204,9 @@
-
-
-
-
-
-
-
-
-
+
@@ -1112,6 +1232,14 @@
+
+
+
+
+
+
+
+
diff --git a/src/main/dig/cmos/rom.dig b/src/main/dig/cmos/rom.dig
index 41cf1ce6b..0d5b34c88 100644
--- a/src/main/dig/cmos/rom.dig
+++ b/src/main/dig/cmos/rom.dig
@@ -3,30 +3,6 @@
1
-
- Decoder
-
-
- Selector Bits
- 2
-
-
-
-
-
- Splitter
-
-
- Input Splitting
- 1,1
-
-
- Output Splitting
- 2
-
-
-
-
In
@@ -35,7 +11,7 @@
A_0
-
+
In
@@ -45,7 +21,7 @@
A_1
-
+
PullUp
@@ -137,30 +113,6 @@
-
- Decoder
-
-
- Selector Bits
- 2
-
-
-
-
-
- Splitter
-
-
- Input Splitting
- 1,1
-
-
- Output Splitting
- 2
-
-
-
-
In
@@ -169,7 +121,7 @@
A_2
-
+
In
@@ -179,7 +131,7 @@
A_3
-
+
NFET
@@ -332,7 +284,17 @@
1
-
+
+
+
+ dec.dig
+
+
+
+
+ dec.dig
+
+
@@ -360,14 +322,6 @@
-
-
-
-
-
-
-
-
@@ -404,6 +358,10 @@
+
+
+
+
@@ -425,12 +383,8 @@
-
-
-
-
-
-
+
+
@@ -453,17 +407,17 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -480,6 +434,10 @@
+
+
+
+
@@ -497,12 +455,8 @@
-
-
-
-
-
-
+
+
@@ -533,12 +487,16 @@
-
-
+
+
-
-
+
+
+
+
+
+
@@ -588,10 +546,6 @@
-
-
-
-
@@ -600,14 +554,6 @@
-
-
-
-
-
-
-
-
@@ -760,14 +706,6 @@
-
-
-
-
-
-
-
-
@@ -810,7 +748,15 @@
-
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/de/neemann/digital/core/switching/Fuse.java b/src/main/java/de/neemann/digital/core/switching/Fuse.java
new file mode 100644
index 000000000..0b0551972
--- /dev/null
+++ b/src/main/java/de/neemann/digital/core/switching/Fuse.java
@@ -0,0 +1,28 @@
+package de.neemann.digital.core.switching;
+
+import de.neemann.digital.core.element.ElementAttributes;
+import de.neemann.digital.core.element.ElementTypeDescription;
+import de.neemann.digital.core.element.Keys;
+
+/**
+ * A simple fuse.
+ * Created by hneemann on 03.06.17.
+ */
+public class Fuse extends Switch {
+
+ /**
+ * The fuse description
+ */
+ public static final ElementTypeDescription DESCRIPTION = new ElementTypeDescription(Fuse.class)
+ .addAttribute(Keys.ROTATE)
+ .addAttribute(Keys.BLOWN);
+
+ /**
+ * Create a new fuse
+ *
+ * @param attr the attributes
+ */
+ public Fuse(ElementAttributes attr) {
+ super(attr, !attr.get(Keys.BLOWN), "out1", "out2");
+ }
+}
diff --git a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java
index aa429b9b7..441a21eaf 100644
--- a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java
+++ b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java
@@ -127,6 +127,7 @@ public class ElementLibrary implements Iterable
.add(DiodeForward.DESCRIPTION)
.add(DiodeBackward.DESCRIPTION)
.add(Switch.DESCRIPTION)
+ .add(Fuse.DESCRIPTION)
.add(Relay.DESCRIPTION)
.add(PFET.DESCRIPTION)
.add(NFET.DESCRIPTION)
diff --git a/src/main/java/de/neemann/digital/draw/shapes/DILShape.java b/src/main/java/de/neemann/digital/draw/shapes/DILShape.java
index e36c51535..aa735502d 100644
--- a/src/main/java/de/neemann/digital/draw/shapes/DILShape.java
+++ b/src/main/java/de/neemann/digital/draw/shapes/DILShape.java
@@ -22,7 +22,7 @@ import static de.neemann.digital.draw.shapes.GenericShape.SIZE2;
* Created by hneemann on 12.05.17.
*/
public class DILShape implements Shape {
- private static final float CIRC = (float) (4 * (Math.sqrt(2) - 1) / 3);
+ static final float CIRC = (float) (4 * (Math.sqrt(2) - 1) / 3);
private static final int SPACING = 2;
private static final int RAD = SPACING * SIZE / 4;
private static final int BEZ = Math.round(RAD * CIRC);
diff --git a/src/main/java/de/neemann/digital/draw/shapes/FuseShape.java b/src/main/java/de/neemann/digital/draw/shapes/FuseShape.java
new file mode 100644
index 000000000..7ff050fab
--- /dev/null
+++ b/src/main/java/de/neemann/digital/draw/shapes/FuseShape.java
@@ -0,0 +1,74 @@
+package de.neemann.digital.draw.shapes;
+
+import de.neemann.digital.core.Observer;
+import de.neemann.digital.core.element.ElementAttributes;
+import de.neemann.digital.core.element.Keys;
+import de.neemann.digital.core.element.PinDescriptions;
+import de.neemann.digital.draw.elements.IOState;
+import de.neemann.digital.draw.elements.Pin;
+import de.neemann.digital.draw.elements.Pins;
+import de.neemann.digital.draw.graphics.Graphic;
+import de.neemann.digital.draw.graphics.Polygon;
+import de.neemann.digital.draw.graphics.Style;
+import de.neemann.digital.draw.graphics.Vector;
+
+import static de.neemann.digital.draw.shapes.GenericShape.SIZE;
+import static de.neemann.digital.draw.shapes.GenericShape.SIZE2;
+
+/**
+ * The light bulb shape
+ * Created by hneemann on 19.05.17.
+ */
+public class FuseShape implements Shape {
+ private static final int BEZ = Math.round(SIZE2 / 2 * DILShape.CIRC);
+
+ private static final Polygon OK_POLY = new Polygon(false)
+ .add(0, 0)
+ .add(new Vector(0, -BEZ), new Vector(SIZE2 / 2 - BEZ, -SIZE2 / 2), new Vector(SIZE2 / 2, -SIZE2 / 2))
+ .add(new Vector(SIZE2 / 2 + BEZ, -SIZE2 / 2), new Vector(SIZE2, -SIZE2 / 2 + BEZ), new Vector(SIZE2, 0))
+ .add(new Vector(SIZE2, BEZ), new Vector(SIZE2 + SIZE2 / 2 - BEZ, SIZE2 / 2), new Vector(SIZE2 + SIZE2 / 2, SIZE2 / 2))
+ .add(new Vector(SIZE2 + SIZE2 / 2 + BEZ, SIZE2 / 2), new Vector(SIZE, SIZE2 / 2 - BEZ), new Vector(SIZE, 0));
+ private static final Polygon BLOWN_POLY1 = new Polygon(false)
+ .add(0, 0)
+ .add(new Vector(0, -BEZ), new Vector(SIZE2 / 2 - BEZ, -SIZE2 / 2), new Vector(SIZE2 / 2, -SIZE2 / 2));
+ private static final Polygon BLOWN_POLY2 = new Polygon(false)
+ .add(SIZE2 + SIZE2 / 2, SIZE2 / 2)
+ .add(new Vector(SIZE2 + SIZE2 / 2 + BEZ, SIZE2 / 2), new Vector(SIZE, SIZE2 / 2 - BEZ), new Vector(SIZE, 0));
+
+ private final PinDescriptions outputs;
+ private final boolean blown;
+
+
+ /**
+ * Creates a new instance
+ *
+ * @param attr the attributes
+ * @param inputs the inputs
+ * @param outputs the outputs
+ */
+ public FuseShape(ElementAttributes attr, PinDescriptions inputs, PinDescriptions outputs) {
+ this.outputs = outputs;
+ blown = attr.get(Keys.BLOWN);
+ }
+
+ @Override
+ public Pins getPins() {
+ return new Pins()
+ .add(new Pin(new Vector(0, 0), outputs.get(0)))
+ .add(new Pin(new Vector(SIZE, 0), outputs.get(1)));
+ }
+
+ @Override
+ public InteractorInterface applyStateMonitor(IOState ioState, Observer guiObserver) {
+ return null;
+ }
+
+ @Override
+ public void drawTo(Graphic graphic, Style highLight) {
+ if (blown) {
+ graphic.drawPolygon(BLOWN_POLY1, Style.THIN);
+ graphic.drawPolygon(BLOWN_POLY2, Style.THIN);
+ } else
+ graphic.drawPolygon(OK_POLY, Style.THIN);
+ }
+}
diff --git a/src/main/java/de/neemann/digital/draw/shapes/ShapeFactory.java b/src/main/java/de/neemann/digital/draw/shapes/ShapeFactory.java
index 6d945e3dd..ea8368179 100644
--- a/src/main/java/de/neemann/digital/draw/shapes/ShapeFactory.java
+++ b/src/main/java/de/neemann/digital/draw/shapes/ShapeFactory.java
@@ -82,13 +82,6 @@ public final class ShapeFactory {
map.put(Const.DESCRIPTION.getName(), ConstShape::new);
map.put(Ground.DESCRIPTION.getName(), GroundShape::new);
map.put(VDD.DESCRIPTION.getName(), VDDShape::new);
- map.put(Switch.DESCRIPTION.getName(), SwitchShape::new);
- map.put(Relay.DESCRIPTION.getName(), RelayShape::new);
- map.put(NFET.DESCRIPTION.getName(), FETShapeN::new);
- map.put(FGNFET.DESCRIPTION.getName(), FGFETShapeN::new);
- map.put(FGPFET.DESCRIPTION.getName(), FGFETShapeP::new);
- map.put(PFET.DESCRIPTION.getName(), FETShapeP::new);
- map.put(TransGate.DESCRIPTION.getName(), TransGateShape::new);
map.put(Out.DESCRIPTION.getName(), OutputShape::new);
map.put(Out.LEDDESCRIPTION.getName(), LEDShape::new);
map.put(LightBulb.DESCRIPTION.getName(), LightBulbShape::new);
@@ -100,6 +93,15 @@ public final class ShapeFactory {
map.put(DummyElement.DATADESCRIPTION.getName(), DataShape::new);
map.put(RotEncoder.DESCRIPTION.getName(), RotEncoderShape::new);
+ map.put(Switch.DESCRIPTION.getName(), SwitchShape::new);
+ map.put(Fuse.DESCRIPTION.getName(), FuseShape::new);
+ map.put(Relay.DESCRIPTION.getName(), RelayShape::new);
+ map.put(NFET.DESCRIPTION.getName(), FETShapeN::new);
+ map.put(FGNFET.DESCRIPTION.getName(), FGFETShapeN::new);
+ map.put(FGPFET.DESCRIPTION.getName(), FGFETShapeP::new);
+ map.put(PFET.DESCRIPTION.getName(), FETShapeP::new);
+ map.put(TransGate.DESCRIPTION.getName(), TransGateShape::new);
+
map.put(Break.DESCRIPTION.getName(), BreakShape::new);
map.put(Delay.DESCRIPTION.getName(), (attributes, inputs, outputs) -> new DelayShape());
diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml
index d411b0b2c..f6735d509 100644
--- a/src/main/resources/lang/lang_de.xml
+++ b/src/main/resources/lang/lang_de.xml
@@ -108,6 +108,12 @@ Es kann dann ein Programm bis zum nächsten BRK-Befehl ausgeführt werden.Einer der Ausgänge des Schalters.
Einfacher Schalter. Der Schalter hat keine Gatterlaufzeit.
Eine Signaländerung wird instantan von einem Ende des Schalters zum anderen propagiert.
+
+ Fuse
+ Einer der Ausgänge der Sicherung.
+ Einer der Ausgänge der Sicherung.
+ Eine Sicherung die verwendet werden kann, um einen einmal programmierbaren Speicher aufzubauen.
+
Zähler
Ein einfacher Zähler-Baustein. Zählt jede steigende Flanke am C Eingang und kann über den clr Eingang zurückgesetzt werden.
Die Bitbreite des Zählers kann im Attributedialog festgelegt werden.
diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml
index 229a723c8..ce83a7d09 100644
--- a/src/main/resources/lang/lang_en.xml
+++ b/src/main/resources/lang/lang_en.xml
@@ -107,6 +107,12 @@
There is no gate delay: A signal change is propagated immediately.
One of the switch outputs.
One of the switch outputs.
+
+ Fuse
+ A fuse used to build a one time programmable memory.
+ One of the fuse outputs.
+ One of the fuse outputs.
+
Counter
A simple counter component. The clock input increases the counter. Can be reset back to 0 with the clr pin.
The number of bits can be set in the attribute dialog.
diff --git a/src/test/java/de/neemann/digital/integration/TestExamples.java b/src/test/java/de/neemann/digital/integration/TestExamples.java
index 24ea8f083..6c0f6ea00 100644
--- a/src/test/java/de/neemann/digital/integration/TestExamples.java
+++ b/src/test/java/de/neemann/digital/integration/TestExamples.java
@@ -28,7 +28,7 @@ public class TestExamples extends TestCase {
*/
public void testDistExamples() throws Exception {
File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig");
- assertEquals(181, new FileScanner(this::check).scan(examples));
+ assertEquals(182, new FileScanner(this::check).scan(examples));
assertEquals(82, testCasesInFiles);
}