016:trucos

No renderer 'odt' found for mode 'odt'

Microhobby 16. Año II, del 19 al 25 de febrero de 1985

Carlos González

Uno de nuestros lectores de Barcelona, Carlos González, nos manda un auténtico cóctel de trucos para la protección de programas, consiguiendo alejar nuestros listados de miradas curiosas.

El método es el siguiente:

Encabezar el programa con una línea que diga POKE 23613,0.

  1. Continuar con la segunda línea diciendo SAVE «nombre» CODE 23552,long en donde «long» es la longitud de nuestro programa.
  2. La tercera línea será INPUT «introduce clave»; LINE a$: IF a$ < > «clave» THEN RANDOMIZE USR 0.

Vamos a tratar de explicar lo que sucede en el ordenador cuando estas tres sentencias se ejecutan.

  1. La posición de memoria 23613 corresponde a la variable del sistema ERR SP y, en ella, se almacena una dirección a cuyo contenido salta el microprocesador cuando se detecta un error Basic; para verlo con un ejemplo, supongamos que ERR SP contiene el número 31996, el cual hemos averiguado mediante la sentencia PRINT PEEK 23613 + 256*PEEK 23614. Supongamos también que repetimos
  2. la misma operación con este número, es decir, PRINT PEEK 31996 + 256*PEEK 31997 y obtenemos 4867. Esta es la dirección a la que saltará el ordenador cuando un error sea detectado. Por tanto, si colocamos en 23613 un cero, estaremos alterando la dirección de salto y, vaya usted a saber dónde irá la CPU cuando la condición de error sea detectada; se producirá el temido «system crash».
  3. Lo que efectuamos aquí es grabar en cinta el programa Basic como si se tratara de Bytes, con la salvedad de que también grabamos las variables del sistema íntegras. Esto implica que, al volver a cargar nuestro programa como LOAD “” CODE, éste se autoejecutará, ya que el valor de algunas de estas variables le impelen a ello.
  4. Esta última, requiere menos explicación, ya que el INPUT LINE es conocido por todos nuestros lectores; algunos de ellos nos dirán que de un INPUT LINE se puede salir pulsando CAPS SHIFT + 6 y detener el programa; bien, es cierto a medias, ya que esto provocaría un salto a la famosa ERR SP que hemos alterado previamente; es decir, bloqueo de la máquina garantizado.

Manolo Delgado

Manolo Delgado, nos manda un interesante truco en forma de breve programa que, sin duda, nos será de utilidad en la presentación de nuestras propias creaciones.

5 BORDER 6: PAPER 6: INK 5: CLS
10 FOR n = 1 TO 100
20 PLOT 125, 85: DRAW 10+n, -30+n
30 PLOT 125, 85: DRAW -10-n,-30+n
40 NEXT n
50 PLOT 125, 135: DRAW 0, -90: INK 2
60 FOR n = 0 TO 7
70 CIRCLE 125, 135, 1+n
80 NEXT n
90 PAUSE 250: CLS

Cuando se ejecuta la sentencia INPUT, se observa que el cursor de espera aparece normalmente en modo “L” o “K”.

Para ello, entre otras cosas, se examina el contenido de la variable del sistema MODE (página 174 del manual) localizada en la posición de memoria 23617.

Si alteramos su valor mediante POKE 23617, valor obtendremos otro símbolo parpadeante cuando se ejecute la sentencia INPUT.

El número «pokeado» debe estar comprendido entre cero y 255, ambos inclusive.

10 FOR i = 0 TO 255
20 PRINT AT 0, 0; i
30 POKE 23617,i
40 INPUT "Prueba: "; a$
50 NEXT i
  • 016/trucos.txt
  • Última modificación: d/m/Y H:i
  • por miguel