Microhobby 24. Año II, del 16 al 22 de abril de 1985

Consultorio

Las variables del sistema

Según el número 9 de Microhobby, en el artículo de la página 30 se dice que las 16384 posiciones de memoria primeras del Spectrum corresponden a la ROM y las 49152 restantes a la RAM. Entonces, ¿cómo se entiende y por qué están situadas las variables del sistema en RAM? si ésta es una memoria volátil y, según podemos observar, cada variable tiene un contenido original.

Joan R. Roig :: Barcelona

Las variables del sistema son, como su nombre indica, variables; es decir, su valor ha de poder ser alterado por el sistema. La memoria ROM no se puede alterar, por tanto, las variables del sistema tienen que almacenarse necesariamente en RAM. Ahora bien, para que el sistema funcione, estas variables han de contener un valor original. ¿Cómo se consigue esto?

En el momento de conectar el ordenador, el microprocesador ya empieza a funcionar, corriendo a partir de la dirección 0 de la memoria. Hasta que nos sale el mensaje de Sinclair, transcurren uno o dos segundos. Durante este tiempo, el microprocesador comprueba cuánta memoria tiene disponible, checkea que toda la memoria funcione correctamente, la pone a cero, coloca las pilas de «máquina», «GO SUB» y «calculador» en su sitio, copia las 21 primeras mayúsculas en los gráficos definibles por el usuario, fija el valor inicial de las variables del sistema y, finalmente, imprime el mensaje de Sinclair. Esto es lo que se conoce como «Rutina de inicialización».

Cosa de duendes

Poseo un Spectrum de 48K, y a raíz de introducir el programa «Rotular a lo grande» del número 8, no se si por error mío o por fallo del listado, algunas direcciones de variables del sistema han sido alteradas, entre ellas algunas de las marcadas con «X» en el manual.

Quisiera saber si hay algún método para restablecer el valor correcto, de forma que este valor dure después de desconectar el ordenador.

Manuel Sánchez :: Valencia

Lo que usted nos comenta parece «cosa de duendes». Cuando el manual dice que el sistema resultaría quebrantado, se refiere a que el ordenador se bloquearía, pero en cualquier caso, todo volverá a la normalidad si lo desconecta y lo vuelve a conectar.

Los valores iniciales de las variables del sistema se generan desde la ROM durante la inicialización del ordenador, es decir, en el momento de conectarlo. Por tanto, es absolutamente imposible que la alteración de estos valores permanezca después de desenchufar el ordenador.

Si esto fuera asi, el ordenador no funcionaría al encenderlo. Si su ordenador funciona correctamente, no debería preocuparse más por el tema.

Contestamos a todos

Desearía saber si para mandar los programas en cinta o formular una pregunta a la sección de consultorio, hace falta ser socio o estar suscrito a vuestra revista.

Manuel Cordero :: Sevilla

Responderemos con sumo gusto las consultas de cualquier lector, tanto si es suscriptor como si no. Lo mismo respecto a los programas que nos envíen. La ventaja de los suscriptores es una rebaja en el precio y la puntualidad en la recepción de la revista, así como la posibilidad de ser premiados en los concursos que se anuncien como especificamente dedicados a suscriptores (por supuesto, no es el caso de Hobby-suerte, en el cual pueden participar todos los lectores).

INVERSE 1

No encuentro la manera de meter letras en el cuadrado negro de la tecla 8, como en el programa «Aterriza como puedas».

Otra pregunta, sobre el mismo programa, es si es necesario poner tantas líneas REM.

Una última pregunta es cómo se puede poner una línea cero en un programa.

Miguel A. Rios :: Barcelona

No se trata de meter las letras en el cuadro negro, sino de escribirlas en video inverso. Pruebe: PRINT INVERSE 1; “A” y verá el efecto deseado.

Las lineas REM no son necesarias para la ejecución del programa, su única finalidad es hacer el listado más claro. Puede quitarlas si lo desea.

Pruebe el siguiente programa:

1 REM Linea Cero
10 LET p = PEEK 23635 + 256 * PEEK 23636: POKE p, 0: POKE p+1, 0

Cuando lo ejecute, la linea 1 se convertirá en linea 0. El procedimiento consiste en POKEar 0 en las direcciones que almacenan el número de la primera linea.

Sofware del P.G.C.

Mi profesión es la contabilidad y aunque adquirí mi Spectrum por hobby, ahora estoy contemplando la idea de aplicarlo a mi profesión. No obstante, después de mucho buscar, no encuentro ningún programa en cassette que se adapte al Plan General Contable.

R. Castro :: Sevilla

La utilización del Spectrum en aplicaciones de contabilidad implica la necesidad de almacenar gran cantidad de datos, por lo que resulta imprescindible contar con un sistema de almacenamiento masivo, rápido y fiable, esta es la razón de que sólo exista sofware del Plan General de Contabilidad en Microdrive y disco.

Otros lenguajes

  1. ¿Permite el ZX Spectrum 48K el uso de otros lenguajes además del Basic y el lenguaje máquina?
  2. ¿Hay algún joystick en el mercado que no necesite interface?
  3. ¿Existen actualmente en España bancos de datos a los que se pueda acceder mediante el Spectrum?

A. Hernández :: Ripollet

  1. Con el ZX Spectrum podrá usar cualquier lenguaje para el que exista compilador comercial. Por supuesto, existen varios ensambladores para programar en Assembler, además podrá encontrar: Pascal, Forth, C, Basic compilado, etc.
  2. Todos los joysticks son eléctricamente iguales (tipo Atari), por lo que todos necesitan interface.
  3. No tenemos noticias de que exista actualmente en España ningún banco de datos al que se pueda acceder con un Spectrum, si bien en Inglaterra si existe la posibilidad de acceder con un Spectrum a la red comercial de datos.

Las líneas REM

Quiero indicarles que en algunos programas, al principio, no aparece el REM, sino que empieza directamente el programa, cosa que impide luego grabar el listado; ruego solucionen este problema. Gracias.

La última duda consiste en ciertos programas de Microhobby que no marcan, como en los demás, si son para 16 ó 48K. ¿Porqué ocurre esto?

J. Elias Luna :: Benetuser

La ausencia de sentencias REM no le impide grabar el programa. La única finalidad de estas sentencias es introducir comentarios que aclaren el desarrollo del programa. A veces se omiten con la finalidad de ahorrar memoria.

Efectivamente, en los primeros números omitimos, en algunos casos, indicar la memoria necesaria para algunos programas. Pedimos disculpas a nuestros lectores, y les prometemos que no volverá a ocurrir en el futuro.

Autoejecución

¿Cómo puedo hacer funcionar un programa una vez cargado sin pulsar RUN y ENTER?

¿De qué manera puedo hacer salir unos rótulos por pantalla mientras se está cargando el programa por cinta?

Carlos M. Macho :: Madrid

Para que un programa arranque, una vez cargado, sin necesidad de pulsar RUN y ENTER, grábelo de la siguiente forma: SAVE «nombre» LINE n donde «n» es la linea a partir de la que quiere que empiece el programa.

El Z-80 sólo puede atender a una cosa a la vez, por lo que es imposible imprimir nada mientras está cargando, pero podrá imprimirlo inmediatamente antes de la carga.

El retorno de error

Me gustaría que me explicáseis que significa o para qué sirve la línea:

10 LET ERR = 256 * PEEK 23614 + PEEK 23613: POKE ERR, 0: POKE ERR + 1,0

que he encontrado en un programa comercial.

Enrique García :: Madrid

Se trata de una de las protecciones del programa, sirve para que se borre toda la memoria si se produce un error durante la carga de la cinta.

La variable del sistema «ERR SP», cuya dirección es 23613, almacena la dirección del elemento de la pila de máquina que es usado como retorno de error, si este elemento de la pila se hace valer cero, el retorno de error se produce saltando a la dirección cero, con lo que el ordenador se inicia y borra toda la memoria.

Eliminar esta linea es el primer paso para desproteger un programa.

 
024/consultorio.txt · Última modificación: d/m/Y H:i por miguel
Recent changes RSS feed Creative Commons License Driven by DokuWiki Made on Mac