013:trucos

Microhobby 13. Año II, del 29 de enero al 04 de febrero de 1985

Cuando finalizamos un programa Basic, normalmente aparece como un auténtico caos en cuanto a la numeración de las líneas.

Para ello hemos construido un modesto renumerador, en lenguaje máquina, que nos permitirá colocarlas por orden a partir de un determinado número de líneas y con un «paso» entre ellas a elegir.

El ordenador utiliza los primeros cuatro bytes de cada línea para almacenar en ellos su número de orden (los dos primeros) y la longitud del texto más «ENTER»; es decir, si la longitud fuera de diez bytes, se almacenaría el valor 11.

Basta, por tanto, poner en las dos primeras posiciones de memoria de cada línea de programa, el nuevo valor inicial más el paso, número que será acumulativo para la siguiente; así nos vamos recorriendo toda la longitud del programa hasta alcanzar el área de variables. Se detecta esta circunstancia finalizando el cálculo y saltando a la rutina ROM que provoca el listado del programa Basic ya renumerado.

Hemos incluido un pequeño programa cargador en Basic con la doble idea de aclarar cómo se introducen, en posiciones sucesivas de memoria, un número mayor que 255, y de que el lector experimente renumerando el propio cargador.

Si no se desea emplear el programita y sólo se trata de renumerar de diez en diez, por ejemplo, puede hacerse mediante POKE de la siguiente manera:

POKE 23337,0
POKE 23339,10

(seguido de RANDOMIZE USR 23300) o cualquier otro par de números menores de 255.

Como en otras ocasiones, la rutina en lenguaje máquina se ha colocado en la memoria intermedia de la impresora.

Esta rutina sólo renumera los números de línea, no lo hace con los comandos GOTO y GOSUB; además, presupone la existencia de, al menos, una linea de programa Basic.

1 DATA 205, 175, 13, 237, 91, 83, 92, 42, 41, 91, 237, 75, 43, 91, 9, 34, 43, 91, 235, 114, 35, 115, 35, 78, 35, 70, 9, 35, 62, 64, 190, 218, 249, 23, 235, 24, 226, 10, 0, 0, 0, 255
9 FOR i=23300 TO 23341: READ X : POKE i ,X : NEXT i
10 LET ofset = 23337 : LET nline = 23339
20 INPUT "Primera linea: "; plin, "Interlineas: " ; ilin
30 LET a = INT (ilin/256): LET b = ilin - (a*256)
40 LET c = INT (plin/256): LET d = plin-(c*256)
50 POKE ofset, b: POKE ofset+1, a: POKE nline, d: POKE nline+l,c
60 RANDOMIZE USR 23300

De parte de uno de nuestros lectores nos llega un simpático truco que imita a uno de los efectos que hemos visto en algunos programas comerciales, hecho en Basic y simple como todas las buenas ideas. Cuando el programa pregunta por la repetición del efecto, hay que contestarle con un número.

Truco enviado por el lector Angel Luis Moro Sierra.

10 BORDER 2: PAPER 2: CLS
20 INPUT AT 11,4; AT 0,4; "REPETICION DEL EFECTO?";a
30 FOR b = 1 TO a
40 FOR c = 0 TO 7
50 PRINT AT 11,4; INK c; "PARPADEO,COLOR Y SONIDO"
60 BEEP .01, RND * b + 12
70 BEEP .01, RND * b - 12
80 PAUSE 6
90 NEXT c
100 NEXT b
110 PRINT AT 11,0; INK 7; "PARA LOS AMIGOS DE MICROHOBBY", "DE ANGEL LUIS MORO SIERRA"
  • 013/trucos.txt
  • Última modificación: d/m/Y H:i
  • por miguel