El programa baja la RAMTOP a la dirección 30500 y se instala por encima de esta dirección, precisamente para que no pueda accederse por otros programas. Ocupa los 2268 bytes restantes hasta el tope de memoria.
Lo que me ha interesado de este programa es la rutina MEM (RAND USR 31850 o RAND USR MEM) para el cálculo de la memoria RAM disponible. Hay varios programas que realizan la misma función pero siempre para el modelo de 16 kB. Como es sabido, en este modelo la memoria de display de pantalla, entre las variables del sistema D_FILE y VARS, ocupa un espacio fijo de 793 bytes. Mientras que en el modelo de 1kB este área de memoria es variable, desde el mínimo de 25 bytes hasta los 793 bytes, lo cual dificulta algo más el cálculo de la memoria RAM disponible.
Al ejecutar la rutina MEM aparece el cálculo de memoria mostrado en la imagen anterior. El programa al ejecutarse, asigna una variable a cada una de las nuevas funciones como puede verse al ejecutarse RAND USR 31532 o RAND USR DUMP. Si ejecutamos un CLEAR, veremos que no obtendremos un resultado al ejecutar RAND USR MEM, pero sí al ejecutar RAND USR 31850. En este caso el área de memoria libre será 13161 bytes. Es decir, con la ejecución de CLEAR también hemos liberado el área de variables usado por el propio programa.
El cálculo es relativamente preciso, ya que si a 16384 (16 kB) le restamos el espacio ocupado por el programa (2268 bytes), la memoria de pantalla (793 bytes) y el área de variables del sistema (125 bytes), nos daría un número cercano a los 13161 bytes. La diferencia es de 37 bytes, que seguramente fuera menos al deducir las pilas.
Referencia: http://zx81stuff.org.uk