Las utilidades de esto pueden ser varias, pero la mejor que se me ocurre es que de esa manera puedes utilizar un interface de disquetera compatible con un +2A o también un interface IDE compatible con el proyecto +3e.
El hecho es que un +2A es poco más que un +2 gris con 4 páginas de ROM en lugar de 2, por lo que no esperaba grandes problemas en este tema.
A saber, y a grandes rasgos, las diferencias principales entre los dos sistemas son las siguientes, aunque no parece que ninguna de ellas pueda representar un problema para mi objetivo.
- El +2 gris tiene bus flotante como el 48K, a diferencia del +2A.
- Las páginas de memoria contenidas en el +2 gris son las impares (1,3,5 y 7). En el +2 negro son las páginas 4,5,6 y 7 (contando en ambos casos a partir de 0)
- En el +2 negro, la ULA tiene acoplo directo con la CPU en el bus de datos. De ahí que ninguna interfaz de teclado, o interfaz de joystick que mapee posiciones de joystick a pulsaciones de tecla, funcione en el +2 negro.
- En el +2 negro desaparece la función del puerto FFh (indocumentado, pero usado en algunos juegos para detectar cuándo la ULA está pintando la pantalla).
- En el +2A el puerto de expansión tiene algunos pines cambiados, como por ejemplo desaparece ROMCS y aparecen ROM1OE y ROM2OE.
El cambio en el bus ya lo he tenido en cuenta, por lo que no es un problema y el resto de diferencias parecen irrelevantes.
El hecho es que mi interface funciona a la perfección como ROM externa de un +2A, pero cuando lo pincho en un +2 gris me arranca en modo 48K.
Con un analizador lógico, he hecho una traza de la ejecución de las escrituras a los puertos $1FFD y $7FFD para ver en qué momento cambia a la página 3 y se queda definitivamente allí, y el resultado es que hace 24 escrituras a dichos puertos idénticas en ambos ordenadores y luego el +2A continúa haciendo escrituras y el +2 gris se queda en la página 3 (Basic) por lo que ya no vuelve a hacer ninguna escritura más.
¿Alguien conoce la forma de poder trazar esas escrituras de puertos en un emulador para ver si así puedo averiguar dónde está el problema?
Y ya que estamos, si a alguien se le ocurre dónde puede estar el problema y me puede echar un cable, se lo agradecería.
Esta es la secuencia en un +2A (los tiempos están contados a partir de la primera escritura de puerto que se produce)
Y esta otra la de un +2 grisTime[s] PÁGINA
0 1
0,109147917 1
0,217023917 1
0,325888167 1
0,434311083 1
0,531340167 1
0,628369167 1
0.725398250000000 1
0.822429250000000 1
0.822641250000000 1
0.822853250000000 1
0.823065333333333 1
0.823277333333333 1
0.823506000000000 1
0.823735000000000 1
0.823965083333333 1
0.824886500000000 2
0.824886583333333 3
0.824914416666667 3
0.825973166666667 3
0.825991416666667 1
0.826669583333333 3
0.826685083333333 3
0.834488750000000 3
0.834506750000000 3
0.854481666666667 3
0.854499666666667 3
0.874475083333333 3
0.874493166666667 3
0.879126833333333 3
0.879142333333333 1
0.879318000000000 3
0.879333500000000 3
0.879996083333333 2
0.879996166666667 3
0.880025916666667 1
0.880164916666667 1
0.880165000000000 0
0.880165083333333 1
0.880182166666667 3
0.880692750000000 3
0.880728000000000 1
0.880870416666667 1
0.880885916666667 3
0.881399916666667 3
0.881435166666667 1
0.881577583333333 3
0.881593083333333 3
Time[s] PÁGINA
0.000000000000000 1
0.121065666666667 1
0.121065666666667 1
0.218094750000000 1
0.339160166666667 1
0.436189166666667 1
0.557256000000000 1
0.654285000000000 1
0.775641666666667 1
0.872672666666667 1
0.872885000000000 1
0.873102916666667 1
0.873315000000000 1
0.873530083333333 1
0.873745500000000 1
0.873961250000000 1
0.874429250000000 2
0.875232250000000 3
0.875247750000000 3
0.876281166666667 3
0.876296666666667 1
0.876883666666667 3
0.876899166666667 3