Modificación del mapeo de teclas del interface Yazsaki

Cursos, reparaciones, fichas, tutoriales, etc.

Moderador: Fundadores

Angriff
El infierno es su lugar
El infierno es su lugar
Mensajes: 186
Registrado: 19 Jun 2014, 23:07
Ubicación: Sant Joan Despi, Barcelona

Modificación del mapeo de teclas del interface Yazsaki

Mensaje por Angriff »

Hola,

No sabía si abrir este hilo aquí o en proyectos de software, al final se queda aquí. Se trata de cómo hacer una pequeña modificación del interface de teclado Yazsaki, concretamente el remapeado de las teclas a gusto del usuario. Como comenté en un hilo, no me acababa de convencer cómo se habían asignado las teclas del teclado de PC a las del Spectrum. Yo he hecho una versión propia, basada en el teclado del ZX Spectrum+, espero que os guste.

Herramientas necesarias:
* Un grabador que pueda grabar el micro Atmel ATTiny45 (la cucaracha negra de 8 patas del interface). No sé si el Wilhelm lo pilla; el Galep V sí.
* El entorno de desarrollo IDE para compilar el código (más adelante pongo el enlace para bajarlo, es gratuíto).
* El codigo fuente (más adelante pongo el enlace).
* Un extractor de EPROMs o en su defecto un destornillador pequeñito para levantar el micro sin torcer las patas.


En el hilo del proyecto de hardware, Sinclair puso el enlace a la página original del proyecto:

http://www.jrok.com/project/speckey/spec_key.html

Desde aquí se puede bajar el código fuente del microcontrolador ("AVR source code (assembler) - AVR studio 4.11 "), que está en Assembler. Que no cunda el pánico entre quienes no hayan trabajado nunca con Assembler: la modificación sólo afecta a los datos y no al código. Concretamente, al final del fichero hay un bloque que se llama "speccy_LUT". LUT quiere decir "look up table", y no es más que una tabla en la cual se relaciona un valor de entrada con otro (u más) de salida. El valor de entrada de esta tabla es el "scan code" del teclado de PC, que no es más que el número que transmite el teclado cuando se pulsa una tecla. El valor de salida de esta tabla es la tecla (o teclas) del Spectrum que queremos que se activen. Más información sobre los "scan codes" en este enlace, en el apartado de "scan codes":

http://retired.beyondlogic.org/keyboard/keybrd.htm

Por otra parte, en la web del trastero del Spectrum hay una excelente descripción de cómo funciona el teclado del Spectrum.

http://trastero.speccy.org/cosas/droy/imar3/imar3_s.htm

A nosotros nos interesa la siguiente tabla:

Address_____ZX Spec key________Half row
-------_____-----------________--------
FEFE-65278__V__C__X__Z__CS_____000 1
FDFE-65022__G__F__D__S__A______001 2
FBFE-64510__T__R__E__W__Q______010 3
F7FE-63486__5__4__3__2__1______011 4
EFFE-61438__6__7__8__9__0______100 5
DFFE-57342__Y__U__I__O__P______101 6
BFFE-49150__H__J__K__L__Enter__110 7
7FFE-32766__B__N__M__SS_Space__111 8
____________D4 D3 D2 D1 D0


(Perdón por el aspecto de la tabla :( ).

Esto se interpreta así: cuando se pulsa una tecla en el Spectrum, pongamos la tecla I, se activa el bit 2 ('I' está en la columna D2) y la semifila correspondiente es la 101 en binario, o sea la sexta semifila en decimal (101 es 5 en binario, pero como tenemos que la 000 es la primera, la 001 la segunda, ... y la 101 es la sexta).

En la "look up table" tenemos un valor de entrada que es el código de la tecla del teclado del PC, pero sabemos que para según que teclas del teclado del ZX Spectrum+ necesitamos que se pulsen más de una tecla simultáneamente. Por ejemplo: las comillas " se consiguen con Symbols Shift más la P. Por ese motivo la tabla tiene 2 campos: uno para la primera tecla y el segundo para la segunda. En muchos casos no se necesita Caps Shift ni Symbols Shift, por eso la segunda columna aparece en blanco.
La modificación de la tabla es tan sencilla como poner en la fila que nos interese el contenido que definamos. Digamos que queremos que cuando se pulse "Bloq Mayúsculas" en el teclado del PC, se active Extended Mode en el Spectrum. En el link que he puesto de los scan codes vemos que un teclado devuelve el código 58 hexadecimal. Vamos a la línea de código 58 hexa, que ahora mismo tiene este aspecto:

.db 0 ,0 ;0x58

y ponemos el código de Symbols Shift en la primera columna, y el de Caps Shift en la segunda. Para no liarnos, lo hacemos en binario. Según la tabla de más arriba: CS = D0 (00001) con semifila "000", y SS = D1 (00010) con semifila "111". El número binario que se escribe no es más que la concatenación de los 5 dígitos del bit con los 3 de la semifila. Con esta información, la línea nos quedará ahora así:

.db 0b00001000 ,0b00010111 ;0x58 Bloq mayús ( extended mode )


Siguiendo esto, yo he reprogramado la tabla para tener el siguiente funcionamiento:


Escape = Break
Cursores = Cursores
Num keypad = 0 a 9 más . / * - + y Enter

+----+----+----+----+----+----+----+----+----+----+----+----+----+---------+
|T.V.|..1.|..2.|..3.|..4.|..5.|..6.|..7.|..8.|..9.|..0.|I.V.|....|.Delete..|
+----+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+-------+
|Delete|..Q.|..W.|..E.|..R.|..T.|..Y.|..U.|..I.|..O.|..P.|."..|Graf|.Enter.|
+------+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+.....|
|.ExtMod.|..A.|..S.|..D.|..F.|..G.|..H.|..J.|..K.|..L.|..Ñ.|Edit|....|.....|
+------+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+--+-+----+-----+
|..CS..|CLok|..Z.|..X.|..C.|..V.|..B.|..N.|..M.|__,_|__._|.-..|..CS........|
+------++---+--+-+---++----+----+----+----+----++---+-+--+---++----+-------+
|..SS...|......|.....|..........Space...........|.....|......|.....|..SS...|
+-------+------+-----+--------------------------+-----+------+-----+-------+


(También pido perdón por el aspecto del teclado :( ).

Para compilar todo esto y tener el fichero binario, se necesita el Atmel Studio, que es el entorno de desarrollo del micro ATTiny45 que monta el interface. Se puede descargar desde aquí:

http://www.atmel.com/tools/atmelstudio.aspx

Elegid el "Atmel Studio 6.2 sp1 (build 1502) Installer – with .NET", que es el más gordo.
En el Atmel Studio hay que hacer lo siguiente:
1. Crear un proyecto nuevo donde queráis y con el nombre que queráis.
2. El tipo de proyecto debe ser "AVR Assembler Project".
3. Os preguntará el tipo de micro ("Device selection"); hay que decir ATTiny45.
4. Añadir componente existente: el fichero speckey_45.asm. Se hace pulsando el botón derecho del
mouse sobre la solución, y hacer "Add -> Existingg item".
5. Definir el fichero speckey_45.asm como punto de entrada del proyecto (botón derecho sobre el
fichero, "Set as EntryFile").
6. Si se ha creado un fichero .ASM vacío: eliminar. Botón derecho sobre él, "remove".
7. Hacer "Build -> Build solution", y si no hay errores, ya tenéis el fichero .HEX listo para grabar.


A quien quierla le paso el binario y el asm del proyecto que he hecho yo, que lamentablemente está inacabado. Concretamente, las teclas "ExtMod y "SS" izquierdo están intercambiados, y tampoco funciona el cursor derecho.
Si alguien hacer variaciones sobre esto y quiere que se lo compile, que me lo diga y lo haré encantado.

Espero que este tutorial se sea de utilidad para alguien ;)

Un saludo!
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9974
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 124 times
Contactar:

Re: Modificación del mapeo de teclas del interface Yazsaki

Mensaje por flopping »

Pues muchas gracias por esas modificaciones, ahora ya tenemos donde elegir, jejejejeeje.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
Avatar de Usuario
stratotrasto
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2494
Registrado: 20 Feb 2014, 17:23
Ubicación: Abula

Re: Modificación del mapeo de teclas del interface Yazsaki

Mensaje por stratotrasto »

Guau! No me he enterado de nada pero tú dame tiempo... Una de las cosas que me gusta de este foro es la predisposición de sus integrantes a compartir sus inventos y/o proyectos. Me parece un hilo estupendo. Yo por mi parte estoy buscando un teclado que pueda modificar y adaptar al interface de Sinclair y con esto que comentas me viene de fábula. Además de hacer unas pegatinas al estilo ZX para este últimos. Un saludo.
Si me muero no dejéis a mi mujer vender mis cacharros por lo que le dije que me costaron...
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9974
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 124 times
Contactar:

Re: Modificación del mapeo de teclas del interface Yazsaki

Mensaje por flopping »

stratotrasto escribió:Guau! No me he enterado de nada pero tú dame tiempo... Una de las cosas que me gusta de este foro es la predisposición de sus integrantes a compartir sus inventos y/o proyectos. Me parece un hilo estupendo. Yo por mi parte estoy buscando un teclado que pueda modificar y adaptar al interface de Sinclair y con esto que comentas me viene de fábula. Además de hacer unas pegatinas al estilo ZX para este últimos. Un saludo.
Aquí somos así de desprendidos, jajaajajaja......si no compartiéramos, muchas cosas no se podrían realizar por desconocimiento o falta de datos, de esta forma, lo que uno no sabe, lo explica otro y así al final todos aprendemos e innovamos, yo a veces, de ver ciertas cosas, aunque sean simples y sencillas, se me ocurren otras y aunque algo pueda parecer una chorrada o una cosa muy simple, siempre se pueden sacar ideas para mejorarlo o diseñar algo nuevo a partir de una idea o cosas así, por eso es muy importante que la gente no se guarde sus "inventos", si no que los exponga y los explique, que nos vienen muy bien a todos, ¿o no?, jajaajajaja
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
Angriff
El infierno es su lugar
El infierno es su lugar
Mensajes: 186
Registrado: 19 Jun 2014, 23:07
Ubicación: Sant Joan Despi, Barcelona

Re: Modificación del mapeo de teclas del interface Yazsaki

Mensaje por Angriff »

Por mi parte es un placer compartir mis rollos y que haya compañeros que esten dispuestos a escuchar. :)
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9974
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 124 times
Contactar:

Re: Modificación del mapeo de teclas del interface Yazsaki

Mensaje por flopping »

Angriff escribió:Por mi parte es un placer compartir mis rollos y que haya compañeros que esten dispuestos a escuchar. :)
Mientras no sean rollos de papel higiénico, aquí compartimos y escuchamos de todo, jajajajaaj :P :P :P
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
Avatar de Usuario
tactica
Demonio segundo orden
Demonio segundo orden
Mensajes: 1893
Registrado: 20 Ene 2015, 20:39
Ubicación: La Coruña
Has thanked: 11 times
Been thanked: 17 times

Re: Modificación del mapeo de teclas del interface Yazsaki

Mensaje por tactica »

flopping escribió:Aquí somos así de desprendidos, jajaajajaja......si no compartiéramos, muchas cosas no se podrían realizar por desconocimiento o falta de datos, de esta forma, lo que uno no sabe, lo explica otro y así al final todos aprendemos e innovamos, yo a veces, de ver ciertas cosas, aunque sean simples y sencillas, se me ocurren otras y aunque algo pueda parecer una chorrada o una cosa muy simple, siempre se pueden sacar ideas para mejorarlo o diseñar algo nuevo a partir de una idea o cosas así, por eso es muy importante que la gente no se guarde sus "inventos", si no que los exponga y los explique, que nos vienen muy bien a todos, ¿o no?, jajaajajaja
¿Dónde se puede votar por buen comentario? Porque no podría estar más de acuerdo con lo que has dicho, los que todavía andamos cacharreando con los "juguetes" de nuestra juventud es lo que tenemos que hacer, compartir todo lo que sepamos y seguir manteniendo viva la ilusión con estas máquinas prodigiosas :))
Avatar de Usuario
tactica
Demonio segundo orden
Demonio segundo orden
Mensajes: 1893
Registrado: 20 Ene 2015, 20:39
Ubicación: La Coruña
Has thanked: 11 times
Been thanked: 17 times

Re: Modificación del mapeo de teclas del interface Yazsaki

Mensaje por tactica »

stratotrasto escribió:Guau! No me he enterado de nada pero tú dame tiempo... Una de las cosas que me gusta de este foro es la predisposición de sus integrantes a compartir sus inventos y/o proyectos. Me parece un hilo estupendo. Yo por mi parte estoy buscando un teclado que pueda modificar y adaptar al interface de Sinclair y con esto que comentas me viene de fábula. Además de hacer unas pegatinas al estilo ZX para este últimos. Un saludo.
Si la predisposición a compartir que mencionas es particular de este foro y se echa de menos en otros, entonces estoy doblemente contento de haberme apuntado :)
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9974
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 124 times
Contactar:

Re: Modificación del mapeo de teclas del interface Yazsaki

Mensaje por flopping »

tactica escribió:
stratotrasto escribió:Guau! No me he enterado de nada pero tú dame tiempo... Una de las cosas que me gusta de este foro es la predisposición de sus integrantes a compartir sus inventos y/o proyectos. Me parece un hilo estupendo. Yo por mi parte estoy buscando un teclado que pueda modificar y adaptar al interface de Sinclair y con esto que comentas me viene de fábula. Además de hacer unas pegatinas al estilo ZX para este últimos. Un saludo.
Si la predisposición a compartir que mencionas es particular de este foro y se echa de menos en otros, entonces estoy doblemente contento de haberme apuntado :)
Bueno, no es que tengamos la exclusividad de eso, pero si que es verdad que aquí se comparten muchas cosas y la gente esta muy activa siempre y eso quieras que no enriquece un foro, si ademas le sumas una muy buena gente y un muy buen rollo entre todos, pues sale lo que sale, jajaajajaja...
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
Avatar de Usuario
iturbez
Demonio segundo orden
Demonio segundo orden
Mensajes: 1311
Registrado: 01 Feb 2014, 18:56
Has thanked: 25 times
Been thanked: 46 times

Re: Modificación del mapeo de teclas del interface Yazsaki

Mensaje por iturbez »

¿Algún programador barato para ello?
Responder

Volver a “Cursos y Tutoriales”