dec
Le resta 1 a una celda de memoria: la forma barata de llevar una cuenta regresiva.
Datos
- Palabra
dec- Familia
- Escritura en memoria
- Pila entera
- saca 1, pone 0
- Qué hace
- Saca una dirección y le resta 1 a esa celda. No se frena en 0, y por debajo de −32000 vuelve a −1. Con la dirección 0 no hace nada.
- Costo
- Store dividido por el divisor de cada uno, solo si escribe
- División del costo
- ÷ 10
- 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
- no
d dec saca la dirección d y le resta 1 a lo que haya en esa celda. Es el gemelo de inc: no toma ningún valor de la pila y cuesta la décima parte de un store.
| Palabra | Pila después |
|---|---|
50 | 50 |
dec | (vacía); la celda 50 vale uno menos |
Su lugar natural son los temporizadores: cargás una celda con un número y la bajás de a uno hasta que llega a 0.
' gira una vez cada 5 ciclos
cond
*50 0 >
start
50 dec
stop
cond
*50 0 =
start
100 .aimdx store
5 50 store
stopEn el primer ciclo la celda 50 está en 0: el bot gira con .aimdx y la carga con 5. Después baja 4, 3, 2, 1 y vuelve a 0 en el ciclo 6, cuando gira otra vez.
dec no se detiene en 0: si no lo cortás con una condición, sigue en negativo. Y por debajo de −32000 vuelve a −1. Como inc, tampoco le avisa al sistema de lazos si escribís en .tieang1 o .tielen1; para esas celdas usá 1 .tieang1 substore.
Para restar otra cantidad, substore.