Developer Guide
Page 9
Text Variable 151 14.6. String Variable 151 14.7. Numbers...163 15.2.3. Overview ...181 TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 Bitmap PIC Images 156 14.9. Tokenized Programs and Functions 157...Party Data 160 14.12. Other Constants 166 15.2.5. User and Application Defined Functions and Programs 170 15.3. An Example of Contents vii 14.4. Estack Calculations 177 15.7. Assembly Program 160 15. Overview ...161 15.2. Tags That Take More Than Two or a Variable Number of Exponentiation, Multiplication, and ...
Text Variable 151 14.6. String Variable 151 14.7. Numbers...163 15.2.3. Overview ...181 TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 Bitmap PIC Images 156 14.9. Tokenized Programs and Functions 157...Party Data 160 14.12. Other Constants 166 15.2.5. User and Application Defined Functions and Programs 170 15.3. An Example of Contents vii 14.4. Estack Calculations 177 15.7. Assembly Program 160 15. Overview ...161 15.2. Tags That Take More Than Two or a Variable Number of Exponentiation, Multiplication, and ...
Developer Guide
Page 47
...then returns to event messages by performing some action such as a keypress or a timer interrupt. The event manager puts the calculator into an event message and sent to determine when something important has happened such as moving its cursor or repainting its window. ...the calculator screen. The event manager interfaces with the device drivers to the application currently active in Figure 2.1. Event Manager event occurs Idle Decode and package event completed Default event handling Application completed Handle event does not know how Figure 2.1: AMS Event Handler TI-89 ...
...then returns to event messages by performing some action such as a keypress or a timer interrupt. The event manager puts the calculator into an event message and sent to determine when something important has happened such as moving its cursor or repainting its window. ...the calculator screen. The event manager interfaces with the device drivers to the application currently active in Figure 2.1. Event Manager event occurs Idle Decode and package event completed Default event handling Application completed Handle event does not know how Figure 2.1: AMS Event Handler TI-89 ...
Developer Guide
Page 48
...entry points and data structures, is stored in C or 68000 assembly language, both of which give the software developer much greater control over the calculator. Through the jump table, applications, and ASM programs can be called from the Home screen author line. ASM programs are generally small (≤... 26, 2001 They are intended to the application as subroutines called from TI-BASIC and executed from TI-BASIC instead of every calculator feature. TI-89 / TI-92 Plus Developer Guide Not for AMS 2.04) and execute in RAM. ASM programs can access low-level device drivers...
...entry points and data structures, is stored in C or 68000 assembly language, both of which give the software developer much greater control over the calculator. Through the jump table, applications, and ASM programs can be called from the Home screen author line. ASM programs are generally small (≤... 26, 2001 They are intended to the application as subroutines called from TI-BASIC and executed from TI-BASIC instead of every calculator feature. TI-89 / TI-92 Plus Developer Guide Not for AMS 2.04) and execute in RAM. ASM programs can access low-level device drivers...
Developer Guide
Page 49
...platform are : • An ASIC, which contains all of the TI-89 / TI-92 Plus from a programmer's perspective. 3. 3.1. 7 The TI-89 / TI-92 Plus Hardware Overview Overview The TI-89 and TI-92 Plus Graphing calculators provide a platform for writing interactive applications that allows the different components to... important to creating a good interface to communicate with each other, as well as specialized registers for Distribution Beta Version January 26, 2001 TI-89 / TI-92 Plus Developer Guide Not for system control. • A Motorola 68000 CPU. • 256 K bytes of RAM. • ...
...platform are : • An ASIC, which contains all of the TI-89 / TI-92 Plus from a programmer's perspective. 3. 3.1. 7 The TI-89 / TI-92 Plus Hardware Overview Overview The TI-89 and TI-92 Plus Graphing calculators provide a platform for writing interactive applications that allows the different components to... important to creating a good interface to communicate with each other, as well as specialized registers for Distribution Beta Version January 26, 2001 TI-89 / TI-92 Plus Developer Guide Not for system control. • A Motorola 68000 CPU. • 256 K bytes of RAM. • ...
Developer Guide
Page 50
...Table 3.1. Memory Map Memory for Distribution Beta Version January 26, 2001 The OS handles all memory allocation through the use . TI-89 / TI-92 Plus Developer Guide Not for the calculators consists of RAM memory, Flash memory, and address space within the ASIC. For reference, the memory map is important when developing... to accomplish a task. To remain compatible with the hardware can be accomplished through the heap or file system. See chapter 13. Chapter 3: The TI-89 / TI-92 Plus Hardware Overview • A black and white LCD display (100 lines of 160 pixels for the TI...
...Table 3.1. Memory Map Memory for Distribution Beta Version January 26, 2001 The OS handles all memory allocation through the use . TI-89 / TI-92 Plus Developer Guide Not for the calculators consists of RAM memory, Flash memory, and address space within the ASIC. For reference, the memory map is important when developing... to accomplish a task. To remain compatible with the hardware can be accomplished through the heap or file system. See chapter 13. Chapter 3: The TI-89 / TI-92 Plus Hardware Overview • A black and white LCD display (100 lines of 160 pixels for the TI...
Developer Guide
Page 57
... region which is presented in the top 18 pixels of the display of the TI-92 Plus and the top 16 pixels of the TI-89. An app's main window normally has no border but if it is in split screen mode (an app is given the size of its window... exist to: • Open, resize, and close their own windows and that menus and dialog boxes open window. TI-89 / TI-92 Plus Developer Guide Not for the status line. On both calculators, the display is 160 by 128 pixels. An overview of windows, menus, dialog boxes, fonts, and the status line...
... region which is presented in the top 18 pixels of the display of the TI-92 Plus and the top 16 pixels of the TI-89. An app's main window normally has no border but if it is in split screen mode (an app is given the size of its window... exist to: • Open, resize, and close their own windows and that menus and dialog boxes open window. TI-89 / TI-92 Plus Developer Guide Not for the status line. On both calculators, the display is 160 by 128 pixels. An overview of windows, menus, dialog boxes, fonts, and the status line...
Developer Guide
Page 64
The status bar is displayed. Turn on /off the BUSY indicator. TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 ST_folder - ST_busy - Turn on /off the lock symbol in the status line.... 4: User Interface Overview The Status Line An app can write messages to show things like the current directory, radian/degree mode, battery status, and other calculator information as shown in the status line. Figure 4.9: Status Line The following routines allow access to the status line: ST_angle - ST_eraseHelp - Temporarily display a help status...
The status bar is displayed. Turn on /off the BUSY indicator. TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 ST_folder - ST_busy - Turn on /off the lock symbol in the status line.... 4: User Interface Overview The Status Line An app can write messages to show things like the current directory, radian/degree mode, battery status, and other calculator information as shown in the status line. Figure 4.9: Status Line The following routines allow access to the status line: ST_angle - ST_eraseHelp - Temporarily display a help status...
Developer Guide
Page 65
... Program protected Flash memory - Applications can be called from inadvertent or malicious changes. None - TI-89 / TI-92 Plus Developer Guide Not for each application. Calculator hardware does not allow freeware/shareware applications to RAM before executing it can be executed in place, ... behavior for the software. The lower 24 KB limit is not difficult in assembly language but can be freely copied between calculators. ASM programs must execute in the code segment. ASM programs do not get any of the antipiracy mechanism. 23 5. ...
... Program protected Flash memory - Applications can be called from inadvertent or malicious changes. None - TI-89 / TI-92 Plus Developer Guide Not for each application. Calculator hardware does not allow freeware/shareware applications to RAM before executing it can be executed in place, ... behavior for the software. The lower 24 KB limit is not difficult in assembly language but can be freely copied between calculators. ASM programs must execute in the code segment. ASM programs do not get any of the antipiracy mechanism. 23 5. ...
Developer Guide
Page 66
... ASM program implements one TI-BASIC subprogram. Flash applications have no OS-supported shared-code interface. 24 Chapter 5: Flash Applications vs. Calculator language localization is provided by Flash applications. Shared code Yes - Object-oriented features Yes - TI-BASIC extensions ≥ 0 - Pointers... for language localizers. No - ASM programs have a shared-code interface which exposes its attributes (data and methods). TI-89 / TI-92 Plus Developer Guide Not for other Flash applications or ASM programs. No - ASM programs may move during heap garbage collect...
... ASM program implements one TI-BASIC subprogram. Flash applications have no OS-supported shared-code interface. 24 Chapter 5: Flash Applications vs. Calculator language localization is provided by Flash applications. Shared code Yes - Object-oriented features Yes - TI-BASIC extensions ≥ 0 - Pointers... for language localizers. No - ASM programs have a shared-code interface which exposes its attributes (data and methods). TI-89 / TI-92 Plus Developer Guide Not for other Flash applications or ASM programs. No - ASM programs may move during heap garbage collect...
Developer Guide
Page 67
...or call a subroutine when the stack pointer is the stack pointer. There is large. Additionally, your Flash applications enjoy a measure of calculator resources that ASM programs do not take up precious RAM. An attempt to share with other TI-BASIC subroutines but with Motorola 68000 architecture.... location 0x007C) to write programs for Distribution Beta Version January 26, 2001 TI-89 / TI-92 Plus Developer Guide Not for the TI-89 / TI-92 Plus calculator. See the TI Web site and the TI-89 / TI-92 Plus Guidebook. The level 7 auto-vector handler throws a protected...
...or call a subroutine when the stack pointer is the stack pointer. There is large. Additionally, your Flash applications enjoy a measure of calculator resources that ASM programs do not take up precious RAM. An attempt to share with other TI-BASIC subroutines but with Motorola 68000 architecture.... location 0x007C) to write programs for Distribution Beta Version January 26, 2001 TI-89 / TI-92 Plus Developer Guide Not for the TI-89 / TI-92 Plus calculator. See the TI Web site and the TI-89 / TI-92 Plus Guidebook. The level 7 auto-vector handler throws a protected...
Developer Guide
Page 71
...; ASM program waitkey accepts a keypress from the user. The key code for the pressed key is stored in your TI-BASIC program call waitkey("k"). TI-89 / TI-92 Plus Developer Guide Not for a keypress. varname = top_estack; /* Argument must be string containing name of a variable */ if (ESTACK(...mode until a key is a sample ASM written in assembly language. It turns on the PAUSE indicator in the status line and puts the calculator in low power mode until a key is legal and not reserved for something else */ if (TokenizeSymName(varname, TSF_PASS_ERRORS) == NULL) ER_throw(...
...; ASM program waitkey accepts a keypress from the user. The key code for the pressed key is stored in your TI-BASIC program call waitkey("k"). TI-89 / TI-92 Plus Developer Guide Not for a keypress. varname = top_estack; /* Argument must be string containing name of a variable */ if (ESTACK(...mode until a key is a sample ASM written in assembly language. It turns on the PAUSE indicator in the status line and puts the calculator in low power mode until a key is legal and not reserved for something else */ if (TokenizeSymName(varname, TSF_PASS_ERRORS) == NULL) ER_throw(...
Developer Guide
Page 73
...The Flash header is used by TI-GRAPH LINK™ software, the certificate header needed for Distribution Beta Version January 26, 2001 TI-89 / TI-92 Plus Developer Guide Not for license tracking, and the application header needed by AMS applications. It also discusses what needs to... be in calculator memory. Flash Application Layout This chapter presents the physical layout of the Flash header used by the AMS OS. The following table describes...
...The Flash header is used by TI-GRAPH LINK™ software, the certificate header needed for Distribution Beta Version January 26, 2001 TI-89 / TI-92 Plus Developer Guide Not for license tracking, and the application header needed by AMS applications. It also discusses what needs to... be in calculator memory. Flash Application Layout This chapter presents the physical layout of the Flash header used by the AMS OS. The following table describes...
Developer Guide
Page 74
... significant digit first. Integer, least significant byte first. TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 Certificate Header The certificate header is transmitted from one calculator to another or uploaded to a computer. Offset (bytes) 0 8...) 23 filler (zeros) 1 device type (0x98 = TI-89, 0x88 = TI-92 Plus) 1 data type (0x24 = application) 24 filler (zeros) 4 length of the certificate. The application itself is kept with a license in the calculator. Other fields include the application's product ID (a number which ...
... significant digit first. Integer, least significant byte first. TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 Certificate Header The certificate header is transmitted from one calculator to another or uploaded to a computer. Offset (bytes) 0 8...) 23 filler (zeros) 1 device type (0x98 = TI-89, 0x88 = TI-92 Plus) 1 data type (0x24 = application) 24 filler (zeros) 4 length of the certificate. The application itself is kept with a license in the calculator. Other fields include the application's product ID (a number which ...
Developer Guide
Page 76
...are initialized by scanning all the app headers for applications with a built-in app (see EV_sendEvent) given its application ID. TI-89 / TI-92 Plus Developer Guide Not for the AMS Operating System (OS). Even built-in Applications Flags 0x0001 APPHDR_LOCALIZER Application provides language...application's initialized RAM (.data section) are reserved and should be zero. The language setting pop-up menu on page 3 of the calculator's mode window is the amount of static RAM to allocate to the beginning of Built-in applications have internal names. Application Name ...
...are initialized by scanning all the app headers for applications with a built-in app (see EV_sendEvent) given its application ID. TI-89 / TI-92 Plus Developer Guide Not for the AMS Operating System (OS). Even built-in Applications Flags 0x0001 APPHDR_LOCALIZER Application provides language...application's initialized RAM (.data section) are reserved and should be zero. The language setting pop-up menu on page 3 of the calculator's mode window is the amount of static RAM to allocate to the beginning of Built-in applications have internal names. Application Name ...
Developer Guide
Page 77
...variables which needs to place in hole (22 bits) Table 7.4: Relocation Map Format The hole offset specifies where in the hole is calculated from the base and relative value. The value to store in the application code or initial data table an absolute address needs to... calculate absolute addresses when the positions of a six-byte entry for future implementations of AMS. Application Code The code segment contains executable application code and constant data. TI-89 / TI-92 Plus Developer Guide Not for data-segment ...
...variables which needs to place in hole (22 bits) Table 7.4: Relocation Map Format The hole offset specifies where in the hole is calculated from the base and relative value. The value to store in the application code or initial data table an absolute address needs to... calculate absolute addresses when the positions of a six-byte entry for future implementations of AMS. Application Code The code segment contains executable application code and constant data. TI-89 / TI-92 Plus Developer Guide Not for data-segment ...
Developer Guide
Page 78
.... USHORT flags - Application control flags: 0x0001 - ACB_LOCALIZER, the app is a built-in the VAR_LINK screen. Routine EV_getAppID returns the ID of the built-in the calculator whether it is also the handle to the app's ACB. ACBs form a linked list in the VAR-LINK screen. 0x0800 - e. TI...-89 / TI-92 Plus Developer Guide Not for each app in apps that come preinstalled from the factory or installed later as a language choice. 0x0008 - Layout ...
.... USHORT flags - Application control flags: 0x0001 - ACB_LOCALIZER, the app is a built-in the VAR_LINK screen. Routine EV_getAppID returns the ID of the built-in the calculator whether it is also the handle to the app's ACB. ACBs form a linked list in the VAR-LINK screen. 0x0800 - e. TI...-89 / TI-92 Plus Developer Guide Not for each app in apps that come preinstalled from the factory or installed later as a language choice. 0x0008 - Layout ...
Developer Guide
Page 95
... routines in the following forms: apvpavrar [ slot-number ] var-name : type ; appname is not installed in the calculator. Macros defined in the library. libid = EV_getAppID((UCHAR *)"TIPLAYER"); if (libid == H_NULL) { /* Could not find library... library. #include "tiams.h" #include "fileio.h" HANDLE libid; . . . Once you can be found, i.e., is the app's internal name. TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 func [ slot-number ] func-name(pFrame [, type . . . ...
... routines in the following forms: apvpavrar [ slot-number ] var-name : type ; appname is not installed in the calculator. Macros defined in the library. libid = EV_getAppID((UCHAR *)"TIPLAYER"); if (libid == H_NULL) { /* Could not find library... library. #include "tiams.h" #include "fileio.h" HANDLE libid; . . . Once you can be found, i.e., is the app's internal name. TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 func [ slot-number ] func-name(pFrame [, type . . . ...
Developer Guide
Page 108
...MO_option[MO_OPT_SPLIT_2] = HomeID; The following example demonstrates how to quit the current application and switch to the Home screen application. If the calculator is in split screen, set to home. */ /* AMS behavior is in full screen, just quit to switch to start. MO_currentOptions..." ); if (MO_option[MO_OPT_SPLIT_1] == appID) MO_option[MO_OPT_SPLIT_1] = HomeID; MO_digestOptions(H_NULL); } TI-89 / TI-92 Plus Developer Guide Not for English or AppId of language app. If the calculator is such that if home was already on one side, it will cause the Home screen application ...
...MO_option[MO_OPT_SPLIT_2] = HomeID; The following example demonstrates how to quit the current application and switch to the Home screen application. If the calculator is in split screen, set to home. */ /* AMS behavior is in full screen, just quit to switch to start. MO_currentOptions..." ); if (MO_option[MO_OPT_SPLIT_1] == appID) MO_option[MO_OPT_SPLIT_1] = HomeID; MO_digestOptions(H_NULL); } TI-89 / TI-92 Plus Developer Guide Not for English or AppId of language app. If the calculator is such that if home was already on one side, it will cause the Home screen application ...
Developer Guide
Page 111
... &main) ATTR(OO_APP_EXT_COUNT, 2 ) ATTR(OO_APP_EXTENSIONS, appExtensions) ATTR(OO_APP_EXT_ENTRIES, appExtEntries) /* The STR_appfunc string "appfunc" appears in the calculator installed App Extensions. function key will be available if any of the Flash applications loaded in the F2 Flash App catalog listing with ...Dialog box */ ATTR(OO_APPSTRING+STR_HELP+STR_appfunc, "app function help") ATTR(OO_APPSTRING+STR_HELP+STR_appprog, "app program help") ENDFRAME TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 An example of the function or program ...
... &main) ATTR(OO_APP_EXT_COUNT, 2 ) ATTR(OO_APP_EXTENSIONS, appExtensions) ATTR(OO_APP_EXT_ENTRIES, appExtEntries) /* The STR_appfunc string "appfunc" appears in the calculator installed App Extensions. function key will be available if any of the Flash applications loaded in the F2 Flash App catalog listing with ...Dialog box */ ATTR(OO_APPSTRING+STR_HELP+STR_appfunc, "app function help") ATTR(OO_APPSTRING+STR_HELP+STR_appprog, "app program help") ENDFRAME TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 An example of the function or program ...
Developer Guide
Page 119
..., that is sent to the window's owner application indicating it to be repainted. A simplified overview of the loop. if (! break; break; TI-89 / TI-92 Plus Developer Guide Not for an event such as a keypress or clock tick. After initializing the system, the operating system goes into...When a device indicates it needs processing, the OS packages information about the event into low power idle mode. Any hardware interrupt brings the calculator out of low power mode and starts the event scan at the top of an application's main entry point follows: #include "tiams.h" TERecord...
..., that is sent to the window's owner application indicating it to be repainted. A simplified overview of the loop. if (! break; break; TI-89 / TI-92 Plus Developer Guide Not for an event such as a keypress or clock tick. After initializing the system, the operating system goes into...When a device indicates it needs processing, the OS packages information about the event into low power idle mode. Any hardware interrupt brings the calculator out of low power mode and starts the event scan at the top of an application's main entry point follows: #include "tiams.h" TERecord...