FolderCode

FolderCode is an esoteric programming language created by Dominicentek. It's main gimmick is that it's written as a folder structure with names being commands. FolderCode compiles into bytecode file called with .fc extension. It's compiler, runtime and interpreter was written in Java.
== Commands and Syntax ==
All commands have to be uppercased. Before you type a command, you enter an order number followed by a space. Exactly like in BASIC.
There are 100 storage slots and 100 function slots.
Storage slots store signed 32-bit numbers.
Function slots store code that can be executed with the CALLFUNC command.
 FolderCode commands
Command 	Syntax 	Description
SET 	<storage slot : slot index> <value : new value>	Sets a value to a storage slot
PRN 	<value : printed value> 	Prints a number to the console
TXTPRN 	<value : printed character> 	Prints an Unicode character to the console
LOOP 	<value : amount> 	Loops code inside this folder n times
IF 	 	
ELSE 	 	If the above IF command returns false, Code inside this folder gets executed instead
ADD 	<slot : storage slot index> <value : number> 	Adds a value to a storage slot
SUB 	<slot : storage slot index> <value : number> 	Subtracts a value from a storage slot
MUL 	<slot : storage slot index> <value : number> 	Multiplies storage slot value n times
DIV 	<slot : storage slot index> <value : number> 	Divides a value in a storage slot
MOD 	<slot : storage slot index> <value : number> 	Modules (gets division reminder) a value in a storage slot
TXTUSER 	<slot : storage slot index> 	Puts Unicode characters from user input into multiple storage slots.
SETACTIVESLOT	<value : slot index> 	Marks a storage slot as active
FUNCTION 	<value : function slot index> 	Puts code inside this folder to a function slot
CALLFUNC 	<value : function slot index> 	Executes code inside a function slot
DELAY 	<value : delay in ms> 	Pauses the code for specified amount of time (in milliseconds)
EXIT 	 	Stops the program from running
=== Difference between value, slot and constant numbers ===
Value number can either be a constant or a value command.
Slot number can either be a constant or ACTIVESLOT variable, which returns active slot's index.
Constant can only be a number.
 Value commands
Command 	Syntax 	Description
GET 	<constant : slot index>	Gets a value from a storage slot
USER 	 	Gets an user input as a number
LOOPAMOUNT 	 	Amount of times a loop has executed its code. If there's no loop active, this returns 0.
GETACTIVESLOT	 	Gets a value inside an active slot
RANDOM 	<constant : range> 	Generates a random number based on entered range. The range is: 0 to n - 1
== Examples ==
=== Hello World ===
┏ TXTPRN 72
┣ TXTPRN 101
┣ TXTPRN 108
┣ TXTPRN 108
┣ TXTPRN 111
┣ TXTPRN 32
┣ TXTPRN 87
┣ TXTPRN 111
┣ TXTPRN 114
┣ TXTPRN 108
┣ TXTPRN 100
┗ TXTPRN 33
=== Truth Machine ===
┏ SET 0 USER
┣ IF GET 0 IS 0
┃ ┗ PRN 0
┗ ELSE
 ┣ FUNCTION 0
 ┃ ┣ PRN 1
 ┃ ┗ CALLFUNC 0
 ┗ CALLFUNC 0
=== Fizz Buzz ===
╺ LOOP USER
 ┣ SET 0 LOOPAMOUNT
 ┣ ADD 0 1
 ┣ SET 1 GET 0
 ┣ SET 2 GET 0
 ┣ MOD 1 3
 ┣ MOD 2 5
 ┣ IF GET 1 IS 0
 ┃ ┣ TXTPRN 70
 ┃ ┣ TXTPRN 105
 ┃ ┣ TXTPRN 122
 ┃ ┗ TXTPRN 122
 ┣ IF GET 2 IS 0
 ┃ ┣ TXTPRN 66
 ┃ ┣ TXTPRN 117
 ┃ ┣ TXTPRN 122
 ┃ ┗ TXTPRN 122
 ┣ IF GET 1 NOT 0
 ┃ ┗ IF GET 2 NOT 0
 ┃ ┗ PRN GET 0
 ┗ TXTPRN 10
== Development Kit ==
Download
=== Difference between Runtime and Interpreter ===
Runtime executes compiled code (.fc files), but interpreter executes code directly.
Interpreter is meant to test the code faster and Compiler + Runtime is meant to share your program.
== Changelog ==
=== Version 1.2.1 ===
* Fixed bugs
* The entire development kit is just one single JAR file
=== Version 1.2 ===
* Added DELAY command
=== Version 1.1 ===
* Added SETACTIVESLOT command
* Added FUNCTION command
* Added CALLFUNC command
* Added LOOPAMOUNT value command
* Added GETACTIVESLOT value command
* Added RANDOM value command
* Added ACTIVESLOT variable for storage slots
* Released publicly for esolangs.org
=== Version 1.0 ===
Initial release
Intended for an esolang YouTuber Truttle1
==See also==
* Folders
* Unary Filesystem
* Dirst
Category:Languages
Category:2021