Routines |
Prev: 39982 | Up: Map | Next: 40046 |
|
||||
Annotated by Stephen Jones; Spectrum Discovery Club.
|
||||
Keyboard_Test | 40019 | LD C,A | Key to test in C. | |
40020 | AND 7 | Mask bits d0-d2 for row. | ||
40022 | INC A | In range 1-8. | ||
40023 | LD B,A | Place in B. | ||
40024 | SRL C | Divide C by 8 to find position within row. | ||
40026 | SRL C | |||
40028 | SRL C | |||
40030 | LD A,5 | Only 5 keys per row. | ||
40032 | SUB C | Subtract position. | ||
40033 | LD C,A | Put into C. | ||
40034 | LD A,254 | High byte of port to read. | ||
Keyboard_Find_Row | 40036 | RRCA | Rotate into position. | |
40037 | DJNZ Keyboard_Find_Row | Repeat until we've found the relevant row. | ||
40039 | IN A,(254) | Read port (A=high, 254=low). | ||
Keyboard_Rotate_Loop | 40041 | RRA | Rotate bit out of result. | |
40042 | DEC C | Loop counter. | ||
40043 | JR NZ,Keyboard_Rotate_Loop | Repeat until bit for position in carry flag. | ||
40045 | RET | Return. |
Prev: 39982 | Up: Map | Next: 40046 |