The A68k Assembler

In addition to the GNU Assembler, the TIGCC package also includes the A68k assembler by Charlie Gibbs (slightly modified Amiga version). Although TIGCC also includes the GNU assembler used by GCC, A68k is included here because almost all assembly programs for the TI-89 and TI-92+ are created just with this assembler, so including it in the package allows compiling existing ASM programs as well, and because, while it is inferior to the GNU assembler in some aspects, it also has its advantages, mainly easier syntax, but also support for binary include files for example. As this part of the TIGCC package was developed completely independently of the rest of the TIGCC project (and long before the TIGCC project was even started), it is somewhat inconsistent with the rest of the project, but some effort has been made to integrate it into TIGCC. For example, you can now call a function from a static library using a simple bsr or jsr instruction.

This assembler comes with its own set of header files. All of them are included mainly for compatibility reasons (note that some of them are deprecated, obsolete, inconsistent or even obscure), so they will not be described here. Information about them may be found in various ASM tutorials for TI-89 and TI-92+ (also deprecated, but note that nearly 95% of all ASM programs for TI-89 and TI-92+ are written using a now deprecated way, because a lot of information about the system was not available at the time when these programs were created). We recommend using only OS.h, which contains a list of equates for ROM_CALLs (but the ROM_CALL macros are not very optimized and should thus be avoided), and functions from TIGCCLIB, which need no header file at all (for example, bsr GrayOn is enough to call the GrayOn function). What will be presented here is the original A68k documentation, written by Charlie Gibbs himself. We have however annotated it in some places to reflect the changes made in recent versions, and we have added 2 chapters: the list of supported assembler directives, which was missing, and the history, which was kept in a separate file.