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,25 @@
C_i
-
+
- In
+ Splitter
- Label
- Op
+ rotation
+
- Bits
- 4
+ Input Splitting
+ 32
+
+
+ Output Splitting
+ 31,1
-
+
Splitter
@@ -318,35 +312,152 @@
31,1
-
+
Splitter
+
+
+ Input Splitting
+ 32
+
+
+ Output Splitting
+ 5
+
+
+
+
+
+ And
+
+
+ wideShape
+ true
+
+
+
+
+
+ XNOr
rotation
+
+ wideShape
+ true
+
+
+
+
+
+ And
+
+
+ wideShape
+ true
+
+
+
+
+
+ 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
- 32
+ 4
Output Splitting
- 31,1
+ 1*4
-
+
+
+
+ And
+
+
+ inverterConfig
+
+ In_1
+ In_2
+
+
+
+ Inputs
+ 4
+
+
+
Tunnel
NetName
- s
+ mad_s
-
+
Splitter
@@ -360,195 +471,345 @@
3
-
+
- Splitter
+ Tunnel
- Input Splitting
- 4
+ NetName
+ shift_op
+
+
+
+
+ Tunnel
+
- Output Splitting
- 1*4
+ rotation
+
+
+
+ NetName
+ shift_op
+
+
+
+
+
+ Tunnel
+
+
+ rotation
+
+
+
+ NetName
+ mad_s
-
+
And
- wideShape
- true
+ inverterConfig
+
+ In_1
+ In_2
+
+
+
+ Inputs
+ 3
+
+
+
+
+
+ Tunnel
+
+
+ NetName
+ long_z
-
+
+
+
+ Multiplexer
+
+
+
+
+ Tunnel
+
+
+ NetName
+ long_z
+
+
+
+
+
+ And
+
+
+
+
+ And
+
+
+
+
+ Or
+
+
+ Inputs
+ 3
+
+
+
Splitter
Input Splitting
- 32
+ 1*3
Output Splitting
- 5
+ 3
-
+
+
+
+ And
+
+
And
- wideShape
- true
+ inverterConfig
+
+ In_2
+ In_3
+
+
+ Inputs
+ 3
+
+
+
+
+
+ And
+
inverterConfig
+ In_1
In_2
+
+ Inputs
+ 3
+
-
+
- And
+ Or
- wideShape
- true
+ Inputs
+ 4
-
+
- XNOr
+ And
- rotation
-
+ inverterConfig
+
+ In_1
+ In_2
+
- wideShape
- true
+ Inputs
+ 3
-
+
And
- wideShape
- true
+ inverterConfig
+
+ In_1
+ In_3
+
+
+
+ Inputs
+ 3
-
-
-
- nor32.dig
-
-
+
- nor32.dig
-
-
+ Or
+
+
+ Inputs
+ 3
+
+
+
- shift32.dig
-
-
+ 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,135 +1225,187 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
+
-
+
+
+
+
+
+
+
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
-
+
-
+
@@ -975,92 +1416,192 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
@@ -1072,60 +1613,72 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+