Buenos días!.
Hoy estuve recordando una vez más el basic Sinclair.
Estuve revisando un poco el de MSX. No sé si en la comunidad hay usuarios que tuvieron un MSX y
aprendieron a programar basic con el.
Veréis. Estuve mirando el tema de GO SUB. Para el uso de las subrutinas. Recordemos que cada GO SUB tenía
asociado un RETURN que lo hacía volver y que el programa continuase la ejecución a la línea siguiente del GO SUB.
Según un manual cuenta de GO SUB.
Gosub ademas de ir a una línea concreta, usaba una parte de la memoria "pila o stack" para recordar el número de linea
que se debe "retornar". Lo llama también como una pila de "páginas". Con cada GO SUB, se añade una página y con cada
RETURN elimina esa página. Peroooo, ¿ que ocurre si no hay un retorno ?.
Pongamos un caso como este:
He usado Poke para que en cada ejecución del programa no nos pida scroll.
Casi parece un GOTO, nunca llega a la línea del RETURN.
Pues bien. ¿ Qué pasaría si ese número de "páginas" donde se almacena la línea que debe retornar nunca llega ?.
Esa área de memoria se llenaría (pila) y nos daría algún error.
¿ Cuantas veces se ejecutaría la llamada a la subrutina ?.
En el caso de un Spectrum que aunque esta como máquina de 128K, estoy usando el modo 48K.
Fijaros:
Se queda sin memoria.
Ahora me gustaría hacer una referencia a gambas. Me gustaría si es posible, compara ese stack o pila
con la pila de seguimiento de gambas. Podemos verla al ejecutar un programa en modo depuración
en el lado inferior derecho. "Trazado de Pila".
Seria raro de ver un error de sin memoria en gambas con los actuales pc's.
Pero supongo que el funcionamiento es el mismo, o me equivoco.
Saludos