Interface ROM Externa para ZX81....Historia de un fracaso

Avatar de Usuario
eltargui
Mensajes: 239
Registrado: 06 Feb 2014 18:38
Agradecido : 30 veces
Agradecimiento recibido: 70 veces

Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor eltargui » 18 Feb 2017 18:29

Después de unos meses fuera de los foros, vuelvo con un proyecto en el que llevo tiempo trabajando y en el que no he conseguido los resultados buscados.

El diseño del bus de direcciones y datos del ZX81 presenta diferencias notables con respecto al ZX Spectrum. Las señales que salen por el bus de expansión son diferentes a las que se encuentran en el zócalo de la ROM, por lo que no se puede replicar un montaje basado en una EPROM en el zócalo, con la misma EPROM en una interface conectada al bus de expansión.

Las líneas del bus de direcciones A0-A8 que salen por el puerto de expansión son las mismas que llegan al Z80, pero no son las mismas que acceden a la ROM o a la ULA. Entre Z80 y ROM hay unas resistencias (R18-R26) de 1K. Estas líneas del bus de direcciones por el lado de la ULA solo están disponibles en el zócalo de la ROM, no salen por el bus de expansión.

La señal /ROMCS que sale por el puerto de expansión (23B) es la misma señal que la de la ROM, pero no que la de la ULA; ya que hay una resistencia entre la ROM y la ULA (R28: 680 ohm).

La ULA debe tener acceso a los bits bajos del bus de direcciones para tener acceso al conjunto de caracteres de la ROM durante el ciclo de refresco.

La señal M1 (Machine Cycle 1) conecta la CPU con la ULA, y la señal sale por el puerto de expansión (pin 22A). Los ciclos T3 y T4 de M1 se usan para refrescar las memorias dinámicas. Los 7 bits más bajos del bus de direcciones contienen la dirección de memoria a refrescar y la señal RFSH se activa. Esta conexión CPU-ULA no existe en el ZX Spectrum.

Imagen

Común
Los montajes se basan en la EPROM 27C128 (16 kB). Los pines Vpp (pin 1), Vcc (pin 28) y PGM (pin 27) se conectan a +5V.
La línea A13 (pin 26) permite seleccionar el banco de la EPROM que queremos, por lo que se ubica un selector a +5V y a GND.

Montaje 1
El diseño está basado en una interface de ROM externa que funciona en un ZX Spectrum, no lo hace en un ZX81. En este caso se manejan las señales ROMCS, RD y MREQ.

Montaje 2
Basado en el diseño de Wilf Rigter de una interface externa con una EPROM 27C64 (8 kB) para tener un juego de caracteres externo. Solo se replica el montaje que incluye a las señales ROMCS y RD con el transistor 2N3904 (BC547, aunque seguramente cualquier NPN serviría), RFSH al pin OE, así como las líneas A13, A14 y A15.

Imagen

Montaje 3
Mismo esquema que el anterior, pero en este caso montaje al completo, incluyendo los chips 74HC374 (registro de flip-flops síncrono tipo D) y 74HC193 (contador binario) de tecnología CMOS.

Imagen

En el chip 74HC374, las señales CLK y /OE son comunes a todos los flip-flops y se dispara por nivel alto del CLK. La señal /RD del ZX81 entra a CLK. Esta señal se encuentra en nivel alto en los ciclos T3 y T4, que es cuando se produce el refresco de las memorias, y por lo tanto provocando la activación del registro. Cuando /OE está a bajo nivel, el contenido de los 8 flip-flops se encuentra disponible a la salida. En el montaje, la conexión a GND garantiza esta disponibilidad. Por lo tanto, este chip garantiza el acceso a las líneas bajas del bus de direcciones (A3-A9) durante el ciclo de refresco.

El chip 74HC193 es un contador binario de 4 bits. Los datos se cargan cuando /LOAD (PE – pin 11) se encuentra a bajo nivel y cuando CLEAR (MR – pin 14) se encuentra igualmente a bajo nivel, algo que se garantiza con la conexión a GND de este último en el montaje. Con este esquema de conexiones, las entradas (D1 – D4) siempre están a alto nivel y las salidas (Q1 – Q3, Q4 no conectada) se activarán cuando NMI esté a bajo nivel, y por lo tanto /LOAD. Durante el proceso de generación del display, se genera una NMI cada vez que el Z80 deba ejecutar un scanline momento en el que se generará un pulso HSYNC.

De esta manera se controla el acceso a las líneas A0 a A2 del bus de direcciones. La razón por la cual la señal COUNT-UP (pin 5) se encuentra conectada a la señal HALT del ZX81 se desconoce. La instrucción HALT provoca que el Z80 ejecute NOPs hasta que se produzca una interrupción (NMI o INT). Durante la generación del display, se produce un HALT al final de cada línea.

Pruebas adicionales con el Montaje 3
Se han hecho diferentes pruebas con software que usa pseudo-HIRES y HIRES. En los programas HIRES ha funcionado correctamente, y solamente en los casos en los que se requería mostrar caracteres éstos no se reproducían correctamente. Los programas con pseudo-HIRES no se ven correctamente.


En todo este trabajo he invertido del entorno de 4 meses. Por no poner el montón de fotos que he hecho, he preparado un video (6 minutos) que recoge todo lo explicado anteriormente.

https://youtu.be/6ccMSA7TbG8

Avatar de Usuario
Jinks
Mensajes: 2705
Registrado: 09 Oct 2013 16:47
Agradecido : 348 veces
Agradecimiento recibido: 481 veces
Contactar:

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor Jinks » 18 Feb 2017 20:51

¿Y lo que se aprende con estas cosas, qué?

Ahora deja el ZX81 un poco de lado, cambia de "aires" o de micro, y ya te pedirá el cuerpo volver a cacharrear con él. -drinks

jose_leandro
Mensajes: 316
Registrado: 23 Ene 2012 20:20
Agradecimiento recibido: 32 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor jose_leandro » 19 Feb 2017 11:41

Hola

Por desgracia, estas cosas pasan a veces. Pones mucho esfuerzo y llega un momento en el que las ideas se te acaban pero no encuentras el motivo . Por eso a mi me gusta trabajar en mis proyectos en silencio y si salen bien y lo que no, se quedan en la carpeta de sin resolver :-P

¿No has encontrado algún esquema de rom externa para zx81 por ahi. Porque los esquemas que pones son mas bien para añadir una rom más que para quitar la interna.

Saludos

José Leandro

Avatar de Usuario
eltargui
Mensajes: 239
Registrado: 06 Feb 2014 18:38
Agradecido : 30 veces
Agradecimiento recibido: 70 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor eltargui » 19 Feb 2017 16:30

Hola Jose Leandro.

He buscado bastante y no he encontrado nada. Efectivamente el montaje en el que me ha basado es para proporcionar un conjunto de caracteres adicional al ZX81, y está basado en una EPROM 27c64. Por eso intenté alguna variante porque no tenía claro que pudiera funcionar.

También contacté hace algún tiempo con P Farrow porque él lo tiene resuelto en su interface Chroma. Fue parco en recomendaciones, pero lo entiendo porque eso de responder a un extraño... También eché un vistazo al diseño del ZX80, tanto al original de Grant como la versión que ha hecho wilco. Al final tenía que replicar toda la electrónica del ZX80 y no veía como simplificarlo.

Gracias

dancresp
Mensajes: 6254
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 686 veces
Agradecimiento recibido: 1044 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor dancresp » 19 Feb 2017 22:39

Bueno, es una lástima no poder finalizar un proyecto en el que estás metido de lleno, pero como yo soy una persona positiva, me quedaría con la satisfacción de haberlo intentado y como no, con todo lo que habrás aprendido del chiquitín.
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
wilco2009
Mensajes: 2142
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 202 veces
Agradecimiento recibido: 384 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor wilco2009 » 20 Feb 2017 20:51

Si te conformas con el juego de caracteres estándar yo creo que seria relativamente sencillo. Creo yo que es mas complicada la sustitución del juego de caracteres.
"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: 2142
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 202 veces
Agradecimiento recibido: 384 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor wilco2009 » 21 Feb 2017 13:02

Mira a ver si te funciona este esquema.

ROM_EXTERNA_ZX81.png
ROM_EXTERNA_ZX81.png (18.77 KiB) Visto 1689 veces


Ahora que como te he dicho, siempre irá con el juego de caracteres de la ROM interna. Para que funcione con un juego de caracteres que resida en la ROM externa habría que replicar también los tres 74ls157 (IC6, IC7 e IC8).
"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: 2142
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 202 veces
Agradecimiento recibido: 384 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor wilco2009 » 21 Feb 2017 15:57

El esquema anterior estaba mal.
Tendría que ser lo siguiente:
Adjuntos
ROM_EXTERNA_ZX81.png
ROM_EXTERNA_ZX81.png (34.02 KiB) Visto 2001 veces
"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
eltargui
Mensajes: 239
Registrado: 06 Feb 2014 18:38
Agradecido : 30 veces
Agradecimiento recibido: 70 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor eltargui » 22 Feb 2017 08:35

Jinks escribió:¿Y lo que se aprende con estas cosas, qué?

Ahora deja el ZX81 un poco de lado, cambia de "aires" o de micro, y ya te pedirá el cuerpo volver a cacharrear con él. -drinks


Desde luego que sí. Gracias por el mensaje. -thumbup

dancresp escribió:Bueno, es una lástima no poder finalizar un proyecto en el que estás metido de lleno, pero como yo soy una persona positiva, me quedaría con la satisfacción de haberlo intentado y como no, con todo lo que habrás aprendido del chiquitín.


Eso sin duda. Y seguiré buscando y probando las sugerencias de los colegas. -grin

wilco2009 escribió:Si te conformas con el juego de caracteres estándar yo creo que seria relativamente sencillo. Creo yo que es mas complicada la sustitución del juego de caracteres.


Hola wilco. En principio me da igual. Curiosamente de las 2 ROMs que lleva la EPROM la que más se acerca a funciona bien es la ROM de pruebas que tiene su propio conjunto de caracteres.

Probaré tu montaje. Gracias. No sé cómo funcionará el ROM de pruebas, supongo que mostrara caracteres aleatorios, si como parece en tu montaje, durante el ciclo de refresco se desconecta la EPROM y se a buscar la tabla de caracteres a la ROM original. Veremos qué sale. Tendré que comprar ese integrado que no tengo. -thumbup

Avatar de Usuario
eltargui
Mensajes: 239
Registrado: 06 Feb 2014 18:38
Agradecido : 30 veces
Agradecimiento recibido: 70 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor eltargui » 05 Mar 2017 13:21

wilco2009 escribió:El esquema anterior estaba mal.
Tendría que ser lo siguiente:


Hola wilco. He probado el esquema tal y como está y no me funciona. Ni siquiera sale la pantalla de inicio. No entiendo muy bien el por qué mezclar las señales /RFSH y /ROMCS. Esa mezcla es como si fuera una puerta OR???. Si es así, la puerta NAND me daría valor 1 (/CE) solo cuando /RFSH=0 y /ROMCS=0. Es ciclo de refresco, pero no me desabilita la ROM interna porque /ROMCS=0.

Si separo las señales y pongo una por el pin 8, y la otra por el pin 9, funciona y arranca la pantalla de inicio. La puerta NAND (/CE) daría valor 1 durante el ciclo de refresco (/RFSH=0), y también cuando /ROMCS=1 . Pero no estoy seguro de que lo yo lo esté interpretando bien.

En este último caso funciona pero lo hace con la ROM interna, no con la externa; independientemente del selector A13 que ponga, a GND o +5V. Esto lo compruebo con el checksum de la ROM, ya que la externa es diferente de la interna, por lo que puedo identificar cuál se está usando.

Y el Output Enable, estaría disponible solamente cuando /MREQ y A14 están a 1 ¿no?. -banghead

Gracias

Avatar de Usuario
wilco2009
Mensajes: 2142
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 202 veces
Agradecimiento recibido: 384 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor wilco2009 » 05 Mar 2017 20:52

eltargui escribió:Hola wilco. He probado el esquema tal y como está y no me funciona. Ni siquiera sale la pantalla de inicio. No entiendo muy bien el por qué mezclar las señales /RFSH y /ROMCS. Esa mezcla es como si fuera una puerta OR???. Si es así, la puerta NAND me daría valor 1 (/CE) solo cuando /RFSH=0 y /ROMCS=0. Es ciclo de refresco, pero no me desabilita la ROM interna porque /ROMCS=0.


La señal /ROMCS es realmente una señal de entrada hacia el zx81, por lo que realmente solo estoy conectando /RFSH con /ROMCS para que se habilite la ROM interna (/ROMS=0) solo durante el ciclo de refresh (/RFSH=0).

Viendo el esque del zx81, la salida de la ULA no creo que deba tener interferencias en la lógica de nuestro circuito, pero para estar seguros podríamos añadir un diodo entre la señal /RFSH y la señal /ROMCS de tal forma que solo pase cuando /RFSH tenga 5V. Es decir anodo conectado a /RFSH y cátodo a /ROMCS.

Separando las señales nunca desactivas la ROM interna, por eso te sigue funcionando con la ROM interna.

En el esquema faltaría conectar A13 a GND y entonces grabar una ROM en la parte baja del chip

¿qué ROM has grabado en la EPROM?

eltargui escribió:
Y el Output Enable, estaría disponible solamente cuando /MREQ y A14 están a 1 ¿no?. -banghead

Gracias


/OE será igual a cero (señal activa en baja) cuando /MREQ y A14 sean 0, o sea cuando se esté accediendo a la ROM. Esta selección es copia de la que se hace en el zx80.


Fíjate bien en las ecuaciones:

NOT (NOT (/MREQ + A14)) =>
/MREQ + A14 =>

/MREQ = 0 A14 = 0 /OE = 0
/MREQ = 1 A14 = 0 /OE = 1
/MREQ = 0 A14 = 1 /OE = 1
/MREQ = 1 A14 = 1 /OE = 1

O sea, será cero (activa en baja) solo cuando /MREQ y A14 = 0.

Por otro lado me resulta extraño que no funcione el esquema de wilf rigter no te funcione. ¿Qué tenías grabado en la ROM en ese caso?
Grabando una copia de la ROM del zx81 no deberías notar cambios en el funcionamiento.
Adjuntos
ESQUEMA.png
ESQUEMA.png (31.73 KiB) Visto 1911 veces
"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
eltargui
Mensajes: 239
Registrado: 06 Feb 2014 18:38
Agradecido : 30 veces
Agradecimiento recibido: 70 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor eltargui » 06 Mar 2017 08:17

wilco2009 escribió:Por otro lado me resulta extraño que no funcione el esquema de wilf rigter no te funcione. ¿Qué tenías grabado en la ROM en ese caso?
Grabando una copia de la ROM del zx81 no deberías notar cambios en el funcionamiento.


Gracias wilco, por las explicaciones. Revisaré lo que me has dicho y lo probaré de nuevo. En la EPROM tengo dos ROMs grabadas, una la del ZX81 y otra de pruebas que ocupa 2kB y que tiene su propio conjunto de caracteres. Esta misma EPROM funciona correctamente si la pongo sobre el zócalo del ZX81 con un selector de banco.

No termino de ver un diseño claro que funcione, y ya he visto que otros han llegado a problemas similares a los mismos, pero terminaron solucinandolo, aunque luego no publican el diseño. Le echo un vistazo y te cuento.

Avatar de Usuario
eltargui
Mensajes: 239
Registrado: 06 Feb 2014 18:38
Agradecido : 30 veces
Agradecimiento recibido: 70 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor eltargui » 10 Mar 2017 19:22

wilco2009 escribió:Fíjate bien en las ecuaciones:

NOT (NOT (/MREQ + A14)) =>
/MREQ + A14 =>

/MREQ = 0 A14 = 0 /OE = 0
/MREQ = 1 A14 = 0 /OE = 1
/MREQ = 0 A14 = 1 /OE = 1
/MREQ = 1 A14 = 1 /OE = 1

O sea, será cero (activa en baja) solo cuando /MREQ y A14 = 0.


Vaya, me acabo de dar cuenta que estoy hablando de puertas NAND, pero el chip son puertas NOR. Me ha despistado el esquema, pero no me cuadraban con las ecuaciones que ponías y he tenido que mirar la hoja de datos. Ahora sí consigo los resultados que pones en las ecuaciones.

Incluso poniendo el diodo que me sugieres no consigo que me funcione. Voy a seguir investigando.

Avatar de Usuario
eltargui
Mensajes: 239
Registrado: 06 Feb 2014 18:38
Agradecido : 30 veces
Agradecimiento recibido: 70 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor eltargui » 10 Mar 2017 19:30

Supongo que no importa mucho, pero el primer esquema usas un CMOS (74ACT02) y en el segundo un schottky (74LS02).

Avatar de Usuario
wilco2009
Mensajes: 2142
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 202 veces
Agradecimiento recibido: 384 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor wilco2009 » 10 Mar 2017 19:36

eltargui escribió:Supongo que no importa mucho, pero el primer esquema usas un CMOS (74ACT02) y en el segundo un schottky (74LS02).

Es indiferente. El primero que pillé.

En el segundo me di cuenta que habia cogido el cmos y lo cambie por un ls mas habitual.
"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
minter
Mensajes: 4840
Registrado: 22 Jul 2014 18:51
Agradecido : 6786 veces
Agradecimiento recibido: 2605 veces

Re: Interface ROM Externa para ZX81....Historia de un fracaso

Mensajepor minter » 10 Mar 2017 20:09

Creo que con ese montaje, no salen la ecuaciones.
Cualquier cero, uno, que es cero.
Todo unos, cero, que es uno.
Debería ser un único uno.
Toy con el móvil en el tren, puede que la vista me falle, pero no me cuadra.
Vale... vale... no lo había leído... las ecuaciones son para NOR no para NAND. Desde el tren no se lee un pijo. -grin


Volver a “Sinclair ZX80/81”

¿Quién está conectado?

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