esolangs.org/wiki/Funge-98
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

NULL - Makes A-Z reflect

ASCII Instruction Before After Other Effects

HRTI - High-Resolution Timer Interface

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)

MODU - Modulo Arithmetic Extension

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

ROMA - Roman Numerals

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

DRAW - Canvas Drawing Functions

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

Loading . . .
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
ddf
>
Stack: