Karoshi MSX Community
14 de Octubre de 2019, 05:54:31 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1] 2 3
  Imprimir  
Autor Tema: Ayudita con las rutinas de decodificacion del teclado please.  (Leído 17241 veces)
0 Usuarios y 1 Visitante están viendo este tema.
DRomero
Karoshi Newbie
*
Mensajes: 24


Email
« : 18 de Mayo de 2011, 05:22:15 pm »

Hola a todos, tengo una pregunta un poquillo rara pero a ver si alguien me puede ayudar u orientar un poco Smiley

¿Sabeis si sería posible reemplazar las funciones de decodificación del teclado de un MSX2+ las cuales vienen preparadas para teclado japonés, por digamos las equivalentes a un MSX2 con teclado español? ¿Sería algo viable? ¿Se ha echo ya con anterioridad?

He estado investigando un poco la RST #38 pero no consigo localizar exactamente cuales son las  funciones de lectura de la matriz del teclado y que funciones son las que asocian cada tecla a sus respectivos carácteres ASCII.

Es que me gustaría añadir soporte para teclado español al OneChipMSX, bueno la verdad es que casi lo he conseguido, tan sólo me falta una tecla, la dichosa eñe, en su lugar me sale la 'Ç'  Grin

He estado preguntando por msx.org pero por allí nadie me ha contestado en semanas, a ver si por aquí tengo más suerte Smiley

De echo con averiguar cómo cambiar la Ç por la Ñ ya tendría suficiente, he pensado en reemplazar los bitmaps de las fuentes directamente pero creo que no sería la mejor opción jejeje.

Puedo subir los fuentes y el pof por si alguien se anima a probarlo en la placa Altera DE1.

Venga, muchas gracias de antemano, un saludo.
En línea
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« Respuesta #1 : 18 de Mayo de 2011, 07:09:16 pm »

has mirado en la MSX Assembly Page?

No se si te puede ayudar, pero creo que esta bastante bien documentado el tema del teclado
http://map.grauw.nl/articles/keymatrix.php

A ver si hay suerte  Wink

Saludos!
En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #2 : 18 de Mayo de 2011, 07:44:46 pm »

Ains...
Me da que necesitas Nestor Acentos: http://www.konamiman.com/msx/msx-s.html

"NestorAcentos 1.1. Programa residente que permite generar vocales acentuadas y otros carácteres como ñ ¡ ¿ y carácteres gráficos usando la tecla KANA en ordenadores MSX japoneses." (seccion miscelanea)
En línea

--

Cindy Lauper She Bops!
DRomero
Karoshi Newbie
*
Mensajes: 24


Email
« Respuesta #3 : 18 de Mayo de 2011, 09:53:11 pm »

Gracias por la ayuda.

El NestorAcentos ya lo conocía, pero lo que yo ando buscando es más bien en implementar de forma nativa en la ROM-BIOS el soporte para teclados en español.

Voy a tratar de explicarme un poquillo mejor.

El OneChipMSX (versíon de caro para placas Altera DE1) viene con las ROMs de un MSX2+ Panasonic FS-A1WSX, son exactamente las mismas ROMs que podemos encontrar en el emulador blueMSX. La BIOS de este MSX, el Panasonic, viene ya configurada con el Japanese Key Matrix.

Mi intención es reemplazar este Key Matrix japonés por el español, el cual es exactamente igual al internacional exceptuando las filas Y1 y Y2.

Que yo sepa, teniendo exactamente el mismo hardware son las rutinas de la BIOS las que deciden la disposición de las teclas y dependiendo de la región la BIOS tendrá un decodificador distinto.

Tengo dos opciones, localizar y modificar el decodificador del teclado de la BIOS del Panasonic, cosa que queda fuera de mi alcance por mis casi nulos conocimientos en ensamblador. O bién encontrar otro MSX2+ que soporte teclado español de forma nativa e intercambiar sus ROMs.

Que yo sepa nunca se fabricó un ordenador así, aunque he localizado uno en blueMSX, se trata del Sony HB-F9S+. Que yo sepa esta máquina no es más que un MSX2 español HB-F9S upgradeado a 2+. Por lo tanto, el decodificador del teclado de esta máquina se supone que es para teclados españoles.

He echo una prueba y he reemplazados la BIOS del OneChipMSX (Panasonic) por las de esta nueva máquina. Y después de hacer las modificaciones pertinentes en los sources del OCM, he conseguido que la disposición del teclado quede de forma nativa y sin necesidad de programas residentes tal que así:


Como veis, ahora el OCM funciona de forma nativa para teclados españoles, peeeero, la único carácter que no está en el Key Matrix de esta BIOS es la eñe, en su lugar viene la Ç.

Mi pregunta o más bién petición de ayuda para vosotros que seguro sabéis mil veces mucho más que yo, es referente a este dichoso carácter Ñ.

¿Hay algua forma de reemplazar en el Key Matrix de esta BIOS la Ç por la Ñ? ¿Existe alguna BIOS que implemente de forma perfecta la decodificación para teclado español? Quizás alguien lo haya echo ya con anterioridad, en una máquina real, upgradear un MSX2 a 2+ y que funcionen las teclas españolas, supongo que añadiendo esas ROMs al OCM el problema quedaría resuelto.

Aunque de momento lo único que he encontrado ha sido el HB-F9S+ y el resultado no es del todo perfecto como podeis ver.

Aquí os dejo el archivo pof por si alguien se anima a probarlo en la Altera DE1 y la BIOS modificada también. Es necesario copiar el archivo BIOS_ES.ROM en la tarjeta de memoria SD para que funcione, porque de momento tampoco he averiguado como editar el HEX del proyecto: http://www.megaupload.com/?d=EJIIER0M

Bueno eso es todo, perdón por el tostón, no se si ahora me habréis entendido mejor, ojalá alguien me pueda orientar un poco.

Muchas gracias por vuestro tiempo.
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #4 : 18 de Mayo de 2011, 10:10:51 pm »

Ya veo.
Valdria con redefinir (en la BIOS) el caracter Ç con el grafico de la Ñ? Parece lo mas simple...
Y digo, para que quieres la Ñ? Vas a escribir libros o chatear con el? Smiley Curiosidad...
En línea

--

Cindy Lauper She Bops!
DRomero
Karoshi Newbie
*
Mensajes: 24


Email
« Respuesta #5 : 18 de Mayo de 2011, 10:18:48 pm »

¿Cambiar el bitmap directamente? Ya se me había ocurrido jejeje, pero no creo que sea la mejor solución, no se, uno espera que al hacer un print chr$(65) le salga una 'A' y no una 'Z' por ejemplo Smiley

Y bueno, la verdad es que la Ñ no la necesito para nada, más que nada es porque ya que me pongo pues hacer las cosas bien, aunque me imagino que si lo veo muy complicado lo acabaré dejando así tal y como está.

Un saludo Smiley
En línea
SapphiRe_MSX
Visitante
« Respuesta #6 : 18 de Mayo de 2011, 10:30:20 pm »

Pero si en el código del firmware del 1chip se puede cambiar directamente la disposición del teclado, no haría falta meterse a nivel de BIOS...
En línea
DRomero
Karoshi Newbie
*
Mensajes: 24


Email
« Respuesta #7 : 18 de Mayo de 2011, 10:54:02 pm »

Me temo que no se puede cambiar la disposición del teclado directamente en los sources, porque eso no existe como tal. Es como en la máquina real, el MSX tiene conectadas 11 filas de 8 teclas, el PPI8255 se encargada de escanear las filas 60 veces por segundo y son las rutinas/funciones de la ROM-BIOS las encargadas de traducir cada tecla a su correspondiente símbolo dependiendo de la región.

Se podría hacer, o incluso añadir otra fila extra Y12 para que incluya algunos carácteres más, pero entonces ya no sería un MSX estándard. Creo que es mucho más fácil y menos problemático modificar la BIOS para que se adapte al hardware, no a la inversa.

Otra preguntilla. ¿Sabeis si existe algún documento escaneado tipo MSX2+ Technical Handbook donde poder buscar las variables del sistema y una descripción de la funciones de la BIOS con sus direcciones y eso? Es que a lo mucho tan solo he encontrado de MSX2, la verdad es que no se si hay mucha variación, me imagino que sí, ya que el 2+ por ejemplo tiene memory mapper de serie y el 2 nope, el 2+ ya no soporta lápiz óptico y el 2 sí, etc. La verdad es que me iría muy bien para intentar moddear yo mismo las ROMs y saber donde poder meter mano.

Muchas gracias.
En línea
SapphiRe_MSX
Visitante
« Respuesta #8 : 19 de Mayo de 2011, 12:02:41 am »

Me temo que no se puede cambiar la disposición del teclado directamente en los sources, porque eso no existe como tal.

src\peripheral\keymap.vhd

Las tablas hexadecimales que hay en ese fichero son los mapeos de las teclas. Hace un par de años lo miré y acabé descifrando el significado, por lo que sí es posible hacerlo. Si te fijas hay otro fichero con el mapeo para el francés.
« Última modificación: 19 de Mayo de 2011, 12:08:59 am por SapphiRe » En línea
SapphiRe_MSX
Visitante
« Respuesta #9 : 19 de Mayo de 2011, 12:51:36 am »

Vale, ya lo he vuelto a entender:

Los índices de la tabla se corresponden con los scan codes del teclado PS/2 que se pueden encontrar en http://www.computer-engineering.org/ps2keyboard/scancodes2.html mientras que los valores indican el bit y la línea del teclado del MSX. Por ejemplo, si queremos cambiar la A de sitio, tendríamos que buscar su índice, que es $1C, así que miramos en la tabla y vemos que en esa posición tenemos $62, que se refiere al sexto bit de la línea 2, que es, precisamente la A.

De esta forma, cambiando esas tablas podemos cambiar la disposición del teclado sin necesidad de meternos con la BIOS. Es una solución mucho mejor, ya que así cualquier programa que lea el teclado directamente sin pasar por la BIOS funcionará a la perfección. Si te fijas hay 4 tablas, según el estado de las teclas SHIFT y CTRL. La primera es con las dos teclas sin pulsar, la segunda con CTRL pulsado, la tercera con SHIFT pulsado y la cuarta con CTRL+SHIFT.

Espero que con estas indicaciones puedas crear una versión del firmware para teclados en español, yo es que no tengo el compilador ni experiencia con VHDL.
En línea
DRomero
Karoshi Newbie
*
Mensajes: 24


Email
« Respuesta #10 : 19 de Mayo de 2011, 04:48:05 am »

Si SapphiRe, es como dices, precisamente el array del archivo keymap.vhd es lo único que he modificado Smiley

El problema está en que aunque ponga el código equivalente a la eñe en esa tabla el OCM me va a poner la Ç en su lugar, ya que es el decodificador de la BIOS el que hace la conversión. Dependiendo de la región de la BIOS cada byte representa un símbolo u otro, los únicos que no suelen variar son los comunes 'A-Z', 'a-z', '0-9', etc, el resto cambia de significado dependiendo de la versión. Esta es la tabla de bytes que entiende el OCM con la BIOS que usa:

Código:
--  bit   7 F   6 E   5 D   4 C   3 B   2 A   1 9   0 8
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBE5 | 7 & | 6 ^ | 5 % | 4 $ | 3 # | 2 @ | 1 ! | 0 ) |  0
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBE6 |  Ç  | ] } | [ { | \ | | = + | - _ | 9 ( | 8 * |  1
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBE7 |  B  |  A  | DEAD| / ? | . > | , < | ; : | ´ " |  2
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBE8 |  J  |  I  |  H  |  G  |  F  |  E  |  D  |  C  |  3
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBE9 |  R  |  Q  |  P  |  O  |  N  |  M  |  L  |  K  |  4
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBEA |  Z  |  Y  |  X  |  W  |  V  |  U  |  T  |  S  |  5
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBEB |  F3 |  F2 |  F1 | Kana| Caps|Graph| Ctrl|Shift|  6
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBEC |Enter|Selec|  BS | Stop| Tab | Esc |  F5 |  F4 |  7
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBED |Right| Down|  Up | Left| Del | Ins | Home|Space|  8
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBEE | [4] | [3] | [2] | [1] | [0] | [/] | [+] | [*] |  9
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- #FBEF | [.] | [,] | [-] | [9] | [8] | [7] | [6] | [5] |  A
--       +-----+-----+-----+-----+-----+-----+-----+-----+
-- bit     7 F   6 E   5 D   4 C   3 B   2 A   1 9   0 8


En línea
SapphiRe_MSX
Visitante
« Respuesta #11 : 19 de Mayo de 2011, 06:53:23 am »

Bueno, si has modificado keymap.vhd entonces con cualquier BIOS te debería leer las teclas que pusiste unos cuantos posts más arriba


¿verdad? Por ejemplo, si la tabla es correcta, ahora sería posible sacar el paréntesis abierto pulsando shift+8 en lugar de shift+9, ¿es así? ¿Con cualquier BIOS?
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #12 : 19 de Mayo de 2011, 08:53:07 am »

LLamadme cazuro, pero sigo pensando que si el MSX que esta emulando no tiene el dibujito de la Ñ en la BIOS para que esta la copie a VRAM, por mas que cambie el codigo VHDL, no va a salirle una Ñ.  Roll Eyes
En línea

--

Cindy Lauper She Bops!
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #13 : 19 de Mayo de 2011, 09:25:13 am »

Ademas, con lo bonito que es decir: Conllo!!
En línea

--

Cindy Lauper She Bops!
SapphiRe_MSX
Visitante
« Respuesta #14 : 19 de Mayo de 2011, 09:36:40 am »

LLamadme cazuro, pero sigo pensando que si el MSX que esta emulando no tiene el dibujito de la Ñ en la BIOS para que esta la copie a VRAM, por mas que cambie el codigo VHDL, no va a salirle una Ñ.  Roll Eyes

No, si eso ya lo sé de sobra. A la ñ sólo le veo utilidad si vas a utilizar el msx como un procesador de textos o para conectarte a internet, si no, pues no.

Pero tener el keymap del teclado que le pongamos, eso sí que me interesa bastante Cheesy
En línea
Páginas: [1] 2 3
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!