asm(".macro is_key_pressed row, column"); asm("ldr r0, =(0x900E0000 + \\row )"); asm("ldrh r0, [r0]"); asm("tst r0, \\column"); asm(".endm"); //enter key void waitKeyEnterPressed() { asm("wait_key_enter_pressed:"); asm("is_key_pressed 0x10, #0b000000000010"); asm("bne wait_key_enter_pressed"); } int isKeyEnterPressed() { asm("is_key_pressed 0x10, #0b000000000010"); asm("movne r0, #0x0"); asm("moveq r0, #0x1"); } //esc key void waitKeyEscPressed() { asm("wait_key_esc_pressed:"); asm("is_key_pressed 0x1c, #0b000010000000"); asm("bne wait_key_esc_pressed"); } int isKeyEscPressed() { asm("is_key_pressed 0x1c, #0b000010000000"); asm("movne r0, #0x0"); asm("moveq r0, #0x1"); } //left key void waitKeyLeftPressed() { asm("wait_key_lft_pressed:"); asm("is_key_pressed 0x1e, #0b000001000000"); asm("bne wait_key_lft_pressed"); } int isKeyLeftPressed() { asm("is_key_pressed 0x1e, #0b000001000000"); asm("movne r0, #0x0"); asm("moveq r0, #0x1"); } //right key void waitKeyRightPressed() { asm("wait_key_rght_pressed:"); asm("is_key_pressed 0x1e, #0b000000000100"); asm("bne wait_key_rght_pressed"); } int isKeyRightPressed() { asm("is_key_pressed 0x1e, #0b000000000100"); asm("movne r0, #0x0"); asm("moveq r0, #0x1"); } //up key void waitKeyUpPressed() { asm("wait_key_up_pressed:"); asm("is_key_pressed 0x1e, #0b000000000001"); asm("bne wait_key_up_pressed"); } int isKeyUpPressed() { asm("is_key_pressed 0x1e, #0b000000000001"); asm("movne r0, #0x0"); asm("moveq r0, #0x1"); } //down key void waitKeyDownPressed() { asm("wait_key_down_pressed:"); asm("is_key_pressed 0x1e, #0b000000010000"); asm("bne wait_key_down_pressed"); } int isKeyDownPressed() { asm("is_key_pressed 0x1e, #0b000000010000"); asm("movne r0, #0x0"); asm("moveq r0, #0x1"); }