Kit Spectrum 16Kb a +3 (Speccy superupgrade)

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 28 Mar 2014 12:01

Último mensaje de la página anterior:

La buena noticia es que todas las señales del circuito de mcleod están ya en la GAL, por lo que pienso que se puede hacer sin añadir lógica externa, aunque todavía tengo que ver si hay algún problema con la bidireccionalidad de A15.

Por otro lado, le estaba dando vueltas al tema de la Shadow RAM y me he rayado completamente, por un momento había pensado que se podría emular pero está claro que no, ya que aunque sea capaz de actualizar las dos páginas con el mismo contenido, es imposible que la ULA acceda al contenido de la memoria "shadow" cuando hacemos el cambio de banco.

De todas formas y ya a nivel ilustrativo he estado leyendo la referencia técnica del Spectrum 128 y pone que la página 5 es la misma memoria que la memoria de pantalla, es decir está repetida en $4000 y en $C000, esto ya estaba claro, pero lo que me despista un poco es el texto siguiente. La segunda página de la Shadow RAM es la página 7, en este caso dice que esto no afecta a la memoria en $4000 que siempre es el banco 5.

El banco se cambia modificando el bit 3 del puerto 7ffd. Si este bit está a 0 se selecciona la memoria normal y si está a 1 se selecciona la memoria shadow.

Cito el téxto original:
"When memory is being paged, interrupts should be disabled and the stack should be in an area which is not going to change. If normal interrupt code is to run, then the system variable at 0x5b5c (23388) must be kept updated with the last value sent to port 0x7ffd. Reading from 0x7ffd produces no special results: floating bus values will be returned as would be returned from any other port not attached to any hardware.

The byte output will be interpreted as follows:

Bits 0-2: RAM page (0-7) to map into memory at 0xc000.

Bit 3: Select normal (0) or shadow (1) screen to be displayed. The normal screen is in bank 5, whilst the shadow screen is in bank 7. Note that this does not affect the memory between 0x4000 and 0x7fff, which is always bank 5.

Bit 4: ROM select. ROM 0 is the 128k editor and menu system; ROM 1 contains 48K BASIC.

Bit 5: If set, memory paging will be disabled and further output to this port will be ignored until the computer is reset."


No entiendo que diga que la memoria entre 0x4000 y 0x7fff siempre sea el banco 5, si esto es así, supongo que el contenido del banco 5 tendrá que ser la memoria normal cuando está el bit a 1 y la shadow cuando está a 0 ¿no?.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor mcleod_ideafix » 28 Mar 2014 21:17

wilco2009 escribió:Por otro lado, le estaba dando vueltas al tema de la Shadow RAM y me he rayado completamente, por un momento había pensado que se podría emular pero está claro que no, ya que aunque sea capaz de actualizar las dos páginas con el mismo contenido, es imposible que la ULA acceda al contenido de la memoria "shadow" cuando hacemos el cambio de banco.

No... me temo que para que puedas usar otra zona de memoria como memoria de pantalla tienes que toquetear por dentro del Spectrum. No sería mucho, pero habría que toquetear.

wilco2009 escribió:No entiendo que diga que la memoria entre 0x4000 y 0x7fff siempre sea el banco 5, si esto es así, supongo que el contenido del banco 5 tendrá que ser la memoria normal cuando está el bit a 1 y la shadow cuando está a 0 ¿no?.


El banco 5 está visible siempre en las posiciones $4000 a $7FFF, de la misma forma que el banco 2 está siempre visible en las posiciones $8000 a $BFFF.
Es decir, que podría pasar que tú tuvieras paginado el banco 5, por ejemplo. Entonces, cualquier escritura que hagas a posiciones entre $C000 a $FFFF también aparecerán en la posición correspondiente en el rango $4000 a $7FFF. Y viceversa.
Y que, si por ejemplo tienes paginado el banco 2, cualquier escritura que hagas a posiciones entre $C000 a $FFFF también aparecerán en la posición correspondiente en el rango $8000 a $BFFF. Y viceversa.

El banco 7 es otro banco más, y sólo está disponible para el procesador en el rango $C000 a $FFFF cuando es paginado, es decir, cuando pones un 7 en los tres bits bajos del puerto $7FFD. No está visible a la vez en ningún otro sitio, como pasa con los bancos 2 y 5.

La peculiaridad del banco 7 es que si tú pones un 1 en el bit 3 del puerto $7FFD, la ULA deja de mirar la memoria en el banco 5 para construir la imagen y pasa a mirarla en el banco 7. El que la ULA mire en un banco o en otro es independiente de que tú tengas paginados esos bancos. El 5 está claro que siempre lo vas a ver, porque por lo menos está en $4000 a $7FFF, pero el 7 podría estar fuera del espacio de la CPU, y aun así la ULA lo seguiría usando para pintar la pantalla. Si pones un 0 en ese bit, la ULA mira la memoria en el banco 5 de nuevo para construir la imagen.

Dicho de otra manera: un juego de 128K podría usar perfectamente 48K de RAM total para código y datos a la vez (y no más porque la ROM no se puede desactivar en un 128K/+2 gris), sin que la pantalla le "quite" sitio, como pasa con un 48K normal, en donde tienes como máximo unos 42K para código y datos porque la pantalla le quita unos 6K.

Pequeña demo: carga este programa en un emulador configurado para 128K. Verás dos pantallas que se van tapando la una a la otra, al son de una musiquilla de AY-3-8912. Lo que está pasando aquí es que estoy cambiando de pantalla normal a shadow en un momento preciso, cuando el rayo catódico llega a cierta línea de pantalla. Luego, durante la interrupción del retrazo vertical vuelvo a cambiar de la shadow a la normal. Así, tú ves una primera mitad de una imagen (la de los piratas, que está en la pantalla normal en el banco 5), y luego la segunda mitad de otra (la de game over, en la pantalla shadow, banco 7).

dualpmusica.tap
(19.83 KiB) Descargado 56 veces


Para que te hagas una idea de lo que habría que trastear dentro del equipo para tener pantalla shadow, y de hecho para tener una ampliación 128K 100% compatible, mira este artículo. Es una ampliación de memoria, pero no externa como la vuestra, sino completamente interna, en una placa de Spectrum 48K. Y aún así sigue cambiendo en la carcasa de un "gomas" :D
http://hw.speccy.cz/128krebuild.html
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor mcleod_ideafix » 28 Mar 2014 21:36

mcleod_ideafix escribió:...un driver fuerce la línea A15 a 0...

Un apunte sobre esto. El driver debe ser un driver con salida totem-pole MOSFET. Por eso he puesto un 74HCT125. Lo que queremos es que el driver provoque un cortocircuito a masa de muy poca impedancia para que el 0 forzado sea "fuerte". En definitiva: que el driver debe ser externo al resto de la circuitería y no estar metido en una GAL o similar.

Hay una forma de hacerlo más sencillo con un MOSFET de canal-N, pero el tema MOSFET lo llevo muy verde y no puedo asegurarte de que funcione lo que te propongo. El esquema sería algo así:

Código: Seleccionar todo

A15
---------------------------+----------
                           |
                           |
                           | D
Salida Q              | |--
del biestable       G | |<-|  2N7000
-----------------+----+ |--|
                 |         | S
                 /         |
                          |
             10K /         |
                          |
                 /         |
                 |         |
                ---       ---
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 28 Mar 2014 22:48

Muchas gracias por la explicación, ha quedado clarisimo.
En cuanto a la implementación de la págjna 5, yo me referia a poner la lógica en la gal y habilitar una salida para activar un biestable que me queda libre, pero por lo que dices cambiare el biestable actual por un 74hct125.
Gracias de nuevo.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 08 Abr 2014 21:10

Pues os cuento, no tengo el tema parado ni mucho menos, pero me he encontrado con los primeros problemas.

He corregido algunos errores de diseño que tenía en la deshabilitación de la ROM, pero ahora mismo ahora mismo ando liado con las señales de selección de las ROMs del +3e y no me funcionan.

Las ROMs las tengo todas en un sólo chip de 64Kb al que selecciono las líneas A14 y A15 según detecto los cambios de ROM con los accesos a los puertos 7FFD y 1FFD.

Concretamente, si las coloco en el orden que se supone que deben de ir me aparece la siguiente pantalla:

Imagen

Y las líneas de selección A14 y A15 están a 0. Osea, aparentemente no cambia de ROM para nada, aunque podría ser que tuviera mal el programa de la GAL que se encarga de gestionar esto (lo más seguro).

El cableado parece estar bien ya que si pongo solamente la ROM del gomas o la ROM 3 (que corresponde con la del modo 48Kb) el Spectrum me arranca bien.

Imagen

En definitiva, que como no tengo osciloscopio para vigilar lo que hace el interface me sería de mucha ayuda si alguien se conoce la ROM lo suficiente me puede dar una pista de si se hace un cambio de ROM durante el arranque, ya que si no es así y pese a todo no me funciona, no será el programa de la GAL sino algún problema con el hardware.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
ron
Mensajes: 17991
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 916 veces
Agradecimiento recibido: 993 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor ron » 08 Abr 2014 21:27

Al final pensamos que no, pero tanto STGO como vcoraba me han demostrado que con un osciloscopio haces muchísimo en relativamente un corto periodo de tiempo, ganando además en fiabilidad y eso es un plus. Ya me gustaría tener uno y saber manejarlo. Pero oye, nunca es tarde si la dicha es buena.

No me quiero desviar del tema, muchas gracias por todos los post del proyecto. Ciertamente, admiro vuestro trabajo. Dale CAÑA Wilco !!!

flopping
Mensajes: 2137
Registrado: 26 Jun 2011 17:50
Agradecido : 1 vez
Agradecimiento recibido: 2 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor flopping » 08 Abr 2014 22:52

Mis equipos están a tu disposición wilco2009, a ver si rematamos la faena.

Por cierto, ¿la ROM que te funciona es solo una de un 48k o has grabado lo mismo 4 veces?, ya que si es así, no sabes si estas activando la ROM 0 o la 3, por ejemplo, para saberlo, usa solo una ROM de 48k, dejando el resto vacío, así sabremos si el ordenador arranca bien con la ROM 0, ya que es raro que no arranque con el menú del +3, aunque luego no fueran las demás roms, pero por lo menos debería de arrancar el inicio, ¿están bien grabadas las 4 roms y en el ordena correcto?, a veces son cosas así, por las que no funciona el circuito, compruebalo a ver si fuera algo de eso, salu2.

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 08 Abr 2014 22:58

Gracias por el ofrecimiento. A ver si en contramos tiempo para vernos.
La rom grabada esta solo una vez, por lo que seguro que esta seleccionada la rom 0. Primero probe con 4 roms, pero despues lo hice solo con una para asegurarme de eso.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 08 Abr 2014 23:01

ron escribió:Al final pensamos que no, pero tanto STGO como vcoraba me han demostrado que con un osciloscopio haces muchísimo en relativamente un corto periodo de tiempo, ganando además en fiabilidad y eso es un plus. Ya me gustaría tener uno y saber manejarlo. Pero oye, nunca es tarde si la dicha es buena.

No me quiero desviar del tema, muchas gracias por todos los post del proyecto. Ciertamente, admiro vuestro trabajo. Dale CAÑA Wilco !!!

Pues si. Ya tendria uno si no fuera por lo que cuestan.
A ver si lo puedo resolver sin el, y si no flopping me echara un cable con el osciloscopio.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

flopping
Mensajes: 2137
Registrado: 26 Jun 2011 17:50
Agradecido : 1 vez
Agradecimiento recibido: 2 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor flopping » 08 Abr 2014 23:33

Si lo que quieres es comprobar las activaciones de A14 y A15, puedes poner unos leds en paralelo con esas señales, así podrás "ver" si las señales se activan o se desactivan, en realidad puedes hacerlo con todas las señales que quieras, así puedes saber en que momento se activa una u otra o en que condiciones, es una forma simple y sencilla de "ver" señales, salu2.

Avatar de Usuario
Zardoz
Mensajes: 304
Registrado: 11 Mar 2013 20:37

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor Zardoz » 08 Abr 2014 23:44

ron escribió:Al final pensamos que no, pero tanto STGO como vcoraba me han demostrado que con un osciloscopio haces muchísimo en relativamente un corto periodo de tiempo, ganando además en fiabilidad y eso es un plus.

Cierto en uno analógico... y súper cierto con los digitales.
I'm afraid that I have a blog: http://zardoz.es
Emulador DCPU-16 VM
Emulador RC3200-VM

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 08 Abr 2014 23:47

flopping escribió:Si lo que quieres es comprobar las activaciones de A14 y A15, puedes poner unos leds en paralelo con esas señales, así podrás "ver" si las señales se activan o se desactivan, en realidad puedes hacerlo con todas las señales que quieras, así puedes saber en que momento se activa una u otra o en que condiciones, es una forma simple y sencilla de "ver" señales, salu2.


Jejeje,parece que tenemos telepatia. Eso ya lo he hecho y aparentemente no se mueve de la rom 0, pero por lo que me han dicho dberia cambiar de la 0 a la 3 y luego a la 0, por lo que para detectar ese cambio si es rapido no se si me serviran los leds.
De todas formas apuesto porque esten mal las ecuaciones y realmente no este haciendo el cambio.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

flopping
Mensajes: 2137
Registrado: 26 Jun 2011 17:50
Agradecido : 1 vez
Agradecimiento recibido: 2 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor flopping » 09 Abr 2014 00:04

Eso pasa por estar demasiado tiempo juntos, al final pensamos igual, jajajaja....pues en ese caso revisa las ecuaciones a ver, evidentemente el tema de los diodos, son para señales mas o menos fijas o de conmutacion muy lenta, si son de conmutación rápida no veras nada, aunque para eso tengo un analizador lógico que este si que te captura las señales, jejeejeje....

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 10 Abr 2014 08:40

Al final se ve que además del posible problema con la selección tengo algún problema con el cableado, porque ayer me dejó de funcionar incluso sin ROM.
Tengo que pegar un repaso completo con el polímetro.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 12 Abr 2014 00:39

Pues para poder probar si el hardware hacía correctamente la selección de la página de la ROM he hecho la siguiente prueba:

1º - He quitado la EPROM externa y he dejado activa la ROM interma del Spectrum
2º - He colocado un par de diodos en A14 (rojo) y A15 (azul) del zócalo de la ROM para ver el resultado de la selección.
3º - He hecho un pequeño programa que cambia de página cada vez que pulsas una tecla.

Imagen

Y el resultado es este:

http://youtu.be/j7WyKcWN6ZE

Como veis, aparentemente funciona correctamente, pero sin embargo con las ROMs originales se cuelga.

¿Alguna idea de cual puede ser el problema?

@mcleod: Por cierto, el test que escribiste para comprobar si cambiaba correctamente de banco de RAM me cambiaba tambien al banco 1 de la ROM.
OUT 32765,16+n activa el D4 que es el bit bajo de la selección de ROM . ¿Hacias esto por algún motivo especial?
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 12 Abr 2014 23:35

Noticias frescas compañeros.

He probado las ROMs del 128Kb y del +2 gris y funcionan a la perfección.

Imagen

Imagen

Imagen

Imagen

Las ROMs del +3 se empecinan en no funcionar. :?

Bueno, por lo menos confirmo que el bit bajo de la selección de la página de la ROM funciona correctamente.

Falta que funcione la otra parte. Funcionalmente parece que va bien, tal y como he mostrado en el post anterior.

¿Será que no tiene suficiente velocidad? ¿Será que no encuentra alguna parte del hardware del +2/+3 que le es necesaria para funcionar?

Ni idea.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
wilco2009
Mensajes: 1772
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 74 veces
Agradecimiento recibido: 137 veces

Re: Kit Spectrum 16/48Kb a plus 3 (Speccy superupgrade)

Mensajepor wilco2009 » 13 Abr 2014 16:35

¡¡¡¡¡¡EUREKA!!!!! :D :D :D :D

Imagen

¡¡¡¡¡Por fin las ROMs del +2A/+3 funcionando en el interface!!!!!

Al final era un gran chorrada.

Os cuento el desarrollo.

Para poder diagnosticar el problema he copiado cuatro veces las ROMs del 48Kb cambiando el mensaje de inicio (no tenía la ROM de testeo que ha preparado mcleod para mi).

La idea era ir haciendo outs y y un reset en caliente para comprobar lo que salía en el mensaje de inicio.

Arrancamos y:

Imagen

Como era de esperar arranca la ROM 0, tal y como indican los leds y el mensaje en pantalla.

Para cambiar a la ROM 1 escribimos:

Código: Seleccionar todo

OUT 32765,16
RANDOMIZE USR 0


El resultado es:

Imagen

De momento la cosa va bien.

Como ya estamos en la ROM1, para cambiar a la ROM 3 escribimos:

Código: Seleccionar todo

OUT 8189,4


Y se cuelga sin darme tiempo a más.

Imagen

Para la ROM 2 ocurre exactamente lo mismo, lo que delimita el tema al bit A15 de la ROM y descarta incompatibilidad hardware del +3, ya que me está ocurriendo exactamente lo mismo con la ROM del gomas. Vamos por buen camino. :D

Si nos fijamos en la imagen de más arriba nos damos cuenta que es exactamente la misma que aparece cuando no hay ROM en el Spectrum. Mosqueo, mosqueo. ::? ::?

Dándole vueltas al tema me da por comprobar /CE del chip y Eureka!!!!, cuando tenemos seleccionada A15 /CE se pone a 1. :o

Y aquí es donde está el error. Resulta que tengo implementadas las señales /ROM1OE y /ROM2OE, por lo que se pueden deshabilitar las ROM 1 y 2 por separado de las ROMs 3 y 4.
Esta funcionalidad la he implementado, por espacio, en la GAL del joystick.
Pues bien, estaba suelto el cable de la señal /ROM2OE.

Lo conecto y hago pruebas.

Imagen

Imagen

Ahora sí, las ROMs 2 y 3 funcionan!!!!.

Es hora de probar las ROMs del +3........

Imagen

TACHAN!!!!!!!!! FUNCIONA!!!!!!!!

Joder la de tiempo que me ha hecho perder el puñetero cablecito. :D :D :D
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.


Volver a “Desarrollos y Proyectos RW”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado