Re: Carga de Pantallas: Evitar textos ficheros
Publicado: Vie Feb 15, 2013 7:28 pm
No la he sacado de ningún libro. Directamente me he puesto a mirar el código (disponible en la página de Geoff Wearmouth http://www.wearmouth.demon.co.uk/) que ya he usado para varios proyectos. Pero sí, ese libro es una buena referencia para entender cómo funciona la ROM.
En cuanto a la eficiencia es relativo. El intérprete basic guarda cada valor numérico en sus dos formas (la decimal en ASCII y la binaria en formato coma flotante de 5 bytes). Si escribes "PRINT 1" ese uno lo transformará el intérprete en 31 0e xx xx xx xx xx, es decir 7 bytes, donde 31 es el 1 en ASCII, 0e es el separador, y xx .. xx es el número codificado en coma flotante. Si prescindiéramos de la representación binaria, la ejecución sería muy lenta, porque cada vez que el intérprete se encuentre con una constante tendría que pasarla de decimal a binario. De esta forma, este paso se hace una sola vez, exactamente cuando tras teclear la orden pulsamos intro. Se podría guardar solo la parte binaria pero entonces no sabemos lo que escribió el usuario exactamente (los valores 1e3 y 1000 dan el mismo resultado).
Por cierto VAL "23739" ocupa 8 bytes, se podría hacer con 7 (y sin perder velocidad) poniendo cualquier número de un dígito seguido de la representación binaria del 23739. El problema sería que al editarlo se pierde el valor, pero como normalmente los cargadores no se editan se podría hacer.
En cuanto a la eficiencia es relativo. El intérprete basic guarda cada valor numérico en sus dos formas (la decimal en ASCII y la binaria en formato coma flotante de 5 bytes). Si escribes "PRINT 1" ese uno lo transformará el intérprete en 31 0e xx xx xx xx xx, es decir 7 bytes, donde 31 es el 1 en ASCII, 0e es el separador, y xx .. xx es el número codificado en coma flotante. Si prescindiéramos de la representación binaria, la ejecución sería muy lenta, porque cada vez que el intérprete se encuentre con una constante tendría que pasarla de decimal a binario. De esta forma, este paso se hace una sola vez, exactamente cuando tras teclear la orden pulsamos intro. Se podría guardar solo la parte binaria pero entonces no sabemos lo que escribió el usuario exactamente (los valores 1e3 y 1000 dan el mismo resultado).
Por cierto VAL "23739" ocupa 8 bytes, se podría hacer con 7 (y sin perder velocidad) poniendo cualquier número de un dígito seguido de la representación binaria del 23739. El problema sería que al editarlo se pierde el valor, pero como normalmente los cargadores no se editan se podría hacer.