DarwinBotsManual
Abrir la app EnglishEN

multstore

Multiplica lo que hay en una celda por un número y guarda el resultado ahí mismo.

Datos

Palabra
multstore
Familia
Escritura en memoria
Pila entera
saca 2, pone 0
Qué hace
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.
Costo
Store dividido por el divisor de cada uno, solo si escribe
División del costo
÷ 5
Se ejecuta en
en el cuerpo de un gen (start o else) y solo si el tope de la pila booleana es verdadero o está vacía
Marca lazos
sí

v d multstore deja en la celda d lo que tenía multiplicado por v. Es *d v mult d store en dos palabras, a la quinta parte del costo de un store.

PalabraPila después
22
502 50
multstore(vacía); la celda 50 vale el doble
' duplica la celda 50 en cada ciclo, empezando en 1
cond
 *50 0 =
start
 1 50 store
stop
start
 2 50 multstore
stop

La celda pasa por 2, 4, 8… hasta 16384. El ciclo siguiente no da 32768 sino 768: el resultado se recorta a ±32000 de forma circular, como en todos los stores (ver Números y direcciones). Con multiplicaciones es fácil pasarse, así que si el número puede crecer, ponele un techo con ceilstore antes de que llegue al borde.

Algunos usos: -1 50 multstore cambia el signo (lo mismo hace negstore, más barato), y 0 50 multstore la pone en 0.

Con la dirección 0 el valor queda en la pila sin usarse. Como store, le avisa al sistema de lazos si escribís en .tieang1 o .tielen1.