![]() |
The A68k Assembler |
In addition to the GNU Assembler, the GCC4TI package also includes
the A68k assembler by Charlie Gibbs (slightly modified Amiga version). Although GCC4TI also includes
the GNU assembler used by GCC, A68k is included here because many old assembly programs for the
TI-89 and TI-92+ are created 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 advantages, mainly easier syntax, but also support for binary include files for
example.
The A68k assembler was developed long before the TIGCC and GCC4TI projects were even started, so it
is somewhat inconsistent with the rest of the project, though some effort has been made to integrate
it into TIGCC/GCC4TI. 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_CALL
s (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.