HispaMSX

Emulación del MegaSCSI

2000-01-16 21:31:58

    Hola, otra vez aquí!

   Partiendo de que el MegaSCSI fué programado basandose en la BIOS,
su autor no vió necesario hacer transparente el PPI-C, dando por
sentado que TODOS los programas de MSX usarían la BIOS para leer
el teclado.

    O en su defecto, lo harían de las misma forma en que la BIOS lo hace.

    No estoy de acuerdo. El usar la Bios o no SOLO es para garantizar que si
algún dia los puertos del PPI cambian, incluso si los bits del PPI-B, el
resultado fuera totalmente trasparente y permanezca la
compatibilidad. En cuanto usamos los puertos por nuestra cuenta, es que
sabemos muy bien como funcionan y usamos nuestra própia forma de leerlos.

    La teoría que hasta ahora defendía al MegaSCSI era que usaba la BIOS ya
que era un programa que respetaba el standard, el mero hecho de usar los
puertos del PPI hace que ya no cumpla el standard.

    También podríamos decir que el MegaSCSI es un programa que NO respeta
el standard por no usar la BIOS, pero que fué programado para garantizar la
compatibilidad con todos los programas que si usasen el standard.

   En el caso de que el autor del MegaSCSI hubiese tenido en cuenta
que hay mucho software que NO usa la BIOS para leer el teclado, pues
entonces efectivamente tendría un BUG al no restaurar el PPI-C.

    No estoy de acuerdo. Tsujikawa sabía perfectamente que había bastantes
programas que no usan la BIOS para leer el teclado, pero que lo hacían de
forma correcta, con lo que no hay ningún problema, y por lo tanto, ningún
'bug'.

    EN NINGUNA PARTE pone que la forma correcta de leer el teclado usando
los puertos directamente sea como lo hace la BIOS, las especificaciones
hardware SOLO nos dicen que el PPI-B nos devuelve la mantisa del teclado en
relación al dato introducido en el PPI-C, EN NINGUN momento nos dice que hay
que inicializar el PPI-C POR CADA lectura.

    Yo sigo pensando que la Bios no restaura el PPI-C porque da por sentado
que nadie lo va a usar por su cuenta, ya que todos deben usar la Bios.

    ¿Tu que opinas de esto? ¿Porque la bios no restaura el PPI-C?

   De todas formas, personalmente voy a intentar conseguir este
archivo para desensamblarlo, y espero que use la BIOS, porque sino
esto nos llevará a que su autor NO hizo el MegaSCSI para todos los
programas que usen la BIOS. Y mi teoría de que tiene un BUG sería
totalmente correcta.

    No te preocupes en buscar el programa y desensamblarlo, no usa la
BIOS.
Usa una rutina muy similar. Pero esto no quita que esté hecho para
programas
que usen la BIOS, ya que esos programas funcionarán sin problemas, al
igual
que los que usen los puertos de forma correcta. Por lo tanto tu teoría, a
mi
juicio, es incorrecta.

    Vale, creo que en este punto los dos tenemos muy claro nuestro punto de
vista.

    Tu opinas que usar el PPI como lo hace la Bios es respetar el standard.

    Y yo opino que basandonos en que existen bastantes programas que no usan
la Bios, lo mejor es hacer un programa tipo parche LO MAS TRASPARENTE
posible, lo que conllevaría al MegaSCSI a restaurar el PPI-C. Personalmente
pienso que su autor no se dió cuenta de que este fallo podría ocurrir.

   Creo que 'la escusa' de no usar la Bios pero acceder a los
puertos de igual forma que la Bios NO es factible, ya que para lo
Único que sirve la Bios es para garantizar el acceso a los puertos
correctos o una futura emulación de un PPI totalmente distinto.

    Si sólo fuera para saber los puertos, los hubiesen puesto de forma
similar a los del VDP. Además, no basta con saber qué puertos hay que
utilizar, sino cómo hay que hacerlo.

    En el caso del PPI es muy simple, yo pienso que lo importante de la Bios
es que si algún dia se cambia el PPI por otro chip distinto, la Bios
emularía este nuevo chip como si de un PPI se tratase. De este modo el que
use los puestos igual que la Bios no le habría servido para nada.

   Estas dos anotaciones son porque ASCII SOLO nos dice que usemos
la BIOS llamandola con unos parametros concretos, EN NINGUN momento
nos dice que tenemos que usar los puestos como esta rutina lo hace,
ya que si el PPI-C cambiase por lo que fuera, este código tambien
cambiaría. Y adios compatibilidad a la los programas que acceden
al PPI IGUAL que la Bios pero sin usar la Bios!

    ASCII nos dice que usemos la BIOS para leer el teclado, si no lo haces
así te arriesgas a que tus programas no funcionen. Ahora bien, si sabes
que
todos lo MSX hasta la fecha usan el PPI de la misma manera, puedes
arriegarte a acceder a esos puertos tal y como lo hace la BIOS, pues sabes
seguro que funcionará. Si el día de mañana sacan un nuevo MSX y cambian
los
puertos del PPI, tus programas no funcionarán, y tu serás el único
responsable.
    Algo así ocurre con el VDP. En teoría hay que usar los puertos
indicados
en la ROM de la BIOS, pero pocos lo hacen porque saben que hasta la fecha
todos los MSX usan los mismos puertos.

    Supongamos un programa cualquiera y el del MegaSCSI:
    - Si ambos usan la BIOS, ambos funcionan.
    - Si ambos acceden al teclado por puertos de igual forma que la BIOS,
ambos funcionan.
    - Si el programa usa la BIOS, y el MegaSCSI 'su sistema', ambos
funcionan.
    - Si el programa usa 'su sistema' y el MegaSCSI la BIOS, el programa
no
funciona.
    De esto deduzco que el programa en cuestión está mal programado.

    Estoy de acuerdo si partimos de la base que el MegaSCSI fué programado
para los programas que usen la Bios.

    En el caso de los programas que no usen la Bios, el MegaSCSI SOLO
funcionará con aquellos que siempre inicialicen el PPI-C por cada lectura
que hagan.

    Leer el teclado como lo hace la bios no es seguir el standard ya que en
cualquier momento puede salir una bios v4.0 que lo haga de otra forma y
seguir siendo compatible.

    Y por último, si yo hago un programa residente, estoy en mi derecho de
leer el teclado usando la BIOS, si por ello algún programa deja de
funcionar, tengo muy claro que la culpa es de ese programa.

    Si haces un programa residente que tiene que ser invisible a los demás,
habrá veces que no importe que uses la Bios y otras que si que importe y tu
programa falle por no poder ser lo suficientemente trasparente. Depende de
lo eficaz que quieras hacer tu prorgama, sabiendo que la mayoría de
programas no usan la Bios.

    Saludos!

    Juan Ant. Gómez











<Anterior en la conversación] Conversación actual [Siguiente en la conversación>