ceilstore
Le pone un techo a una celda: si lo que tiene es mayor que el número, lo baja a ese número.
Datos
- Palabra
ceilstore- Familia
- Escritura en memoria
- Pila entera
- saca 2, pone 0
- Qué hace
- Saca una dirección y un valor, y deja en la celda el menor de los dos: es un techo. Con la dirección 0 el valor se pierde.
- 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 ceilstore deja en la celda d el menor entre lo que tenía y v. Si la celda ya está por debajo de v, no cambia; si está por encima, queda en v. Es un techo, como ceil pero aplicado directamente sobre la memoria.
| Palabra | Pila después |
|---|---|
30 | 30 |
.up | 30 1 |
ceilstore | (vacía); .up vale como mucho 30 |
Como los stores son inmediatos, sirve para recortar una orden que ya escribiste en el mismo ciclo:
' avanza según la edad, pero nunca pide más de 30
cond
start
*.robage .up store
30 .up ceilstore
stopLos primeros ciclos el bot pide 0, 1, 2… con .up, según su edad (.robage); desde el ciclo 31 pide siempre 30.
El nombre confunde un poco: «ceil» suena a redondear hacia arriba, pero acá quiere decir techo y se queda con el menor. Para poner un piso, el mayor, está floorstore. Combinado con addstore arma un acumulador con tope (hay un ejemplo en addstore).
Con la dirección 0 el valor se saca de la pila y se pierde. Como store, le avisa al sistema de lazos si escribís en .tieang1 o .tielen1.