 |
compat.h |
Header File |
Various calc-dependent and AMS-dependent pseudo-constants
This header file contains a set of various pseudo-constants (i.e. macros defined to
look and work like constants), dedicated to increase compatibility between the TI-89 and
TI-92 Plus and between AMS versions. These "constants" have different values on the
TI-89 and TI-92 Plus (or on AMS 1.xx and AMS 2.xx). Using these pseudo-constants,
you can, for example, perform keyboard reading and graphic calculations in a more sophisticated way,
check the AMS version and perform some AMS-dependent actions (although this is not recommended
if not really necessary), etc.
The following table shows all defined pseudo-constants.
A lot of them are known from DoorsOS, but they are defined here to work in both "nostub"
and "Doors" mode.
Functions
- PSEUDO_CONST_CALC
- A macro to construct a pseudo-constant from calculator-based values.
![]()
- PSEUDO_CONST_KBD
- A macro to construct a pseudo-constant from keyboard-based values.
![]()
- PSEUDO_CONST_SCREEN
- A macro to construct a pseudo-constant from screen-based values.
Constants
- AMS_1xx
- TRUE on AMS 1.xx, FALSE on AMS 2.xx and AMS 3.xx.
![]()
- AMS_2xx
- TRUE on AMS 2.xx, FALSE on AMS 1.xx and AMS 3.xx.
![]()
- AMS_3xx
- TRUE on AMS 3.xx, FALSE on AMS 1.xx and AMS 2.xx.
![]()
- CALCULATOR
- Describes the calculator model.
![]()
- HW_VERSION
- Describes the hardware version.
![]()
- KEY_DIAMOND
- The number added to the key code if the Diamond key is pressed with it (see ngetchx).
![]()
- KEY_DOWN
- Key code for the down arrow key (see ngetchx).
![]()
- KEY_DOWNLEFT
- Key code for simultaneous pressing of the down and left arrow keys (see ngetchx).
![]()
- KEY_LEFT
- Key code for the left arrow key (see ngetchx).
![]()
- KEY_OFF2
- The key code for Diamond+ON (see ngetchx).
![]()
- KEY_RIGHT
- Key code for the right arrow key (see ngetchx).
![]()
- KEY_SHIFT
- The number added to the key code if the Shift key is pressed with it (see ngetchx).
![]()
- KEY_UP
- Key code for the up arrow key (see ngetchx).
![]()
- KEY_UPRIGHT
- Key code for simultaneous pressing on up and right arrow keys (see ngetchx).
![]()
- LCD_HEIGHT
- Height of the screen in pixels.
![]()
- LCD_LINE_BYTES
- Number of bytes in the visible part of a screen line.
![]()
- LCD_WIDTH
- Width of the screen in pixels.
![]()
- ROM_base
- Base address of the ROM (0x200000 on TI-89 or V200, 0x400000 on TI-92 Plus, 0x800000 on TI-89 Titanium).
![]()
- RR_0
- A pseudo-constant pair for the '0' key.
![]()
- RR_1
- A pseudo-constant pair for the '1' key.
![]()
- RR_2
- A pseudo-constant pair for the '2' key.
![]()
- RR_3
- A pseudo-constant pair for the '3' key.
![]()
- RR_4
- A pseudo-constant pair for the '4' key.
![]()
- RR_5
- A pseudo-constant pair for the '5' key.
![]()
- RR_6
- A pseudo-constant pair for the '6' key.
![]()
- RR_7
- A pseudo-constant pair for the '7' key.
![]()
- RR_8
- A pseudo-constant pair for the '8' key.
![]()
- RR_9
- A pseudo-constant pair for the '9' key.
![]()
- RR_2ND
- A pseudo-constant pair for the '2nd' key.
![]()
- RR_A
- A pseudo-constant pair for the 'A' key.
![]()
- RR_ALPHA
- A pseudo-constant pair for the Alpha key.
![]()
- RR_APPS
- A pseudo-constant pair for the 'APPS' key.
![]()
- RR_B
- A pseudo-constant pair for the 'B' key.
![]()
- RR_BCKSPC
- A pseudo-constant pair for the backspace key.
![]()
- RR_C
- A pseudo-constant pair for the 'C' key.
![]()
- RR_CATALOG
- A pseudo-constant pair for the 'CATALOG' key.
![]()
- RR_CLEAR
- A pseudo-constant pair for the 'CLEAR' key.
![]()
- RR_COMMA
- A pseudo-constant pair for the ',' key.
![]()
- RR_COS
- A pseudo-constant pair for the 'COS' key.
![]()
- RR_D
- A pseudo-constant pair for the 'D' key.
![]()
- RR_DIAMOND
- A pseudo-constant pair for the Diamond key.
![]()
- RR_DIVIDE
- A pseudo-constant pair for the '/' key.
![]()
- RR_DOT
- A pseudo-constant pair for the '.' key.
![]()
- RR_DOWN
- A pseudo-constant pair for the down arrow key.
![]()
- RR_E
- A pseudo-constant pair for the 'E' key.
![]()
- RR_EE
- A pseudo-constant pair for the 'EE' key.
![]()
- RR_ENTER1
- A pseudo-constant pair for the first 'ENTER' key.
![]()
- RR_ENTER2
- A pseudo-constant pair for the second 'ENTER' key.
![]()
- RR_ENTER
- A pseudo-constant pair for the 'ENTER' key.
![]()
- RR_EQUALS
- A pseudo-constant pair for the '=' key.
![]()
- RR_ESC
- A pseudo-constant pair for the 'ESC' key.
![]()
- RR_F1
- A pseudo-constant pair for the 'F1' key.
![]()
- RR_F2
- A pseudo-constant pair for the 'F2' key.
![]()
- RR_F3
- A pseudo-constant pair for the 'F3' key.
![]()
- RR_F4
- A pseudo-constant pair for the 'F4' key.
![]()
- RR_F5
- A pseudo-constant pair for the 'F5' key.
![]()
- RR_F6
- A pseudo-constant pair for the 'F6' key.
![]()
- RR_F7
- A pseudo-constant pair for the 'F7' key.
![]()
- RR_F8
- A pseudo-constant pair for the 'F8' key.
![]()
- RR_F
- A pseudo-constant pair for the 'F' key.
![]()
- RR_G
- A pseudo-constant pair for the 'G' key.
![]()
- RR_H
- A pseudo-constant pair for the 'H' key.
![]()
- RR_HAND
- A pseudo-constant pair for the Hand key.
![]()
- RR_HOME
- A pseudo-constant pair for the 'HOME' key.
![]()
- RR_I
- A pseudo-constant pair for the 'I' key.
![]()
- RR_J
- A pseudo-constant pair for the 'J' key.
![]()
- RR_K
- A pseudo-constant pair for the 'K' key.
![]()
- RR_L
- A pseudo-constant pair for the 'L' key.
![]()
- RR_LEFT
- A pseudo-constant pair for the left arrow key.
![]()
- RR_LN
- A pseudo-constant pair for the 'LN' key.
![]()
- RR_M
- A pseudo-constant pair for the 'M' key.
![]()
- RR_MINUS
- A pseudo-constant pair for the '-' key.
![]()
- RR_MODE
- A pseudo-constant pair for the 'MODE' key.
![]()
- RR_MULTIPLY
- A pseudo-constant pair for the '*' key.
![]()
- RR_N
- A pseudo-constant pair for the 'N' key.
![]()
- RR_NEGATE
- A pseudo-constant pair for the negation key.
![]()
- RR_NO_KEY
- A constant which means that a specific key does not exist.
![]()
- RR_O
- A pseudo-constant pair for the 'O' key.
![]()
- RR_P
- A pseudo-constant pair for the 'P' key.
![]()
- RR_PAREN_CLOSE
- A pseudo-constant pair for the ')' key.
![]()
- RR_PAREN_OPEN
- A pseudo-constant pair for the '(' key.
![]()
- RR_PLUS
- A pseudo-constant pair for the '+' key.
![]()
- RR_POWER
- A pseudo-constant pair for the '^' key.
![]()
- RR_Q
- A pseudo-constant pair for the 'Q' key.
![]()
- RR_R
- A pseudo-constant pair for the 'R' key.
![]()
- RR_RIGHT
- A pseudo-constant pair for the right arrow key.
![]()
- RR_S
- A pseudo-constant pair for the 'S' key.
![]()
- RR_SHIFT
- A pseudo-constant pair for the Shift key.
![]()
- RR_SIN
- A pseudo-constant pair for the 'SIN' key.
![]()
- RR_SPACE
- A pseudo-constant pair for the space key.
![]()
- RR_STORE
- A pseudo-constant pair for the Store key.
![]()
- RR_T
- A pseudo-constant pair for the 'T' key.
![]()
- RR_TAN
- A pseudo-constant pair for the 'TAN' key.
![]()
- RR_THETA
- A pseudo-constant pair for the 'q' key.
![]()
- RR_U
- A pseudo-constant pair for the 'U' key.
![]()
- RR_UP
- A pseudo-constant pair for the up arrow key.
![]()
- RR_V
- A pseudo-constant pair for the 'V' key.
![]()
- RR_W
- A pseudo-constant pair for the 'W' key.
![]()
- RR_WITH
- A pseudo-constant pair for the '|' key.
![]()
- RR_X
- A pseudo-constant pair for the 'X' key.
![]()
- RR_Y
- A pseudo-constant pair for the 'Y' key.
![]()
- RR_Z
- A pseudo-constant pair for the 'Z' key.
![]()
- TI89_CLASSIC
- TRUE on a classic TI-89 (i.e. a TI-89 which is not a TI-89 Titanium), FALSE otherwise.
![]()
- TI89_TITANIUM
- TRUE on a TI-89 Titanium, FALSE otherwise.
![]()
- TI89
- TRUE on a TI-89, FALSE otherwise.
![]()
- TI92PLUS
- TRUE on TI-92 Plus, FALSE otherwise.
![]()
- TIOS_entries
- Number of entries in the TIOS jump table.
![]()
- V200
- TRUE on V200, FALSE otherwise.
Note: All of these pseudo-constants are in fact macros. Although they expand to relatively small
code (in "Doors" mode they are mainly implemented as RAM calls and managed by kernel), it is recommended to
store a pseudo-constant in an ordinary variable if you use it a lot of times in the program (especially in "nostub"
mode), and to use this variable instead. For example, if you use the KEY_LEFT pseudo-constant
too often, it is recommended to define
int key_left = KEY_LEFT;
somewhere at the beginning of the program, and to use
if (key == key_left) ...
instead of
if (key == KEY_LEFT) ...
Such indirection will save memory, but note that this is necessary only if you use
the same pseudo-constant a lot in the program (say, more than 5 times).
There is yet another note. Pseudo-Constants work as constants in nearly all cases, but
they are not really constants, so they can not be used in case labels
inside switch statements, i.e. the following is not legal:
switch (ngetchx ())
{
case KEY_LEFT:
...
case KEY_RIGHT:
...
...
}
Instead, use if...else constructions:
key = ngetchx ();
if (key == KEY_LEFT)
{
...
}
else if (key == KEY_RIGHT)
{
...
}
...
The pseudo-constants really become constants if you compile only for one
calculator model. For example, if you define USE_TI89
and nothing
else, CALCULATOR will have the value 0
,
and all other pseudo-constants will be optimized into single values.
Or, if you define MIN_AMS
to be 200
,
AMS_1xx will always be false.