brickOS Kernel Developer v0.9.0
dbutton.h
Go to the documentation of this file.
1
9/*
10 * The contents of this file are subject to the Mozilla Public License
11 * Version 1.0 (the "License"); you may not use this file except in
12 * compliance with the License. You may obtain a copy of the License
13 * at http://www.mozilla.org/MPL/
14 *
15 * Software distributed under the License is distributed on an "AS IS"
16 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17 * the License for the specific language governing rights and
18 * limitations under the License.
19 *
20 * The Original Code is legOS code, released October 17, 1999.
21 *
22 * The Initial Developer of the Original Code is Markus L. Noga.
23 * Portions created by Markus L. Noga are Copyright (C) 1999
24 * Markus L. Noga. All Rights Reserved.
25 *
26 * Contributor(s): Markus L. Noga <markus@noga.de>
27 */
28
29#ifndef __dbutton_h__
30#define __dbutton_h__
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
37//
38// Definitions
39//
41
42#define BUTTON_ONOFF 0x0002
43#define BUTTON_RUN 0x0004
44#define BUTTON_VIEW 0x4000
45#define BUTTON_PROGRAM 0x8000
46
47// buttons are active low
48//
49
51//
52#define RELEASED(state,button) ((state) & (button))
53
55//
56#define PRESSED(state,button) (!RELEASED(state,button))
57
59//
60// Functions
61//
63
65
67extern inline int dbutton(void)
68{
69 int rv;
70 __asm__ __volatile__("\n\
71 mov.b @_PORT4,%0l\n\
72 mov.b @_PORT7,%0h\n\
73" :"=r"(rv) // output
74 : // input
75 :"cc" // clobbered
76 );
77
78 return rv;
79}
80
81#ifdef __cplusplus
82}
83#endif
84
85#endif // __dbutton_h__
__asm__("\n\ .text\n\ .globl _atomic_inc\n\ _atomic_inc:\n\ stc ccr, r1h ; save flags\n\ orc #0x80, ccr ; disable all but NMI\n\ mov.b @r0, r1l\n\ inc r1l\n\ mov.b r1l, @r0\n\ ldc r1h, ccr ; restore flags\n\ rts\n\ ")
int dbutton(void)
get button states
Definition dbutton.h:67