0.0.6 • Published 3 years ago

redc v0.0.6

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

redc

the compiler for REDlang, a minecraft general purpose computer

Usage

$ npm install -g redc
$ redc -f <path/to/file>

All options: | option | short | description | |--------|-------|-------------| | --file | -f | Path to input RED file required | --out | -o | Directory to output .mcfunction (defaults to the current directory) | --name | -n | Name of the outputted .mcfunction file (defaults to name of <file>)

In node

import redc from 'redc';
// or: import { compile } from 'redc';

redc.compile(...).then(console.log);
// => "setblock..."

Executing code on the computer

  1. Build the code: redc -f <filename> -o
  2. Find the save file of your copy of the computer (typically in AppData/Roaming/.minecraft/saves/... on Windows)
  3. Copy the .mcfunction file into datapacks/red/data/red/functions
  4. Enter the world in Minecraft (if you are already in it, leave so the game reparses functions)
  5. Enter command /function red:<filename>
  6. Go to the front of the ROM and disable the breaker right outside it (the row of pistons)

REDlang

REDlang is very low level. Every line translates 1:1 with machine code. A VSCode extension for syntax highlighting is available for install redlang

Example:

use i = ram:0
use counter = device:0

@entry
[Main]
i = 0
goto Loop

[Loop]
counter = i
i = i plus 1

# i will roll over eventually and then the `if` will not pass
goto Loop if i

# fall through
exit

The code will run like a for loop, writing the index to the first word of device memory, starting from 0 and counting until it overflows at 63.

Breakdown

  • The code defines two variables, allocating their sources and address in memory, syntax being: use <variable> = <ram|device|input>:<address>.
  • It defines two routines, Main and Loop, tagging Main as the entry routine.
  • i is initialized to 0 because there might be some memory from an old execution.
  • counter cannot be assigned to counter + 1 because counter is write-only memory.
0.0.6

3 years ago

0.0.1

3 years ago

0.0.3

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.0

3 years ago