/**************************************************************************** * @(#) Ndless - Common definitions * * Copyright (C) 2010 by ANNEHEIM Geoffrey and ARMAND Olivier * Contact: geoffrey.anneheim@gmail.com / olivier.calc@gmail.com * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. * ****************************************************************************/ #ifndef _COMMON_H_ #define _COMMON_H_ /*********************************** * Hardware CAS+ ***********************************/ #define SCREEN_BASE_ADDRESS (void*)0x20009520 /*********************************** * Addresses ***********************************/ #define OS_BASE_ADDRESS (void*)0x10000000 /*********************************** * Others ***********************************/ #define SCREEN_BYTES_SIZE 38400 #define SCREEN_WIDTH 320 #define SCREEN_HEIGHT 240 #define BLACK 0x0 #define WHITE 0xF /*********************************** * Keys these need updating ***********************************/ #define KEY_NSPIRE_RET 0x0A #define KEY_NSPIRE_ENTER 0x0D #define KEY_NSPIRE_SPACE (int)' ' #define KEY_NSPIRE_NEGATIVE (int)'-' #define KEY_NSPIRE_Z (int)'z' #define KEY_NSPIRE_PERIOD (int)'.' #define KEY_NSPIRE_Y (int)'y' #define KEY_NSPIRE_0 (int)'0' #define KEY_NSPIRE_X (int)'x' #define KEY_NSPIRE_EQUAL (int)'=' #define KEY_NSPIRE_COMMA (int)',' #define KEY_NSPIRE_PLUS (int)'+' #define KEY_NSPIRE_W (int)'w' #define KEY_NSPIRE_3 (int)'3' #define KEY_NSPIRE_V (int)'v' #define KEY_NSPIRE_2 (int)'2' #define KEY_NSPIRE_U (int)'u' #define KEY_NSPIRE_1 (int)'1' #define KEY_NSPIRE_T (int)'t' #define KEY_NSPIRE_LN 0xA900 #define KEY_NSPIRE_GTHAN (int)'>' #define KEY_NSPIRE_QUES (int)'?' #define KEY_NSPIRE_MINUS (int)'-' #define KEY_NSPIRE_S (int)'s' #define KEY_NSPIRE_6 (int)'6' #define KEY_NSPIRE_R (int)'r' #define KEY_NSPIRE_5 (int)'5' #define KEY_NSPIRE_Q (int)'q' #define KEY_NSPIRE_4 (int)'4' #define KEY_NSPIRE_P (int)'p' #define KEY_NSPIRE_LOG 0x9400 #define KEY_NSPIRE_LTHAN (int)'<' #define KEY_NSPIRE_COLON (int)':' #define KEY_NSPIRE_MULTIPLY (int)'*' #define KEY_NSPIRE_O (int)'o' #define KEY_NSPIRE_9 (int)'9' #define KEY_NSPIRE_N (int)'n' #define KEY_NSPIRE_8 (int)'8' #define KEY_NSPIRE_M (int)'m' #define KEY_NSPIRE_7 (int)'7' #define KEY_NSPIRE_L (int)'l' #define KEY_NSPIRE_SQU 0x9300 #define KEY_NSPIRE_II 0xA200 #define KEY_NSPIRE_QUOTE (int)'"' #define KEY_NSPIRE_DIVIDE (int)'/' #define KEY_NSPIRE_K (int)'k' #define KEY_NSPIRE_TAN 0x3400 #define KEY_NSPIRE_J (int)'j' #define KEY_NSPIRE_COS 0x5400 #define KEY_NSPIRE_I (int)'i' #define KEY_NSPIRE_SIN 0x7400 #define KEY_NSPIRE_H (int)'h' #define KEY_NSPIRE_EXP (int)'^' #define KEY_NSPIRE_EE 0xA400 #define KEY_NSPIRE_APOSTROPHE (int)'\'' #define KEY_NSPIRE_CAT 0x9100 #define KEY_NSPIRE_G (int)'g' #define KEY_NSPIRE_RP (int)')' #define KEY_NSPIRE_F (int)'f' #define KEY_NSPIRE_LP (int)'(' #define KEY_NSPIRE_E (int)'e' #define KEY_NSPIRE_STO 0xA800 #define KEY_NSPIRE_D (int)'d' #define KEY_NSPIRE_SHIFT 0x00100000 // SHIFT CAPS #define KEY_NSPIRE_PI 0xA300 #define KEY_NSPIRE_FLAG 0xA700 #define KEY_NSPIRE_C (int)'c' //#define KEY_NSPIRE_MENU ? #define KEY_NSPIRE_B (int)'b' #define KEY_NSPIRE_ESC 27 #define KEY_NSPIRE_A (int)'a' #define KEY_NSPIRE_CLICK 0x1700 #define KEY_NSPIRE_THETA 0x0688 #define KEY_NSPIRE_HAND 0x7400 #define KEY_NSPIRE_TAB 0x09 #define KEY_NSPIRE_LEFT 0x0700 #define KEY_NSPIRE_UP 0x1700 #define KEY_NSPIRE_RIGHT 0x2700 #define KEY_NSPIRE_DOWN 0x3700 //#define MOUSE_NSPIRE_UP 0x0 //#define MOUSE_NSPIRE_UPRIGHT 0x0 //#define MOUSE_NSPIRE_RIGHT 0x0 //#define MOUSE_NSPIRE_RIGHTDOWN 0x0 //#define MOUSE_NSPIRE_DOWN 0x0 //#define MOUSE_NSPIRE_DOWNLEFT 0x0 //#define MOUSE_NSPIRE_LEFT 0x0 //#define MOUSE_NSPIRE_LEFTUP 0x0 #define KEY_NSPIRE_DEL 0x08 #define KEY_NSPIRE_CTRL 0x00040000 /** GNU AS */ #ifdef GNU_AS .macro halt halt\@: b halt\@ .endm /** GNU C Compiler */ #else typedef struct { //http://www.omnimaga.org/index.php?topic=2255.msg58307#msg58307 unsigned int timestamp; unsigned short type; unsigned short ascii; unsigned int key; unsigned int unknown[3]; unsigned int modifier; } event; /*********************************** * Misc inline functions ***********************************/ static inline void halt(void) { asm volatile("0: b 0b"); } /* switch to low-power state until next interrupt */ static inline void idle(void) { unsigned int sbz = 0; asm volatile ("mcr p15, 0, %0, c7, c0, 4" : "=r"(sbz) ); } #endif /* GCC */ #endif