*
Lee la memoria en una dirección calculada: saca una dirección de la pila y apila lo que hay en esa celda.
Datos
- Palabra
*- Familia
- Básicos
- Pila entera
- saca 1, pone 1
- Qué hace
- 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.
- Costo
- Comando básico
- Se ejecuta en
- dentro de un gen: en la condición (cond) y en el cuerpo (start o else)
dirección * hace lo mismo que la lectura con asterisco pegado, pero con la dirección tomada de la pila: 60 * apila lo mismo que *60. La diferencia es que la dirección puede salir de una cuenta, y eso permite recorrer la memoria como si fuera una tabla.
Por ejemplo, los ojos .eye1 a .eye9 ocupan las celdas 501 a 509. Este bot guarda en la celda 50 qué ojo quiere mirar (del 1 al 9) y copia lo que ve ese ojo a la celda 60:
cond
start
' la dirección es 500 + el número de ojo
500 *50 add * 60 store
stopComo en cualquier lectura, la dirección pasa por la misma regla: se le saca el signo y se toma el resto de dividir por 1000, y un 0 lee la celda 1000 (0 * lee la 1000, 1050 * lee la 50). No hay forma de leer fuera de la memoria del bot.