diff --git a/INSTRUCTIONS.md b/INSTRUCTIONS.md
index 278cbb0..df4014e 100644
--- a/INSTRUCTIONS.md
+++ b/INSTRUCTIONS.md
@@ -187,16 +187,26 @@ could be implemented with pop/jump
### POP
-# Planned to haves
+# Planned features
- 1-cycle shift and add
- 1-cycle intger division
-- floating point arithmetic
- interrupts
+- timers
+ * watchdog timers
- atomic compare-and-swap
- atomic load-link/store-conditional
- memory management
- memory-mapped registers
-- sine and cosine functions, see [cordic][1]
+- co-processor design and abi
+ * sine and cosine functions as co-processor, see [cordic][1]
+ * floating point arithmetic
+ * cryptographic functions as a co-processor
+ - AES
+ - CRC32
+ - Parity check
+ - md5
+ - SHA-1
+ - SHA-256
[1]: https://en.wikipedia.org/wiki/CORDIC
diff --git a/alu.dig b/alu.dig
index 4790a7c..0df437c 100644
--- a/alu.dig
+++ b/alu.dig
@@ -67,7 +67,7 @@
32
-
+
In
@@ -81,7 +81,7 @@
32
-
+
multiply-add.dig
@@ -100,7 +100,7 @@
32
-
+
Neg
@@ -112,16 +112,6 @@
-
- Out
-
-
- Label
- LZ
-
-
-
-
Out
@@ -130,7 +120,7 @@
Z
-
+
Splitter
@@ -218,7 +208,7 @@
0
-
+
Out
@@ -263,7 +253,7 @@
NetName
- s
+ sel
@@ -273,7 +263,7 @@
NetName
- s
+ sel
@@ -286,21 +276,7 @@
C_i
-
-
-
- In
-
-
- Label
- Op
-
-
- Bits
- 4
-
-
-
+
Splitter
@@ -318,7 +294,7 @@
31,1
-
+
Splitter
@@ -336,55 +312,7 @@
31,1
-
-
-
- Tunnel
-
-
- NetName
- s
-
-
-
-
-
- Splitter
-
-
- Input Splitting
- 1*3
-
-
- Output Splitting
- 3
-
-
-
-
-
- Splitter
-
-
- Input Splitting
- 4
-
-
- Output Splitting
- 1*4
-
-
-
-
-
- And
-
-
- wideShape
- true
-
-
-
+
Splitter
@@ -398,23 +326,7 @@
5
-
-
-
- And
-
-
- wideShape
- true
-
-
- inverterConfig
-
- In_2
-
-
-
-
+
And
@@ -438,7 +350,7 @@
true
-
+
And
@@ -448,107 +360,456 @@
true
-
-
-
- nor32.dig
-
nor32.dig
-
+
+
+
+ nor32.dig
+
+
shift32.dig
-
+
+
+
+ Text
+
+
+ Description
+ ALU Opcode
+
+0000 -> ADD
+0001 -> SUB
+0010 -> MAD
+0011 -> MADS
+0100 -> AND
+0101 -> OR
+0110 -> XOR
+0111 -> NEG
+1000 -> LSL
+1001 -> LSR
+1010 -> SCL
+1011 -> SCR
+1100 -> ROL
+1101 -> ROR
+1110 -> ASR
+1111 -> NOP
+
+
+
+
+
+ In
+
+
+ Label
+ OP
+
+
+ Bits
+ 4
+
+
+
+
+
+ Splitter
+
+
+ Input Splitting
+ 4
+
+
+ Output Splitting
+ 1*4
+
+
+
+
+
+ And
+
+
+ inverterConfig
+
+ In_1
+ In_2
+
+
+
+ Inputs
+ 4
+
+
+
+
+
+ Tunnel
+
+
+ NetName
+ mad_s
+
+
+
+
+
+ Splitter
+
+
+ Input Splitting
+ 1*3
+
+
+ Output Splitting
+ 3
+
+
+
+
+
+ Tunnel
+
+
+ NetName
+ shift_op
+
+
+
+
+
+ Tunnel
+
+
+ rotation
+
+
+
+ NetName
+ shift_op
+
+
+
+
+
+ Tunnel
+
+
+ rotation
+
+
+
+ NetName
+ mad_s
+
+
+
+
+
+ And
+
+
+ inverterConfig
+
+ In_1
+ In_2
+
+
+
+ Inputs
+ 3
+
+
+
+
+
+ Tunnel
+
+
+ NetName
+ long_z
+
+
+
+
+
+ Multiplexer
+
+
+
+
+ Tunnel
+
+
+ NetName
+ long_z
+
+
+
+
+
+ And
+
+
+
+
+ And
+
+
+
+
+ Or
+
+
+ Inputs
+ 3
+
+
+
+
+
+ Splitter
+
+
+ Input Splitting
+ 1*3
+
+
+ Output Splitting
+ 3
+
+
+
+
+
+ And
+
+
+
+
+ And
+
+
+ inverterConfig
+
+ In_2
+ In_3
+
+
+
+ Inputs
+ 3
+
+
+
+
+
+ And
+
+
+ inverterConfig
+
+ In_1
+ In_2
+
+
+
+ Inputs
+ 3
+
+
+
+
+
+ Or
+
+
+ Inputs
+ 4
+
+
+
+
+
+ And
+
+
+ inverterConfig
+
+ In_1
+ In_2
+
+
+
+ Inputs
+ 3
+
+
+
+
+
+ And
+
+
+ inverterConfig
+
+ In_1
+ In_3
+
+
+
+ Inputs
+ 3
+
+
+
+
+
+ Or
+
+
+ Inputs
+ 3
+
+
+
+
+
+ Tunnel
+
+
+ NetName
+ sel
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
+
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -556,55 +817,91 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
-
+
-
+
+
+
+
+
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -612,23 +909,35 @@
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
@@ -636,35 +945,51 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
@@ -672,27 +997,31 @@
-
-
+
+
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
+
-
+
@@ -700,31 +1029,55 @@
-
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -740,15 +1093,15 @@
-
-
+
+
-
+
@@ -756,79 +1109,115 @@
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
+
+
+
+
+
-
-
-
-
-
-
+
+
-
-
+
+
-
+
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -836,57 +1225,141 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
-
+
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -895,76 +1368,44 @@
-
-
-
-
-
+
-
+
-
-
-
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
+
-
-
+
+
-
+
+
+
+
+
@@ -976,91 +1417,191 @@
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
@@ -1072,61 +1613,73 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file