Free2Edit
![]() |
|
| Designed by | User:RikoMamaBala |
|---|---|
| Appeared in | Category:2026 |
| Computational class | Turing-complete |
| Major implementations | Scratch |
Free2Edit is (technically) the first esolang that I made. It's kinda like a Brainfuck derivative, but more powerful. The reason I named it that is because I thought I could implement Free Esolang with this esolang, but I couldn't, so... I guess I could say code written on it is obfuscated?
Instructions
Free2Edit consists of 100000 8-bit cells and you are currently pointing to a cell.
| Code | What it does |
|---|---|
| [instr][val] | [val] must be one digit,[instr] can be +, -, *, /, m, does [instr] on the current cell by [val]. If [val] is c, do [instr] on current cell by the value of the next cell. |
| r[val] | moves the pointer right [val] cells. |
| l[val] | moves the pointer left [val] cells. |
| oc | Outputs current cell as ASCII. |
| on | Outputs current cell as a number. |
| p[chr] | Prints the [chr], where [chr] is one letter long. |
| ws | while current cell isn't 0: |
| we | end while not zero |
| wz | while current cell is 0: |
| wx | end while zero |
| is | if current cell isn't 0: |
| ie | end if or NOP if you want. Doesn't error when unmatched. |
| iz | if current cell is 0: |
| ix | end if zero. |
| gc | Get one character and store into cell as ASCII. |
| gn | Get one character and store into cell as a number. |
| ds[in][code]de | Define [in] as [code], where [in] is 2 characters. |
| xx | Change cell bits to xx, where xx is a two digit integer. |
| t[type] | Set type to [type], n is signed integer, f is float, and anything else is an unsigned 8-bit integer. You could of course change it to be 16 or 32-bit with the xx instruction.
|
| s[chr] | Set current cell to [chr]. |
The #stuff between octothorpes# are not executed and are treated as comments, because if they were treated as instructions,...
NaN 0 0 0 0 0 0...
...disasters would happen.
Note that all instructions are two characters long.
Examples
Hello, World!
pHpeplplpop,p pWpoprplpdp!
Cat program
gcwsocgcwe
Copy current cell to next cell
r1ws-1wer1ws-1wel2wsr1+1r1+1l2-1wer2ws-1l2+1r2wel2
Shorter version:
wsr1+1l1-1we+c
99 bottles of beer
With the grammar errors
+9*5*2+9r1+5+5l1wsonp pbpoptptplpepsp popfp pbpepeprp popnp ptphpep pwpaplplp,r1ocl1onp pbpoptptplpepsp popfp pbpepeprp.r1ocl1pTpapkpep popnpep pdpopwpnp,r1ocl1pPpapspsp piptp paprpopupnpdp,r1ocl1-1onp pbpoptptplpepsp popfp pbpepeprp popnp ptphpep pwpaplplp!r1ococl1wepNpop pmpoprpep pbpoptptplpepsp popfp pbpepeprp popnp ptphpep pwpaplplp,r1ocl1pNpop pmpoprpep pbpoptptplpepsp popfp pbpepeprp.r1ocl1pGpop ptpop ptphpep psptpoprpep papnpdp pbpupyp pspopmpep pmpoprpep,r1ocl1p9p9p pbpoptptplpepsp popfp pbpepeprp popnp ptphpep pwpaplplp!
Without the grammar errors
+9*5*2+9r1+5+5l1wsonp pbpoptptplpe-1ispsie+1p popfp pbpepeprp popnp ptphpep pwpaplplp,r1ocl1onp pbpoptptplpe-1ispsie+1p popfp pbpepeprp.r1ocl1pTpapkpep popnpep pdpopwpnp,r1ocl1pPpapspsp piptp paprpopupnpdp,r1ocl1-1onp pbpoptptplpe-1ispsie+1p popfp pbpepeprp popnp ptphpep pwpaplplp!r1ococl1wep0p pbpoptptplpepsp popfp pbpepeprp popnp ptphpep pwpaplplp,r1ocl1p0p pbpoptptplpepsp popfp pbpepeprp.r1ocl1pGpop ptpop ptphpep psptpoprpep papnpdp pbpupyp pspopmpep pmpoprpep,r1ocl1p9p9p pbpoptptplpepsp popfp pbpepeprp popnp ptphpep pwpaplplp!
Infinite, without the grammar errors
r1+5+5l2+1wsr1+9*5*2+9wsonp pbpoptptplpe-1ispsie+1p popfp pbpepeprp popnp ptphpep pwpaplplp,r1ocl1onp pbpoptptplpe-1ispsie+1p popfp pbpepeprp.r1ocl1pTpapkpep popnpep pdpopwpnp,r1ocl1pPpapspsp piptp paprpopupnpdp,r1ocl1-1onp pbpoptptplpe-1ispsie+1p popfp pbpepeprp popnp ptphpep pwpaplplp!r1ococl1wep0p pbpoptptplpepsp popfp pbpepeprp popnp ptphpep pwpaplplp,r1ocl1p0p pbpoptptplpepsp popfp pbpepeprp.r1ocl1pGpop ptpop ptphpep psptpoprpep papnpdp pbpupyp pspopmpep pmpoprpep,r1ocl1p9p9p pbpoptptplpepsp popfp pbpepeprp popnp ptphpep pwpaplplp!r1ococl2we
Count from 1 to the input
gnws-1r1+1onl1we
Disan counter
dsccws-1r1+1l1we+cde gnccm2-1isr1onl1pipsp pepvpepnp!ie
Truth Machine
gnwsp1wep0
XKCD Random Number
p4
or
+4on
or
+8*6+4oc
A+B Problem
gnr1gnws-1l1+1r1wel1on
or without loops:
gnr1gnl1+con
Factorial
99gnwswsr1+1l1-1we+cr1-1wel2ws*cl1wer1on
FizzBuzz
+5*5*4r4+5+5l4wsr2+1l1+cm3izpFpipzpzr2+1l2ixws-1we+cm5izpBpupzpzr2+1l2ixws-1wer2izl1onr1ixws-1wer1ocl4-1we
Calculator
With comments
dsdcws-1wede pCpaplpcpuplpaptpopr+5+5oc-5-5 #Prompt for X# pXp:p gnonl1+5+5oc-5-5r1 #Prompt for Y# r1pYp:p gnonl2+5+5oc-5-5r2 #Prompt for Operation# r1pOppp:p gcocr1+5+5oc-5-5l1 r1+1l1-9-9-9-9-7isr1-1l1ie+9+9+9+9+7r1isl3+conr3-1ie #Checks if operation is +. If so, add X and Y and output it. else...# +1l1-9-9-9-9-9isr1-1l1ie+9+9+9+9+9r1isl3-conr3-1ie #Checks if operation is -. If so, subtract X and Y and output it. else...# +1l1-9-9-9-9-6isr1-1l1ie+9+9+9+9+6r1isl3*conr3-1ie #Checks if operation is *. If so, multiply X and Y and output it. else...# +1l1-9-9-9-9-9-2isr1-1l1ie+9+9+9+9+9+2r1isl3/conr3-1ie #Checks if operation is /. If so, divide X and Y and output it. else...# +1l1-9-9-9-9-1isr1-1l1ie+9+9+9+9+1r1isl3mconr3-1ie #Checks if operation is %. If so, take remainder of X / Y and output it.#
Without comments
dsdcws-1wedepCpaplpcpuplpaptpopr+5+5oc-5-5pXp:p gnonl1+5+5oc-5-5r1r1pYp:p gnonl2+5+5oc-5-5r2r1pOppp:p gcocr1+5+5oc-5-5l1r1+1l1-9-9-9-9-7isr1-1l1ie+9+9+9+9+7r1isl3+conr3-1ie+1l1-9-9-9-9-9isr1-1l1ie+9+9+9+9+9r1isl3-conr3-1ie+1l1-9-9-9-9-6isr1-1l1ie+9+9+9+9+6r1isl3*conr3-1ie+1l1-9-9-9-9-9-2isr1-1l1ie+9+9+9+9+9+2r1isl3/conr3-1ie+1l1-9-9-9-9-1isr1-1l1ie+9+9+9+9+1r1isl3mconr3-1ie
To make it 16-bit, just write "16" at the start.
Even shorter
pCpaplpcpuplpaptpopr+5+5oc-5-5pXp:p gnonl1+5+5oc-5-5r1r1pYp:p gnonl2+5+5oc-5-5r2r1pOppp:p gcocr1+5+5oc-5-5l1-9-9-9-9-7izl2+conr2ix-2izl2-conr2ix+3izl2*conr2ix-5izl2/conr2ix+5+5izl2mconr2ix
Fibonacci sequence
p1p p1p 2026 +1r1+1r1+1l2 ws+cr1ws-1we +cr1 ws-1 wel2wsr2+1r1 +1l3-1wer3ws l3+1 r3-1 wel3 onwe
Quine
slr1s1r1swr1ssr1slr1s1r1swr1ser1srr1s1r1swr1ssr1spr1ssr1sor1scr1spr1srr1spr1s1r1srr1s1r1swr1ser1slr1s1r1swr1ssr1slr1s1r1swr1ser1srr1s1r1swr1ssr1sor1scr1srr1s1r1swr1ser1l1wsl1wer1wspsocprp1r1wel1wsl1wer1wsocr1we
How I did it
First, you write the Quinify.
l1wsl1wer1wspsocprp1r1wel1wsl1wer1wsocr1we
Then, you need to grab that thing and put it in the memory like this: s#r1
Do it for all instructions on Quinify, and then merge them.
That's how you get a Quine.
Computational class
Since Free2Edit is just a Brainfuck derivative, it's Turing-complete as well.
| Free2Edit | Brainfuck |
|---|---|
| +1 | + |
| -1 | - |
| r1 | > |
| l1 | < |
| gc | , |
| oc | . |
| ws | [ |
| we | ] |
Implementations
My interpreter that actually works: https://scratch.mit.edu/projects/1260874999/editor/
