006:hardware

Microhobby 6. Año I, del 11 al 17 de diciembre de 1984

La semana pasada tratamos el tema de la ampliación de memoria desde un punto de vista teórico o conceptual a fin de que Vd. supiera lo que hace y porqué, en todo momento.

Circuitos integrados de la ampliación de memoria.

Como ya hemos mencionado en la primera parte de este tema, la ampliación en la práctica consiste únicamente, en introducir doce circuitos integrados en los zócalos que ya existen, en la tarjeta impresa de su SPECTRUM y efectuar unos puentes. La operación es sencilla y le ofrece un éxito seguro, lo que sin duda además de satisfacción le dará ánimos para mayores empresas que iremos proponiendo en esta sección. Por supuesto que si Vd. es ya un experto en hardware lo que sigue será una mera información.

Los materiales que necesita, además de las herramientas claro, son: ocho memorias TMS-4532, dos 74LS157, un 74LS00 y un 74LS32.

Si ya dispone del material, abra el Spectrum retirando los cinco tornillos inferiores; seguidamente y con cuidado, retire las dos cintas procedentes del teclado de sus respectivos conectores.

A continuación, retire también un tornillo miniatura que se encuentra hacia el centro de la tarjeta quedando ésta libre. Ahora, lea en la parte inferior derecha si su Spectrum es la versión 2 o la 3B (ISSUE TWO o ISSUE 3B), porque según cual sea, tendrá que proceder de diferente forma. En ambos casos, inserte primeramente las memorias y el resto de los circuitos integrados en sus zócalos libres correspondientes, tal como se representa en la figura número cuatro. Preste atención a que las ranuras de todos los circuitos integrados estén mirando hacia el conector posterior, haciendo caso omiso de la ranura de los zócalos, ya que suelen estar a menudo girados.

Ahora hay que realizar los puentes, para ello siga guiándose por la figura número uno y por las fotografías que acompañan al texto.

Si su Spectrum es de la versión dos, ha de realizar un único puente entre el punto LINK y + 5V si las RAM tienen el código TMS 4532-L4 o entre LINK y 0V si es la versión TMS 4532-L3. El puente lo hará soldando, sobre el circuito impreso, un trocito de alambre de aproximadamente 1 mm. de diámetro. Si su Spectrum es la versión 3B habrá de hacer dos puentes, pero primeramente retire el disipador de aluminio del regulador de tensión aflojando el tornillo que fija el disipador y el regulador a la placa.

Aspecto del área de la ampliación (ISSUE TWO).

Los puentes son: uno entre los puntos que pone «TI», y el otro en «3» si la RAM es del código TMS 4532-L3 o en «4» si la memoria es TMS 4532-L4.

Seguidamente vuelva a colocar el disipador, tornillos y cintas en su conector sin olvidarse del diminuto tornillo del centro de la tarjeta; luego cierre la tapa con su tornillería.

El cambio ya se ha producido. Ahora tiene Vd. un Spectrum de 48 K bytes. Vamos a hacer una prueba antes de dar por buena la operación. Conecte el aparato y teclee: 'PRINT PEEK 23733', luego 'RUN' y 'ENTER' y el ordenador responderá con un 255. Si lo hace con un 127 la operación ha sido incorrecta, desconecte y revise lo hecho.

En la zona de las variables del sistema, existen dos posiciones de memoria denominadas P-RAMT, en donde la CPU carga el límite de RAM obtenida tras el chequeo de la misma en el momento de la inicialización.

La P-RAMT está en las direcciones 23732 y 23733 en donde queda almacenada la dirección física del final de la RAM. La parte baja en 23732 y la parte alta 23733. En nuestro chequeo, hemos utilizado esta última porque es la representativa, ya que la anterior está siempre a 255 (FF en hexadecimal), esto es porque los dos límites posibles de RAM son 16383 (3FFFH) o 65535 (FFFFH).

La ampliación una vez realizada (ISSUE 3B).

La inserción de doce circuitos más integrados en la tarjeta impresora, aumentan obviamente el consumo de corriente. Todos ellos cargan sobre el regulador de cinco voltios, que es un componente similar a un transistor de media potencia al cual va adosado mediante un tornillo y arandelas de presión un disipador de aluminio, visible ostentosamente en ambas versiones. La unión física entre el regulador y el disipador, hace que el calor del primero pase al segundo y desde éste al aire gracias a su mayor superficie y buen conductor (El aluminio) eléctrico y calorífico. De lo dicho se deduce que al cabo de un tiempo de funcionamiento su Spectrum (Ahora de 48 K bytes) se calienta más que antes. No se preocupe ni le dé importancia; ya que todo está calculado para que así sea. No obstante, procure no tapar las ranuras existentes en la tapa inferior de la caja ni la ventana del lateral posterior por donde se accede al conector, ya que son las vías de circulación del aire disipante.

Las memorias usadas han de ser necesariamente de la firma Texas Instruments, que es la que fabrica el tipo empleado. Reconocemos que es un código poco frecuente, aunque debido a la proliferación de Spectrums cada día resulta más fácil hallarla como componente de extensión o repuesto.

Sabemos que algunos expertos que han utilizado otro tipo, como la TMS 4564, que se encuentra comercializada por más frabricantes con éste o con códigos similares gracias a que la distribución de terminales es la misma; pero estas memorias son de 64 K bytes, lo cual obliga a bloquear la mitad de su capacidad, llevando uno de sus terminales a masa o a +5V a través del conmutador 74LS157. Esto conlleva un replanteamiento de los puentes a efectuar, por lo que nos limitamos simplemente a mencionar esta segunda posibilidad.

En la versión 3B no hemos mencionado, dentro del área de puentes, los marcados con OKI, L, H. Esto es porque son redundantes o no intervienen en nuestro proyecto.

Puentes (ISSUE 3B).

Hemos tratado hasta aquí, la forma de extender la memoria hasta 48 K bytes de RAM; pero puede ser útil, aunque a primera vista parezca absurdo, poder bloquear los últimos 32 K bytes. Esto lo pueden hacer tanto los que han extendido su Spectrum como los que ya disponían de los 48 K bytes de origen.

Los motivos para bloquear los últimos 32 K bytes pueden ser varios: necesitar ese área de memoria total o parcialmente para un periférico, crear varias paginaciones de 32 K bytes en paralelo cada una (esto conlleva bloquear todas las demás y dar paso a una únicamente), y la más importante, bloquear para dar paso cuando nos interese sin haber perdido su contenido.

Tras este breve comentario seguramente le parecerá más lógico la proposición de bloqueo opcional de los 32 K.

Si echa un vistazo a la primera parte de este tema en el que incluimos un dibujo con las direcciones de memoria de cada una de las cuatro páginas en que dividimos el área direccionable del Spectrum, verá que los últimos dos bloques de 16 K bytes cada uno forman un todo que en la figura número 2, que adjuntamos, está tratado de forma específica, pudiéndose apreciar en ellas las posibilidades ya comentadas. Le rogamos siga esta figura para lo que le exponemos seguidamente.

Cuando se trabaja en Basic, el programa es ubicado por el editor a partir del primer bloque de RAM de 16 K bytes. Si el programa es largo, puede rebasarlos y continuar ocupando memoria, entrando sin más en los 32 K bytes que le siguen.

Si en este momento se bloquearan los 32 K bytes, ocurrirían cosas extrañas y probablemente el microprocesador se perdería. Para trabajar en Basic, el bloqueo no es interesante, tan sólo lo es cuando se trabaja en Assembler o se desarrollan subrutinas en código máquina para ser tratadas desde Basic.

Puentes (ISSUE TWO).

Para desarrollar un programa en código máquina, normalmente hacen falta dos programas auxiliares que son: un Ensamblador y un Monitor. El Ensamblador es utilizado para editar el programa y convertirlo en objeto o código máquina propiamente dicho, y el Monitor se usa para correr el programa ya ensamblado y depurarlo.

En el mercado existen varios Ensambladores y Monitores con diferentes variedades, según al tipo de usuario al que vayan destinados.

Tanto el Ensamblador como el Monitor se ubican en RAM, y es aquí donde el bloqueo de los 32 K bytes viene a ayudar al sufrido programador en Assembler. Algunos de los Ensambladores y Monitores existentes son reubicables, lo cual permite alojar ambos en los últimos 32 K bytes. Si el programa que se pretende confeccionar en código máquina también se ubica en esta área, entonces es cuando se obtiene la gran ventaja del bloqueo, porque si en el momento de ser corrido y depurado se pierde el microprocesador por algún error cometido, podemos nuevamente devolver el control al Z-80 vía Basic, con sólo bloquear los 32 K bytes, hacer un reset (el reset sólo borraría los primeros 16 K bytes) y retirar el bloqueo. Ahora, sólo hay que entrar de nuevo en el Monitor desde el Basic para averiguar la razón por la que se perdió la ejecución de nuestro programa en código máquina.

De no ser por el recurso del bloqueo, no habría manera de recuperar el contenido de memoria, ya que si el microprocesador se pierde, sólo un reset es capaz de entregarle de nuevo el control, borrándose con él la totalidad de la memoria. Para repetir el proceso, habría que cargar de nuevo el Ensamblador, el Monitor y nuestro programa en fuente o en objeto. Por último, un consejo software: si se han de utilizar rutinas de retardo en código máquina, hay que ubicar el programa fuera de los primeros 16 K bytes, ya que en ellos la ULA tiene prioridad y modifica la frecuencia del clock del microprocesador para conseguir sus objetivos funcionales. Esto daría lugar a que una misma rutina de retardo produjera diferentes tiempos en cada momento. Ubicar el código máquina en los 32 K bytes finales tiene, como vemos, un segundo efecto beneficioso.

Figura 1: Disposición de los circuitos integrados para la ampliación de memoria a 48 K bytes y los puentes a efectuar.

Conmutador bloqueo 32k. (Corrección que proviene de MH#008

Bloquear los 32 K bytes de extensión consiste en no permitir el acceso del microprocesador ni para leer ni para escribir; pero sí para mantener el refresco.

El refresco, recordemos, lo efectúa el Z-80 mediante la señal MREQ que va directamente conectada a la entrada RAS de todos los chips de RAM, y los bits A0 del bus de direcciones barren constantemente las columnas que conforman la matriz de memoria.

En la figura 3 mostramos la circuitería lógica que relaciona al Z-80 con la memoria. En la patita número cinco de la puerta OR (IC23), justo después de la segunda red de retardo, si introducimos un uno lógico fijo, habremos bloqueado la puerta y con ella toda la lógica anterior de lectura o escritura, pero no el refresco. Un simple interruptor conectado entre cualquier punto de +5V y este terminal producirá el bloqueo al cerrarse el circuito.

En el terminal número cinco de la puerta OR IC23, coinciden las señales de control procedentes del microprocesador WR que da paso a la excritura, RD que permite la lectura, y Al5 que es el bit de dirección de permiso de todo el bloque de 32 K bytes.

Si por esta entrada número cinco insertamos directamente un potencial de + 5V mediante el interruptor citado, estamos introduciendo un uno fijo mientras estén cerrados sus contactos, obligando con ello, a que la OR entregue, por su salida número seis, otro uno fijo independiente de lo que le llegue por la entrada número cuatro. Así se cumple la filosofía booleana de toda función OR.

La bifurcación anterior, que parte del terminal número ocho (seguimos en la figura número tres) de otra puerta OR, estará siempre a cero en el momento del refresco permitiendo, de esta forma, que el conmutador electrónico 74LS157 conduzca hacia el bus de direcciones de la RAM los bits A0 a A6 del Z-80.

Figura 2: Bloqueo y paginación esquemáticos de los últimos 32 K bytes del Spectrum.

Introducir un uno fijo en un cierto punto de una circuitería lógica mediante un interruptor conectado directamente a + 5V sin intercalar ningún elemento resistivo, no es nada ortodoxo, a no ser que se den las circunstancias que inciden en el circuito que estamos comentando.

Decimos que no es ortodoxo porque llevaría, necesariamente, a la destrucción del transistor interno de salida de la puerta anterior que proporciona el cero lógico, potencial de masa en nuestro circuito.

Dicho tansistor sería el del terminal número ocho de la puerta OR que precede al punto de conexión del interruptor. No obstante, como se ve en el esquema, entre la salida ocho y el punto del interruptor existe una resistencia que absorbe la caída de tensión producida en el instante de estar cerrando el interruptor, y conduciendo el transistor de masa de la mencionada salida.

Además, este estado, de producirse, sólo duraría unos pocos microsegundos. Veamos ahora la realización práctica.

El interruptor sería exterior y se colocaría hábilmente en la caja o fuera de ella, según la destreza manual del lector.

El terminal central del interruptor y otro de los del extremo, se llevarían a sendos cables que irían soldados indistintamente a las patitas 5 y 16 del circuito integrado IC23.

Esta conexión sería preferiblemente efectuada por la parte inferior del circuito impreso para no calentar en exceso los terminales del circuito integrado al efectuar la soldadura.

Procure no equivocarse de patita; para ello repasar la operación hasta estar completamente seguro de que se han soldado los cables en los puntos correctos.

Ahora, sólo falta conectar el aparato y repetir las mismas pruebas recomendadas para la extensión de memoria anteriormente mencionadas.

Figura 4: Detalle de los puntos de soldadura a realizar sobre el circuito de bloqueo de los 32 K bytes de extensión de RAM.

Primitivo de Francisco

  • 006/hardware.txt
  • Última modificación: d/m/Y H:i
  • por miguel