017:trucos

No renderer 'odt' found for mode 'odt'

Microhobby 17. Año II, del 26 de febrero al 04 de marzo de 1985

A la hora de ahorrar memoria manteniendo la velocidad de proceso, todas las argucias son pocas; este truco le permitirá ejecutar algunas operaciones muy comunes como bucles de espera, de decisión en función de determinada pulsación de tecla, cambiar el valor de una variable según se dé o no una cierta circunstancia, etcétera.

Tarde o temprano observará que este método parece fallar en algunos casos de forma aparentemente aleatoria e inexplicable, como por ejemplo, si usted teclea el programita de demostración, lo ejecuta varias veces y las siguientes lo interrumpe pulsando CAPS SHIFT + BREAK.

Ocurre que en estas condiciones el ordenador, al ejecutar la sentencia CONTINUE se encuentra con ella misma para ser ejecutada, con lo cual nos introducimos en un bucle infinito sin más salida que la tecla BREAK.

Este comando, como cualquier otro del Spectrum, es un «TOKEN», es decir, la palabra CONTINUE se almacena en el ordenador en un sólo byte en lugar de siete; por tanto, poner esto en lugar de GOTO 10 nos procura un ahorro de nada menos que 8 bytes, manteniendo el mismo efecto.

Haciendo referencia a un truco publicado anteriormente para sacar 64 colores, en el cual era necesario emplear una rejilla construida mediante DATAS, un lector de Alicante nos ha enviado un programa para hacer ese gráfico.

Consta de dos bucles y dos órdenes gráficas y con él se pueden sacar cuantos gráficos quieras.

Tras ejecutar el programa, poner el cursor en GRAFICOS (CAPS SHIFT + 9) y saldrá la rejilla deseada.

1 REM REJILLA
10 FOR A = 0 TO 7 STEP 2
15 FOR B = 1 TO 6 STEP 2
20 POKE USR "C" + A, BIN 10101010
25 POKE USR "C" + B, BIN 01010101
30 NEXT A: NEXT B

Ultimamente se encuentra uno en bastantes programas una línea de programa etiquetada como línea cero, cuya utilidad estriba en la teórica imposibilidad de borrarla; en ella se suele poner el nombre del autor, etc.

Desde luego que esto no es así, es decir, la línea cero puede tanto ponerse como quitarse a voluntad. Para comprender bien el proceso tenemos que aclarar antes cómo se almacenan las líneas de programa en la memoria RAM del Spectrum.

El ordenador dedica dos posiciones de memoria para almcenar el número de línea; en el contenido de dichas posiciones se guarda el valor en cuestión, pero en el orden contrario al habitual, es decir, primero el byte más significativo y luego el menos significativo.

La línea cero es naturalmente la primera línea del programa, por lo que el número de línea se encontrará en las dos primeras posiciones de la zona reservada para programas Basic; por tanto, lo primero que haremos será calcular la dirección de comienzo de dicha zona, mediante la variable del sistema PROG:

DIR = PEEK 23635 + 256 * PEEK 23636

nuestro número de línea se encuentra en PEEK DIR y PEEK (DIR + 1)

Para convertir la línea cero en línea uno, teclearemos:

POKE (DIR 1), 1
  • 017/trucos.txt
  • Última modificación: d/m/Y H:i
  • por miguel