Diario de montaje del superupgrade XDD

Avatar de Usuario
wilco2009
Mensajes: 2020
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 162 veces
Agradecimiento recibido: 242 veces

Diario de montaje del superupgrade XDD

Mensajepor wilco2009 » 12 Jun 2014 23:45

Compañeros, no me han llegado todavía todos los componentes, pero como ya no quedan muchos, me he acercado a la tienda de electrónica para comprar las piezas que me faltan para poder montar uno y empezar a hacer pruebas. :D

De momento me voy a saltar los detalles y cuando esté todo funcionando ya haré un post detallado del montaje.

Aquí podéis ver como queda montado:

Imagen

Imagen

O al menos en teoría, porque el primer fallo que he encontrado es que está cambiado el vivo por la masa en el conector de vídeo :( . Es lo que pasa por hacer las huellas de los conectores basándose solo en una foto del componente en ebay.

Por lo demás los demás conectores encajan como un guante :D :D , y eso que he hecho las huellas sin tener los componentes en la mano.

Bueno, de momento he tomado una solución salomónica para el tema del vídeo. Luego ya veremos como lo solucionamos, pero de momento he soldado un par de cablecillos y he dejado el conector colgándo.

Imagen

Una vez todo soldado lo conectamos y empezamos con las pruebas.

He preparado la memoria flash con diferentes ROMs para poder probar todas las posibilidades del interface.

Vamos a arrancar primero con la ROM del gomas.

Imagen

Parece que funciona. Además pruebo a comprobar la memoria de mi 16Kb y me devuelve los valores correspondientes a un 48Kb. Eso es bueno, ya que es la máxima memoria que puede detectar el spectrum.

Seguidamente hago una test de cambio de página de RAM desde el basic y eureka, funciona sin problemas. :D

Una vez probada la RAM, vamos a probar las otras ROMs a base de cambiar la posición de los jumpers:

La flash está dividida en bloques de 64Kb ya que es la memoria que necesita el +3, pero es una pena desaprovechar el espacio cuando activamos otras ROMs como la del gomas (16Kb) o la del 128Kb(32Kb) por lo que vamos a ver si ingeniamos algo para aprovechar esa memoria.

Vamos a hacer la primera prueba con la ROM del 128Kb y del +2 gris:

Imagen

Carga correctamente la del +2 gris :D

Ahora para cambiar a la del 128Kb que la tenemos en la segunda mitad de los 64Kb vamos a hacer como si activaramos el segundo chip del +3.

Imagen

Hacemos un out 8189,4 y.........

Imagen

Eureka, funciona!!!
Bueno, realmente me ha tocado pulsar el botón de NMI para hacer un "reset" sin resetear la GAL.

Vamos a probar las ROMs del +3.
Cambiamos los jumpers a otra posición y.......

Imagen

jejejeje, esto marcha.

Ahora vamos a hacer otra prueba. He rellenado un hueco de 64kb con tres juegos y una ROM del gomas en la posición 0 para poder invocar a las otras tres.

Imagen

Hacemos el out correspondiente y ....

Imagen

Bueno, funciona solo uno de los tres, el QBert, los otros dos se me quedan colgados y se resetean.
Habrá que inventar algún tipo de cargador que se copie de la ROM 0 a la RAM y luego puedas seleccionar la ROM que necesites. Bueno, la idea creo que es buena. jejejeje.

Cambiamos ahora los jumpers para las ROMs del proyecto +3e:

Imagen

jejejeje, también funcionan.

Por último he puesto, las ROMs del ZX80, ZX81 y Jupiter Ace de FruitCake....

Y bueno, algún problema de compatibilidad tengo porque el ZX80 no pasa del menú de arranque:

Imagen

Y los otros se quedan colgados al intentar hacer el switch desde la ROM del gomas.

Vamos ahora a intentar conectar el divIDE. Para ello le tengo que soldar el bus de expansión.

Imagen

Lamentablemente no me ha funcionado de ninguna forma el divIDE, por lo que tendré que repasar soldaduras y el esquema, ya que con el prototipo funcionaba bien.

Queda entonces por solucionar el problema del divIDE, probar el sonido, hacer el programa cargador para las ROMs menores de 64Kb e investigar algunas cosas raras que hace a veces, pero de momento esto marcha. :D :D :D :D

Os seguiré informando.......
"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
flopping
Mensajes: 2619
Registrado: 26 Jun 2011 17:50
Agradecido : 3 veces
Agradecimiento recibido: 129 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor flopping » 13 Jun 2014 00:04

MOOOLLLAAAA, esto ya va cogiendo color, jejejejeje....esperaremos a ver esas pruebas que tal salen, salu2.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2021, 39 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Avatar de Usuario
antoniovillena
Mensajes: 170
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 13 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor antoniovillena » 13 Jun 2014 01:41

Para ser una primerísima prueba está muy muy bien, enhorabuena.

wilco2009 escribió:La flash está dividida en bloques de 64Kb ya que es la memoria que necesita el +3, pero es una pena desaprovechar el espacio cuando activamos otras ROMs como la del gomas (16Kb) o la del 128Kb(32Kb) por lo que vamos a ver si ingeniamos algo para aprovechar esa memoria.


Se pueden rehacer las ecuaciones de la GAL para seleccionar vía software cuál de los 8 bancos de ROM que se va a activar, en lugar de hacerlo manualmente vía jumpers como se hace actualmente.

La idea es escribir un menú de arranque al comienzo que te muestre todas las ROMs disponibles y que puedas seleccionar distintas opciones: ROMs de 48K (1 banco), ROMs de 128K (2 bancos), ROMs de +2A (4 bancos) o juegos de cartucho (1 banco). Si no se selecciona nada en X tiempo, se salta a la ROM que esté configurada por defecto. Sería algo parecido a la BIOS del ZX-Uno aunque mucho más restrictivo: las ROMs de +2A tienen que empezar en bancos múltiplos de 4 y las de 128K en bancos pares. Lo bueno de este sistema es que no tienes que hacer modificaciones en las ROMs (el código de selección de ROM está en la "BIOS") y no hace falta tocar ningún jumper para seleccionar un juego.

Lo malo, requiere unos cuantos hackeos para llevarlo a cabo. Por un lado necesitas 3 bits para almacenar el grupo activo, quitando la funcionalidad de los 512K supongo que se puede. Por otro lado tienes muy pocos buses (A15, A14 y A1 en direcciones y D2 en datos) por lo que tienes que tirar de las señales BANK0..4 tanto para direccionar como para cambiar los 3 bits del nuevo puerto.

Avatar de Usuario
ron
Mensajes: 19430
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 2338 veces
Agradecimiento recibido: 2139 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor ron » 13 Jun 2014 07:13

Wilco nuestro heroe !!!

Los comentarios de antoniovillena son interesantres, ya veras como se soluciona todo

Avatar de Usuario
jrodriguezv
Mensajes: 760
Registrado: 05 Jul 2012 10:32
Agradecido : 19 veces
Agradecimiento recibido: 13 veces
Contactar:

Re: Diario de montaje del superupgrade XDD

Mensajepor jrodriguezv » 13 Jun 2014 08:24

La verdad es que el proyecto es la caña. Enhorabuena Wilco nuevamente por tus proyectos y la manera de contarnos como avanzas. ¡Chapeau!

Avatar de Usuario
wilco2009
Mensajes: 2020
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 162 veces
Agradecimiento recibido: 242 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor wilco2009 » 13 Jun 2014 08:45

antoniovillena escribió:Para ser una primerísima prueba está muy muy bien, enhorabuena.

wilco2009 escribió:La flash está dividida en bloques de 64Kb ya que es la memoria que necesita el +3, pero es una pena desaprovechar el espacio cuando activamos otras ROMs como la del gomas (16Kb) o la del 128Kb(32Kb) por lo que vamos a ver si ingeniamos algo para aprovechar esa memoria.


Se pueden rehacer las ecuaciones de la GAL para seleccionar vía software cuál de los 8 bancos de ROM que se va a activar, en lugar de hacerlo manualmente vía jumpers como se hace actualmente.

La idea es escribir un menú de arranque al comienzo que te muestre todas las ROMs disponibles y que puedas seleccionar distintas opciones: ROMs de 48K (1 banco), ROMs de 128K (2 bancos), ROMs de +2A (4 bancos) o juegos de cartucho (1 banco). Si no se selecciona nada en X tiempo, se salta a la ROM que esté configurada por defecto. Sería algo parecido a la BIOS del ZX-Uno aunque mucho más restrictivo: las ROMs de +2A tienen que empezar en bancos múltiplos de 4 y las de 128K en bancos pares. Lo bueno de este sistema es que no tienes que hacer modificaciones en las ROMs (el código de selección de ROM está en la "BIOS") y no hace falta tocar ningún jumper para seleccionar un juego.

Lo malo, requiere unos cuantos hackeos para llevarlo a cabo. Por un lado necesitas 3 bits para almacenar el grupo activo, quitando la funcionalidad de los 512K supongo que se puede. Por otro lado tienes muy pocos buses (A15, A14 y A1 en direcciones y D2 en datos) por lo que tienes que tirar de las señales BANK0..4 tanto para direccionar como para cambiar los 3 bits del nuevo puerto.


La verdad es que es una muy buena opción, pero el problema es que no tengo claro que sea viable ni siquiera deshabilitando el acceso a los 512Kb.
Las patillas de la GAL están todas utilizadas y el control de los 512Kb se hace con 2 bits. Le echaremos un vistazo a ver que se puede hacer cuando me funcione todo lo demás. Cabe la posibilidad de que pueda ahorrar alguna patilla combinando señales.
EDITO: Espera que no te había entendido. Tú dices que las propias señales de la RAM me sirvan para seleccionar la ROM activa. Eso sí podría ser y reduciría el número de jumpers a uno solo. -thumbup
"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
antoniovillena
Mensajes: 170
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 13 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor antoniovillena » 13 Jun 2014 09:42

A ver necesitas 3 salidas de la GAL libres para implementar los 3 biestables, que a la vez van a ROMA16..A18. Dos de dichas salidas son claramente /SA17 y SA18 puesto que sólo tienen sentido para la ampliación de 512Kb. La tercera habría que sacarla de algún lado, la opción más fácil que se me ocurre es sacando /RAMCS fuera de la PAL (metes /MREQ en /CS1 y A15 en CS2).

Para escribir en el nuevo puerto selector de grupo de ROM tenemos muy pocas señales pero es posible. Con A15, A14 y A1 podemos direccionar el puerto 1FFD (el mismo que el del +2A aunque al no tener A13 sería realmente 3FFD). Evidentemente tiene que haber un mecanismo de decodificación adicional, sino escribiríamos en el mismo puerto que el +2A y las propias escrituras que hace la ROM del +2A serían suficientes para cambiar accidentalmente el grupo de ROM. Como tenemos 6 señales libres para usar (BANK0..BANK4 y D2) pues cogemos 3 de ellas (las que queramos para decodificación) y las otras 3 para selección (qué bits vamos a escribir en los biestables). Esto conlleva una escritura previa al puerto 7FFD. Hay que escoger bien los valores para la decodificación para evitar escrituras accidentales al puerto. Por ejemplo si decodificamos con BANK0..BANK2 un posible valor sería 101 (página 5) puesto que raramente se selecciona dicha página en $C000. No obstante es mejor decodificar con las otras señales. Yo escogería algo como D2=0, BANK3=1, BANK4=0, empleando BANK0..BANK2 para escribir en los biestables ROMA16..18 respectivamente.

Avatar de Usuario
wilco2009
Mensajes: 2020
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 162 veces
Agradecimiento recibido: 242 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor wilco2009 » 13 Jun 2014 11:30

antoniovillena escribió:A ver necesitas 3 salidas de la GAL libres para implementar los 3 biestables, que a la vez van a ROMA16..A18. Dos de dichas salidas son claramente /SA17 y SA18 puesto que sólo tienen sentido para la ampliación de 512Kb. La tercera habría que sacarla de algún lado, la opción más fácil que se me ocurre es sacando /RAMCS fuera de la PAL (metes /MREQ en /CS1 y A15 en CS2).


Si quieres hacerlo todo por software sí que necesitas 3, pero yo planteaba hacer un paso intermedio necesitando un solo jumper que seleccionara la mitad superior o la inferior.
De todas formas, para conseguir una patilla adicional /RAMCS sí es la mejor opción, pero no se puede implementar de esa manera, ya que las RAMs no son de 128Kb, sino de 512Kb, con lo que la patilla CS2 del chip del 128Kb es en realidad A17.
Bueno, se podría implementar con algún diodo adicional.
Mi idea es, pese a todo mantener la posibilidad de los 512Kb de RAM, aunque se podrían utilizar los jumpers para elegir entre tener 512Kb y tener selección de las ROMs por software, dejando ambas posibilidades activas pero no simultáneamente.
Es decir, cableamos las señales que ahora mismo van a /SA17 y SA18, mediante un jumper cuadruple, a los jumpers de selección de las ROMs (esto habría que pensarlo bien), de tal forma que los jumpers de habilitación de /SA17 y SA18 direccionaran dichas señales a la RAM o a la ROM dependiendo de su posición.
La tercera señal recuperada de RAMCS podríamos cablearla directamente a la ROM.

antoniovillena escribió:Para escribir en el nuevo puerto selector de grupo de ROM tenemos muy pocas señales pero es posible. Con A15, A14 y A1 podemos direccionar el puerto 1FFD (el mismo que el del +2A aunque al no tener A13 sería realmente 3FFD). Evidentemente tiene que haber un mecanismo de decodificación adicional, sino escribiríamos en el mismo puerto que el +2A y las propias escrituras que hace la ROM del +2A serían suficientes para cambiar accidentalmente el grupo de ROM. Como tenemos 6 señales libres para usar (BANK0..BANK4 y D2) pues cogemos 3 de ellas (las que queramos para decodificación) y las otras 3 para selección (qué bits vamos a escribir en los biestables). Esto conlleva una escritura previa al puerto 7FFD. Hay que escoger bien los valores para la decodificación para evitar escrituras accidentales al puerto. Por ejemplo si decodificamos con BANK0..BANK2 un posible valor sería 101 (página 5) puesto que raramente se selecciona dicha página en $C000. No obstante es mejor decodificar con las otras señales. Yo escogería algo como D2=0, BANK3=1, BANK4=0, empleando BANK0..BANK2 para escribir en los biestables ROMA16..18 respectivamente.


Yo creo que nos podemos apañar con los puertos actuales 7FFD y 1FFD. Con 7FFD podemos seleccionar las líneas A16 y A17 de la ROM, de esta manera seguimos conservando la funcionalidad de los 512Kb de RAM.
Para la línea A18, si queremos usar el puerto 1FFD tenemos que usar la otra GAL. De esta GAL podemos eliminar la salida que controla D5, D6 y D7 del joystick. Dicha salida conectarla a DATAOE, que en principio era una señal interna de la GAL. El único problema es que hay que negar la señal por lo que necesitaremos un transistor y una resistencia, así podemos usar, por ejemplo D5, para seleccionar A18, con lo que al final /RAMCS se queda donde está.

De todas formas prefiero dejar esto para cuando tenga probada toda la funcionalidad.
"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
antoniovillena
Mensajes: 170
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 13 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor antoniovillena » 13 Jun 2014 17:16

wilco2009 escribió:Si quieres hacerlo todo por software sí que necesitas 3, pero yo planteaba hacer un paso intermedio necesitando un solo jumper que seleccionara la mitad superior o la inferior.


Si lo hacemos así tendríamos 2 BIOS distintas y dos menús de selección de ROM distintos. Sería un poco más incómodo para el usuario que el caso de cero jumpers pero lo que es funcionar, funcionaría.

wilco2009 escribió:De todas formas, para conseguir una patilla adicional /RAMCS sí es la mejor opción, pero no se puede implementar de esa manera, ya que las RAMs no son de 128Kb, sino de 512Kb, con lo que la patilla CS2 del chip del 128Kb es en realidad A17.
Bueno, se podría implementar con algún diodo adicional.


En los esquemas que he visto la RAM es de 128Kb, por eso lo había planteado así. Igual nos podemos ahorrar el diodo si ocupapos el biestable IC4B que queda libre.

wilco2009 escribió:Mi idea es, pese a todo mantener la posibilidad de los 512Kb de RAM, aunque se podrían utilizar los jumpers para elegir entre tener 512Kb y tener selección de las ROMs por software, dejando ambas posibilidades activas pero no simultáneamente.
Es decir, cableamos las señales que ahora mismo van a /SA17 y SA18, mediante un jumper cuadruple, a los jumpers de selección de las ROMs (esto habría que pensarlo bien), de tal forma que los jumpers de habilitación de /SA17 y SA18 direccionaran dichas señales a la RAM o a la ROM dependiendo de su posición.
La tercera señal recuperada de RAMCS podríamos cablearla directamente a la ROM.


Sí, es buena idea. No hace falta ponérselo tan fácil al usuario, yo había pensado no hacer nada y el que quiera que lo implemente como MOD. Se puede llegar a un término intermedio, lo que no quiero es perder área de PCB con tanto jumper. Al fin y al cabo elegir entre los 512K y el menú de ROMs va a ser algo más o menos permanente, tan sólo con cambiar los jumpers no funciona (hay que reprogramar una PAL).

wilco2009 escribió:Yo creo que nos podemos apañar con los puertos actuales 7FFD y 1FFD. Con 7FFD podemos seleccionar las líneas A16 y A17 de la ROM, de esta manera seguimos conservando la funcionalidad de los 512Kb de RAM.
Para la línea A18, si queremos usar el puerto 1FFD tenemos que usar la otra GAL. De esta GAL podemos eliminar la salida que controla D5, D6 y D7 del joystick. Dicha salida conectarla a DATAOE, que en principio era una señal interna de la GAL. El único problema es que hay que negar la señal por lo que necesitaremos un transistor y una resistencia, así podemos usar, por ejemplo D5, para seleccionar A18, con lo que al final /RAMCS se queda donde está.


Esto no vale, en cada escritura a 7FFD se fijarían los bits A16 y A17 de la ROM por lo que estaríamos cambiado de ROM constantemente. Tiene que haber un mecanismo de decodificación adicional para evitar esto. Si tenemos seleccionado un grupo de ROMs y de repente el juego que estemos ejecutando hace una escritura a 7FFD, esto cambiaría a otro grupo de ROMs y produciría un cuelgue.

wilco2009 escribió:De todas formas prefiero dejar esto para cuando tenga probada toda la funcionalidad.


Por supuesto, mis sugerencias son consecuencias de tu pregunta. Yo lo planteaba como MOD de la PCB actual, pero eso no quita que si te resulta interesante puedas dejarlo como opción para la nueva revisión de la PCB. Pero sí, lo mejor es hacerlo con calma cuando esté todo lo demás resuelto.

Avatar de Usuario
wilco2009
Mensajes: 2020
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 162 veces
Agradecimiento recibido: 242 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor wilco2009 » 13 Jun 2014 18:45

antoniovillena escribió:
wilco2009 escribió:Mi idea es, pese a todo mantener la posibilidad de los 512Kb de RAM, aunque se podrían utilizar los jumpers para elegir entre tener 512Kb y tener selección de las ROMs por software, dejando ambas posibilidades activas pero no simultáneamente.
Es decir, cableamos las señales que ahora mismo van a /SA17 y SA18, mediante un jumper cuadruple, a los jumpers de selección de las ROMs (esto habría que pensarlo bien), de tal forma que los jumpers de habilitación de /SA17 y SA18 direccionaran dichas señales a la RAM o a la ROM dependiendo de su posición.
La tercera señal recuperada de RAMCS podríamos cablearla directamente a la ROM.


Sí, es buena idea. No hace falta ponérselo tan fácil al usuario, yo había pensado no hacer nada y el que quiera que lo implemente como MOD. Se puede llegar a un término intermedio, lo que no quiero es perder área de PCB con tanto jumper. Al fin y al cabo elegir entre los 512K y el menú de ROMs va a ser algo más o menos permanente, tan sólo con cambiar los jumpers no funciona (hay que reprogramar una PAL).


Según mi idea no hacía falta reprogramar la PAL, ya que se aprovechaba la funcionalidad que ya estaba programada para el cambio de página del RAM de los 512Kb.
Por otro lado se podría reutilizar igualmente la funcionalidad capturando una línea del bus u otra si lo que queremos es cambiar la funcionalidad a otro puerto diferente.

antoniovillena escribió:
wilco2009 escribió:Yo creo que nos podemos apañar con los puertos actuales 7FFD y 1FFD. Con 7FFD podemos seleccionar las líneas A16 y A17 de la ROM, de esta manera seguimos conservando la funcionalidad de los 512Kb de RAM.
Para la línea A18, si queremos usar el puerto 1FFD tenemos que usar la otra GAL. De esta GAL podemos eliminar la salida que controla D5, D6 y D7 del joystick. Dicha salida conectarla a DATAOE, que en principio era una señal interna de la GAL. El único problema es que hay que negar la señal por lo que necesitaremos un transistor y una resistencia, así podemos usar, por ejemplo D5, para seleccionar A18, con lo que al final /RAMCS se queda donde está.


Esto no vale, en cada escritura a 7FFD se fijarían los bits A16 y A17 de la ROM por lo que estaríamos cambiado de ROM constantemente. Tiene que haber un mecanismo de decodificación adicional para evitar esto. Si tenemos seleccionado un grupo de ROMs y de repente el juego que estemos ejecutando hace una escritura a 7FFD, esto cambiaría a otro grupo de ROMs y produciría un cuelgue.


Tienes razón, tendrían problemas los mismos juegos que los tienen cuando tienes activado el modo 512Kb. Habría entonces que buscar otro puerto que nos sirviera, aunque el hecho de simular el biestable en la GAL en lugar de utilizar uno de verdad tiene un coste de patillas que hay que tener en cuenta. Si utilizamos otro puerto, es otra señal de reloj para otro biestable distinto, con lo que habría que hacer pruebas.
De todas formas me gusta mucho el tema de tener una bios de arranque por lo que le echaré tiempo cuando pueda.
"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
antoniovillena
Mensajes: 170
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 13 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor antoniovillena » 13 Jun 2014 19:06

wilco2009 escribió:Tienes razón, tendrían problemas los mismos juegos que los tienen cuando tienes activado el modo 512Kb. Habría entonces que buscar otro puerto que nos sirviera, aunque el hecho de simular el biestable en la GAL en lugar de utilizar uno de verdad tiene un coste de patillas que hay que tener en cuenta. Si utilizamos otro puerto, es otra señal de reloj para otro biestable distinto, con lo que habría que hacer pruebas.
De todas formas me gusta mucho el tema de tener una bios de arranque por lo que le echaré tiempo cuando pueda.


Sí pero no tenemos suficientes líneas para usar otro puerto, por eso propuse emplear el puerto 3FFD (que vendría a ser el 1FFD) con la condición de que D2=0, BANK3=1, BANK4=0. Es decir, si quiero cambiar al grupo de ROMs 2 haría algo como esto:

Código: Seleccionar todo

        ld      bc, $7ffd
        ld      a, %01000010    ; %01XXX010, BANK3=1, BANK4=0.  BANK2..0= 2
        out     (c), a
        ld      b, $3f
        ld      a, %00000000    ; %XXXXX0XX, D2= 0
        out     (c), a          ; escribo en nuevo puerto


Si además del grupo queremos cambiar el subgrupo (cuál de las 4 ROMs paginamos), tenemos que hacer esto:

Código: Seleccionar todo

        ld      bc, $7ffd
        ld      a, %01010010    ; %01XaX010, BANK3=1, BANK4=0.  BANK2..0= 2, a=1
        out     (c), a
        ld      b, $3f
        ld      a, %00000000    ; %XXXXX0XX, D2= 0
        out     (c), a          ; escribo en nuevo puerto
        ld      b, $7f
        out     (c), a          ; desactivo escritura en nuevo puerto
        ld      a, %00000100    ; %XXXXXbXX, b=1
        ld      b, $3f
        out     (c), a          ; selecciono bit alto de ROM, estaríamos en ROM 3


En cuanto a lo del biestable, no digo de simular nada dentro de la GAL, a lo que me refería es a aprovechar la parte asíncrona del mismo para simular una puerta e implementar RAMCS fuera de la GAL. Así nos ahorramos el tener que meter diodos, pero aún tengo que estudiarlo, no sé si se puede hacer.

Avatar de Usuario
wilco2009
Mensajes: 2020
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 162 veces
Agradecimiento recibido: 242 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor wilco2009 » 13 Jun 2014 19:21

antoniovillena escribió:
wilco2009 escribió:Tienes razón, tendrían problemas los mismos juegos que los tienen cuando tienes activado el modo 512Kb. Habría entonces que buscar otro puerto que nos sirviera, aunque el hecho de simular el biestable en la GAL en lugar de utilizar uno de verdad tiene un coste de patillas que hay que tener en cuenta. Si utilizamos otro puerto, es otra señal de reloj para otro biestable distinto, con lo que habría que hacer pruebas.
De todas formas me gusta mucho el tema de tener una bios de arranque por lo que le echaré tiempo cuando pueda.


Sí pero no tenemos suficientes líneas para usar otro puerto, por eso propuse emplear el puerto 3FFD (que vendría a ser el 1FFD) con la condición de que D2=0, BANK3=1, BANK4=0. Es decir, si quiero cambiar al grupo de ROMs 2 haría algo como esto:

Código: Seleccionar todo

        ld      bc, $7ffd
        ld      a, %01000010    ; %01XXX010, BANK3=1, BANK4=0.  BANK2..0= 2
        out     (c), a
        ld      b, $3f
        ld      a, %00000000    ; %XXXXX0XX, D2= 0
        out     (c), a          ; escribo en nuevo puerto


Si además del grupo queremos cambiar el subgrupo (cuál de las 4 ROMs paginamos), tenemos que hacer esto:

Código: Seleccionar todo

        ld      bc, $7ffd
        ld      a, %01010010    ; %01XaX010, BANK3=1, BANK4=0.  BANK2..0= 2, a=1
        out     (c), a
        ld      b, $3f
        ld      a, %00000000    ; %XXXXX0XX, D2= 0
        out     (c), a          ; escribo en nuevo puerto
        ld      b, $7f
        out     (c), a          ; desactivo escritura en nuevo puerto
        ld      a, %00000100    ; %XXXXXbXX, b=1
        ld      b, $3f
        out     (c), a          ; selecciono bit alto de ROM, estaríamos en ROM 3


En cuanto a lo del biestable, no digo de simular nada dentro de la GAL, a lo que me refería es a aprovechar la parte asíncrona del mismo para simular una puerta e implementar RAMCS fuera de la GAL. Así nos ahorramos el tener que meter diodos, pero aún tengo que estudiarlo, no sé si se puede hacer.


Lo que decias del biestable lo habia entendido, pero cuando hablaba de simular un biestable no me referia a eso.
Cuando añades una señal de reloj a una de las patillas de una gal distinta de la correspondiente a la patilla uno, por limitaciones de hardware te asigna un dummy en una patilla libre. Por eso se suele utilizar un chip biestable y desde la gal solo se activa la señal de reloj.
Cuando tienes que hacer eso con varias patillas es inasumible.
Para la gal actual hice una ñapa que me permite no perder patillas, pero habria que ver si la puedo extrapolar a unnuevo puerto.
"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: 2020
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 162 veces
Agradecimiento recibido: 242 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor wilco2009 » 13 Jun 2014 19:21

antoniovillena escribió:
wilco2009 escribió:Tienes razón, tendrían problemas los mismos juegos que los tienen cuando tienes activado el modo 512Kb. Habría entonces que buscar otro puerto que nos sirviera, aunque el hecho de simular el biestable en la GAL en lugar de utilizar uno de verdad tiene un coste de patillas que hay que tener en cuenta. Si utilizamos otro puerto, es otra señal de reloj para otro biestable distinto, con lo que habría que hacer pruebas.
De todas formas me gusta mucho el tema de tener una bios de arranque por lo que le echaré tiempo cuando pueda.


Sí pero no tenemos suficientes líneas para usar otro puerto, por eso propuse emplear el puerto 3FFD (que vendría a ser el 1FFD) con la condición de que D2=0, BANK3=1, BANK4=0. Es decir, si quiero cambiar al grupo de ROMs 2 haría algo como esto:

Código: Seleccionar todo

        ld      bc, $7ffd
        ld      a, %01000010    ; %01XXX010, BANK3=1, BANK4=0.  BANK2..0= 2
        out     (c), a
        ld      b, $3f
        ld      a, %00000000    ; %XXXXX0XX, D2= 0
        out     (c), a          ; escribo en nuevo puerto


Si además del grupo queremos cambiar el subgrupo (cuál de las 4 ROMs paginamos), tenemos que hacer esto:

Código: Seleccionar todo

        ld      bc, $7ffd
        ld      a, %01010010    ; %01XaX010, BANK3=1, BANK4=0.  BANK2..0= 2, a=1
        out     (c), a
        ld      b, $3f
        ld      a, %00000000    ; %XXXXX0XX, D2= 0
        out     (c), a          ; escribo en nuevo puerto
        ld      b, $7f
        out     (c), a          ; desactivo escritura en nuevo puerto
        ld      a, %00000100    ; %XXXXXbXX, b=1
        ld      b, $3f
        out     (c), a          ; selecciono bit alto de ROM, estaríamos en ROM 3


En cuanto a lo del biestable, no digo de simular nada dentro de la GAL, a lo que me refería es a aprovechar la parte asíncrona del mismo para simular una puerta e implementar RAMCS fuera de la GAL. Así nos ahorramos el tener que meter diodos, pero aún tengo que estudiarlo, no sé si se puede hacer.


Lo que decias del biestable lo habia entendido, pero cuando hablaba de simular un biestable no me referia a eso.
Cuando añades una señal de reloj a una de las patillas de una gal distinta de la correspondiente a la patilla uno, por limitaciones de hardware te asigna un dummy en una patilla libre. Por eso se suele utilizar un chip biestable y desde la gal solo se activa la señal de reloj.
Cuando tienes que hacer eso con varias patillas es inasumible.
Para la gal actual hice una ñapa que me permite no perder patillas, pero habria que ver si la puedo extrapolar a un nuevo puerto.
"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
antoniovillena
Mensajes: 170
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 13 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor antoniovillena » 13 Jun 2014 20:02

wilco2009 escribió:Lo que decias del biestable lo habia entendido, pero cuando hablaba de simular un biestable no me referia a eso.
Cuando añades una señal de reloj a una de las patillas de una gal distinta de la correspondiente a la patilla uno, por limitaciones de hardware te asigna un dummy en una patilla libre. Por eso se suele utilizar un chip biestable y desde la gal solo se activa la señal de reloj.
Cuando tienes que hacer eso con varias patillas es inasumible.
Para la gal actual hice una ñapa que me permite no perder patillas, pero habria que ver si la puedo extrapolar a un nuevo puerto.


En este caso no hay problema, no hay que añadir ninguna señal de reloj distinta a la patilla 1 (/WR). Con respecto a la implementación de la puerta OR con el biestable, sería así:

Meter en CLK la misma señal del otro biestable (reloj del cristal activo), en D la señal /MREQ y en PRE la señal A15, siendo la salida sin negar del biestable la señal /RAMCS (la que va a /CS1 de IC8).

Avatar de Usuario
antoniovillena
Mensajes: 170
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 13 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor antoniovillena » 13 Jun 2014 20:09

Con componentes pasivos aparte de una OR cableada (con diodos) se necesita un inversor. Por suerte puedes emplear IC2D (la cuarta NAND) para invertir y así te ahorras un transistor. Pero puestos a elegir me quedo con la solución del biestable ya que no requiere componentes adicionales (diodos y resistencias).

Avatar de Usuario
wilco2009
Mensajes: 2020
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 162 veces
Agradecimiento recibido: 242 veces

Re: Diario de montaje del superupgrade XDD

Mensajepor wilco2009 » 14 Jun 2014 01:11

OK, pues tomo nota y en cuanto pueda me pongo con ello. La verdad es que puede quedar bastante bien lo de ponerle el firmware.
"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