const u8 keymap0[8] = {KEY_8, KEY_7, KEY_6, KEY_5, KEY_4, KEY_3, KEY_2, KEY_1};
const u8 keymap1[3] = {KEY_RESET, KEY_0, KEY_9};
+#define NO_KEY 8
+
extern inline u8 keypad_read_row(u8 row) {
u8 i, num;
if (row)
bset((void*)&_io_ports[M6811_PORTD], PORTD_KEYPAD_ROW);
else
- bclr((void*)&_io_ports[M6811_PORTD], ~PORTD_KEYPAD_ROW);
+ bclr((void*)&_io_ports[M6811_PORTD], PORTD_KEYPAD_ROW);
bclr_misc_output(A3800_DISPLAY_WRITE); /* disable the display clock */
/* FIXME: need to do debouncing of some sort? */
u8 key;
key = keypad_read_row(0);
- if (!key) {
+ if (NO_KEY == key) {
key = keypad_read_row(1);
+ key = keymap1[key];
+ } else
key = keymap0[key];
- }
- key = keymap1[key];
if (key != last_key) {
last_key = key;