# cpct_scanKeyboard

Reads the status of keyboard and joysticks and stores it in the 10 bytes reserved as cpct_keyboardStatusBuffer

#### C Definition

void cpct_scanKeyboard ()

#### Output results (10 bytes)

cpct_keyboardStatusBuffer filled up with pressed / not pressed info about all the 80 available Amstrad CPC’s keys / buttons.

#### Assembly call

>     call cpct_scanKeyboard_asm

#### Known limitations

This function disables interrupts while does keyboard scanning. Interrupts are enabled at the end, when scanning has finished.

#### Details

This function reads the pressed / not pressed status of the entire set of 80 keys / buttons from the Amstrad CPC and writes this status in cpct_keyboardStatusBuffer. cpct_keyboardStatusBuffer is a 10-bytes buffer (80 bits) that holds 1 bit for each key / button of the Amstrad CPC, meaning 0 = pressed, and 1 = not pressed. This codification is the same as the one returned by the AY-3-8912 chip, which reads the keyboard when Programmable Peripheral Interface (PPI) chip demands it. For more details on how all this process works, check Keyboard topic.

#### Destroyed Register values

AF, BC, DE, HL

#### Required memory

49 bytes

#### Time Measures

>     Case | microSecs (us) | CPU Cycles
>     ------------------------------------
>     Any  |     212        |    848
>     ------------------------------------

#### Credits

This fragment of code is based on a scanKeyboard code issued by CPCWiki. http://www.cpcwiki.eu/index.php/Programming:Keyboard_scanning. This version of the code is, however, 2 microseconds faster than CPCWiki’s (209 vs 211, excluding the 3 microseconds from the ret instruction)

> extern u8 cpct_keyboardStatusBuffer[10]

10-bytes (80-bits) array containing pressed / not pressed status of all the keys / buttons the Amstrad CPC can manage (up to 80).
Reads the status of keyboard and joysticks and stores it in the 10 bytes reserved as cpct_keyboardStatusBuffer
Keyboard and joystick are connected to AY-3-8912 Programmable Sound Generator (PSG) which receives, processes and stores pressed / not pressed information.
Close