Opus Discovery Va-de-retro
Moderadores: cacharreo, Fundadores
Reglas del Foro
Aquí solo tienen cabida proyectos de hardware que incluyan siempre al menos sus esquemáticos para poder reproducirlos si llevan componentes electrónicos, y si es posible los ficheros del programa en que se hacen, los diseños de las placas, los gerber, etc. Si llevan algún tipo de software asociado debe estar diponible el código fuente
Para los que no cumplen estas condiciones se debe postear en el foro de proyectos generales.
Aquí solo tienen cabida proyectos de hardware que incluyan siempre al menos sus esquemáticos para poder reproducirlos si llevan componentes electrónicos, y si es posible los ficheros del programa en que se hacen, los diseños de las placas, los gerber, etc. Si llevan algún tipo de software asociado debe estar diponible el código fuente
Para los que no cumplen estas condiciones se debe postear en el foro de proyectos generales.
- acf76es
- Demonio tercer orden
- Mensajes: 829
- Registrado: 03 Nov 2014, 22:48
- Ubicación: Cantabria
- Has thanked: 1 time
- Been thanked: 39 times
Re: Opus Discovery Va-de-retro
aqui tenemos el diagrama del opus discovery:
si ves en el digrama kyp, la señal /WR no requiere en ningun momento para establecer ninguna ecuacion en la gal porque no entra en ninguna.
la que si se establece la señal /RD es solo para el kempston.
EDITO:
U12A_5 = !A0 & !A1 & !A2 & !A5 & !A7;
deberia de ser:
U12A_5 = !A0 # !A1 # !A2 # !A5 # !A7;
lo digo porque U12 es una puerta NOR
si ves en el digrama kyp, la señal /WR no requiere en ningun momento para establecer ninguna ecuacion en la gal porque no entra en ninguna.
la que si se establece la señal /RD es solo para el kempston.
EDITO:
U12A_5 = !A0 & !A1 & !A2 & !A5 & !A7;
deberia de ser:
U12A_5 = !A0 # !A1 # !A2 # !A5 # !A7;
lo digo porque U12 es una puerta NOR
- Kyp
- Hermano de Lucifer
- Mensajes: 3376
- Registrado: 30 Sep 2013, 14:54
- Ubicación: Madrid
- Has thanked: 28 times
- Been thanked: 146 times
Re: Opus Discovery Va-de-retro
Así está más claro.
Entonces...
CX_U12B_6 = !A15 & !A14 & RFSH & !MREQ ; /* External ROM OE Ignored. */
¿Por qué se ignora EXTROMCS? En el esquema si se usa.
- alvaroalea
- Demonio segundo orden
- Mensajes: 1091
- Registrado: 25 Oct 2014, 12:49
- Ubicación: Asturias, Paraiso Natural
- Has thanked: 13 times
- Been thanked: 52 times
- Contactar:
Re: Opus Discovery Va-de-retro
A ver voy a intentar resumir los ultimos correos:
Ignoro EXTROMCS porque no tenemos el slot de expansion, la idea de la opus original es poder conectar una segunda interface, y si esta pide usar el espacio de memoria de la rom, inhibe a la OPUS, tambien esta simplificado el circuito el ROMCS que va al spectrum, por la misma razon.
WR / RD no se usan porque esta interfaz utiliza la forma "motorola" de perifericos, es decir, utiliza PEEK y POKE en lugar de IN y OUT
CX_CK = !MREQ & RFSH; -> es una AND, el clock de la bascula JK es positivo, asi que necesitamos que RFSH este a 1 (porque se pone a cero cuando esta en el ciclo de refresco) y que MREQ este a 0 (porque se pone a cero cuando accedemos a memoria) RFSH se tiene que utilizar porque como usamos la forma "motorola" el propio ciclo de refresco del Z80 podria provocar una activacion o desactivacion cuando no debe.
Probablemente Kyp tenga sentido, efectivamente RFSH es un atajo, que necesita una patilla menos, tener en cuenta que el interface no esta diseñado desde cero, es una copia del esquema original.
Las señales A13 y A11 que van a sendos decodificadores del 74LS139 se les quito la negacion a posta, si te fijas, las patillas 6 y 7 estan intercambiadas en el primero, de manera que cuando la entrada A1 este a cero, y A13 este a cero, (estaremos leyendo los primeros 8K) se activa O2.
En el otro igual al estar negada A11, he intercambiado O0 con O1 y O2 con O3.
U12A_5 = !A0 & !A1 & !A2 & !A5 & !A7; -> esta bien, U12 es una NOR, asi que hacemos OR de todos y negamos el resultado !( A0 # A1 # A2 # A5 # A7) , o utilizando la propiedad conmutativa (creo) una and con las entradas negadas !A0 & !A1 & !A2 & !A5 & !A7 ya que /(A+B) = /A * /B
Se me ocurre la siguiente prueba:
anulemos la bascula JK, haciendo:
CX_K = b'0';
CX_J = b'1' ;
Y grabemos estas roms:
http://www.fruitcake.plus.com/Sinclair/ ... thStar.htm
y
http://www.fruitcake.plus.com/Sinclair/ ... ridges.htm
De esta manera se queda paginada la rom del interfaz siempre, asi que deberiamos ver que carga esas rom y se ejecutan perfectamente (esta prueba es mejor hacerla con el 6821 y el WD1770 quitados).
De esta manera podemos comprobar que la parte de decodificacion y paginado de la rom funciona correctamente. y vamos descartando cosas...
Ignoro EXTROMCS porque no tenemos el slot de expansion, la idea de la opus original es poder conectar una segunda interface, y si esta pide usar el espacio de memoria de la rom, inhibe a la OPUS, tambien esta simplificado el circuito el ROMCS que va al spectrum, por la misma razon.
WR / RD no se usan porque esta interfaz utiliza la forma "motorola" de perifericos, es decir, utiliza PEEK y POKE en lugar de IN y OUT
CX_CK = !MREQ & RFSH; -> es una AND, el clock de la bascula JK es positivo, asi que necesitamos que RFSH este a 1 (porque se pone a cero cuando esta en el ciclo de refresco) y que MREQ este a 0 (porque se pone a cero cuando accedemos a memoria) RFSH se tiene que utilizar porque como usamos la forma "motorola" el propio ciclo de refresco del Z80 podria provocar una activacion o desactivacion cuando no debe.
Probablemente Kyp tenga sentido, efectivamente RFSH es un atajo, que necesita una patilla menos, tener en cuenta que el interface no esta diseñado desde cero, es una copia del esquema original.
Las señales A13 y A11 que van a sendos decodificadores del 74LS139 se les quito la negacion a posta, si te fijas, las patillas 6 y 7 estan intercambiadas en el primero, de manera que cuando la entrada A1 este a cero, y A13 este a cero, (estaremos leyendo los primeros 8K) se activa O2.
En el otro igual al estar negada A11, he intercambiado O0 con O1 y O2 con O3.
U12A_5 = !A0 & !A1 & !A2 & !A5 & !A7; -> esta bien, U12 es una NOR, asi que hacemos OR de todos y negamos el resultado !( A0 # A1 # A2 # A5 # A7) , o utilizando la propiedad conmutativa (creo) una and con las entradas negadas !A0 & !A1 & !A2 & !A5 & !A7 ya que /(A+B) = /A * /B
Se me ocurre la siguiente prueba:
anulemos la bascula JK, haciendo:
CX_K = b'0';
CX_J = b'1' ;
Y grabemos estas roms:
http://www.fruitcake.plus.com/Sinclair/ ... thStar.htm
y
http://www.fruitcake.plus.com/Sinclair/ ... ridges.htm
De esta manera se queda paginada la rom del interfaz siempre, asi que deberiamos ver que carga esas rom y se ejecutan perfectamente (esta prueba es mejor hacerla con el 6821 y el WD1770 quitados).
De esta manera podemos comprobar que la parte de decodificacion y paginado de la rom funciona correctamente. y vamos descartando cosas...
- acf76es
- Demonio tercer orden
- Mensajes: 829
- Registrado: 03 Nov 2014, 22:48
- Ubicación: Cantabria
- Has thanked: 1 time
- Been thanked: 39 times
Re: Opus Discovery Va-de-retro
ya he modificado la Gal como comentabas.. he grabado las dos rom's y funciona perfectamente como la rom de test y el juego, eso si.. en algunos momentos no carga a la primera y se he de hacer un reset o varios..
CX_K = 'b'0;
CX_J = 'b'1 ;
CX_K = 'b'0;
CX_J = 'b'1 ;
- alvaroalea
- Demonio segundo orden
- Mensajes: 1091
- Registrado: 25 Oct 2014, 12:49
- Ubicación: Asturias, Paraiso Natural
- Has thanked: 13 times
- Been thanked: 52 times
- Contactar:
Re: Opus Discovery Va-de-retro
Esa es buena información, podemos asumir que la parte de los decodificadores está bien, ahora mismo sospecho del reset y de las salidas de la báscula, no sé si tienes opción de intercambiar las salidas 8 y 9 y probar con las ecuaciones normales de J y K y las invertidas, tengo que analizar con más calma el circuito
- acf76es
- Demonio tercer orden
- Mensajes: 829
- Registrado: 03 Nov 2014, 22:48
- Ubicación: Cantabria
- Has thanked: 1 time
- Been thanked: 39 times
Re: Opus Discovery Va-de-retro
puedo intercambiar las salidas sin problema, e intentar utilizar las ecuaciones de la báscula JK, pero necesito saber que ecuaciones quieres, las ultimas o las versiones anteriores.
- alvaroalea
- Demonio segundo orden
- Mensajes: 1091
- Registrado: 25 Oct 2014, 12:49
- Ubicación: Asturias, Paraiso Natural
- Has thanked: 13 times
- Been thanked: 52 times
- Contactar:
Re: Opus Discovery Va-de-retro
A ver, estoy pensando un poco en voz alta:
El reset tiene que estar bien, porque va tambien a PIA y al WDC y en estos esta claro que es negado.
En la direccion 0 de la rom del Opus no hay nada, bueno, si un salto directo a despaginar la interfaz y saltar a la direccion 0000 de la ROM.
Asi que realmente no importa intercambiar Q y /Q, ya que en un reset siempre se despagina el interfaz.
En la rutina de despaginado, direccion 1748 hay simplemente un RET, eso me hace pensar que esa direccion se lee de la rom del interfaz y DESPUES se despagina el interfaz,
Pero en las direcciones 8 y 48 hay codigo que tiene que ser ejecutado al paginar la interfaz.
es decir, creo que el circuito formado por el transistor, el condensador y dos resistencias que hay entre Q de la bascula JK y ROMCS del spectrum funciona como un temporizador cuando despaginamos, pero entra inmediatamente cuando paginamos. (el condensador mantiene la salida ROMCS a uno el tiempo suficiente para que el Z80 lea la instruccion RET).
No es que este muy seguro de eso, ya que la señal que va la ROM del opus no se temporizaria, y si lee el RET es de casualidad.
Igual era buena idea replicar ese circuito, pero partiendo de Q! para ahorrarnos el inversor. Las resistencias las sabemos, el valor del condensador no, a ver si en speccy.pl lo comentan... o alguno de los que tiene la interfaz original puede identificar dicho condensador.
Esto es un poco complicado pero mientras una prueba que seria facil de hacer es la siguiente (esta asi a lo loco, sin pensarlo mucho:
Si funciona, pues guay, aunque esa opcion anula el poder hacer una version "extendida" continuando el slot, quiza podriamos hacer algun apaño utilizar la otra bascula JK para algo.
Hacemos un puente entre la patilla 9 de la bascula JK que es por cierto, el pin central del jumper JP2 y la patilla 19 de la GAL IC04 y en la programacion de la gal añadimos la definicion del pin 19 (no recuerdo si tienen que ir en orden la definicion de pins) y las ecuaciones como sigue:
PIN 19 = DLY
/* */
CX_U12B_6 = !A15 & !A14 & RFSH & !MREQ ; /* External ROM OE Ignored. */
C1 = !A15 & !A14 & !A13 & !A11 & !A4 & A3 & U12A_5 & !MREQ & RFSH & !M1 ;
C2 = A8 & A9 & A10 & A12 ;
C3 = !A8 & !A9 & !A10 & !A12 ;
CX_K = C1 & C2 & A6 ;
CX_J = (C1 & C2 & !A6) # (C1 & C3) ;
CX_CK = (!MREQ & RFSH & !DLY ) # (MREQ & RFSH & DLY );
Por cierto, el trozo de esquema de arriba viene de este otro, sacado de facebook:
El reset tiene que estar bien, porque va tambien a PIA y al WDC y en estos esta claro que es negado.
En la direccion 0 de la rom del Opus no hay nada, bueno, si un salto directo a despaginar la interfaz y saltar a la direccion 0000 de la ROM.
Asi que realmente no importa intercambiar Q y /Q, ya que en un reset siempre se despagina el interfaz.
En la rutina de despaginado, direccion 1748 hay simplemente un RET, eso me hace pensar que esa direccion se lee de la rom del interfaz y DESPUES se despagina el interfaz,
Pero en las direcciones 8 y 48 hay codigo que tiene que ser ejecutado al paginar la interfaz.
es decir, creo que el circuito formado por el transistor, el condensador y dos resistencias que hay entre Q de la bascula JK y ROMCS del spectrum funciona como un temporizador cuando despaginamos, pero entra inmediatamente cuando paginamos. (el condensador mantiene la salida ROMCS a uno el tiempo suficiente para que el Z80 lea la instruccion RET).
No es que este muy seguro de eso, ya que la señal que va la ROM del opus no se temporizaria, y si lee el RET es de casualidad.
Igual era buena idea replicar ese circuito, pero partiendo de Q! para ahorrarnos el inversor. Las resistencias las sabemos, el valor del condensador no, a ver si en speccy.pl lo comentan... o alguno de los que tiene la interfaz original puede identificar dicho condensador.
Esto es un poco complicado pero mientras una prueba que seria facil de hacer es la siguiente (esta asi a lo loco, sin pensarlo mucho:
Si funciona, pues guay, aunque esa opcion anula el poder hacer una version "extendida" continuando el slot, quiza podriamos hacer algun apaño utilizar la otra bascula JK para algo.
Hacemos un puente entre la patilla 9 de la bascula JK que es por cierto, el pin central del jumper JP2 y la patilla 19 de la GAL IC04 y en la programacion de la gal añadimos la definicion del pin 19 (no recuerdo si tienen que ir en orden la definicion de pins) y las ecuaciones como sigue:
PIN 19 = DLY
/* */
CX_U12B_6 = !A15 & !A14 & RFSH & !MREQ ; /* External ROM OE Ignored. */
C1 = !A15 & !A14 & !A13 & !A11 & !A4 & A3 & U12A_5 & !MREQ & RFSH & !M1 ;
C2 = A8 & A9 & A10 & A12 ;
C3 = !A8 & !A9 & !A10 & !A12 ;
CX_K = C1 & C2 & A6 ;
CX_J = (C1 & C2 & !A6) # (C1 & C3) ;
CX_CK = (!MREQ & RFSH & !DLY ) # (MREQ & RFSH & DLY );
Por cierto, el trozo de esquema de arriba viene de este otro, sacado de facebook:
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
- acf76es
- Demonio tercer orden
- Mensajes: 829
- Registrado: 03 Nov 2014, 22:48
- Ubicación: Cantabria
- Has thanked: 1 time
- Been thanked: 39 times
Re: Opus Discovery Va-de-retro
buenas, acabo de realizar el puente de la salida 9 del JK (LS73) al pin 19 de la gal IC4 y añadido las ecuaciones.
resultados: lo mismo en la parte de la rom del opus
la parte buena: la rom del juego y del test funciona.. pero seguimos con el reset que se ha de presionarlo algunas veces para eque funcione.. de manera aleatoria..
resultados: lo mismo en la parte de la rom del opus
la parte buena: la rom del juego y del test funciona.. pero seguimos con el reset que se ha de presionarlo algunas veces para eque funcione.. de manera aleatoria..
- Scooter
- Demonio tercer orden
- Mensajes: 966
- Registrado: 27 Feb 2014, 11:33
- Ubicación: Alicates
- Has thanked: 1 time
- Been thanked: 12 times
Re: Opus Discovery Va-de-retro
Dallas en su día, luego la compró Maxim y ya no sé ahora quién ha comprado a quien...
El caso es que Dallas tenía unos circuitos muy majos para gestionar el reset, en su día los usé en proyectos y funcionaban muy bien. Mejor que redes RC e inventos caseros.
Busca econoreset. Son como un transistor TO 92 seguro que hay smd al gusto.
Acabo de buscarlos ds1233
Hay más versiones, de reset por 0, reset por 1 ycreo que más opciones.
El caso es que Dallas tenía unos circuitos muy majos para gestionar el reset, en su día los usé en proyectos y funcionaban muy bien. Mejor que redes RC e inventos caseros.
Busca econoreset. Son como un transistor TO 92 seguro que hay smd al gusto.
Acabo de buscarlos ds1233
Hay más versiones, de reset por 0, reset por 1 ycreo que más opciones.
Solo se que no se nada (algunos no saben eso)
- alvaroalea
- Demonio segundo orden
- Mensajes: 1091
- Registrado: 25 Oct 2014, 12:49
- Ubicación: Asturias, Paraiso Natural
- Has thanked: 13 times
- Been thanked: 52 times
- Contactar:
Re: Opus Discovery Va-de-retro
Por aclarar:acf76es escribió: ↑08 Abr 2021, 11:34 buenas, acabo de realizar el puente de la salida 9 del JK (LS73) al pin 19 de la gal IC4 y añadido las ecuaciones.
resultados: lo mismo en la parte de la rom del opus
la parte buena: la rom del juego y del test funciona.. pero seguimos con el reset que se ha de presionarlo algunas veces para eque funcione.. de manera aleatoria..
Cuando dices que lo mismo con la ROM del Opus es que arranca el spectrum sin más? No sale la flecha? Se cuelga hasta que resetear varias veces?
Que el test y juego funcionen no es ni buena ni mala noticia, es más una casualidad.
Este interfaz en reset no hace nada, se inicializa con las interrupciones, en la dir #8, así que aunque inicie en la ROM del spectrum en la primera interrupción salta a la ROM del Opus, supongo que por eso necesita varios intentos para arrancar con esas dos.