addstore
Le suma un número a lo que ya hay en una celda, sin tener que leerla antes.
Datos
- Palabra
addstore- Familia
- Escritura en memoria
- Pila entera
- saca 2, pone 0
- Qué hace
- 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.
- 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 addstore le suma v a la celda d. Equivale a *d v add d store, con menos palabras y a la quinta parte del costo de un store.
| Palabra | Pila después |
|---|---|
2 | 2 |
50 | 2 50 |
addstore | (vacía); la celda 50 vale 2 más |
Sirve para acumular: sumar lo que va viendo un ojo, llevar un total o hacer crecer una orden de a poco.
' acelera de a poco: pide 2 más por ciclo, hasta 40
cond
start
2 50 addstore
40 50 ceilstore
*50 .up store
stopLa celda 50 vale 2, 4, 6… y desde el ciclo 20 se queda en 40, el techo que le pone ceilstore. .up recibe ese valor en cada ciclo.
Con un v negativo resta, así que -3 50 addstore hace lo mismo que 3 50 substore. El resultado se recorta a ±32000, igual que en store, y con la dirección 0 el valor queda en la pila sin usarse.
A diferencia de inc, addstore sí le avisa al sistema de lazos cuando escribís en .tieang1 o .tielen1: para sumarle 1 al ángulo de un lazo, 1 .tieang1 addstore es la forma correcta.