From 693130cae9bdb145af79ee2eb256b661003b6e45 Mon Sep 17 00:00:00 2001
From: Nat Lasseter <user@4574.co.uk>
Date: Wed, 11 Dec 2019 21:53:12 +0000
Subject: Wrote Intcode (dis-)assembler

---
 intcode/Readme.textile | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 intcode/Readme.textile

(limited to 'intcode/Readme.textile')

diff --git a/intcode/Readme.textile b/intcode/Readme.textile
new file mode 100644
index 0000000..844faf5
--- /dev/null
+++ b/intcode/Readme.textile
@@ -0,0 +1,52 @@
+h1. Intcode (dis-)assembler
+
+p. This is an assembler and disassembler pair for the intcode vm.
+
+h2. Assembler
+
+p. East instruction, directive, or label should appear on a line by itself.
+
+h3. Usage
+
+bc. $ ./as source.code
+
+h3. Instruction codes
+
+- add 1 2 3 := Add
+- mul 1 2 3 := Multiply
+- inp 1 := Input
+- out 1 := Output
+- jnz 1 2 := Jump if not zero
+- jez 1 2 := Jump if equal to zero
+- tlt 1 2 3 := Test if less than
+- teq 1 2 3 := Test if equal to
+- arb 1 := Adjust relative base
+- hlt := Halt
+
+p. Optionally, commas may be used to separate arguments.
+
+h3. Labels
+
+p. Specify a label with:
+
+bc. label:
+
+p. then use it in the assembly. Sigilising it is valid, immediate @label@, positional <code>@label</code>, or relative @&label@. The merits of doing so in some cases are... Hmm.
+
+h3. Directives
+
+- @org location := Organise the code to this location
+- @dat 1 2 3 4 ... := Insert this data literally into the bytecode
+
+h3. Sigils
+
+- <code>@</code> := Positional argument
+- @&@ := Relative argument
+
+h2. Disassembler
+
+p. Prints the location of the start of each instruction and the instruction itself using the syntax detailed above.
+
+h3. Usage
+
+bc. $ ./das byte.code
-- 
cgit v1.2.3

