HighFive only contains 5 instructions:
- + - increment the value at the pointer
- - - decrement the value at the pointer
- * - jump if not zero
- / - increment the pointer
- . - put memory segment into output
Like BrainFuck, any other character is a comment, and is completely ignored.
The pointer can be one of eight possible 8-bit(1-byte) values, numbered from 0 to 7. They translate to:
- These are the values that you manipulate. They are standard memory.
- This sets the memory segment. When you do this, pointers 0-4 point to a different part of memory.
- This sets the I/O port that you will use.
- This is the input for the currently selected I/O port. It can be decremented for use in a loop using -. If you use + though, it will request a bit of input.
How does * work?
It is a relative conditional jump, which works like so:
If the last value modified equals zero, then jump backwards or forwards the number of steps as indicated by the pointer, which in this case is treated as a signed number.
Here is an example program, which should print "HELLO":