HighFive
From Esolang
HighFive is an esoteric programming language by Ben Russell, which is loosely inspired by Brainfuck.
Contents |
[edit] Specification
The HighFive command set goes as such:
- +: increase what's at the pointer, or if pointer = 7, get input.
- -: decrease what's at the pointer, including if pointer = 7.
- /: increase the pointer. If pointer goes past 7, reset it to 0.
- *: if the last value modified is not 0, relative jump:
- Whatever's at the pointer, move Program Counter (PC) forward or backward that number of steps.
- .: output whatever's at the pointer.
- (That's a full stop. It doesn't show up well.)
Anything else is a comment.
[edit] What's at each pointer
- 0: memory slot #0
- 1: memory slot #1
- 2: memory slot #2
- 3: memory slot #3
- 4: memory slot #4
- 5: segment
- 6: I/O address
- 7: input
It's not too dissimilar to a CPU architecture.
[edit] I/O address list
- 0: CON (keyboard / screen)
[edit] Proposed I/O
- Extra segment ('cos the memory's too low)
(Any more, just drop it in here.)
[edit] How the segments work
Just change slot #5. Values are shown in hex.
00: 000 001 002 003 004 01: 005 006 007 008 009 02: 00A 00B 00C 00D 00E 03: 00F 010 011 012 013 ... ... ... ... ... ... FE: 4F6 4F7 4F8 4F9 4FA FF: 4FB 4FC 4FD 4FE 4FF
So you have 1280 bytes of RAM. If someone needs more then I'll rig up a mapper over one of the I/O ports, else it'll stay as-is. Just one 8-bit value can boost it up to 327680 bytes (320KB), which is more than Brainf*ck's 44000B.
[edit] Examples
HELLO:
-----------------------------------////++++++++//// /+++++++++/+++++++++++++/++++/-////*/ ./---.+++++++..+++././/////+++++++++++++++./.+++.------.--------./+.
[edit] External resources
[edit] Interpreter license
This is not Public Domain, although it is rather close to it. If you wish to redistribute the interpreter or a modified version, just contact me on the wiki. It will most likely result in a yes, although I need to know where it's at. The HighFive format, however, is Public Domain. --Thematrixeatsyou 09:02, 9 Jul 2006 (UTC)

