Hola de nuevo.
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.
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'.
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.
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.
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.
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.
Saludos,
Manuel