| Dynamite Dan | Routines |
| Prev: F300 | Up: Map | Next: F345 |
|
Used by the routine at F300.
|
||||||||
| F30A | LD DE,$FF2F | Start with no key pressed and checking key 2F. | ||||||
| F30D | LD BC,$FEFE | Start by checking SHIFT-V. | ||||||
| F310 | IN A,(C) | Read the keyboard. | ||||||
| F312 | CPL | Invert the bits so keys pressed have bits set. | ||||||
| F313 | AND $1F | Keep only bits 1-5 as the others aren't used. | ||||||
| F315 | JR Z,$F323 | Jump forward if no keys were pressed. | ||||||
|
A key was pressed.
|
||||||||
| F317 | INC D | |||||||
| F318 | RET NZ | |||||||
| F319 | LD H,A | |||||||
| F31A | LD A,E | |||||||
| F31B | SUB $08 | |||||||
| F31D | SRL H | |||||||
| F31F | JR NC,$F31B | |||||||
| F321 | RET NZ | |||||||
| F322 | LD D,A | |||||||
|
Scan another part of the keyboard.
|
||||||||
| F323 | DEC E | Move to the next key. | ||||||
| F324 | RLC B | Move to the next section of keyboard, so it cyles from FE - FD - FB - F7 - EF - DF - BF - 7F | ||||||
| F326 | JR C,$F310 | Loop round for another read if we didn't scan anything. This stops once port 7FFE is checked, as that the only one that doesn't carry when shifting left. | ||||||
| F328 | CP A | |||||||
| F329 | RET Z | |||||||
|
Check that a particular key in A was pressed. This entry point is used by the routine at F271.
|
||||||||
| F32A | LD C,A | |||||||
| F32B | AND $07 | |||||||
| F32D | INC A | |||||||
| F32E | LD B,A | |||||||
| F32F | SRL C | |||||||
| F331 | SRL C | |||||||
| F333 | SRL C | |||||||
| F335 | LD A,$05 | |||||||
| F337 | SUB C | |||||||
| F338 | LD C,A | |||||||
| F339 | LD A,$FE | |||||||
| F33B | RRCA | |||||||
| F33C | DJNZ $F33B | |||||||
| F33E | IN A,($FE) | Read the keyboard. | ||||||
| F340 | RRA | Put the bit in the carry flag. | ||||||
| F341 | DEC C | |||||||
| F342 | JR NZ,$F340 | |||||||
| F344 | RET | |||||||
| Prev: F300 | Up: Map | Next: F345 |