ASCII | Instruction | Before | After | Other Effects |
---|---|---|---|---|
space
|
Space | not normally executed; k iterator ignores multiples (unless 0) | ||
!
|
Logical Not | a | Not a | Zero becomes one, non zero becomes zero |
"
|
Toggle Stringmode | Pushes each value between quotes to stack | ||
#
|
Trampoline | pos <- pos + delta (IP skips over one command position) | ||
$
|
Pop | a | ||
%
|
Remainder | a b | Pob b, pop a, push REM(a,b) | Division by zero is zero. Negative argument results are implementation defined |
&
|
Input Integer | a | Signed range determined by cell size | |
'
|
Fetch Character/98 | c | pos <- pos + delta (character is not executed) | |
(
|
Load Semantics/98 | en..e1 n | f 1 | overloads A-Z, given fingerprint; reflect on load error |
)
|
Unload Semantics/98 | en..e1 n | unloads A-Z overloaded by given fingerprint, may reflect | |
*
|
Multiply | a b | ab | Signed range determined by cell size |
+
|
Add | a b | a+b | Signed range determined by cell size |
,
|
Output Character | c | ||
-
|
Subtract | a b | a-b | Pop b, pop a, push a-b. Signed range determined by cell size |
.
|
Output Integer | a | ||
/
|
Divide | a b | a/b | Pop b, pop a, push a/b. Division by zero is zero |
0
|
Push Zero | 0 | ||
1
|
Push One | 1 | ||
2
|
Push Two | 2 | ||
3
|
Push Three | 3 | ||
4
|
Push Four | 4 | ||
5
|
Push Five | 5 | ||
6
|
Push Six | 6 | ||
7
|
Push Seven | 7 | ||
8
|
Push Eight | 8 | ||
9
|
Push Nine | 9 | ||
:
|
Duplicate | v | v v | |
;
|
Jump Over/98 | nothing executed until next ; | ||
<
|
Go West | delta <- Une(-1), Be(-1,0), Tre(0,-1,0) | ||
=
|
Execute/98/f | 0gnirts | r | result-code = system-execute(string) |
>
|
Go East | delta <- Une(1), Be(1,0), Tre(0,1,0) | ||
?
|
Go Away | delta <- random direction, (1/-1), (-1,0/1,0/0,1/0,-1), (-1,0,0/.../-1,-1,-1) | ||
@
|
Stop | halt current IP, if last concurrent thread then end program | ||
A-Z
|
Overloadable; normally reflect | Fingerprint-Defined/98 | ||
[
|
Turn Left/98/2D | delta <- rot(-90, delta) | ||
\
|
Swap | a b | b a | Pop b, pop a, push b, push a |
]
|
Turn Right/98/2D | delta <- rot(90, delta) | ||
^
|
Go North/2D | delta <- Be(0,-1), Tre(0,-1,0). Reflects in Unefunge | ||
`
|
Greater Than | a b | a > b | either 1 or 0 |
a
|
Push Ten/98 | 10 | ||
b
|
Push Eleven/98 | 11 | ||
c
|
Push Twelve/98 | 12 | ||
d
|
Push Thirteen/98 | 13 | ||
e
|
Push Fourteen/98 | 14 | ||
f
|
Push Fifteen/98 | 15 | ||
g
|
Get | x [y [z]] | n | Push contents of (x) Une, (x,y) Be, (x,y,z) Tre. Push 0 when out of bounds |
h
|
Go High/98/3D | delta <- (0,0,-1). Reflects in Unefunge and Befunge | ||
i
|
Input File/98/f | x [y [z]] f 0gnirts | x [y [z]] x' [y' [z']] | inputs file given string name. Low bit set in flag f for binary mode |
j
|
Jump Forward/98 | s | pos <- pos + delta * s | |
k
|
Iterate/98 | n | execute next instruction now, 0 or n+1 times (k does not skip IP unless 0) | |
l
|
Go Low/98/3D | delta <- (0,0,1). Reflects in Unefunge and Befunge | ||
m
|
High-Low If/98/3D | b | delta <- if not zero, go high (0,0,-1) else (0,0,1) | |
n
|
Clear Stack/98 | en..e1 | Top of stack stack for current thread is emptied | |
o
|
Output File/98/f | x [y [z]] x' [y' [z']] f 0gnirts | outputs Funge space between start/end to named file, low bit set in f for binary | |
p
|
Put | x [y [z]] n | n | Pop n and vector and store n in Funge space |
q
|
Quit/98 | r | immediate exit, returncode = r | |
r
|
Reflect/98 | delta <- delta * -1 | ||
s
|
Store Character/98 | c | store-funge-space(position+delta,v). | |
t
|
Split/98/c | Split IP. Position, delta, stacks copied, child reflects. | ||
u
|
Stack Under Stack/98 | n | (en..e1) | Pushes extra zeros if SOSS contains less than n items. |
v
|
Go South | delta <- (1) Une, (0, 1) Be, (0, 1, 0) Tre | ||
w
|
Compare/98/2D | a b | if (a>b) ']' elsif (a<b) '[' else 'z' | |
x
|
Absolute Delta/98 | x [y [z]] | delta <- (x,[y,[z]]) | |
y
|
Get SysInfo/98 | c | en(..e1) | Retrieve item n for n>0 else all items |
z
|
No Operation/98 | |||
{
|
Begin Block/98 | en..e1 n | (en..e1) | offset <- pos + delta, etc |
|
|
North-South If/2D | 'v' if zero else '^'. Reflects in Unefunge | ||
_
|
East-West If/2D | '>' if zero else '<'. | ||
}
|
End Block/98 | en..e1 n | (en..e1) | offset <- SOSS Va, etc |
~
|
Input Character | c |
ASCII | Instruction | Before | After | Other Effects |
---|
ASCII | Instruction | Before | After | Other Effects |
---|---|---|---|---|
G
|
Granularity | 20000 | Pushes the smallest clock tick the underlying system can reliable handle measured in microseconds | |
M
|
Mark | Designates the timer as having been read by the IP with this ID at this instance | ||
T
|
Timer | # of microseconds since the last M | reflects if there is no mark on the timer | |
E
|
Erase mark | erases the last time the timer mark by this IP (such that T will reflect)
|
||
S
|
Seconds | # of microseconds elapsed since the last whole second (time MOD 1 second) |
ASCII | Instruction | Before | After | Other Effects |
---|---|---|---|---|
M
|
signed-result modulo | a b | a MOD b | U
|
unsigned-result modulo | a b | a MOD b | R
|
integer remainder | a b | a MOD b |
ASCII | Instruction | Before | After | Other Effects |
---|---|---|---|---|
I
|
one | 1 | ||
V
|
five | 5 | ||
X
|
ten | 10 | ||
L
|
fifty | 50 | ||
C
|
one-hundred | 100 | ||
D
|
five-hundred | 500 | ||
M
|
one-thousand | 1000 |
ASCII | Instruction | Before | After | Other Effects |
---|---|---|---|---|
D
|
Draw everything | updates the canvas | ||
A
|
Arc | x y radius start stop | ||
C
|
Circle | x y radius | ||
E
|
Ellipse | x y width height radius | ||
R
|
Rectangle | x y width height | ||
P
|
Point | x y | single point (size of stroke) | |
O
|
Shape | [x y]* # of verticies | suffix 3 coordinates with 0 to make it a bezier (starting at the proceding vertex)draws in order from top of stack down |
|
T
|
Transform | (x:a/b y:c/d)/ (degrees)/ (x y) - mode(1/2/3) | scale(1)/ rotate(2)/ translate(3) pops a value and does the coresponding transformation | |
M
|
Push/Pop Matrix | push? | push the current transformation matrix if 1 else pops to the last saved matrix | |
B
|
Background | fills the whole screen with the fill color | ||
F
|
Fill | r g b a* # | 3,4,6, or 8 digit hex code followed by 3, 4, 6, or 8 | |
S
|
Stroke | r g b a* # thickness | 3,4,6, or 8 digit hex code followed by 3, 4, 6, or 8 | |
W
|
Width | Canvas width | ||
H
|
Height | Canvas height | ||
U
|
Mouse User-Input | x y mouse-button (0-4) | pushes the coordinates of the mouse and if none/left/middle/right button is pressed | |
L
|
Last Mouse User-Input | x y | pushes the last coordinates of the mouse | |
K
|
Keyboard | key* | key pressed / ([keys] # of keys pressed) | pops a value- if > 0, pushes 1 for pressed, 0 for not pressed else pushes all pressed keys followed by # of keys pressed |