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

Proyectos de hardware con sus esquemáticos y si llevan software en fuente

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.
Responder
Avatar de Usuario
eltargui
Demonio tercer orden
Demonio tercer orden
Mensajes: 516
Registrado: 29 Abr 2014, 16:33

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

Mensaje por eltargui »

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.

ZX eltargui un blog dedicado a los micro-ordenadores Sinclair
Avatar de Usuario
sinclair200 España
Moderador
Moderador
Mensajes: 10000
Registrado: 28 Mar 2014, 18:25
Ubicación: Madrid
Has thanked: 8 times
Been thanked: 177 times

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

Mensaje por sinclair200 »

Yo no lo consideraría un fracaso, si, es verdad que has hechado horas por un tubo, pero después de ese trabajo, nos has permitido conocer mas a fondo los entresijos de ese pequeñajo de 1K de Ram...... :D :D
Imagen
Z80 INSIDE.........
WANTED:…………. CPC 6128 british
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9973
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 124 times
Contactar:

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

Mensaje por flopping »

Hola Eltargui, ¿me puedes pasar roms para el zx81?, ya que quiero probar unas ideas de como poder hacer lo que quieres a ver si lo consigo y para eso necesito otras roms que no sean las originales y ver si funciona correctamente, jejejejeje.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
Avatar de Usuario
eltargui
Demonio tercer orden
Demonio tercer orden
Mensajes: 516
Registrado: 29 Abr 2014, 16:33

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

Mensaje por eltargui »

flopping escribió:Hola Eltargui, ¿me puedes pasar roms para el zx81?, ya que quiero probar unas ideas de como poder hacer lo que quieres a ver si lo consigo y para eso necesito otras roms que no sean las originales y ver si funciona correctamente, jejejejeje.
Hola flopping, que tal?. Te dejo 2 ROMs

Esta es una ROM de pruebas que vale para el ZX80 y ZX81. Ocupa 2 kb y permite ver problemas en la RAM. Funciona bastante bien. Al tener pantalla de inicio, está bien para ver que realmente ha arrancado esta y no la original del ZX81.

También, te dejo esta que es la original del ZX81. La primera versión original que contiene el famoso error del PRINT SQR 0,25 (1,3591409 en vez de 0,5), por lo que también podrás identificarla de la que tengas en el ZX81.

Son las que uso yo para estos temas. Otros montajes que he hecho con la misma EPROM pero sobre el zócalo original los puedes ver en este hilo de RW. Éste se me ha atravesado. Hay interfaces modernos que tienen esta posibilidad pero no consigo dar con el diseño adecuado.
ZX eltargui un blog dedicado a los micro-ordenadores Sinclair
Responder

Volver a “Proyectos de hardware abiertos”