floorstore
Le pone un piso a una celda: si lo que tiene es menor que el número, lo sube a ese número.
Datos
- Palabra
floorstore- 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 mayor de los dos: es un piso. 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 floorstore deja en la celda d el mayor entre lo que tenía y v. Si la celda ya está por encima de v, no cambia; si está por debajo, queda en v. Es un piso, como floor pero aplicado directamente sobre la memoria.
| Palabra | Pila después |
|---|---|
0 | 0 |
50 | 0 50 |
floorstore | (vacía); la celda 50 vale como poco 0 |
El uso más común es impedir que una cuenta regresiva pase a negativo:
' baja de a 7 desde 30, sin pasar de 0
cond
*.robage 0 =
start
30 50 store
stop
start
7 50 substore
0 50 floorstore
stopLa celda pasa por 23, 16, 9, 2 y después se queda en 0: el substore la lleva a −5 y el floorstore la sube a 0 en el mismo ciclo.
El nombre confunde un poco: «floor» suena a redondear hacia abajo, pero acá quiere decir piso y se queda con el mayor. El techo es ceilstore.
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.