BrainfuckX

From Esolang
Jump to navigation Jump to search

BrainfuckX is an extension of brainfuck that is backwards compatible with all uncommented brainfuck programs.

Cells are unsigned bytes. The cell pointer starts in the leftmost cell.

Instructions

+  - Add 1 to the current cell.

-  - Subtract one from the current cell.

>  - Move the cell pointer right.

<  - Move the cell pointer left.

[  - If current cell is 0 jump to corresponding ]

]  - Jump to corresponding [
 
.  - Send character in current cell to the current interface.

,  - Receive a character of input from the current interface and store it in the current cell.

@  - Cycle through interfaces. See #Interfaces.

!  - Move the cell pointer to the leftmost cell.

^  - Move the instruction pointer to the instruction in position N where N is the value in the current cell (starting at 0).

;  - Move the instruction pointer to the last ^ ran.

*  - Move the cell pointer to the value in the current cell.

%  - Set the current cell and the next three cells to Unix time.

?  - Randomize the value in the current cell.

Interfaces

The initial interface is console IO (STDIN / STDOUT).

Interfaces rotate through the following:

  1. (STDIN / STDOUT)
  2. (STDIN / STDERR)
  3. URL - No input. Output writes to the end of the URL string. Use character 127 to delete the last character of the URL string.
  4. FILEIO - read and write to the file at the URL string.
  5. INTERNET - read the web page at the URL string.
  6. SERIAL IO
  7. TERMINAL - write a command until character 0. Then run the command in the system terminal. Then read the return code.