<numero> | Numbers and reads | Apila el número tal cual en la pila entera. El nombre de una sysvar sin asterisco apila su dirección. |
*<numero> | *.<sysvar> | Numbers and reads | Apila lo que hay en esa celda de memoria. Un sentido que escribe el motor lo leés en el ciclo siguiente. |
add | Basic | Saca dos números y apila su suma. Arriba de 16.777.216 pierde precisión, y pasando los 2000 millones da la vuelta. |
sub | Basic | Saca dos números y apila el de abajo menos el de arriba. Con números enormes se comporta igual que add. |
mult | Basic | Saca dos números y apila su producto. Si pasa de 2000 millones, se queda en ±2000 millones. |
div | Basic | Saca dos números y apila el de abajo dividido por el de arriba, redondeado al entero más cercano (al par en el empate). Dividir por 0 da 0. |
rnd | Basic | Saca un número n y apila uno al azar entre 0 y n, ambos incluidos. Con n negativo no es simétrico: −5 rnd da de −4 a −1. |
* | Basic | Saca una dirección y apila lo que hay en esa celda. Fuera de 1 a 1000 se le saca el signo y se toma el resto de dividir por 1000; el 0 lee la 1000. Con la pila vacía lee la 1000. |
mod | Basic | Saca dos números y apila el resto de dividir el de abajo por el de arriba, con el signo del de abajo. Con divisor 0 da 0. |
sgn | Basic | Cambia el tope por su signo: −1 si es negativo, 0 si es cero y 1 si es positivo. |
abs | Basic | Cambia el tope por su valor absoluto: le saca el signo. |
dup | Basic | Copia el tope: a queda a a. Con la pila vacía apila dos ceros. |
drop | Basic | Saca el tope y lo descarta. Con la pila vacía no hace nada. |
clear | Basic | Vacía la pila entera. La pila booleana no la toca. |
swap | Basic | Intercambia los dos de arriba: a b queda b a. Con uno o ningún número no hace nada. |
over | Basic | Copia arriba el segundo: a b queda a b a. Con un solo número apila un 0; con la pila vacía no hace nada. |
angle | Advanced | Saca un punto (x abajo, y arriba) y apila el ángulo desde el bot hasta él, en unidades de .aim (0 a unos 1256). |
dist | Advanced | Saca un punto (x abajo, y arriba) y apila la distancia desde el bot hasta él, en el tamaño real del mundo. Se queda en 2000 millones como máximo. |
ceil | Advanced | Saca dos números y apila el menor. Arriba de 16.777.216 la comparación pierde precisión. |
floor | Advanced | Saca dos números y apila el mayor. |
sqr | Advanced | Cambia el tope por su raíz cuadrada, redondeada al entero más cercano. Si no es positivo, da 0. |
pow | Advanced | Saca dos números y apila el de abajo elevado al de arriba, redondeado. El exponente se recorta a ±10, base 0 da 0 y el resultado se queda en ±2000 millones. |
pyth | Advanced | Saca dos números a y b y apila la raíz de a² + b², redondeada. Se queda en 2000 millones como máximo. |
anglecmp | Advanced | Saca dos ángulos a y b, en unidades de .aim, y apila a − b por el camino corto: de −628 a 628. |
root | Advanced | Saca dos números a y b, les saca el signo y apila la raíz b-ésima de a, redondeada. Con b en 0 da 0. |
logx | Advanced | Saca dos números a y b, les saca el signo y apila el logaritmo de a en base b, redondeado. Con b menor que 2 o a en 0 da 0. |
sin | Advanced | Cambia un ángulo en unidades de .aim por su seno multiplicado por 32000 y redondeado: de −32000 a 32000. |
cos | Advanced | Cambia un ángulo en unidades de .aim por su coseno multiplicado por 32000 y redondeado: de −32000 a 32000. |
debugint | Advanced | Anota el tope de la pila entera en la traza del bot, sin sacarlo. No cuesta energía. Arriba de 16.777.216 el valor puede cambiar un poco. |
debugbool | Advanced | Anota el tope de la pila booleana en la traza del bot, sin sacarlo. No cuesta energía. Con la pila booleana vacía apila un verdadero. |
~ | Bitwise | Cambia el tope por su complemento: da vuelta los 32 bits, así que x queda en −x − 1. Con la pila vacía deja −1. |
& | Bitwise | Saca dos números y apila uno con prendidos solo los bits que están prendidos en los dos. Con la pila vacía da 0. |
| | Bitwise | Saca dos números y apila uno con prendidos los bits que están prendidos en alguno de los dos. Con la pila vacía da 0. |
^ | Bitwise | Saca dos números y apila uno con prendidos los bits que están prendidos en uno solo de los dos. Con la pila vacía da 0. |
++ | Bitwise | Cambia el tope por ese número más 1. En el borde de los 32 bits, 2147483647 ++ da 0. |
-- | Bitwise | Cambia el tope por ese número menos 1. En el borde de los 32 bits, −2147483647 -- da 0. |
- | Bitwise | Cambia el signo del tope: 5 queda en −5. No resta; para restar está sub. Con la pila vacía deja 0. |
<< | Bitwise | Corre los bits del tope un lugar a la izquierda: lo multiplica por 2. Con números enormes puede cambiar el signo, y 1073741824 << da 0. |
>> | Bitwise | Corre los bits del tope un lugar a la derecha conservando el signo: lo divide por 2 redondeando hacia abajo. −1 >> sigue en −1. |
< | Comparisons | Saca dos números a b y apila verdadero si a, el de abajo, es menor que b. Con la pila vacía da falso. |
> | Comparisons | Saca dos números a b y apila verdadero si a, el de abajo, es mayor que b. Con la pila vacía da falso. |
= | Comparisons | Saca dos números y apila verdadero si son iguales. Con la pila vacía compara 0 con 0 y da verdadero. |
!= | Comparisons | Saca dos números y apila verdadero si son distintos. Con la pila vacía da falso. |
%= | Comparisons | Saca a b y apila verdadero si b está dentro del 10 % de a, límites incluidos. Con a negativo da siempre falso. |
!%= | Comparisons | Saca a b y apila verdadero si b se aleja más del 10 % de a: lo contrario de %=. Con a negativo da siempre verdadero. |
~= | Comparisons | Saca tres números a b d y apila verdadero si b está dentro del d % de a. Si uno solo de a y d es negativo, da siempre falso. |
!~= | Comparisons | Saca tres números a b d y apila verdadero si b se aleja más del d % de a. Si uno solo de a y d es negativo, da siempre verdadero. |
>= | Comparisons | Saca dos números a b y apila verdadero si a, el de abajo, es mayor o igual que b. Con la pila vacía da verdadero. |
<= | Comparisons | Saca dos números a b y apila verdadero si a, el de abajo, es menor o igual que b. Con la pila vacía da verdadero. |
and | Logic | Saca dos valores de la pila booleana y apila verdadero si los dos lo son. Con uno solo lo deja igual; con la pila vacía apila verdadero. |
or | Logic | Saca dos valores de la pila booleana y apila verdadero si alguno lo es. Con uno solo, o con la pila vacía, apila verdadero. |
xor | Logic | Saca dos valores de la pila booleana y apila verdadero si exactamente uno lo es. Con uno solo lo invierte; con la pila vacía apila falso. |
not | Logic | Invierte el tope de la pila booleana. Con la pila vacía apila falso, porque la vacía cuenta como verdadera. |
true | Logic | Apila un verdadero en la pila booleana. |
false | Logic | Apila un falso en la pila booleana. |
dropbool | Logic | Saca el tope de la pila booleana y lo descarta. Con la pila vacía no hace nada. |
clearbool | Logic | Vacía la pila booleana. La pila entera no la toca. |
dupbool | Logic | Copia el tope de la pila booleana. Con la pila vacía no hace nada, a diferencia de dup. |
swapbool | Logic | Intercambia los dos de arriba de la pila booleana. Con uno o ningún valor no hace nada. |
overbool | Logic | Copia arriba el segundo de la pila booleana: a b queda a b a. Con un solo valor apila verdadero; con la pila vacía no hace nada. |
store | Writing to memory | Saca una dirección y un valor, y escribe el valor en esa celda, recortado a ±32000 de forma circular: 32001 queda en 1. Con la dirección 0 no escribe, no cobra y el valor queda en la pila. |
inc | Writing to memory | Saca una dirección y le suma 1 a esa celda. Pasando 32000 vuelve a 1. Con la dirección 0 no hace nada. |
dec | Writing to memory | Saca una dirección y le resta 1 a esa celda. No se frena en 0, y por debajo de −32000 vuelve a −1. Con la dirección 0 no hace nada. |
addstore | Writing to memory | Saca una dirección y un valor, y le suma el valor a esa celda, recortado a ±32000 de forma circular. Con la dirección 0 el valor queda en la pila. |
substore | Writing to memory | Saca una dirección y un valor, y deja en la celda lo que tenía menos el valor, recortado a ±32000 de forma circular. Con la dirección 0 el valor queda en la pila. |
multstore | Writing to memory | Saca una dirección y un valor, y multiplica la celda por el valor, recortado a ±32000 de forma circular. Con la dirección 0 el valor queda en la pila. |
divstore | Writing to memory | Saca una dirección y un valor, y divide la celda por el valor, redondeando al entero más cercano (en el empate, al par). Dividir por 0 la deja en 0. Con la dirección 0 el valor se pierde. |
ceilstore | Writing to memory | Saca una dirección y un valor, y deja en la celda el menor de los dos: es un techo. Con la dirección 0 el valor se pierde. |
floorstore | Writing to memory | Saca una dirección y un valor, y deja en la celda el mayor de los dos: es un piso. Con la dirección 0 el valor se pierde. |
rndstore | Writing to memory | Saca una dirección y cambia la celda por un número al azar entre 0 y lo que tenía, ambos incluidos. Con −5 da de −5 a 0. |
sgnstore | Writing to memory | Saca una dirección y deja en la celda solo su signo: −1, 0 o 1. |
absstore | Writing to memory | Saca una dirección y le quita el signo a la celda: −77 pasa a 77. |
sqrstore | Writing to memory | Saca una dirección y deja en la celda su raíz cuadrada, redondeada al entero más cercano. Si tenía 0 o un negativo, queda en 0. |
negstore | Writing to memory | Saca una dirección y le invierte el signo a la celda: 20 pasa a −20. |
cond | Flow | Cierra el gen anterior y abre uno nuevo con su zona de condiciones. Vacía la pila booleana. Ahí corre todo, pero los stores no escriben. |
start | Flow | Abre el cuerpo del gen. Tras un cond, vacía la pila booleana y corre solo si todas las condiciones dan verdadero (o no hay ninguna). Sin cond delante, abre un gen sin condiciones. |
else | Flow | Abre el cuerpo del «si no»: corre solo si las condiciones del gen dieron falso. Después de un start sin cond, de un stop o de otro else, no corre nunca. |
stop | Flow | Cierra el gen: hasta el próximo cond, start o else no se ejecuta nada. No vacía la pila booleana, salvo que cierre directamente las condiciones de un cond. |
end | Flow | Corta la ejecución del ADN en ese ciclo: lo que viene después no corre. El motor agrega uno al final al cargar el bot. |