Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Subforo oficial del Sinclair QL: realiza aquí las consultas relativas a tu QL.

Moderador: Sir Cilve Sinclair

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Otra propuesta: ampliación interna de 512K

Mensaje por mcleod_ideafix » Lun Ago 16, 2010 6:00 am

Vale, pues esto ya funciona. Unas fotillos, mientras explico cómo ha ido la cosa:

La placa, con los puentes soldados (las pistas en rojo en la PCB, para no tener que usar una placa de doble cara):
Imagen

Una vez puestos los puentes, soldamos los componentes SMD: dos pequeños condensadores de desacoplo (casi no se verán en la foto), y la memoria. Soldar la memoria es más sencillo de lo que parece: se "presenta" el chip a la placa, se embadurna de flux las dos filas de pines, se pone un pegote de estaño en la punta del soldador, y se "pasea" la punta por tooooda la fila. Si se formaran puentes juntando dos o más pines, se limpia con la malla desoldadora.
Después de la memoria se suelda el zócalo para la GAL, y el zócalo de patas largas para el 68008 (en realidad son dos zócalos de 24 pines unidos, de los que se usan para diseño wire-wrapping)
Imagen

La cara de componentes sólo tiene los zócalos para los chips. Aquí está ya puesta la GAL.
Imagen

La placa, ya pinchada sobre el zócalo del 68008. Por supuesto, el QL no se puede cerrar con esta placa puesta, pero me da igual, ya que sólo quiero cercionarme de que esto funciona. Ya he comentado en posts anteriores que debido a esto, y a que cierta señal que me hace falta está sólamente disponible en el conector de expansión, esta ampliación, para ser usada "en producción" debería ir pinchada a dicho conector.
Imagen

El cablecillo que sale de la GAL hacia la placa ha sido el quebradero de cabeza de estas últimas 24 horas. (¡UPDATE!: debería haberme leído con calma la página 64 del QL Technical Guide, que dice esto mismo que voy a decir yo ahora, bien clarito. En finx...)

Algo expliqué antes, pero para simplificar: existe una señal en el interior del QL que permite desactivar a voluntad las dos ULA's, a la manera en que se hace en el Spectrum 48K. ¿Y por qué hace falta desactivar las ULA's cuando accedemos a la ampliación de memoria? Pues porque éstas son las responsables de direccionar y activar los primeros 256K del mapa de memoria: esto incluye la ROM del sistema, la ROM auxiliar, el espacio para periféricos del sistema, y los primeros 128K de RAM, y "gracias" a que la decodificación del bus de direcciones es incompleta, resulta que si no se desactivan las ULA's, al acceder a una dirección de memoria donde se supone que no hay nada, lo que tenemos es un "espejo" de los primeros 256K del mapa de memoria.
Por ejemplo: si en un QL original, sin expandir, hacemos un PEEK a la dirección 262144, lo que se lee es lo mismo que se leería en la dirección 0.
El resultado final de esto es que con la ampliación puesta, si no se desactivan la ULA's lo que pasará es que la memoria de la ampliación colisionará con lo que quiera que esté enviando el QL por la ROM o la RAM del sistema, según la dirección a la que accedamos (en el ejemplo del PEEK 262144 sería el primer byte de la ROM del sistema).
En el QL la señal que desactiva las ULA's se llama DSMC(L). En los esquemáticos y en otros documentos le ponen la L para indicar que es activa a nivel bajo. Yo simplemente la llamaré DSMC (Data Strobe Master Chip). Está en el pin 5 de IC22, entre otros lugares, y se muestra parcialmente en este esquema.
Imagen

DSMC es una señal que, en principio, viene "casi" directamente desde la señal DS del procesador. Esta señal indica cuándo la transferencia de datos es posible desde o hacia el 68008. Si nunca baja, el dispositivo piensa que la CPU no está haciendo un ciclo de bus, y por tanto no hace nada. El "casi" de antes significa que DSMC está desacoplada de DS mediante una resistencia de 330 ohmios. Si nadie fuerza un valor 1 ó 0 en DSMC, esta señal seguirá las variaciones de DS, pero si un dispositivo externo fuerza un 1 en esta línea, DSMC dejará de seguir a DS y se quedará con el valor que le digamos.

En el QL hay dos formas de forzar esta línea a 1. La primera forma es bajando la señal VPA y a la vez, acceder a una dirección que tenga A18 ó A19 a 1. En la ampliación se cumple que la memoria se selecciona precisamente con esta combinación de A18 y A19, pero no bajamos VPA porque la memoria no es un periférico síncrono de la familia 6800 (que es para lo que sirve esta señal VPA) así que este método no nos vale. EDITO: en realidad sí que vale. Lo acabo de comprobar :) Si se hace así, basta con llevar la señal RAMCE directamente a VPA, con lo que la señal DSMC no hace falta ser generada.

La segunda forma es forzando directamente el 1 en la línea DSMC. Esto es lo que haremos nosotros. Para ello se ha añadido una ecuación más a la GAL que calcula el valor que debe tener DSMC para el ciclo de bus actual, y que puede ser "alta impedancia" o 1.
Imagen

Y ahora sí que podemos arrancar el QL, y ver los resultados :) Se nota para empezar que tarda más en arrancar, debido a que se chequea mucha más memoria. Pero al final, obtenemos esto (arrancando con Minerva 1.98):
Imagen

Y desde SuperBASIC, probando algunos comandos para ver dónde reserva memoria un RESPR, y usando una de las variables del sistema (una variable análoga a la variable P_RAMT del Spectrum) para obtener la dirección máxima de RAM+1 disponible:
Imagen

El valor, 786432, corresponde en hexadecimal a C0000, que es ni más ni menos que el tope asignado a la memoria expandida del QL en el mapa de memoria :) . En resumen: tenemos toda la RAM que oficialmente podemos tener en el QL :D
Imagen

Por último, en lugar de poner las ecuaciones de la GAL, pongo el circuito equivalente que habría que hacer con componentes discretos. Si uno echa las cuentas, verá que necesitará un puñado de chips para implementar este circuito, por otra parte sencillo. Teniendo disponible las GAL, no hay color :)
Imagen
Última edición por mcleod_ideafix el Lun Ago 16, 2010 8:49 pm, editado 1 vez en total.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
Zitror
Herbert
Mensajes: 69
Registrado: Mié Oct 07, 2009 10:36 am
Ubicación: el interior de un Z80

Re: Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Mensaje por Zitror » Lun Ago 16, 2010 5:50 pm

Madre mía, merece la pena leerse el artículo, sí señor pese a ser un neófito del QL :D
No soy técnico en la materia (ni mucho menos) pero cuenta con un ávido lector de este hilo.

Salu2 :wink:

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Mensaje por mcleod_ideafix » Lun Ago 16, 2010 9:02 pm

Gracias! :) Creo que puedo hacer una versión de esta ampliación para instalar internamente en un QL, como si fuera un "modchip" (ya sabes: un chip de estos de consola de los que tienes que soldar tropecientos cablecillos :D )
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
apenao
Jack The Nipper
Mensajes: 154
Registrado: Dom Ene 27, 2008 6:08 pm
Ubicación: Marbella

Re: Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Mensaje por apenao » Lun Ago 16, 2010 10:19 pm

Estoy con Zitror. Hasta para un absoluto iletrado tanto de electrónica como de QL (me refiero a mí mismo, claro está) es una lectura sumamente interesante.

Miedo me da pensar lo que va a hacer Mcleod cuando por fin tenga el libro de la ULA en sus manos (y perdón por el off-topic). Me veo conectando un condensador de fluzo a Spectrum...

Zerover
Jack The Nipper
Mensajes: 112
Registrado: Mar Abr 08, 2008 9:00 am

Re: Otra propuesta: ampliación interna de 512K

Mensaje por Zerover » Mar Ago 17, 2010 12:42 am

mcleod_ideafix escribió:
Zerover escribió:Sí. Tiene cuatro pines más, dos de ellos son las líneas de dirección A20 y A21.

Vale, ya sé cuál es. Con esa versión, efectivamente, puedes direccionar hasta 4MB de memoria. Pero el mapa de memoria del QL tiene un problema: oficialmente, los últimos 256KB del espacio de memoria de 1MB están reservados para EPROM's de periféricos (hasta 16 EPROM's de 16KB cada una). Si se respeta eso, cualquier ampliación posterior (los 3MB que pueden añadirse) estarían más allá de ese hueco.

Esto no sé si lo soporta alguna de las ROM's que hay para QL (estoy pensando sobre todo en Minerva). No sé si para detectar la cantidad de RAM libre necesita que ésta sea contigua o no. Si necesita que sea contigua, habría que "invadir" el espacio dedicado a dichas EPROM's para no perder la continuidad de la RAM.

Otra cosa que no sé si se soporta en Minerva o algún otro S.O. para QL es tener más de 1MB de RAM.

El caso ideal es que el S.O. soporte más de 1MB de RAM y que no le importe que haya un "hueco" de 256KB al final del primer mega de memoria. Si esto es así, mucho mejor. La cosa es, ¿cómo se puede averiguar?


Pues trataré de mirarlo, pero así a bote pronto te puedo decir que la Gold Card tiene 2MiB de RAM (lleva un 68000 y anula el 68008 del QL) y que funciona con Qdos, Minerva y SMSQ perfectamente.

A propósito, fantástico el desarrollo y la explicación de la tarjeta que has creado.

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Otra propuesta: ampliación interna de 512K

Mensaje por mcleod_ideafix » Mar Ago 17, 2010 1:06 am

Zerover escribió:Pues trataré de mirarlo, pero así a bote pronto te puedo decir que la Gold Card tiene 2MiB de RAM (lleva un 68000 y anula el 68008 del QL) y que funciona con Qdos, Minerva y SMSQ perfectamente.

Esta Gold Card, ¿permite la inserción de más periféricos en el lateral? (EDITO: veo que no) Lo que quiero averiguar es si respeta los 256KB que el QL reserva al final del primer MB para ROM's, periféricos, y demás, y los 2MB de RAM comienzan después de ese hueco, o los 2MB comienzan donde acaban los 128KB originales. Que Minerva y demás soporten más de 1MB no me extraña, pero lo que ya no me queda tan claro es que soporten esa memoria con el hueco en medio.

Zerover escribió:A propósito, fantástico el desarrollo y la explicación de la tarjeta que has creado.

Gracias! :)
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Mensaje por radastan » Mar Ago 17, 2010 11:24 am

McLeod, muchas gracias por tus aportaciones, cada vez me queda más claro el esquema interno del QL y su funcionamiento.

Lo dicho, cuando quieras te mando mi Trumpcard.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Mensaje por mcleod_ideafix » Mié Ago 18, 2010 7:15 am

radastan escribió:McLeod, muchas gracias por tus aportaciones, cada vez me queda más claro el esquema interno del QL y su funcionamiento.
Lo dicho, cuando quieras te mando mi Trumpcard.


Gracias! De momento... ¿podrías hacerle una foto a buena resolución de las dos caras del circuito? Quiero tener una idea de la complejidad y qué componentes tiene...
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Mensaje por radastan » Mié Ago 18, 2010 7:41 am

Esta misma tarde te lo hago a todo detalle.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Otra propuesta: ampliación interna de 512K

Mensaje por mcleod_ideafix » Mié Ago 18, 2010 8:22 am

Zerover escribió:Aparte de que no sea la finalidad de este experimento que estás haciendo, ¿se podría sustituir la CPU por una menos voluminosa y de paso añadir 3MiB más de RAM?
Imagen


Creo que he encontrado algo mejor: un 68000 con la posibilidad de operar en buses de 8 bits, o dicho de otra forma: un chip como el 68008, con la misma capacidad de direccionamiento que el 68000 original (16MB), con versiones de hasta 20MHz, y que es compatible directo con el bus del 68008, sin necesidad de "glue-logic". Es el 68HC001. Los estoy viendo en eBay a $20 la versión de 16MHz.

Imagen

La ventaja de este chip es que constituye un reemplazo cuasi-directo del 68008. Si hubiera suficiente altura en la carcasa se podría hacer con un adaptador DIP, y de paso añadir un poco de memoria extra. Si se hace por el conector lateral, hay más espacio para añadir memoria en cantidades industriales :D y operar al doble de velocidad de un QL original, como mínimo.

Lo mejor (o peor, según se mire) es que aún se sigue vendiendo de forma oficial por FreeScale, la compañía que tiene los derechos de estos procesadores, pero... por poco tiempo, ya que lo han catalogado como un dispositivo que ha llegado al final de su vida: el último día en que esta empresa acepta pedidos es el 24 Nov 2010, y la última fecha de entrega, 31 Mar 2012.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Mensaje por radastan » Mié Ago 18, 2010 10:24 am

Mc Leod, ya sólo te falta una sustitución de la ULA para usar 16 colores en el modo 8 (es decir, usando el bit de flash) y entonces te sacamos por la puerta grande a volantas... estás que te sales.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Mensaje por radastan » Mié Ago 18, 2010 11:09 pm

A ver Mc Leod, te dejo un par de fotos en:

http://www.bytemaniacos.com/varios/trump1.jpg
http://www.bytemaniacos.com/varios/trump2.jpg

Como puedes ver la placa no es compleja, y posiblemente puedas desentrañarla sin problemas con un analizador y un lector de EPROMs.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Otra propuesta: ampliación interna de 512K (¡FUNCIONA!)

Mensaje por mcleod_ideafix » Mié Ago 18, 2010 11:12 pm

Me sale error de carga al pinchar en las fotos :O
Web: ZX Projects | Twitter: @zxprojects

Zerover
Jack The Nipper
Mensajes: 112
Registrado: Mar Abr 08, 2008 9:00 am

Re: Otra propuesta: ampliación interna de 512K

Mensaje por Zerover » Mié Ago 18, 2010 11:18 pm

mcleod_ideafix escribió:
Zerover escribió:Pues trataré de mirarlo, pero así a bote pronto te puedo decir que la Gold Card tiene 2MiB de RAM (lleva un 68000 y anula el 68008 del QL) y que funciona con Qdos, Minerva y SMSQ perfectamente.

Esta Gold Card, ¿permite la inserción de más periféricos en el lateral? (EDITO: veo que no) Lo que quiero averiguar es si respeta los 256KB que el QL reserva al final del primer MB para ROM's, periféricos, y demás, y los 2MB de RAM comienzan después de ese hueco, o los 2MB comienzan donde acaban los 128KB originales. Que Minerva y demás soporten más de 1MB no me extraña, pero lo que ya no me queda tan claro es que soporten esa memoria con el hueco en medio.

Fijándome en algunos indicios he llegado a las siguientes conclusiones:

El Qdos no reconoce memoria RAM más allá de los 640K oficiales. Además la memoria RAM debe ser contigua, aparte de las variables del sistema y la memoria de vídeo (que también se puede ver como zona de E/S).

La Trump Card ocupa el espacio para ampliaciones de ROM con RAM, eso da 256K más de RAM. Para poder hacer eso ejecuta un parche que está en el inicio de su ROM.

La Gold Card también ocupa esos 256K con RAM. Tiene un total de 2MiB colocados en los primeros 2MiB de direccionamiento, como los primeros 128K son de ROM y de periféricos, eso da un total de 1920K efectivos. También ejecuta un parche para que Qdos use toda esa RAM.

Hay una tarjeta que usa el 68008 de 52 pines para ampliar la RAM a 3MiB, la Mega-RAM de ABC Elektronic (se puede ver un comentario en la revista CUQ nº7). Esta tarjeta respeta el primer mega de direcciones y coloca los 3MiB de ampliación en el resto del espacio de direccionamiento. Esta ampliación se activa con un comando y entonces la memoria original del QL se puede usar para otras cosas como por ejemplo un ramdisk, pero no entra en el common heap.

Zerover
Jack The Nipper
Mensajes: 112
Registrado: Mar Abr 08, 2008 9:00 am

Re: Otra propuesta: ampliación interna de 512K

Mensaje por Zerover » Mié Ago 18, 2010 11:46 pm

mcleod_ideafix escribió:Creo que he encontrado algo mejor: un 68000 con la posibilidad de operar en buses de 8 bits, o dicho de otra forma: un chip como el 68008, con la misma capacidad de direccionamiento que el 68000 original (16MB), con versiones de hasta 20MHz, y que es compatible directo con el bus del 68008, sin necesidad de "glue-logic". Es el 68HC001. Los estoy viendo en eBay a $20 la versión de 16MHz.


Interesante. He visto que también el 68EC000 permite configuración de bus de datos de 8 bits. Por cierto, la Gold Card tiene un 68HC000 de Toshiba, no sé si éste también lo permite.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados