Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
cursos:ensamblador:teclado [19-01-2024 12:17] – [Esperar pulsación y esperar liberación de tecla] sromero | cursos:ensamblador:teclado [22-01-2024 08:01] (actual) – [Redefinicion de teclas] sromero | ||
---|---|---|---|
Línea 240: | Línea 240: | ||
Wait_For_Keys_Pressed: | Wait_For_Keys_Pressed: | ||
xor a ; A = 0 => leer todas las semifilas | xor a ; A = 0 => leer todas las semifilas | ||
- | in a, ($fe) | + | in a, ($fe) ; Leer del puerto del teclado |
- | or %11100000 | + | or %11100000 |
- | inc a | + | inc a ; Comprobamos el estado del teclado con: A=A+1. |
+ | ; Si A=0 => ZF = 1 => no hay tecla pulsada | ||
+ | ; Si A!=0 => ZF = 0 => hay alguna tecla pulsada | ||
jr z, Wait_For_Keys_Pressed | jr z, Wait_For_Keys_Pressed | ||
ret | ret | ||
Línea 256: | Línea 258: | ||
inc a ; Comprobamos el estado del teclado con: A=A+1. | inc a ; Comprobamos el estado del teclado con: A=A+1. | ||
; Si A=0 => ZF = 1 => no hay tecla pulsada | ; Si A=0 => ZF = 1 => no hay tecla pulsada | ||
+ | ; Si A!=0 => ZF = 0 => hay alguna tecla pulsada | ||
jr nz, Wait_For_Keys_Released | jr nz, Wait_For_Keys_Released | ||
ret | ret | ||
Línea 272: | Línea 275: | ||
inc a ; Comprobamos el estado del teclado con: A=A+1. | inc a ; Comprobamos el estado del teclado con: A=A+1. | ||
; Si A=0 => ZF = 1 => no hay tecla pulsada | ; Si A=0 => ZF = 1 => no hay tecla pulsada | ||
+ | ; Si A!=0 => ZF = 0 => hay alguna tecla pulsada | ||
jr z, wait_for_keypressed_loop | jr z, wait_for_keypressed_loop | ||
pop af | pop af | ||
Línea 285: | Línea 289: | ||
inc a ; Comprobamos el estado del teclado con: A=A+1. | inc a ; Comprobamos el estado del teclado con: A=A+1. | ||
; Si A=0 => ZF = 1 => no hay tecla pulsada | ; Si A=0 => ZF = 1 => no hay tecla pulsada | ||
+ | ; Si A!=0 => ZF = 0 => hay alguna tecla pulsada | ||
jr nz, wait_for_no_pressedkey_loop | jr nz, wait_for_no_pressedkey_loop | ||
pop af | pop af | ||
Línea 388: | Línea 393: | ||
\\ | \\ | ||
- | // | + | // |
| | ||
Línea 528: | Línea 533: | ||
Los scancodes asociados a las diferentes teclas son: | Los scancodes asociados a las diferentes teclas son: | ||
+ | \\ | ||
|< 80% >| | |< 80% >| | ||
^ Teclas: ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7 ^ 8 ^ 9 ^ 0 ^ | ^ Teclas: ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7 ^ 8 ^ 9 ^ 0 ^ | ||
Línea 543: | Línea 549: | ||
^ Teclas: ^ CAPS ^ Z ^ X ^ C ^ V ^ B ^ N ^ M ^ SYMB ^ SPACE ^ | ^ Teclas: ^ CAPS ^ Z ^ X ^ C ^ V ^ B ^ N ^ M ^ SYMB ^ SPACE ^ | ||
^ Scancodes: | $27 | $1f | $17 | $0f | $07 | $00 | $08 | $10 | $18 | $20 | | ^ Scancodes: | $27 | $1f | $17 | $0f | $07 | $00 | $08 | $10 | $18 | $20 | | ||
+ | \\ | ||
+ | |||
+ | O, en forma visual sobre un teclado de 48K, extraído del libro //Mastering Machine Code on your ZX Spectrum// (los valores numéricos están en formato hexadecimal pese a no llevar prefijo ni sufijo): | ||
+ | |||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
Estos valores nos serán necesarios si queremos establecer unos scancodes por defecto para las teclas del programa, de forma que si el usuario no las redefine, tengan unos valores de comprobación determinados para la rutina de chequeo que veremos a continuación. | Estos valores nos serán necesarios si queremos establecer unos scancodes por defecto para las teclas del programa, de forma que si el usuario no las redefine, tengan unos valores de comprobación determinados para la rutina de chequeo que veremos a continuación. |