Mensaje
por mcleod_ideafix » Mié Ene 09, 2008 9:43 am
Los 8 bits altos de la dirección de puerto se corresponde, cada uno, con una semifila: cuando quieres leer una semifila, pones un determinado bit a 0. Por ejemplo, si quieres leer la semifila del 1 al 5, usas el puerto F7FE: la parte alta es F7, que en binario es 11110111. Analogamente, la semifila de... por ejemplo, de la B al SPACE se lee con el puerto 7FFE: la parte alta es 7F, que se corresponde en binario con 01111111.
Pues bien, si quisieras leer esas dos semifilas a la vez tienes que generar una dirección de puerto que tenga a 0 los dos bits que están a 0 en cada uno de los puertos originales, esto es, una dirección cuya parte alta en binario sea 01110111 (77 en hex). Es decir, leer el puerto 77FE
Puede ser útil, combinado con alguna que otra esotérica combinación de teclas de control, para poder leer en un sólo IN, todas las teclas de un juego. Por ejemplo, imagina que eliges para un juego las teclas Q (arriba), S (abajo), R (izquierda), T (derecha), y X (disparo). No es una combinación muy cómoda quizás, pero tiene la ventaja de poder leerse de una vez: Q. R y T se leen de una semifila, la que tiene por dirección FB, la S, de FD, y la X de FE. Combinando estas tres direcciones, tenemos:
FB = 11111011
FD = 11111101
FE = 11111110
FB and FD and FE = 11111000 = F8
Así que leyendo F8FE, estamos leyendo esas tres semifilas a la vez: el bit 0 sería Q, el bit 1, S; el bit 2, X; el bit 3, R y el bit 4, T.
En realidad existen muchas más combinaciones: de hecho, el bit 0 corresponde a Q, A o CAPS SHIFT, el bit 1 a W, S o Z, el bit 2 a E, D o X, el bit 3 a R, F o C, y así sucesivamente. Como puedes imaginar, con este método no puedes discernir si has pulsado Q o A, ya que ambas ponen a 0 el mismo bit.
Esto se puede hacer con cualquier combinación de las 8 semifilas: otra combinación que podría funcionar es: Q, Z, Y, I y N. No tienes más que coger el test de teclado del post que te he comentado, ejecutarlo en un Spectrum real y probar combinaciones de teclas de tal forma que al pulsar las 5 a la vez, obtengas 5 ceros en el puerto FE (el de abajo del todo, que lee TODAS las semifilas).