Spectrum +2 funcionando con las ROMs del proyecto +3e, con un floppy y un interface IDE
AVISO: El +2 gris da problemas con el interface simple de 8 bits, sin embargo el divIDE en modo IDE funciona correctamente.
El proyecto consiste en dos placas diferentes:
1. Interface de ROM externa para los sistemas +2, +2A y +3 con conexión para el interface de disquetera multisistema.
2. Interface de disquetera completo con ROMs integradas para los sistemas +2, +2A y +3.
La única diferencia entre ambas placas es que una lleva el interface de disquetera incorporado y la otra, si queremos interface de disquetera, hay que conectarle uno externo en el conector que lleva al efecto.
¿PARA QUÉ SIRVE EL INTERFACE?
El interface sustituye las ROMs internas de los sistemas de utilizan paginado de la ROM como pueden ser el 128K, el +2, el +2A, o el +3.
Con dicho interface puedo por ejemplo sustituir las ROMs de un +2A por las del proyecto +3e, o bien por las de un +2 gris. También puedo ponerle las ROMs de un 128K a un +2 gris o bien las ROMs de del proyecto +3e.
¿Y para qué quiero sustiuir las ROMs internas?
Ejemplo 1: Tengo un +2 gris y quiero añadirle una disquetera y usar un divIDE con las ROMs del +3e.
Ejemplo 2: Tengo un +2A pero no quiero estar desatornillando la carcasa para alternar entre las ROMs originales y las del proyecto +3e.
Ejemplo 3: Tengo un +2A y quiero utilizar las ROMs del +2 gris porque son más compatibles con un juego.
¿QUÉ SISTEMAS SON COMPATIBLES?
El interface funciona en los siguientes modelos:
- 128K, No está probado pero en teoría debe poderse usar modificandolo de la misma forma que un +2 gris.
- Plus 2 gris, modificando internamente su PAL sustituyendola por una GAL o bien añadiendo dos diodos y una resistencia.
- Plus 2A / Plus 2B/ Plus 3, Pinchar y listo
INFORMACIÓN TÉCNICA
Para poder implementar un sistema de ROM externa como el presente, es necesario decodificar los puertos $1FFD y $7FFD y utilizarlos para paginar las ROMs.
El control de dichos puertos lo hace la GAL22V10 instalada en el interface controla tanto la habilitación de los dos chips de ROM como el paginado, deshabilitando al mismo tiempo las ROMs internas para evitar los conflictos con estas.
El jumper/switch JP1 nos permitirá seleccionar el tipo de ordenador al que está conectado el interface. Esto es necesario ya que la inhabilitación de la ROM interna se hace de forma diferente en los últimos modelos de Amstrad (+2A, +2B y +3)
El proyecto es de caracter abierto, y lo dejo aquí para que podáis hacer uso de él.
La placa tiene el siguiente aspecto:
Y el esquema del invento es el siguiente:
Las ecuaciones de la GAL que gestiona el paginado son las siguientes:
Código: Seleccionar todo
CLK1FFD = ( !A14 & !A15 & !A1 & !nWR & !nIORQ & !A13 & A12 );
CLK7FFD = ( A14 & !A15 & !A1 & !nWR & !nIORQ );
nROMCS = ( !nPLUS23 );
nROM2OE = ( nPLUS23 );
nROM1OE = ( nPLUS23 );
nEXROM1OE = !( !A14 & !A15 & !nRD & !nMREQ );
nEXROM2OE = !( !A14 & !A15 & !nRD & !nMREQ );
La modificación necesaria para los +2 gris consiste en sustituir el chip HAL (IC7) por una GAL y programarla con las siguientes ecuaciones:
Código: Seleccionar todo
BANK = ( !WR & RD & !IORQ & !A1 & A14 & !A15 );
PSG = ( !WR & !IORQ & !A1 & A15
# !RD & !IORQ & !A1 & A15 );
UA14 = ( B2 & !B0 & A14 & A15 );
UA15 = ( B1 & !B0 & A15
# !A14 & A15 );
ULA14 = !( !B0 & A15
# !A14 );
ULA15 = !( B0 & A14
# !A15 );
VA14 = ( B2 & B0 & A14
# A14 & !A15 );
VA15 = ( B1 & B0 & A14 & A15 );
Una solución alternativa para no sacar la HAL de su sitio consistiría en conectar un par de diodos y una resistencia de la siguiente manera.
La patilla 13 de la PAL habría que cortarla y levantarla quedando la modificación como en la foto.
Referencia de las cajas:
Interface básico : Supertronic PP6
Interface coin controladora: Supertronic PP96
Toda la información necesaria para realizar el circuito la dejo en el siguiente ZIP:
External Plus 3 Roms 27/08/2016
Archivos de Eagle para la versión completa
Archivos GERBER para la version completa
Archivo JED de la GAL de la controladora
Actualización 7/11/2017
Corrección de un bug que no permitía conectar interfaces que deshabilitaran la ROM del interface (Ej: divIDE)
Se cambia la funcionalidad del selector Spectrum/Amstrad, ahora habilita la ROM del interface (posición Amstrad) o la ROM del +2 (posición Spectrum)
Archivo JED v1.1 - 7/11/2017
Fuentes en Abel v1.1 - 7/11/2017
Modificaciones necesarias para que funcione la actualización.
Para que funcione esta actualización, deberemos quitar el cable que interpusimos en la versión inicial entre los pines 1A y el 15B del bus de expansión, y ahora deberemos conectar el pin 15B al pin 19 de IC10.
El montaje queda como sigue:
Para los que como yo le vayan a poner un zócalo ZIF, tengo que comentar que tendréis que cambiar la palanca de lado, ya que por defecto viene hacia el lado contrario.
Por lo demás el montaje a ocurrido sin incidentes.
Y el funcionamiento también:
Interface Completo (con controladora)
En este interface tengo que hacer dos comentarios.
- El primero es que he cometido un pequeño fallo, por lo que hay que conectar un cablecillo entre los pines 4A y 15B del conector EDGE, tal y como se ve en la foto. Esta operación hay que hacerla antes de añadir la plaquita de expansión.
- El segundo es que tengáis mucho cuidado al cortar las plaquitas de expansión, porque hay una pista que está muy cerca del donde hay que hacer el corte y podéis cortarla accidentalmente, de hecho yo me la cargue. En la foto se puede apreciar el apaño cubierto con silicona. Lo he dejado lo más discreto posible y creo que no ha quedado mal del todo.
Una vez conectado, todo funciona según lo esperado:
Etiqueta para la versión completa.
El archivo del gimp:
El mismo archivo en formato png:
Etiqueta para el interface básico.
Archivo GIMP
Imagen PNG
Con el ZIF no se puede cerrar la tapa por poco, por lo que he hecho una escotadura. De todas formas viene bien para poder intercambiar las ROMs sin necesidad de destornillador.
Indicaciones para el mecanizado de la caja (supertronic PP96) para el interface con controladora
Lo primero que debemos hacer es rebajar todo el perímetro de la tapa que no lleva los dos salientes grandes hasta la medida de la foto:
Posteriormente y a la altura de la plaquita expansora debemos hacer una ventana como la de la foto.
En el borde superior haremos un rebaje para dar alojamiento al conector de la disquetera.
Finalmente cortaremos los dos alojamientos en los que entran los dos salientes largos de la otra tapa, para que no sobresalgan del borde que hemos rebajado.
Quedando interiormente aproximadamente como en la foto.
Una vez acabado este lado empezaremos con la otra mitad.
No tengo fotos porque ya tengo la caja mecanizada y pegada con silicona, pero lo primero que debemos hacer en la otra mitad es rasurar todos los alojamientos de los tornillos para que no sobresalgan y la placa pueda quedar pegada a la pared de la caja. Si no hacemos esto el conector EDGE no sobresaldrá suficiente y no se podrá conectar bien al Spectrum.
Seguidamente re cortaremos los salientes largos marcados en rojo en la siguiente foto, lo justo para que podamos cerrar la caja, pero que puedan seguir manteniendo su función y sujeten ambos lados de la caja.
Al igual que en el otro lado de la caja, deberemos hacer una ventana, esta vez para dejar pasar el conector EDGE.
Haremos también una escotadura para alojar el conector de la disquetera, ya que este queda entre ambas tapas.
En mi caso he puesto los selectores de cara en horizontal, por lo que en este lado prolongaremos la escotadura para poder alojar también uno de estos selectores.
Haremos otra pequeña escotadura en el lateral, para alojar el otro selector.
Y sobre los selectores podemos pegar con silicota termofusible un pequeño trozo de plastico de lo que hemos recortado para disimular el hueco. Posteriormente podemos disimular este añadido con una pegatinas indicando la funcionalidad de cada selector.
Finalmente montaremos la placa sobre esta parte de la caja y pegaremos la parte inferior con silicona.
Opcionalmente podemos utilizar los tornillos que vienen con la caja para sujetar mejor la placa, aunque como hemos rasurado los alojamientos inferiores de estos, tendremos que forzar para crear una nueva rosca sobre el plástico. Hay que tener cuidado en que los tornillos no provoquen un cortocircuito, lo que podríamos evitar añadiendo unas arandelas de cartón.
Como punto final al mecanizado podemos imprimir la etiqueta frontal que he dejado en ente post.
SIGNIFICADO DE LOS JUMPERS
JP1: Sirve para seleccionar entre los modelos de Sinclair (es decir hasta el +2 gris) y los modelos de Amstrad (+2A)
JP3: READY EMUL. Sirve para activar la emulación de la señal de ready. Esta es una de las principales ventajas de mi controladora respecto a otras, si está en ON (2-3) no es necesasrio modificar la disquetera para que saque señal de READY en lugar de DSKCHG. Y se comporta de verdad como una señal de ready auténtica y no como un simple puente. Podéis comprobar que si sacais el disco da error, a diferencia de cuando ponemos el puente. Si lo ponemos en OFF funcionaremos con la señal de ready tal y como la tengamos en la disquetera.
JP4: One Drive. La intención de esta señal es forzar a que el spectrum detecte una sola disquetera en lugar de dos, aunque no la he conseguido hacer funcionar bien.
S1 y S2: Son los selectores de cara para la disquetera A y la B respectivamente. Tienen la ventaja de que se puede seleccionar la cara de manera independiente para cada unidad, a diferencia del puente habitual.
LISTA DE INTERESADOS Interface básico
1. shikitin-(VDR) - P
2. pepilloelgrillo (solo placa)-(VDR)
3. BCH (solo placa)-(VDR) P E
4. flopping (solo placa)-(VDR) E
5. flopping (solo placa)-(VDR)
6. Garvidal-(VDR) P
7. BenKenobi-(VDR)
8. carmeloco-(VDR) P E
9 merlinkv-(VDR) P E
10 merlinkv-(VDR) P E
11 dandare-(VDR) (solo placa) P E
12 jjsaenz1969-(VDR) P
13 overCLK (solo placa)-(VDR) P E
14 Kripton67 VDR
15 groovydrifter (RWK) P
16 stratotrasto (VDR)
17 Jason_rg (VDR) P
18 vidamia (VDR) P
19 JULIO (speccy) P
20 rcmolina (VDR) M P
LISTA DE INTERESADOS Interface con controladora de disquetera integrada.
1. flopping (solo placa)-(VDR) E
2. flopping (solo placa)-(VDR)
3. Taburoto-(RWK) P
4. BenKenobi-(VDR)
5 merlinkv-(VDR) P E
6 merlinkv-(VDR) P E
7 dandare-(solo placa) (VDR) P E
8 iturbez-(VDR) P
9 pepilloelgrillo-(VDR)
10 retrolab-(VDR)
11 overCLK (solo placa)-(VDR) P E
12 istorki - (ZDP)
13 sinclair200 (VDR) M P
14 Kripton67 (solo placa) (VDR)
15 groovydrifter (RWK) P
16 mikes (VDR) M
17 Whisper (RW) M
18 Bone (Speccy) P
19 Tromponauta (VDR) M P
20 JULIO (speccy) P