summaryrefslogtreecommitdiff
path: root/interpreter.md
diff options
context:
space:
mode:
Diffstat (limited to 'interpreter.md')
-rw-r--r--interpreter.md57
1 files changed, 57 insertions, 0 deletions
diff --git a/interpreter.md b/interpreter.md
new file mode 100644
index 0000000..54a6c2a
--- /dev/null
+++ b/interpreter.md
@@ -0,0 +1,57 @@
+# interpreter
+
+This is a small program intended to help with testing the 6502 CPU, or running programs on it.
+
+The expected input is machine code written in plaintext.
+
+The program assumes you will write statements correctly so it doesn't waste time checking that you put four digits in instead of three. If you are using this I assume you know what you are doing.
+
+The program accepts stdin, so it can be used in two ways.
+- Typing instructions inline.
+- Piping a file in with cat.
+
+## Instructions
+
+To express the syntax of instructions, here are some valid examples to express LDA $01:
+
+ a901
+ A901
+ A9 01
+
+If you downloaded my project on Github, I have included a PDF called `opcodes_reference.pdf` which has a table with every legal opcode in it.
+
+Statements can be seperated or on a single line. For instance,
+
+ a901
+ p
+ q
+
+Can be written as
+
+ a901pq
+
+The only case in which this should be avoided is after an M/m command.
+
+## Debug Commands
+
+The interpreter comes with multiple statements for the purpose of debugging the emulator.
+
+`Q/q` Quits the program.
+Will cause segfault at end of file if not used.
+
+`R/r` Resets the virtual computer.
+
+`P/p` Dumps processor state.
+
+`M/m` Prints out memory.
+There are two forms which memory can be printed.
+The first is `sXX` where `XX` is a memory page. The whole page of memory is printed onto the screen.
+The second is `sXXXX` where `XXXX` is a specific address. This prints out the value of the 1 byte requested.
+Be aware that unallocated memory will be dumped if it happens to be accessed with this command. Also be aware that there should be a newline directly after this command.
+
+`S/s` Directly set a piece of memory.
+Syntax is strictly of form `sXXXX.xx` where `XXXX` is the address and `xx` is the value.
+
+`/` Prints until newline.
+
+`#` Ignores until newline. \ No newline at end of file