Hola Roberto!
Quiero dejar claro que NO es lo mismo usar una función de la BIOS
que el
hacer una cosa IGUAL que la hace la Bios.
Dado que tenemos información detallada de como funcionan los
puertos,
todos somos libres de usarlos a nuestra manera siempre que se haga de
forma
correcta. En ningún sitio dice que se tenga que inicializar SIEMPRE el
PPI-C
antes de leer del PPI-B, solo nos dice que el PPI-B nos devuelve el dato
del
teclado en relación al dato introducido en el PPI-C, un dato que NO HAY
que
estar constantemente introduciendo si sabemos que es siempre el mismo.
Tampoco dice en ningun lugar que el valor del PPI-C no vaya a cambiar
nunca, por lo que si quieres tener la certeza de que se lee correctamente
del PPI-B lo mas lógico es volver a escribirlo, ¿no?.
Personalmente creo que si el valor del PPI-C pudiera cambiar por alguna
razón ASCII habría avisado de ello.
Bueno, yo tengo muy claro que el MegaSCSI debería de haber restaurado el
PPI-C ya que es un parche y que además no utiliza la BIOS. Así que adios a
las normativas de ASCII.
Voy a poner un ejemplo muy simple y a dejar este asunto zanjado:
El caso del PPI no es él único que hay en el MSX para leer un
determinado dato:
En el VDP tenemos 8 registros de Estado, y para poder leerlos tenemos
que introducir el número de registro de Estado del VDP que queremos leer en
el VDP (15)
Una vez introducido el VDP (15) simplemente leemos el registro de Estado
y obtenemos el dato deseado.
Es EXACTAMENTE igual que el PPI:
El PPI-C sería el VDP (15) y el PPI-B sería el Registro de Estado del
VDP.
Pues, si seguimos la ideología de que hay que inicializar SIEMPRE el
PPI-C tambien tendríamos que inicializar SIEMPRE el VDP (15) y esto NO es
así, la gran mayoría de programas (por no decir todos) ponemos el dato
correcto en el VDP (15) y NO LO volvemos a tocar hasta que sepamos que hemos
de introducir un dato distinto.
Muchisimos programas restauran el VDP (15) por cada interrupción para
hacer transparente su modificación del VDP (15) justamente lo que debería de
haber hecho el MegaSCSI con el PPI-C si quería tener en cuenta que muchos
programas no usan la BIOS para leer el teclado (incluido él mismo)
Ya sé que el VDP (15) ha de estar siempre a 0 con las interrupciones
habilitadas, pero yo estoy hablando del caso en el que las interrupciones no
están habilitadas y podemos estar seguros que una rutina que lee de disco NO
nos va a modificar el VDP (15)
Despues de este ejemplo creo que mi opinión está muy clara dese mi punto
de vista, como ya dije, acepto la teoría de que si nos basamos que el
MegaSCSI SOLO fué programado para programas que usen la Bios pues estaría
deacuerdo que no es un BUG.
Sin mas, un saludo y espero hablar de otro tema proximamente, que ya
estoy cansado de escribir siempre de lo mismo...
Juan Ant. Gómez