substore
Le resta un número a lo que ya hay en una celda: la celda menos el valor.
Datos
- Palabra
substore- Familia
- Escritura en memoria
- Pila entera
- saca 2, pone 0
- Qué hace
- 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.
- 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 substore deja en la celda d lo que tenía menos v. Es *d v sub d store en dos palabras, a la quinta parte del costo de un store.
| Palabra | Pila después |
|---|---|
3 | 3 |
50 | 3 50 |
substore | (vacía); la celda 50 vale 3 menos |
' cuenta regresiva de a 3, desde 30
cond
*.robage 0 =
start
30 50 store
stop
cond
*50 0 >
start
3 50 substore
stopEn el primer ciclo .robage vale 0: el primer gen carga 30 y el segundo ya le resta 3. La celda pasa por 27, 24, 21… y en el ciclo 10 llega a 0, donde la condición la frena.
Con la dirección 0 el valor queda en la pila sin usarse, y el resultado se recorta a ±32000. Restar 1 sale más barato con dec, pero en .tieang1 o .tielen1 conviene substore, que le avisa al sistema de lazos. La suma es addstore.