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.
| Palabra | Pila después |
|---|---|
2 | 2 |
50 | 2 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
stopLa 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.