summaryrefslogtreecommitdiff
path: root/2019/rust/day09/programs
diff options
context:
space:
mode:
Diffstat (limited to '2019/rust/day09/programs')
-rw-r--r--2019/rust/day09/programs/template21
-rw-r--r--2019/rust/day09/programs/test-add_immediate_immediate_position.iac29
-rw-r--r--2019/rust/day09/programs/test-add_immediate_immediate_position.out1
-rw-r--r--2019/rust/day09/programs/test-add_immediate_position_position.iac29
-rw-r--r--2019/rust/day09/programs/test-add_immediate_position_position.out1
-rw-r--r--2019/rust/day09/programs/test-add_position_immediate_position.iac32
-rw-r--r--2019/rust/day09/programs/test-add_position_immediate_position.out1
-rw-r--r--2019/rust/day09/programs/test-add_position_position_position.iac32
-rw-r--r--2019/rust/day09/programs/test-add_position_position_position.out1
-rw-r--r--2019/rust/day09/programs/test-eq_immediate_immediate_position.iac30
-rw-r--r--2019/rust/day09/programs/test-eq_immediate_immediate_position.out1
-rw-r--r--2019/rust/day09/programs/test-eq_immediate_position_position.iac30
-rw-r--r--2019/rust/day09/programs/test-eq_immediate_position_position.out1
-rw-r--r--2019/rust/day09/programs/test-eq_position_immediate_position.iac30
-rw-r--r--2019/rust/day09/programs/test-eq_position_immediate_position.out1
-rw-r--r--2019/rust/day09/programs/test-eq_position_position_position.iac30
-rw-r--r--2019/rust/day09/programs/test-eq_position_position_position.out1
-rw-r--r--2019/rust/day09/programs/test-halt.iac21
-rw-r--r--2019/rust/day09/programs/test-halt.out0
-rw-r--r--2019/rust/day09/programs/test-in_position_out_position.iac28
-rw-r--r--2019/rust/day09/programs/test-in_position_out_position.in1
-rw-r--r--2019/rust/day09/programs/test-in_position_out_position.out1
-rw-r--r--2019/rust/day09/programs/test-jmpfalse_immediate_immediate.iac28
-rw-r--r--2019/rust/day09/programs/test-jmpfalse_immediate_immediate.out1
-rw-r--r--2019/rust/day09/programs/test-jmpfalse_immediate_position.iac31
-rw-r--r--2019/rust/day09/programs/test-jmpfalse_immediate_position.out1
-rw-r--r--2019/rust/day09/programs/test-jmpfalse_position_immediate.iac31
-rw-r--r--2019/rust/day09/programs/test-jmpfalse_position_immediate.out1
-rw-r--r--2019/rust/day09/programs/test-jmpfalse_position_position.iac34
-rw-r--r--2019/rust/day09/programs/test-jmpfalse_position_position.out1
-rw-r--r--2019/rust/day09/programs/test-jmptrue_immediate_immediate.iac29
-rw-r--r--2019/rust/day09/programs/test-jmptrue_immediate_immediate.out1
-rw-r--r--2019/rust/day09/programs/test-jmptrue_immediate_position.iac31
-rw-r--r--2019/rust/day09/programs/test-jmptrue_immediate_position.out1
-rw-r--r--2019/rust/day09/programs/test-jmptrue_position_immediate.iac28
-rw-r--r--2019/rust/day09/programs/test-jmptrue_position_immediate.out1
-rw-r--r--2019/rust/day09/programs/test-jmptrue_position_position.iac31
-rw-r--r--2019/rust/day09/programs/test-jmptrue_position_position.out1
-rw-r--r--2019/rust/day09/programs/test-out_immediate.iac11
-rw-r--r--2019/rust/day09/programs/test-out_immediate.out1
40 files changed, 585 insertions, 0 deletions
diff --git a/2019/rust/day09/programs/template b/2019/rust/day09/programs/template
new file mode 100644
index 0000000..b417129
--- /dev/null
+++ b/2019/rust/day09/programs/template
@@ -0,0 +1,21 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Halt
+99
diff --git a/2019/rust/day09/programs/test-add_immediate_immediate_position.iac b/2019/rust/day09/programs/test-add_immediate_immediate_position.iac
new file mode 100644
index 0000000..a9b7495
--- /dev/null
+++ b/2019/rust/day09/programs/test-add_immediate_immediate_position.iac
@@ -0,0 +1,29 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Add
+1101,8,14,7
+
+4,7
+
+# Halt
+99
+
+# Result
+0
diff --git a/2019/rust/day09/programs/test-add_immediate_immediate_position.out b/2019/rust/day09/programs/test-add_immediate_immediate_position.out
new file mode 100644
index 0000000..2bd5a0a
--- /dev/null
+++ b/2019/rust/day09/programs/test-add_immediate_immediate_position.out
@@ -0,0 +1 @@
+22
diff --git a/2019/rust/day09/programs/test-add_immediate_position_position.iac b/2019/rust/day09/programs/test-add_immediate_position_position.iac
new file mode 100644
index 0000000..20188cf
--- /dev/null
+++ b/2019/rust/day09/programs/test-add_immediate_position_position.iac
@@ -0,0 +1,29 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Add
+101,14,8,7
+
+4,7
+
+# Halt
+99
+
+# Result
+0, 13
diff --git a/2019/rust/day09/programs/test-add_immediate_position_position.out b/2019/rust/day09/programs/test-add_immediate_position_position.out
new file mode 100644
index 0000000..f64f5d8
--- /dev/null
+++ b/2019/rust/day09/programs/test-add_immediate_position_position.out
@@ -0,0 +1 @@
+27
diff --git a/2019/rust/day09/programs/test-add_position_immediate_position.iac b/2019/rust/day09/programs/test-add_position_immediate_position.iac
new file mode 100644
index 0000000..b5894d8
--- /dev/null
+++ b/2019/rust/day09/programs/test-add_position_immediate_position.iac
@@ -0,0 +1,32 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Add
+1001,8,9,7
+
+4,7
+
+# Halt
+99
+
+# Result
+0, 21
+
+# Halt
+99
diff --git a/2019/rust/day09/programs/test-add_position_immediate_position.out b/2019/rust/day09/programs/test-add_position_immediate_position.out
new file mode 100644
index 0000000..64bb6b7
--- /dev/null
+++ b/2019/rust/day09/programs/test-add_position_immediate_position.out
@@ -0,0 +1 @@
+30
diff --git a/2019/rust/day09/programs/test-add_position_position_position.iac b/2019/rust/day09/programs/test-add_position_position_position.iac
new file mode 100644
index 0000000..c68d932
--- /dev/null
+++ b/2019/rust/day09/programs/test-add_position_position_position.iac
@@ -0,0 +1,32 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Add
+1,8,9,7
+
+4,7
+
+# Halt
+99
+
+# Result
+0, 11, 81
+
+# Halt
+99
diff --git a/2019/rust/day09/programs/test-add_position_position_position.out b/2019/rust/day09/programs/test-add_position_position_position.out
new file mode 100644
index 0000000..cd5b025
--- /dev/null
+++ b/2019/rust/day09/programs/test-add_position_position_position.out
@@ -0,0 +1 @@
+92
diff --git a/2019/rust/day09/programs/test-eq_immediate_immediate_position.iac b/2019/rust/day09/programs/test-eq_immediate_immediate_position.iac
new file mode 100644
index 0000000..4bdf1d1
--- /dev/null
+++ b/2019/rust/day09/programs/test-eq_immediate_immediate_position.iac
@@ -0,0 +1,30 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Add
+1108,5,5,7
+
+# Out
+4,7
+
+# Halt
+99
+
+# Result
+0
diff --git a/2019/rust/day09/programs/test-eq_immediate_immediate_position.out b/2019/rust/day09/programs/test-eq_immediate_immediate_position.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-eq_immediate_immediate_position.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-eq_immediate_position_position.iac b/2019/rust/day09/programs/test-eq_immediate_position_position.iac
new file mode 100644
index 0000000..caaeee9
--- /dev/null
+++ b/2019/rust/day09/programs/test-eq_immediate_position_position.iac
@@ -0,0 +1,30 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Add
+108,99,6,7
+
+# Out
+4,7
+
+# Halt
+99
+
+# Result
+0
diff --git a/2019/rust/day09/programs/test-eq_immediate_position_position.out b/2019/rust/day09/programs/test-eq_immediate_position_position.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-eq_immediate_position_position.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-eq_position_immediate_position.iac b/2019/rust/day09/programs/test-eq_position_immediate_position.iac
new file mode 100644
index 0000000..51f2129
--- /dev/null
+++ b/2019/rust/day09/programs/test-eq_position_immediate_position.iac
@@ -0,0 +1,30 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Equals
+1008,6,99,7
+
+# Out
+4,7
+
+# Halt
+99
+
+# Result
+0
diff --git a/2019/rust/day09/programs/test-eq_position_immediate_position.out b/2019/rust/day09/programs/test-eq_position_immediate_position.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-eq_position_immediate_position.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-eq_position_position_position.iac b/2019/rust/day09/programs/test-eq_position_position_position.iac
new file mode 100644
index 0000000..de2bc1f
--- /dev/null
+++ b/2019/rust/day09/programs/test-eq_position_position_position.iac
@@ -0,0 +1,30 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Equals
+8,6,6,7
+
+# Out
+4,7
+
+# Halt
+99
+
+# Result
+0
diff --git a/2019/rust/day09/programs/test-eq_position_position_position.out b/2019/rust/day09/programs/test-eq_position_position_position.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-eq_position_position_position.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-halt.iac b/2019/rust/day09/programs/test-halt.iac
new file mode 100644
index 0000000..b417129
--- /dev/null
+++ b/2019/rust/day09/programs/test-halt.iac
@@ -0,0 +1,21 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# Halt
+99
diff --git a/2019/rust/day09/programs/test-halt.out b/2019/rust/day09/programs/test-halt.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/2019/rust/day09/programs/test-halt.out
diff --git a/2019/rust/day09/programs/test-in_position_out_position.iac b/2019/rust/day09/programs/test-in_position_out_position.iac
new file mode 100644
index 0000000..1892ecf
--- /dev/null
+++ b/2019/rust/day09/programs/test-in_position_out_position.iac
@@ -0,0 +1,28 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# In
+3,5
+# Out
+4,5
+# Halt
+99
+
+# Output value
+0
diff --git a/2019/rust/day09/programs/test-in_position_out_position.in b/2019/rust/day09/programs/test-in_position_out_position.in
new file mode 100644
index 0000000..425151f
--- /dev/null
+++ b/2019/rust/day09/programs/test-in_position_out_position.in
@@ -0,0 +1 @@
+40
diff --git a/2019/rust/day09/programs/test-in_position_out_position.out b/2019/rust/day09/programs/test-in_position_out_position.out
new file mode 100644
index 0000000..425151f
--- /dev/null
+++ b/2019/rust/day09/programs/test-in_position_out_position.out
@@ -0,0 +1 @@
+40
diff --git a/2019/rust/day09/programs/test-jmpfalse_immediate_immediate.iac b/2019/rust/day09/programs/test-jmpfalse_immediate_immediate.iac
new file mode 100644
index 0000000..e926e3e
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmpfalse_immediate_immediate.iac
@@ -0,0 +1,28 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# JmpFalse
+1106,0,5
+
+# Out
+104,-1
+104,1
+
+# Halt
+99
diff --git a/2019/rust/day09/programs/test-jmpfalse_immediate_immediate.out b/2019/rust/day09/programs/test-jmpfalse_immediate_immediate.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmpfalse_immediate_immediate.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-jmpfalse_immediate_position.iac b/2019/rust/day09/programs/test-jmpfalse_immediate_position.iac
new file mode 100644
index 0000000..7048632
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmpfalse_immediate_position.iac
@@ -0,0 +1,31 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# JmpFalse
+106,0,8
+
+# Out
+104,-1
+104,1
+
+# Halt
+99
+
+# Jump target
+5
diff --git a/2019/rust/day09/programs/test-jmpfalse_immediate_position.out b/2019/rust/day09/programs/test-jmpfalse_immediate_position.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmpfalse_immediate_position.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-jmpfalse_position_immediate.iac b/2019/rust/day09/programs/test-jmpfalse_position_immediate.iac
new file mode 100644
index 0000000..4b00314
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmpfalse_position_immediate.iac
@@ -0,0 +1,31 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# JmpFalse
+1006,8,5
+
+# Out
+104,-1
+104,1
+
+# Halt
+99
+
+# Value
+0
diff --git a/2019/rust/day09/programs/test-jmpfalse_position_immediate.out b/2019/rust/day09/programs/test-jmpfalse_position_immediate.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmpfalse_position_immediate.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-jmpfalse_position_position.iac b/2019/rust/day09/programs/test-jmpfalse_position_position.iac
new file mode 100644
index 0000000..ea536f7
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmpfalse_position_position.iac
@@ -0,0 +1,34 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# JmpFalse
+6,9,8
+
+# Out
+104,-1
+104,1
+
+# Halt
+99
+
+# Target addr
+5
+
+# Value
+0
diff --git a/2019/rust/day09/programs/test-jmpfalse_position_position.out b/2019/rust/day09/programs/test-jmpfalse_position_position.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmpfalse_position_position.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-jmptrue_immediate_immediate.iac b/2019/rust/day09/programs/test-jmptrue_immediate_immediate.iac
new file mode 100644
index 0000000..cc4d669
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmptrue_immediate_immediate.iac
@@ -0,0 +1,29 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# JmpTrue
+1105,1,5
+
+# Out
+104,-1
+104,1
+
+# Halt
+99
+
diff --git a/2019/rust/day09/programs/test-jmptrue_immediate_immediate.out b/2019/rust/day09/programs/test-jmptrue_immediate_immediate.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmptrue_immediate_immediate.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-jmptrue_immediate_position.iac b/2019/rust/day09/programs/test-jmptrue_immediate_position.iac
new file mode 100644
index 0000000..a25b903
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmptrue_immediate_position.iac
@@ -0,0 +1,31 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# JmpTrue
+105,1,8
+
+# Out
+104,-1
+104,1
+
+# Halt
+99
+
+# Jump target
+5
diff --git a/2019/rust/day09/programs/test-jmptrue_immediate_position.out b/2019/rust/day09/programs/test-jmptrue_immediate_position.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmptrue_immediate_position.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-jmptrue_position_immediate.iac b/2019/rust/day09/programs/test-jmptrue_position_immediate.iac
new file mode 100644
index 0000000..a4f4245
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmptrue_position_immediate.iac
@@ -0,0 +1,28 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# JmpTrue
+1005,0,5
+
+# Out
+104,-1
+104,1
+
+# Halt
+99
diff --git a/2019/rust/day09/programs/test-jmptrue_position_immediate.out b/2019/rust/day09/programs/test-jmptrue_position_immediate.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmptrue_position_immediate.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-jmptrue_position_position.iac b/2019/rust/day09/programs/test-jmptrue_position_position.iac
new file mode 100644
index 0000000..ed68de5
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmptrue_position_position.iac
@@ -0,0 +1,31 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+#
+# 1 (3) Add
+# 2 (3) Mul
+# 7 (3) LessThan
+# 8 (3) Equals
+# 3 (1) In
+# 4 (1) Out
+# 5 (2) JmpTrue
+# 6 (2) JmpFalse
+# 9 (1) BaseMod
+# 99 (0) Halt
+
+# JmpTrue
+5,0,8
+
+# Out
+104,-1
+104,1
+
+# Halt
+99
+
+# Addr
+5
diff --git a/2019/rust/day09/programs/test-jmptrue_position_position.out b/2019/rust/day09/programs/test-jmptrue_position_position.out
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/2019/rust/day09/programs/test-jmptrue_position_position.out
@@ -0,0 +1 @@
+1
diff --git a/2019/rust/day09/programs/test-out_immediate.iac b/2019/rust/day09/programs/test-out_immediate.iac
new file mode 100644
index 0000000..4aa8ccf
--- /dev/null
+++ b/2019/rust/day09/programs/test-out_immediate.iac
@@ -0,0 +1,11 @@
+# ABCDE
+# 210xx
+#
+# DE - two-digit opcode, xx == opcode x
+# C - mode of 1st parameter, 0 == position mode
+# B - mode of 2nd parameter, 1 == immediate mode
+# A - mode of 3rd parameter, 0 == relative mode,
+
+# Out immediate
+104,123
+99
diff --git a/2019/rust/day09/programs/test-out_immediate.out b/2019/rust/day09/programs/test-out_immediate.out
new file mode 100644
index 0000000..190a180
--- /dev/null
+++ b/2019/rust/day09/programs/test-out_immediate.out
@@ -0,0 +1 @@
+123