En busca del bug en el superupgrade

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.
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8155
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 107 times

Re: En busca del bug en el superupgrade

Mensaje por wilco2009 »

Scooter escribió:Pues si me puedes proporcionar una imagen sin controladora te lo agradecería. Se me quedó mal sabor de boca al no hacerlo andar...

Anbiao ende mi parato usando catacrak
Te pasaré el enlace por privado.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
Scooter !!Va-de-Retro
Demonio tercer orden
Demonio tercer orden
Mensajes: 969
Registrado: 27 Feb 2014, 11:33
Ubicación: Alicates
Has thanked: 1 time
Been thanked: 12 times

Re: En busca del bug en el superupgrade

Mensaje por Scooter »

Gracias

Anbiao ende mi parato usando catacrak
Solo se que no se nada (algunos no saben eso)
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8155
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 107 times

Re: En busca del bug en el superupgrade

Mensaje por wilco2009 »

Bueno, vamos poco a poco, pero creo que casi lo tengo.

He partido de los fuentes de del +3 de Garry Lancaster, que vienen para un ensamblador que no tengo, por lo que adicionalmente a los problemas ya comentados me toca modificar los fuentes para que compilen con PASMO.

De momento he seguido la pista al cuelgue a través de la ROM0.

Hasta que ejecuta esta subrutina todo va bien:
call $3e80
defw $2410

Esta subrutina llama a la subrutina $2410 en la ROM1, que se encarga de inicializar la controladora de discos.

Una vez en la ROM1 va todo bien hasta que ejecuta:

call l3f00
defw DD_INTERFACE

Que llama a la subrutina DD_INTERFACE de la ROM2.

Aún tengo que modificar los fuentes de la ROM2 para conseguir que ensamblen en pasmo y poder modificarlos, pero el contenido de la subrutina es el siguiente:

.l1f27 push bc
ld bc,$2ffd
in a,(c) ; read FD status register ($ff if no i/f)
add a,$01
ccf ; carry not set if no i/f
pop bc
ret

Por lo que me da que pensar que hay que implementar el puerto lectura $2ffd para que funcione.

La prueba de fuego sería modificar la subrutina para devolver siempre $ff, y de esa manera el sistema sepa que no hay unidades conectadas.

Si es así habrá que investigar como se inicializan los IDEs.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
antoniovillena
Demonio segundo orden
Demonio segundo orden
Mensajes: 1596
Registrado: 02 Abr 2013, 19:06
Been thanked: 1 time

Re: En busca del bug en el superupgrade

Mensaje por antoniovillena »

Por si te sirve de ayuda yo tengo desensamblados de las 4 ROMs oficiales, más la del plus3e compatible con ZXMMC y una adaptación de ésta para que funcione en DivMMC.

http://sourceforge.net/p/emuscriptoria/ ... /plusROMs/

Compilan con SjAsmPlus y parten todas del mismo fuente plus3.asm con ensamblado condicional.
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8155
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 107 times

Re: En busca del bug en el superupgrade

Mensaje por wilco2009 »

Muchas gracias!!, le echaré un vistazo.
Me serán bastante utiles para ver el tema del ide.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9973
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 124 times
Contactar:

Re: En busca del bug en el superupgrade

Mensaje por flopping »

Lo que no entiendo muy bien, es lo siguiente, si en un +2a,b funciona bien sin controladora de discos y en nuestro upgrade, tampoco tenemos controladora, debería de funcionar bien con las roms de un sistema o de otro, a no ser que se este haciendo llamadas a direcciones o posiciones, en las cuales debería de haber algo cargado previamente, que en nuestro caso no lo hay, ya que de otra forma no me explico el por que de la incompatibilidad y por que unas veces arranca y otras no.
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
Scooter !!Va-de-Retro
Demonio tercer orden
Demonio tercer orden
Mensajes: 969
Registrado: 27 Feb 2014, 11:33
Ubicación: Alicates
Has thanked: 1 time
Been thanked: 12 times

Re: En busca del bug en el superupgrade

Mensaje por Scooter »

Eso es lo que yo pensaba. Pero cabe la posibilidad de que si no está la controladora pero si su circuito de decodificación o algo mas, detecte 00h al leer yo que se que puerto (por ejemplo) en mi caso y en este, al faltar parte de la circuitería, lee aire y por eso a veces va y a veces no.
Eso o algo así.
En cualquier caso, si no hay controladora, o no hay lo que sea, no sirve para nada inicializarlo.

Anbiao ende mi parato usando catacrak
Solo se que no se nada (algunos no saben eso)
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8155
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 107 times

Re: En busca del bug en el superupgrade

Mensaje por wilco2009 »

flopping escribió:Lo que no entiendo muy bien, es lo siguiente, si en un +2a,b funciona bien sin controladora de discos y en nuestro upgrade, tampoco tenemos controladora, debería de funcionar bien con las roms de un sistema o de otro, a no ser que se este haciendo llamadas a direcciones o posiciones, en las cuales debería de haber algo cargado previamente, que en nuestro caso no lo hay, ya que de otra forma no me explico el por que de la incompatibilidad y por que unas veces arranca y otras no.
Lo primero es decir que todavía no tengo comprobado al 100% que el problema esté donde he dicho, ya que para eso tengo que modificar la ROM2. Eso es lo que intentaré esta tarde.

En cuanto a porqué funciona un +2A, la respuesta está en mi mensaje anterior. La ULA del +2A implementa el puerto de lectura $2FFD que devuelve si existe una controladora de discos. Si no hay controladora devuelve $FF en el bus de datos.

En nuestro caso, cuando se hace la lectura del puerto, leemos un valor aleatorio. Mi planteamiento es que, cuando leemos $FF todo va bien ya que el sistema no vuelve a intentar hacer ninguna llamada a una función de de la controladora.
El problema viene si leemos cualquier otro valor, ya que se dedica a hacer llamadas a funciones de disco sin haberlo, con lo que al final se cuelga.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9973
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 124 times
Contactar:

Re: En busca del bug en el superupgrade

Mensaje por flopping »

Vale, entonces estas depurando las roms, digamos que para evitar que el sistema haga llamadas a la controladora de discos y así evitar que lea valores aleatorios en el bus, ¿es más o menos eso?.

Si es así, estarás inhabilitando la controladora de por vida, a no ser que digamos que tendremos 2 opciones una, roms sin controladora y dos, roms normales y así ya se podría implementar la controladora, cosa que en el primer caso aún poniéndola, no serviría de nada.

Si lo que digo es correcto, si le ponemos al súper upgrade una controladora de discos, ¿ya no tendríamos esos problemas de incompatibilidad, no?, entiendo que ahora lo estés depurando, para que el sistema arranqué y no tenga fallos ya que no tenemos,controladora, pero más adelante si le ponemos una controladora, deberemos de usar las roms normales, ¿crees que es correcta mi suposición?.

Bueno, pues nada, suerte con esas modificaciones y a ver si al final de todo esto sacamos algo en claro, jejejejeeje.
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
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8155
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 107 times

Re: En busca del bug en el superupgrade

Mensaje por wilco2009 »

Realmente el tema se puede abordar desde dos enfoques:

- Implementando la funcionalidad del puerto $2FFD de tal manera que devuelva el valor correspondiente. Este método es complejo y habría que estudiarlo en detalle. Además haría falta meter aún más electrónica engordando el interface.

- Modificando ligeramente la ROM para que devuelva $FF en el punto donde consulta el estado de la controladora. En principio esto se centraría solo en un punto (o eso espero) y a partir de ese momento el ordenador se comportaría como un +2A. Esta es la solución que tengo planificado adoptar, de tal manera que tendríamos unas ROMs parcheadas para usar con el superupgrade actual.

Para el caso de añadir un interface de floopy compatible con las ROMs del +3, tendríamos que implementar obligatoriamente toda funcionalidad de los puertos $2FFD (lectura) y $3FFD (escritura) además de completar la funcionalidad del puerto $1FFD para el control del motor, y por supuesto volver a poner las ROMs sin parchear.

Concretamente la subrutina DD_INTERFACE de la ROM2 lo que hace es asignar el bit de acarreo en el caso de que el puerto $2FFD devuelva un valor distinto de $FF.
Después de eso, vuelve a la ROM1 y hace un salto condicionado al bit de acarreo para seguir comprobando qué unidades hay presentes, o bien ir directamente a mostrar sólo la unidad "M:".

Código: Seleccionar todo

        call    l3f00
        defw    DD_INTERFACE
        call    l32ee           ; restore TSTACK
        call    l2b64           ; page in page 0
        jr      c,l2463         ; move on if interface present
        ld      hl,l24c4
        call    l24b5           ; display " M:" if no interface
Una forma sencilla de cambiarlo sería modificar el salto sustituyendolo por un par de NOPs. De esta manera siempre iría a mostrar la unidad "M:" directamente.

Esta forma es más sencilla que la que había pensado inicialmente de modificar la ROM2, ya que este último fuente no lo tengo todavía adaptado a PASMO.

Esta tarde lo probaré y os cuento.

El siguiente paso será coger los fuentes que me ha pasado antonio, para comprobar si lo hace de la misma manera en las ROMs del +3e, y si esto no tiene influencia en el interface IDE. En caso contrario, habría que buscar una solución alternativa.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Responder

Volver a “Proyectos de hardware abiertos”