diff --git a/src/main/dig/lib/74xx/arithmetic/74147.dig b/src/main/dig/lib/74xx/arithmetic/74147.dig
index 4d0cb3502..760b13b46 100644
--- a/src/main/dig/lib/74xx/arithmetic/74147.dig
+++ b/src/main/dig/lib/74xx/arithmetic/74147.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/74xx/arithmetic/74148.dig b/src/main/dig/lib/74xx/arithmetic/74148.dig
index a592b6569..6cd59a54d 100644
--- a/src/main/dig/lib/74xx/arithmetic/74148.dig
+++ b/src/main/dig/lib/74xx/arithmetic/74148.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/arithmetic/74181.dig b/src/main/dig/lib/74xx/arithmetic/74181.dig
index 2b9c69615..76cad6ab4 100644
--- a/src/main/dig/lib/74xx/arithmetic/74181.dig
+++ b/src/main/dig/lib/74xx/arithmetic/74181.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/arithmetic/74198.dig b/src/main/dig/lib/74xx/arithmetic/74198.dig
index 39897f545..99c6133d9 100644
--- a/src/main/dig/lib/74xx/arithmetic/74198.dig
+++ b/src/main/dig/lib/74xx/arithmetic/74198.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/arithmetic/74280.dig b/src/main/dig/lib/74xx/arithmetic/74280.dig
index ec0b27d83..f19e4ba46 100644
--- a/src/main/dig/lib/74xx/arithmetic/74280.dig
+++ b/src/main/dig/lib/74xx/arithmetic/74280.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/arithmetic/74283.dig b/src/main/dig/lib/74xx/arithmetic/74283.dig
index 55fc7f82b..1696abf3e 100644
--- a/src/main/dig/lib/74xx/arithmetic/74283.dig
+++ b/src/main/dig/lib/74xx/arithmetic/74283.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/arithmetic/74682.dig b/src/main/dig/lib/74xx/arithmetic/74682.dig
index 28e4d3bda..7dae0623a 100644
--- a/src/main/dig/lib/74xx/arithmetic/74682.dig
+++ b/src/main/dig/lib/74xx/arithmetic/74682.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/arithmetic/74688.dig b/src/main/dig/lib/74xx/arithmetic/74688.dig
index ce32dcd4a..d7dfae382 100644
--- a/src/main/dig/lib/74xx/arithmetic/74688.dig
+++ b/src/main/dig/lib/74xx/arithmetic/74688.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/74xx/arithmetic/7480.dig b/src/main/dig/lib/74xx/arithmetic/7480.dig
index 55e54efe0..52f7328b8 100644
--- a/src/main/dig/lib/74xx/arithmetic/7480.dig
+++ b/src/main/dig/lib/74xx/arithmetic/7480.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/arithmetic/7483.dig b/src/main/dig/lib/74xx/arithmetic/7483.dig
index 29368e9f2..0cecc3047 100644
--- a/src/main/dig/lib/74xx/arithmetic/7483.dig
+++ b/src/main/dig/lib/74xx/arithmetic/7483.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/arithmetic/7483Real.dig b/src/main/dig/lib/74xx/arithmetic/7483Real.dig
index e4ec897b4..e8425de1a 100644
--- a/src/main/dig/lib/74xx/arithmetic/7483Real.dig
+++ b/src/main/dig/lib/74xx/arithmetic/7483Real.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/arithmetic/7485.dig b/src/main/dig/lib/74xx/arithmetic/7485.dig
index 1d1e5527a..c638c2ea2 100644
--- a/src/main/dig/lib/74xx/arithmetic/7485.dig
+++ b/src/main/dig/lib/74xx/arithmetic/7485.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7400.dig b/src/main/dig/lib/74xx/basic/7400.dig
index fa517e966..93429d66a 100644
--- a/src/main/dig/lib/74xx/basic/7400.dig
+++ b/src/main/dig/lib/74xx/basic/7400.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7401.dig b/src/main/dig/lib/74xx/basic/7401.dig
index 45d6d1fae..ef9cbf32e 100644
--- a/src/main/dig/lib/74xx/basic/7401.dig
+++ b/src/main/dig/lib/74xx/basic/7401.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7402.dig b/src/main/dig/lib/74xx/basic/7402.dig
index 0b6f49d65..ff7e6090d 100644
--- a/src/main/dig/lib/74xx/basic/7402.dig
+++ b/src/main/dig/lib/74xx/basic/7402.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7403.dig b/src/main/dig/lib/74xx/basic/7403.dig
index 34cf824dc..d2b053bc5 100644
--- a/src/main/dig/lib/74xx/basic/7403.dig
+++ b/src/main/dig/lib/74xx/basic/7403.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7404.dig b/src/main/dig/lib/74xx/basic/7404.dig
index b6a4ebfc7..979877070 100644
--- a/src/main/dig/lib/74xx/basic/7404.dig
+++ b/src/main/dig/lib/74xx/basic/7404.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7405.dig b/src/main/dig/lib/74xx/basic/7405.dig
index 419d3184f..4e11f7bd6 100644
--- a/src/main/dig/lib/74xx/basic/7405.dig
+++ b/src/main/dig/lib/74xx/basic/7405.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7408.dig b/src/main/dig/lib/74xx/basic/7408.dig
index de9246fc4..584159109 100644
--- a/src/main/dig/lib/74xx/basic/7408.dig
+++ b/src/main/dig/lib/74xx/basic/7408.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7409.dig b/src/main/dig/lib/74xx/basic/7409.dig
index 2387f3f0d..8d0e2a92d 100644
--- a/src/main/dig/lib/74xx/basic/7409.dig
+++ b/src/main/dig/lib/74xx/basic/7409.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7410.dig b/src/main/dig/lib/74xx/basic/7410.dig
index 58c18f356..8c9a5a349 100644
--- a/src/main/dig/lib/74xx/basic/7410.dig
+++ b/src/main/dig/lib/74xx/basic/7410.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7411.dig b/src/main/dig/lib/74xx/basic/7411.dig
index 8eb2a7321..32143f98c 100644
--- a/src/main/dig/lib/74xx/basic/7411.dig
+++ b/src/main/dig/lib/74xx/basic/7411.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7412.dig b/src/main/dig/lib/74xx/basic/7412.dig
index bce6fa726..a4dbbe77b 100644
--- a/src/main/dig/lib/74xx/basic/7412.dig
+++ b/src/main/dig/lib/74xx/basic/7412.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7413.dig b/src/main/dig/lib/74xx/basic/7413.dig
index 70ce64f5c..e2973fa51 100644
--- a/src/main/dig/lib/74xx/basic/7413.dig
+++ b/src/main/dig/lib/74xx/basic/7413.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/74133.dig b/src/main/dig/lib/74xx/basic/74133.dig
index a024a778b..daa4aca6d 100644
--- a/src/main/dig/lib/74xx/basic/74133.dig
+++ b/src/main/dig/lib/74xx/basic/74133.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7414.dig b/src/main/dig/lib/74xx/basic/7414.dig
index 501d713d5..27d6c0448 100644
--- a/src/main/dig/lib/74xx/basic/7414.dig
+++ b/src/main/dig/lib/74xx/basic/7414.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7415.dig b/src/main/dig/lib/74xx/basic/7415.dig
index 13f68fef9..86e78b1f1 100644
--- a/src/main/dig/lib/74xx/basic/7415.dig
+++ b/src/main/dig/lib/74xx/basic/7415.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7420.dig b/src/main/dig/lib/74xx/basic/7420.dig
index 627be8905..90717d008 100644
--- a/src/main/dig/lib/74xx/basic/7420.dig
+++ b/src/main/dig/lib/74xx/basic/7420.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7421.dig b/src/main/dig/lib/74xx/basic/7421.dig
index a67a98332..3b7c095b7 100644
--- a/src/main/dig/lib/74xx/basic/7421.dig
+++ b/src/main/dig/lib/74xx/basic/7421.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7425.dig b/src/main/dig/lib/74xx/basic/7425.dig
index b7a081058..f9e280e0f 100644
--- a/src/main/dig/lib/74xx/basic/7425.dig
+++ b/src/main/dig/lib/74xx/basic/7425.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/74260.dig b/src/main/dig/lib/74xx/basic/74260.dig
index c7cdbd5aa..ad1e8a204 100644
--- a/src/main/dig/lib/74xx/basic/74260.dig
+++ b/src/main/dig/lib/74xx/basic/74260.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/74266.dig b/src/main/dig/lib/74xx/basic/74266.dig
index 3ada30013..f29703602 100644
--- a/src/main/dig/lib/74xx/basic/74266.dig
+++ b/src/main/dig/lib/74xx/basic/74266.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7427.dig b/src/main/dig/lib/74xx/basic/7427.dig
index 072bb12bb..d8a04d397 100644
--- a/src/main/dig/lib/74xx/basic/7427.dig
+++ b/src/main/dig/lib/74xx/basic/7427.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7428.dig b/src/main/dig/lib/74xx/basic/7428.dig
index 22c401c38..bf35edb01 100644
--- a/src/main/dig/lib/74xx/basic/7428.dig
+++ b/src/main/dig/lib/74xx/basic/7428.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7430.dig b/src/main/dig/lib/74xx/basic/7430.dig
index 73f8559c9..dbf579fad 100644
--- a/src/main/dig/lib/74xx/basic/7430.dig
+++ b/src/main/dig/lib/74xx/basic/7430.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/74xx/basic/7432.dig b/src/main/dig/lib/74xx/basic/7432.dig
index beba284ca..6719a8f46 100644
--- a/src/main/dig/lib/74xx/basic/7432.dig
+++ b/src/main/dig/lib/74xx/basic/7432.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7440.dig b/src/main/dig/lib/74xx/basic/7440.dig
index df40bab47..d96316ae7 100644
--- a/src/main/dig/lib/74xx/basic/7440.dig
+++ b/src/main/dig/lib/74xx/basic/7440.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/744075.dig b/src/main/dig/lib/74xx/basic/744075.dig
index fdd14e2bc..448495d07 100644
--- a/src/main/dig/lib/74xx/basic/744075.dig
+++ b/src/main/dig/lib/74xx/basic/744075.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7451.dig b/src/main/dig/lib/74xx/basic/7451.dig
index ca9685c10..fad6238ae 100644
--- a/src/main/dig/lib/74xx/basic/7451.dig
+++ b/src/main/dig/lib/74xx/basic/7451.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7454.dig b/src/main/dig/lib/74xx/basic/7454.dig
index 8d58f7200..1ee94efed 100644
--- a/src/main/dig/lib/74xx/basic/7454.dig
+++ b/src/main/dig/lib/74xx/basic/7454.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7455.dig b/src/main/dig/lib/74xx/basic/7455.dig
index bfd27caa2..59e993d87 100644
--- a/src/main/dig/lib/74xx/basic/7455.dig
+++ b/src/main/dig/lib/74xx/basic/7455.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7458.dig b/src/main/dig/lib/74xx/basic/7458.dig
index 84cd46da8..3b2d73002 100644
--- a/src/main/dig/lib/74xx/basic/7458.dig
+++ b/src/main/dig/lib/74xx/basic/7458.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/basic/7486.dig b/src/main/dig/lib/74xx/basic/7486.dig
index 72202fad6..2aa983982 100644
--- a/src/main/dig/lib/74xx/basic/7486.dig
+++ b/src/main/dig/lib/74xx/basic/7486.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/counter/74160.dig b/src/main/dig/lib/74xx/counter/74160.dig
index 832b8836f..58ea14caa 100644
--- a/src/main/dig/lib/74xx/counter/74160.dig
+++ b/src/main/dig/lib/74xx/counter/74160.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/counter/74161.dig b/src/main/dig/lib/74xx/counter/74161.dig
index f91d4dc3e..4ac0e14c8 100644
--- a/src/main/dig/lib/74xx/counter/74161.dig
+++ b/src/main/dig/lib/74xx/counter/74161.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/counter/74162.dig b/src/main/dig/lib/74xx/counter/74162.dig
index 8bdc4e0af..40e2eaf73 100644
--- a/src/main/dig/lib/74xx/counter/74162.dig
+++ b/src/main/dig/lib/74xx/counter/74162.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/counter/74162Real.dig b/src/main/dig/lib/74xx/counter/74162Real.dig
index a464e6e07..febfc6478 100644
--- a/src/main/dig/lib/74xx/counter/74162Real.dig
+++ b/src/main/dig/lib/74xx/counter/74162Real.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/counter/74163.dig b/src/main/dig/lib/74xx/counter/74163.dig
index f846b70a5..47c99326e 100644
--- a/src/main/dig/lib/74xx/counter/74163.dig
+++ b/src/main/dig/lib/74xx/counter/74163.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/counter/74191.dig b/src/main/dig/lib/74xx/counter/74191.dig
index c34dd87d0..a45210aba 100644
--- a/src/main/dig/lib/74xx/counter/74191.dig
+++ b/src/main/dig/lib/74xx/counter/74191.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/74xx/counter/74590.dig b/src/main/dig/lib/74xx/counter/74590.dig
index 58ee4cb24..170c2c207 100644
--- a/src/main/dig/lib/74xx/counter/74590.dig
+++ b/src/main/dig/lib/74xx/counter/74590.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/counter/74779.dig b/src/main/dig/lib/74xx/counter/74779.dig
index 085f769fb..7965f10e1 100644
--- a/src/main/dig/lib/74xx/counter/74779.dig
+++ b/src/main/dig/lib/74xx/counter/74779.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/74xx/display/7447.dig b/src/main/dig/lib/74xx/display/7447.dig
index d1d9b23de..af4d5a0cf 100644
--- a/src/main/dig/lib/74xx/display/7447.dig
+++ b/src/main/dig/lib/74xx/display/7447.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/display/7448.dig b/src/main/dig/lib/74xx/display/7448.dig
index 4d962b9cd..c9477e2e5 100644
--- a/src/main/dig/lib/74xx/display/7448.dig
+++ b/src/main/dig/lib/74xx/display/7448.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/driver/7406.dig b/src/main/dig/lib/74xx/driver/7406.dig
index 6412e1e74..3ca1102a3 100644
--- a/src/main/dig/lib/74xx/driver/7406.dig
+++ b/src/main/dig/lib/74xx/driver/7406.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/driver/7407.dig b/src/main/dig/lib/74xx/driver/7407.dig
index e8d9f4ed0..181f52f19 100644
--- a/src/main/dig/lib/74xx/driver/7407.dig
+++ b/src/main/dig/lib/74xx/driver/7407.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/driver/7416.dig b/src/main/dig/lib/74xx/driver/7416.dig
index f662c9762..34ad7ebbc 100644
--- a/src/main/dig/lib/74xx/driver/7416.dig
+++ b/src/main/dig/lib/74xx/driver/7416.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/driver/7417.dig b/src/main/dig/lib/74xx/driver/7417.dig
index 2aeaf19df..5f9c93989 100644
--- a/src/main/dig/lib/74xx/driver/7417.dig
+++ b/src/main/dig/lib/74xx/driver/7417.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/driver/74244.dig b/src/main/dig/lib/74xx/driver/74244.dig
index 95c07884a..85237f648 100644
--- a/src/main/dig/lib/74xx/driver/74244.dig
+++ b/src/main/dig/lib/74xx/driver/74244.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/driver/74245.dig b/src/main/dig/lib/74xx/driver/74245.dig
index 5cd21a3e3..29bab7bd7 100644
--- a/src/main/dig/lib/74xx/driver/74245.dig
+++ b/src/main/dig/lib/74xx/driver/74245.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
backgroundColor
diff --git a/src/main/dig/lib/74xx/driver/74540.dig b/src/main/dig/lib/74xx/driver/74540.dig
index 8df228987..8b1f5d0bc 100644
--- a/src/main/dig/lib/74xx/driver/74540.dig
+++ b/src/main/dig/lib/74xx/driver/74540.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/driver/74541.dig b/src/main/dig/lib/74xx/driver/74541.dig
index 0cce87f9e..f0ec49d70 100644
--- a/src/main/dig/lib/74xx/driver/74541.dig
+++ b/src/main/dig/lib/74xx/driver/74541.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/flipflops/74107.dig b/src/main/dig/lib/74xx/flipflops/74107.dig
index 2f128d589..af174086f 100644
--- a/src/main/dig/lib/74xx/flipflops/74107.dig
+++ b/src/main/dig/lib/74xx/flipflops/74107.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/flipflops/74109.dig b/src/main/dig/lib/74xx/flipflops/74109.dig
index 4b606057c..0d5b86804 100644
--- a/src/main/dig/lib/74xx/flipflops/74109.dig
+++ b/src/main/dig/lib/74xx/flipflops/74109.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/74xx/flipflops/74112.dig b/src/main/dig/lib/74xx/flipflops/74112.dig
index 277785ef0..c319a8120 100644
--- a/src/main/dig/lib/74xx/flipflops/74112.dig
+++ b/src/main/dig/lib/74xx/flipflops/74112.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/74xx/flipflops/74116.dig b/src/main/dig/lib/74xx/flipflops/74116.dig
index af6beddff..503af4051 100644
--- a/src/main/dig/lib/74xx/flipflops/74116.dig
+++ b/src/main/dig/lib/74xx/flipflops/74116.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/flipflops/74173.dig b/src/main/dig/lib/74xx/flipflops/74173.dig
index e83833334..394de9089 100644
--- a/src/main/dig/lib/74xx/flipflops/74173.dig
+++ b/src/main/dig/lib/74xx/flipflops/74173.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/flipflops/74174.dig b/src/main/dig/lib/74xx/flipflops/74174.dig
index 8aa1f4851..e89835248 100644
--- a/src/main/dig/lib/74xx/flipflops/74174.dig
+++ b/src/main/dig/lib/74xx/flipflops/74174.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/flipflops/74273.dig b/src/main/dig/lib/74xx/flipflops/74273.dig
index 6db2944f2..74d235599 100644
--- a/src/main/dig/lib/74xx/flipflops/74273.dig
+++ b/src/main/dig/lib/74xx/flipflops/74273.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/74xx/flipflops/74373.dig b/src/main/dig/lib/74xx/flipflops/74373.dig
index f32e323b9..0a9b2ceda 100644
--- a/src/main/dig/lib/74xx/flipflops/74373.dig
+++ b/src/main/dig/lib/74xx/flipflops/74373.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/flipflops/74374.dig b/src/main/dig/lib/74xx/flipflops/74374.dig
index ec15184b3..455ca433a 100644
--- a/src/main/dig/lib/74xx/flipflops/74374.dig
+++ b/src/main/dig/lib/74xx/flipflops/74374.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/flipflops/7474.dig b/src/main/dig/lib/74xx/flipflops/7474.dig
index cd14f79f5..8c0804d33 100644
--- a/src/main/dig/lib/74xx/flipflops/7474.dig
+++ b/src/main/dig/lib/74xx/flipflops/7474.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/flipflops/7476.dig b/src/main/dig/lib/74xx/flipflops/7476.dig
index 1c3ced249..f5a1703b9 100644
--- a/src/main/dig/lib/74xx/flipflops/7476.dig
+++ b/src/main/dig/lib/74xx/flipflops/7476.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/memory/74670.dig b/src/main/dig/lib/74xx/memory/74670.dig
index abfe4e567..2b3821822 100644
--- a/src/main/dig/lib/74xx/memory/74670.dig
+++ b/src/main/dig/lib/74xx/memory/74670.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/memory/7489.dig b/src/main/dig/lib/74xx/memory/7489.dig
index 7accb90f2..905098052 100644
--- a/src/main/dig/lib/74xx/memory/7489.dig
+++ b/src/main/dig/lib/74xx/memory/7489.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/74138.dig b/src/main/dig/lib/74xx/plexers/74138.dig
index f408614df..06dfa858f 100644
--- a/src/main/dig/lib/74xx/plexers/74138.dig
+++ b/src/main/dig/lib/74xx/plexers/74138.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/74139.dig b/src/main/dig/lib/74xx/plexers/74139.dig
index eafd6cc93..5d400b948 100644
--- a/src/main/dig/lib/74xx/plexers/74139.dig
+++ b/src/main/dig/lib/74xx/plexers/74139.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/74150.dig b/src/main/dig/lib/74xx/plexers/74150.dig
index ec2c6d7c4..733639afc 100644
--- a/src/main/dig/lib/74xx/plexers/74150.dig
+++ b/src/main/dig/lib/74xx/plexers/74150.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/74151.dig b/src/main/dig/lib/74xx/plexers/74151.dig
index a52c77531..9c0f5ff95 100644
--- a/src/main/dig/lib/74xx/plexers/74151.dig
+++ b/src/main/dig/lib/74xx/plexers/74151.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/74153.dig b/src/main/dig/lib/74xx/plexers/74153.dig
index fcf18d8a3..b76796e33 100644
--- a/src/main/dig/lib/74xx/plexers/74153.dig
+++ b/src/main/dig/lib/74xx/plexers/74153.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/74154.dig b/src/main/dig/lib/74xx/plexers/74154.dig
index ff248feb9..93ac0ea5f 100644
--- a/src/main/dig/lib/74xx/plexers/74154.dig
+++ b/src/main/dig/lib/74xx/plexers/74154.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/74157.dig b/src/main/dig/lib/74xx/plexers/74157.dig
index de22f16f6..bc975a672 100644
--- a/src/main/dig/lib/74xx/plexers/74157.dig
+++ b/src/main/dig/lib/74xx/plexers/74157.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/74238.dig b/src/main/dig/lib/74xx/plexers/74238.dig
index 4a5e306d4..d4fe41221 100644
--- a/src/main/dig/lib/74xx/plexers/74238.dig
+++ b/src/main/dig/lib/74xx/plexers/74238.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/74253.dig b/src/main/dig/lib/74xx/plexers/74253.dig
index a791168f2..4ce8eb9e3 100644
--- a/src/main/dig/lib/74xx/plexers/74253.dig
+++ b/src/main/dig/lib/74xx/plexers/74253.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/plexers/7442.dig b/src/main/dig/lib/74xx/plexers/7442.dig
index d2114aff1..28e80078f 100644
--- a/src/main/dig/lib/74xx/plexers/7442.dig
+++ b/src/main/dig/lib/74xx/plexers/7442.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/shift register/74164.dig b/src/main/dig/lib/74xx/shift register/74164.dig
index 45b17c5d5..46a886d8c 100644
--- a/src/main/dig/lib/74xx/shift register/74164.dig
+++ b/src/main/dig/lib/74xx/shift register/74164.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/74xx/shift register/74165.dig b/src/main/dig/lib/74xx/shift register/74165.dig
index 6b4686418..ac9d7de86 100644
--- a/src/main/dig/lib/74xx/shift register/74165.dig
+++ b/src/main/dig/lib/74xx/shift register/74165.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/74xx/shift register/74166.dig b/src/main/dig/lib/74xx/shift register/74166.dig
index 60f782bb8..68d1763a4 100644
--- a/src/main/dig/lib/74xx/shift register/74166.dig
+++ b/src/main/dig/lib/74xx/shift register/74166.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
Description
diff --git a/src/main/dig/lib/EPROMs/27c801.dig b/src/main/dig/lib/EPROMs/27c801.dig
index f165b8a3a..383fd0bb9 100644
--- a/src/main/dig/lib/EPROMs/27c801.dig
+++ b/src/main/dig/lib/EPROMs/27c801.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/EPROMs/28c010.dig b/src/main/dig/lib/EPROMs/28c010.dig
index 6136a82b9..8ebf4cf7a 100644
--- a/src/main/dig/lib/EPROMs/28c010.dig
+++ b/src/main/dig/lib/EPROMs/28c010.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/EPROMs/28c16.dig b/src/main/dig/lib/EPROMs/28c16.dig
index 56b36f284..a54ed5c97 100644
--- a/src/main/dig/lib/EPROMs/28c16.dig
+++ b/src/main/dig/lib/EPROMs/28c16.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/EPROMs/28c256.dig b/src/main/dig/lib/EPROMs/28c256.dig
index 104385b08..af0fe3c1d 100644
--- a/src/main/dig/lib/EPROMs/28c256.dig
+++ b/src/main/dig/lib/EPROMs/28c256.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/EPROMs/28c512.dig b/src/main/dig/lib/EPROMs/28c512.dig
index 0a9a5bcce..bab3f5862 100644
--- a/src/main/dig/lib/EPROMs/28c512.dig
+++ b/src/main/dig/lib/EPROMs/28c512.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/lib/EPROMs/28c64.dig b/src/main/dig/lib/EPROMs/28c64.dig
index c98d0236f..0ee753714 100644
--- a/src/main/dig/lib/EPROMs/28c64.dig
+++ b/src/main/dig/lib/EPROMs/28c64.dig
@@ -3,8 +3,8 @@
1
- isDIL
- true
+ shapeType
+ DIL
pinCount
diff --git a/src/main/dig/processor/ALU/ALU.dig b/src/main/dig/processor/ALU/ALU.dig
index 9d4f25c61..8502dd44c 100644
--- a/src/main/dig/processor/ALU/ALU.dig
+++ b/src/main/dig/processor/ALU/ALU.dig
@@ -2,6 +2,10 @@
1
+
+ shapeType
+ CUSTOM
+
Description
Arithmetic Logical unit.
diff --git a/src/main/java/de/neemann/digital/core/element/Keys.java b/src/main/java/de/neemann/digital/core/element/Keys.java
index 0ff967265..678d5e5ab 100644
--- a/src/main/java/de/neemann/digital/core/element/Keys.java
+++ b/src/main/java/de/neemann/digital/core/element/Keys.java
@@ -17,6 +17,7 @@ import de.neemann.digital.draw.graphics.Orientation;
import de.neemann.digital.draw.graphics.Style;
import de.neemann.digital.draw.library.ElementLibrary;
import de.neemann.digital.draw.model.InverterConfig;
+import de.neemann.digital.draw.shapes.CustomCircuitShapeType;
import de.neemann.digital.draw.shapes.custom.CustomShapeDescription;
import de.neemann.gui.Screen;
import de.neemann.gui.language.Language;
@@ -527,18 +528,12 @@ public final class Keys {
public static final Key PINNUMBER =
new Key<>("pinNumber", "").setSecondary();
- /**
- * true if shape is a dil shape
- */
- public static final Key IS_DIL
- = new Key<>("isDIL", false).setSecondary();
/**
* the pin count
*/
public static final Key PINCOUNT =
new Key.KeyInteger("pinCount", 0)
.setMin(0)
- .setDependsOn(IS_DIL)
.setSecondary();
@@ -552,8 +547,7 @@ public final class Keys {
* Background Color of nested circuits
*/
public static final Key BACKGROUND_COLOR
- = new Key<>("backgroundColor", new Color(255, 255, 180, 200))
- .setDependsOn(IS_DIL, true);
+ = new Key<>("backgroundColor", new Color(255, 255, 180, 200));
/**
* the screen resolution
@@ -647,10 +641,10 @@ public final class Keys {
new Key<>("noComponentToolTips", false);
/**
- * Used to show the default shape also if the circuit defines a DIL.
+ * defines the shape type of the custom circuit
*/
- public static final Key USE_DEFAULT_SHAPE
- = new Key("useDefShape", false);
+ public static final Key SHAPE_TYPE
+ = new Key.KeyEnum<>("shapeType", CustomCircuitShapeType.DEFAULT, CustomCircuitShapeType.values()).setSecondary();
/**
* Shape used to represent a visual element
diff --git a/src/main/java/de/neemann/digital/draw/elements/Circuit.java b/src/main/java/de/neemann/digital/draw/elements/Circuit.java
index c86d6122c..c6cd349d2 100644
--- a/src/main/java/de/neemann/digital/draw/elements/Circuit.java
+++ b/src/main/java/de/neemann/digital/draw/elements/Circuit.java
@@ -24,6 +24,7 @@ import de.neemann.digital.core.wiring.Clock;
import de.neemann.digital.draw.graphics.*;
import de.neemann.digital.draw.graphics.Vector;
import de.neemann.digital.draw.model.InverterConfig;
+import de.neemann.digital.draw.shapes.CustomCircuitShapeType;
import de.neemann.digital.draw.shapes.Drawable;
import de.neemann.digital.draw.shapes.ShapeFactory;
import de.neemann.digital.draw.shapes.custom.CustomShapeDescription;
@@ -97,6 +98,7 @@ public class Circuit {
xStream.alias("poly", CustomShapeDescription.PolygonHolder.class);
xStream.alias("text", CustomShapeDescription.TextHolder.class);
xStream.alias("polygon", Polygon.class);
+ xStream.alias("shapeType", CustomCircuitShapeType.class);
xStream.registerConverter(new PolygonConverter());
return xStream;
}
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 7ec3902c4..bbb3a75ad 100644
--- a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java
+++ b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java
@@ -8,7 +8,10 @@ package de.neemann.digital.draw.library;
import de.neemann.digital.core.arithmetic.*;
import de.neemann.digital.core.arithmetic.Comparator;
import de.neemann.digital.core.basic.*;
-import de.neemann.digital.core.element.*;
+import de.neemann.digital.core.element.ElementAttributes;
+import de.neemann.digital.core.element.ElementFactory;
+import de.neemann.digital.core.element.ElementTypeDescription;
+import de.neemann.digital.core.element.Keys;
import de.neemann.digital.core.extern.External;
import de.neemann.digital.core.flipflops.*;
import de.neemann.digital.core.io.*;
@@ -19,12 +22,10 @@ import de.neemann.digital.core.pld.PullDown;
import de.neemann.digital.core.pld.PullUp;
import de.neemann.digital.core.switching.*;
import de.neemann.digital.core.wiring.*;
-import de.neemann.digital.core.flipflops.Monoflop;
import de.neemann.digital.draw.elements.Circuit;
import de.neemann.digital.draw.elements.PinException;
import de.neemann.digital.draw.elements.Tunnel;
import de.neemann.digital.draw.shapes.ShapeFactory;
-import de.neemann.digital.draw.shapes.custom.CustomShapeDescription;
import de.neemann.digital.gui.Settings;
import de.neemann.digital.gui.components.data.DummyElement;
import de.neemann.digital.gui.components.graphics.GraphicCard;
@@ -602,6 +603,7 @@ public class ElementLibrary implements Iterable
setShortName(file.getName());
addAttribute(Keys.ROTATE);
addAttribute(Keys.LABEL);
+ addAttribute(Keys.SHAPE_TYPE);
}
/**
@@ -645,18 +647,6 @@ public class ElementLibrary implements Iterable
return super.getDescription(elementAttributes);
}
- @Override
- public ArrayList getAttributeList() {
- final ArrayList list = super.getAttributeList();
- if (getAttributes().get(Keys.IS_DIL)
- || getAttributes().get(Keys.CUSTOM_SHAPE) != CustomShapeDescription.EMPTY) {
-
- ArrayList li = new ArrayList<>(list);
- li.add(Keys.USE_DEFAULT_SHAPE);
- return li;
- }
- return list;
- }
}
diff --git a/src/main/java/de/neemann/digital/draw/shapes/CustomCircuitShapeType.java b/src/main/java/de/neemann/digital/draw/shapes/CustomCircuitShapeType.java
new file mode 100644
index 000000000..11a5e996c
--- /dev/null
+++ b/src/main/java/de/neemann/digital/draw/shapes/CustomCircuitShapeType.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2018 Helmut Neemann.
+ * Use of this source code is governed by the GPL v3 license
+ * that can be found in the LICENSE file.
+ */
+package de.neemann.digital.draw.shapes;
+
+/**
+ * Defines the kind of shape used for a embedded circuit
+ */
+public enum CustomCircuitShapeType {
+ /**
+ * The default shape. inputs at the left, outputs at the right
+ */
+ DEFAULT,
+
+ /**
+ * A DIL shape
+ */
+ DIL,
+
+ /**
+ * Pin positions are dependent on the pin positions in the circuit
+ */
+ LAYOUT,
+
+ /**
+ * Shape is defined in the circuit itself.
+ */
+ CUSTOM
+}
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 820bfab3d..861faad62 100644
--- a/src/main/java/de/neemann/digital/draw/shapes/ShapeFactory.java
+++ b/src/main/java/de/neemann/digital/draw/shapes/ShapeFactory.java
@@ -170,32 +170,37 @@ public final class ShapeFactory {
if (pt instanceof ElementLibrary.ElementTypeDescriptionCustom) {
// Custom component
ElementLibrary.ElementTypeDescriptionCustom customDescr = (ElementLibrary.ElementTypeDescriptionCustom) pt;
- if (!elementAttributes.get(Keys.USE_DEFAULT_SHAPE)) {
- final CustomShapeDescription customShapeDescription = customDescr.getAttributes().get(Keys.CUSTOM_SHAPE);
- if (customShapeDescription != CustomShapeDescription.EMPTY)
- return new CustomShape(customShapeDescription,
- pt.getInputDescription(elementAttributes),
- pt.getOutputDescriptions(elementAttributes));
- else if (customDescr.getAttributes().get(Keys.IS_DIL)) {
+ CustomCircuitShapeType shapeType = customDescr.getAttributes().get(Keys.SHAPE_TYPE);
+ final CustomCircuitShapeType localShapeType = elementAttributes.get(Keys.SHAPE_TYPE);
+ if (!localShapeType.equals(CustomCircuitShapeType.DEFAULT))
+ shapeType = localShapeType;
+
+ switch (shapeType) {
+ case DIL:
return new DILShape(
pt.getShortName(),
pt.getInputDescription(elementAttributes),
pt.getOutputDescriptions(elementAttributes),
elementAttributes.getLabel(),
customDescr.getAttributes());
- }
+ case CUSTOM:
+ final CustomShapeDescription customShapeDescription = customDescr.getAttributes().get(Keys.CUSTOM_SHAPE);
+ if (customShapeDescription != CustomShapeDescription.EMPTY)
+ return new CustomShape(customShapeDescription,
+ pt.getInputDescription(elementAttributes),
+ pt.getOutputDescriptions(elementAttributes));
+ default:
+ return new GenericShape(
+ pt.getShortName(),
+ pt.getInputDescription(elementAttributes),
+ pt.getOutputDescriptions(elementAttributes),
+ elementAttributes.getLabel(),
+ true,
+ customDescr.getAttributes().get(Keys.WIDTH))
+ .setColor(customDescr.getAttributes().get(Keys.BACKGROUND_COLOR));
}
- // Neither DIL nor custom shape.
- return new GenericShape(
- pt.getShortName(),
- pt.getInputDescription(elementAttributes),
- pt.getOutputDescriptions(elementAttributes),
- elementAttributes.getLabel(),
- true,
- customDescr.getAttributes().get(Keys.WIDTH))
- .setColor(customDescr.getAttributes().get(Keys.BACKGROUND_COLOR));
} else {
- // Internal component without own shape.
+ // Internal component without it's own shape.
return new GenericShape(
pt.getShortName(),
pt.getInputDescription(elementAttributes),
@@ -207,7 +212,7 @@ public final class ShapeFactory {
}
}
} else {
- // Internal component with own shape.
+ // Internal component with it's own shape.
ElementTypeDescription pt = library.getElementType(elementName);
return cr.create(elementAttributes,
pt.getInputDescription(elementAttributes),
@@ -247,7 +252,7 @@ public final class ShapeFactory {
}
@Override
- public Shape create(ElementAttributes attributes, PinDescriptions inputs, PinDescriptions outputs) throws NodeException {
+ public Shape create(ElementAttributes attributes, PinDescriptions inputs, PinDescriptions outputs) {
return new GenericShape(name, inputs, outputs)
.invert(invers)
.setInverterConfig(attributes.get(Keys.INVERTER_CONFIG));
diff --git a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java
index 2ae7dd335..7ede535d9 100644
--- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java
+++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java
@@ -64,11 +64,9 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
static {
ATTR_LIST.add(Keys.WIDTH);
- ATTR_LIST.add(Keys.IS_DIL);
+ ATTR_LIST.add(Keys.SHAPE_TYPE);
ATTR_LIST.add(Keys.PINCOUNT);
ATTR_LIST.add(Keys.BACKGROUND_COLOR);
- if (Main.isExperimentalMode())
- ATTR_LIST.add(Keys.CUSTOM_SHAPE);
ATTR_LIST.add(Keys.DESCRIPTION);
ATTR_LIST.add(Keys.LOCKED_MODE);
ATTR_LIST.add(Keys.ROMMANAGER);
diff --git a/src/main/java/de/neemann/digital/gui/components/EditorFactory.java b/src/main/java/de/neemann/digital/gui/components/EditorFactory.java
index 5588a06d5..e7eaf1d52 100644
--- a/src/main/java/de/neemann/digital/gui/components/EditorFactory.java
+++ b/src/main/java/de/neemann/digital/gui/components/EditorFactory.java
@@ -22,6 +22,7 @@ import de.neemann.digital.draw.graphics.Orientation;
import de.neemann.digital.draw.library.ElementNotFoundException;
import de.neemann.digital.draw.model.InverterConfig;
import de.neemann.digital.draw.model.ModelCreator;
+import de.neemann.digital.draw.shapes.CustomCircuitShapeType;
import de.neemann.digital.draw.shapes.custom.CustomShapeDescription;
import de.neemann.digital.gui.Main;
import de.neemann.digital.gui.components.table.ShowStringDialog;
@@ -75,6 +76,7 @@ public final class EditorFactory {
add(ROMManger.class, ROMManagerEditor.class);
add(Application.Type.class, ApplicationTypeEditor.class);
add(CustomShapeDescription.class, CustomShapeEditor.class);
+ add(CustomCircuitShapeType.class, CustomCircuitShapeTypeEditor.class);
}
private void add(Class clazz, Class extends Editor> editor) {
@@ -685,6 +687,12 @@ public final class EditorFactory {
}
}
+ private static final class CustomCircuitShapeTypeEditor extends EnumEditor {
+ public CustomCircuitShapeTypeEditor(CustomCircuitShapeType value, Key key) {
+ super(value, key);
+ }
+ }
+
private static final class ApplicationTypeEditor extends EnumEditor {
private final Key key;
private JComboBox combo;
diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml
index a3fcdea2b..25c3c8b44 100644
--- a/src/main/resources/lang/lang_de.xml
+++ b/src/main/resources/lang/lang_de.xml
@@ -1085,9 +1085,6 @@ Sind evtl. die Namen der Variablen nicht eindeutig?
Adressiert die einzelnen Spalten. Drei Bits bedeuten also acht Spalten.
Bearbeitung gesperrt
Die Schaltung ist für die Bearbeitung gesperrt. Dioden und FG-FETs können jedoch konfiguriert werden.
- DIL-Gehäuse verwenden
- Wird diese Schaltung eingebettet, wird sie in einem DIL-Gehäuse angezeigt.
- Um die Pins korrekt zuordnen zu können, ist an den Eingängen und Ausgängen die Pinnummer anzugeben.
Pinnummer
Nummer dieses Pins. Wird für die Darstellung einer Schaltung als DIL-Gehäuse und die
Pinzuordnung bei der Programmierung eines CPLD verwendet.
@@ -1179,10 +1176,6 @@ Sind evtl. die Namen der Variablen nicht eindeutig?
Benutzerdefinierte Form
Importieren einer SVG-Datei
- Verwende einfache Form
- Verwendet die einfache Form zur Darstellung. Hat nur einen Effekt, wenn die
- Schaltung eine Benutzerdefinierte Form oder eine DIL Form verwendet.
-
Datei beim Start in den Programmspeicher laden.
Wird ein Prozessor simuliert, der einen RAM-Baustein als Programmspeicher
verwendet, ist es schwierig, diesen Prozessor zu starten, da der RAM Inhalt beim Start der Simulation immer mit
@@ -1194,6 +1187,15 @@ Sind evtl. die Namen der Variablen nicht eindeutig?
soll.
+ Form
+ Die Form, welche für die Repräsentation der Schaltung in einer einbettenden
+ Schaltung verwendet werden soll. Bei "Layout" bestimmt die Lage der Ein- und Ausgänge in der Schaltung die
+ Position der Pins.
+ Standard
+ DIL-Gehäuse
+ Layout
+ Benutzerdefiniert
+
Ausrichtung
Lage der Koordinate relativ zum Text.
links unten
diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml
index c1e2c689e..adcf3884e 100644
--- a/src/main/resources/lang/lang_en.xml
+++ b/src/main/resources/lang/lang_en.xml
@@ -1077,9 +1077,6 @@
Addresses the individual columns. Three bits means eight columns.
Modification locked
The circuit is locked. It is possible to configure diodes and FGF-FETs.
- DIL package
- If set, this circuit is shown in a DIL package.
- To assign the pins correctly, the pin numbers must be set on all inputs and outputs.
Pin number
Number of this pin. Used for the representation of a circuit as a DIL package and
the pin assignment when programming a CPLD.
@@ -1170,9 +1167,6 @@
Custom Shape
Import of a SVG-file
- Use Default Shape
- Use the default shape instead of using the DIL or custom shape configured in the circuit.
-
Preload program memory at startup.
When simulating a processor that uses a RAM device as the program memory,
it is difficult to start this processor because the RAM contents are always initialized with zeros at the start
@@ -1184,6 +1178,14 @@
simulation.
+ Shape
+ The shape to be used for the representation of the circuit in an embedding circuit.
+ With "Layout", the position of the inputs and outputs in the circuit determines the position of the pins.
+ Default
+ DIL-Chip
+ Layout
+ User defined
+
Orientation
Position of the coordinate relative to the text.
left bottom
diff --git a/src/test/java/de/neemann/digital/integration/TestLib.java b/src/test/java/de/neemann/digital/integration/TestLib.java
index 75679d688..67e6d07ff 100644
--- a/src/test/java/de/neemann/digital/integration/TestLib.java
+++ b/src/test/java/de/neemann/digital/integration/TestLib.java
@@ -16,6 +16,7 @@ import de.neemann.digital.draw.elements.Circuit;
import de.neemann.digital.draw.elements.PinException;
import de.neemann.digital.draw.elements.VisualElement;
import de.neemann.digital.draw.library.ElementNotFoundException;
+import de.neemann.digital.draw.shapes.CustomCircuitShapeType;
import junit.framework.TestCase;
import java.io.File;
@@ -42,11 +43,11 @@ public class TestLib extends TestCase {
boolean is74xx = !dig.getName().endsWith("-inc.dig");
if (is74xx) {
- assertTrue("is not DIL", circuit.getAttributes().get(Keys.IS_DIL));
+ assertEquals("is not DIL", CustomCircuitShapeType.DIL, circuit.getAttributes().get(Keys.SHAPE_TYPE));
count74xx++;
final int w = circuit.getAttributes().get(Keys.WIDTH);
- assertTrue ("chip to small", w>=5);
+ assertTrue("chip to small", w >= 5);
}
assertTrue("is not locked", circuit.getAttributes().get(Keys.LOCKED_MODE));