Release 2.7 (31. X 2006.)
Bugfix: Several minor documentation mistakes fixed.
Updated: GrayDBufToggleSync now works properly on HW1.
%[ conversion in scanf family routines.
Added: A few new examples contributed by Jocelyn Berrendonner, Sébastien Leurent and Lionel Debroux.
Bugfix: Fixed a fputc bug with large (>65390 bytes) files.
Added: Support for GCC 4.0 (legacy GCC 3 is no longer supported by TIGCCLIB)
Bugfix: Fixed support for external data variables using Fargo-style compressed relocs
Added: Support for Mlink-format relocs
Updated: Grayscale routine size-optimized by Lionel Debroux, Jesse Frey and Martial Demolins.
const for the sprite data in the sprite function prototypes.
Bugfix: Fixed a bug in in-use bit support affecting PedroM versions prior to 0.81.
Updated: Merged an optimization to the in-use bit setting code from the
Bugfix: Fixed calling GrayOn twice not working (despite the documentation saying it works).
Bugfix: Fixed LIO_CTX structure (
VarSize is an
unsigned long, not an
Bugfix: Fixed an unoptimizable
jsr into a
jbsr in trampoline offset computation.
Bugfix: Fixed the formulas (wrong left side) in the documentation of
Updated: Optimized the address hack for
Release 2.6 (24. X 2004.)
Added: Many new optimization definitions.
Added: An implementation of scanf and related functions.
Added: Support for program comments.
Added: Support for incompatibility flags.
Added: Support for unofficial operating systems.
Added: A lot of startup code to handle BSS sections, constructors, etc.
Added: Automatic setting of the in-use bit.
Added: References between functions in the documentation.
Updated: Library functions coded in assembly now take register parameters.
Updated: Internal F-Line emulator is now mostly compliant with the AMS.
Release 2.5 SP4 (24. I 2003.)
Bugfix: Removed the rejection of a minimum AMS version of 2.07.
Release 2.5 SP3 (13. I 2003.)
Bugfix: Incorporated a fix for fclose.
Release 2.5 SP2 (12. I 2003.)
Bugfix: Changed import_binary to export the symbol, and changed the IDE to make it work with it.
Release 2.5 SP1 (30. XII 2002.)
Release 2.5 (21. XII 2002.)
Updated: Greatly changed the structure of the whole library, making it cleaner and easier to read.
Updated: Made some changes to support the new '-mregparm' switch/option.
Added: Implemented F-Line ROM Calls.
Added: Added beta version information to version.h.
Added: Implemented checking for a minimum AMS Version.
Added: Added types such as SYM_STR to differentiate between different uses of similar constructs.
Added: Added the ESTACK macro.
Added: Added bitwise functions to peekpoke.h.
Added: Added a lot of new functions to unknown.h.
Updated: Made _rowread a library function.
Added: Added missing interrupt vectors.
Added: Implemented calculator detection at startup.
Added: Implemented nostub libraries.
Added: Added a homescr.h header file for Home Screen manipulation.
Added: Added a stddef.h header file.
Added: Added import_binary macro.
Added: Added a
Release 2.41 (20. I 2002.)
Updated: Made some changes that will hopefully enable support for the new
V200 calculator. You can define
USE_V200 to activate this.
Added: A new file version.h has been added to the library.
Release 2.4 SP2 (27. XII 2001.)
Updated: The patch code has been cleaned up.
Updated: exit and atexit support have been reimplemented.
Added: A routine for 'long long' multiplication by Kevin Kofler has been integrated.
Release 2.4 SP1 (1. V 2001.)
Bugfix: exit and atexit support have been fixed.
A new directive,
NO_EXIT_SUPPORT, has been added to optimize the program.
Release 2.4 (24. III 2001.)
Bugfix: Implemented variable-type arguments for pointers to short and long integers. This prevents warnings if you pass an int pointer to a short pointer argument, and fixes the problems introduced in release 2.31.
A standard library file has been added to work with multiple files.
New flickerless grayscale support implemented by Thomas Nussbaumer has been added.
Release 2.31 (24. XII 2000.)
Bugfix: Casting floats to integers and automatic trunctation floating point values now works correctly. In TIGCCLIB 2.3, casting to signed ints (including implicite truncation) produced incorrect values, and casting to unsigned ints produced 'Undefined reference' errors. This is fixed now.
Bugfix: Many programs created with library releases prior to 2.3 produce a lot of warnings (although they work correctly after the compilation) about incompatible pointer types. This is fixed now.
Bugfix: Programs which still have directives
USE_..._PATCH couldn't be
compiled in "Doors" mode ('Duplicate identifier' errors) with TIGCCLIB 2.3, due to
superfluous declarations of some symbols (
bcopy etc.) in
doors.h header file. This is now fixed.
As usual, there are some fixes in the documentation. Especially, thanks to Kevin Kofler for very important information about returning values to TI-Basic.
Release 2.3 (13. XII 2000.)
A lot of internal changes are made in the library to support new features introduced in release 0.9 of the compiler. That's why this release of the library will not work correctly with releases of TIGCC prior to 0.9.
The timath.h header file is completely rewritten, because the compiler now supports the native ANSI C floating point types and values (click here for more info). In addition to this, two new ANSI-compatible header files math.h and float.h are introduced too. These changes are performed on such way to retain about 95% compatibility with old programs which used floating point arithmetic using awkward indirect methods (i.e. the only possible methods before TIGCC 0.9). Click here for more info.
There is no more need for usage of directives like
USE_..._PATCH. The new compiler
apply patches automatically when necessary (such directives will be simply ignored now). In other
words, you don't need to
worry any more about patches. For this purpose, a new file called
tipatch.lib is added to the library. The new compiler searches through this
file to find appropriate patches which eventually should to be included (you should not edit or
modify this file unless you know very well what are you doing).
A very important function push_internal_simplify which is essential for symbolic mathematic is added to estack.h header file. Note that although this function is not officially introduced before AMS 2.xx, it is implemented here to work on any AMS version.
A new function EV_getAppID is added in events.h header file, which allows determining application ID numbers regardless of the AMS version. Note that although this function is not officially introduced before AMS 2.xx, it is implemented here to work on any AMS version.
Bugfix: Changed definition of _rowread so it works correctly if used in a short loop with the new compiler.
Bugfix: The directive
OPTIMIZE_ROM_CALLS now does not interfere
witn an user-written interrupt handlers (thanks to Thomas Nussbaumer). Note however that it still may interfere with event
handlers, and with callback functions used in OSVRegisterTimer,
Bugfix: Function exit now will not cause a warning if used in the body of a non-void function.
Bugfix: Function FolderDel now works as described (and reliably).
Bugfix: Some functions from ctype.h are rewritten to avoid spurious warnings if the warning-checking level is set too high.
Bugfix: Function hypot will not cause side effects anymore.
Bugfix: Function push_ANSI_string now works correctly in all cases.
Bugfix: Function LCD_save now does not cause spurious warnings if used in "Doors" mode.
Bugfix: Function XR_stringPtr is rewritten to work with all AMS versions (thanks to Romain Herault).
Bugfix: Enumeration StartTypes is rewritten to be compatible with all AMS versions.
The library is changed to replace all
'short's where this was
appropriate to support the '-mnoshort' command line option supported in the
new version of the compiler.
The documentation is much updated (including correcting of some information which was wrong). The Frequently Asked Questions list is also slightly updated.
Release 2.22 (8. X 2000.)
Bugfix: A fatal bug which causes crash if enter_ghost_space function is used on AMS 2.03 is fixed.
Release 2.21 (2. X 2000.)
Release 2.21 is just a minor upgrade which includes the documentation in both
.html format, because this was requested by non-Windows users. Other modifications
includes slight fixes in the documentation, and much better organized Frequently Asked
Questions list (thanks to James Darpinian for helping me to organize it).
Release 2.2 (29. IX 2000.)
The documentation for the release 2.2 is completely rearanged to make it much more readable.
Moreover, the documentation now contains not only information about library functions,
but about the whole TIGCC project, including the compiler options, a
brief reference to C language keywords,
operators and punctuators, description of
GNU C language extensions,
GNU Assember, and much more. The Frequently Asked Question list is full
of new question/answer pairs. In general, the documentation is now thrice larger than in
previous release, and it is now in
.chm format (68 separate HTML files become
too inpracticable; if someone is really interested in HTML originals, I can upload them
separately). I hope that you will like the new look of the documentation (and the
documentation itself, of course).
It is not necessary any more to include nostub.h header file explicitely to produce a "nostub" program: the library will do this automatically if you use any other file from the library, except if you define the global preprocessor symbol USE_KERNEL, or if you explicitely include doors.h header file at the begining of the program.
A new directive
OPTIMIZE_ROM_CALLS is introduced, which optimizes
ROM calls in "nostub" mode, which usually leads to shorter and faster programs (but not always).
Grayscale support on HW2 calculators is improved to be about 50% faster and more flickerless. A new function GrayAdjust is implemented, which allows fine tuning of grayscale quality, so it allows to reduce flickering as many as possible. Please, recompile your existing grayscale programs if you want to get advantage of introduced improvements.
It is not necessary any more to put
USE_GRAY_PATCH in grayscale programs;
the library will now conclude automatically when the grayscale support is necessary, and it
will act accordingly.
Bugfix: trying to enable grayscale now will not cause the crash if the grayscale was already enabled.
Bugfix: Function fopen is now much more robust if something is going wrong (for example, not enough memory).
A new function enter_ghost_space is introduced, for bypassing some protections introduced in AMS 2.xx.
A new header file intr.h is introduced, which contains functions, language extensions, and data types for easy making of interrupt handlers, and for general manipulations with interrupts.
Bugfix: Function _rowread now works reliable on HW2 calculators (they needs more time for recovering the keyboard controlor).
The documentation now contains the keyboard matrix for usage of _rowread function.
Functions OSVRegisterTimer and OSVFreeTimer are rewriten to works independently of the TIOS, because they are removed from TIOS in AMS 2.04 and AMS 2.05. Now, they works on any AMS version (in other words: no more "Resident ROM routine not available" message). Please, recompile your program if you used these function, to make it compatible witn AMS 2.04/5.
Bugfix: Function assert now works properly if used inside
Bugfix: Although I said that impossibility of making multi-module programs in "Doors" mode is solved in release 2.1, I forgot to do this. This is now really solved, however.
The library is now programmed on such way that the compiler will emit a warning if you try to
return a value using the
return keyword from the
because you in fact can not do this.
Release 2.1 (25. VI 2000.)
The alphabetical list (with appropriate links) of all functions, macro constructors, language extensions, global variables, constants and predefined types is added to the documentation.
Bugfix: floating point routines caused crash when they are nested deeply (read: very often). This problem is finally solved (after a lot of troubles). I hope that floating point support is now stable.
Bugfix: FLT macro from timath.h header file generated unnormalized numbers when they are smaller than 0.1. Many floating point routines were not happy with such numbers, and produced wrong results. This is now corrected.
Bugfix: I hope that I finally found a workarround for a stupid bug in GNU C preprocessor which causes STATUS_ACCESS_VIOLATION exception very often when FLT macro is used with just one argument. Now, it seems that this problem does not appear any more.
Programs which use floating point support now usually procuce a bit shorter code than earlier.
Bugfix: functions strcmp and memcmp were declared as long, although it seems that these functions leave an unpredictable results in higher half of D0; they are now declared as int (Sebastian Reichelt and Xavier Vassor informed me about strange behaviour of these two functions). It seems that these problems are solved after redeclaration.
Bugfix: function ASM_call from system.h header file assumed that called subroutine will preserve all registers, which caused a lot of problems when these assumptions are violated. ASM_call now saves all registers and restores them after the execution. In addition to this bugfix, a new function ASM_fastcall is added, for faster calling (when you are sure that a called subroutine will not destroy any registers).
Bugfix: in release 2.0, it was impossible in "Doors" mode to create programs splited in
many modules which are linked separately, because symbol
_main was unconditionally
exported in doors.h header file. This is now corrected.
Bugfix: function GrayMode from gray.h header file now automatically selects dark plane just after switching on the grayscale mode. Such behaviour in previous releases of TIGCCLIB was guaranted only on HW1 calculators, but not on HW2 calculators. So, it was possible to produce (quite easily) grayscale programs which work correctly only on HW1 calculators, although grayscale support is planed to work always on both hardware versions. This is now fixed.
Some errors in the documentation are fixed, and the documentation is slightly updated (especially information about big number support in rsa.h header file). As usual, the Frequently Asked Questions list is updated with a lot of useful suggestions.
Release 2.0 (25. V 2000.)
Starting from this release, TIGCCLIB is much more compatible with ANSI C standard library. Nearly full implementation of stdio.h and stdlib.h is included (41 new functions in stdio.h and 23 new functions in stdlib.h, together with appropriate data structures and types). So, you can now use a lot of functions known from various C tutorials: printf, fopen, gets, atoi, qsort, bsearch, strtol...
Usage of patches "inits", "longmul", "longdiv" and "gray" is now much
easier: instead of separate linking, it is enough to define some global
preprocessor symbols (like
Bugfix: very serious bug which sometimes cause crash in programs which use floating point numbers is corrected (note that this bugfix was released before, as a separate file called tcl15fix).
A lot of new mathematical functions (mainly for manipulations with symbolic expressions, lists and matrices, and for algebra and calculus applications), and functions for "pretty printing" expressions are added in estack.h header file (82 new functions). The list of expression tags is completed (more than 500 tags), and the documentation about usage of expression stack is much updated.
A new header file events.h is introduced, with 32 new functions for event driving programming, and calculator mode settings. Now you can simulate TIOS system events in your programs, and hook into the operating system and change its behavious partially (for example, you can redefine the keyboard, add new items in system menus, change behaviour of some commands, etc.). But note that these features require good knowledge of programming.
A new header file sprites.h is introduced, with 2 new fast and simple functions for sprite drawing (including masked sprites).
A new header file textedit.h with 16 new functions for accessing the text editor is introduced. As the text editor which is built-in into the TIOS is highly customizable, you can now write programs with high perfomance editing facilities!
Four language extension macros TRY, ONERR, ENDTRY and PASS are added in error.h header file, to allow error handling similarly like in TI-Basic or in modern programming languages like Delphi. Also, two new functions are added in error.h, the documentation about it is updated, and some wrong information are corrected.
Some new data structures are added in vat.h header file, various infos related to this header file are updated (especially about organization of VAT table entries), and one small bug in it is corrected (HS_NULL was wrongly defined).
A new header file cert.h with 17 functions for working for certificate files and other memory-mapped files (not necessary related to certificates) is introduced.
A new header file rsa.h is introduced, with 8 new functions for working with very big integer numbers, message diggesting and RSA decryption.
4 new functions are added in args.h header file, which allow more flexible getting of the arguments passed to the program. The list of argument tags is completed.
A new header file compat.h is introduced, which defines 18 pseudoconstants (i.e. macros which look and act like constants). These pseudoconstants have different values on TI-89 and TI-92 Plus, so they can help making compatibility between these two calculator models. Also some pseudoconstants have different values on AMS 1.xx and AMS 2.xx, so they can help solving some minor incompatibilities between AMS 1.xx and AMS 2.xx during usage of some functions (although 99% of implemented functions are AMS-independent).
12 new functions are added in system.h header file, mainly for manipulating with queue structures, the cursor and the clipboard. Many information about this header file are updated or corrected.
Information about kbd.h header file are much updated. A hint is added about how to avoid slow functions kbhit and ngetchx in high-perfomance keyboard reading applications, without using very low-level functions like _rowread.
A new header file bascmd.h with 35 new functions is introduced. At the moment, this header file is quite incomplete and a bit unconsistent. In the near future it will contain more than 150 new functions. This header file contains functions which executes particular TI-Basic statements or functions, so after completing this header file, nearly everything which may be done using just one TI-Basic statement/function would be possible using just one TIGCC function (but be aware: the performance will be like during executing of TI-Basic statement/function, so intensive usage of functions from this header file is not recommended in high-perfomance applications). I started to develop this header file, but the shortage of my free time forces me to stop developing for a while. I don't want to prolongue releasing of whole TIGCCLIB 2.0 only because this header file is not complete. Be patient, I will continue developing it as soon as possible...
3 new functions are added in menus.h header file. A lot of information are updated, especially about the exact organization of the menu structure (this info allows making menus with more levels of submenus).
Function assert is improved, so now there is no any limitations about usage of this function in "nostub" mode.
Information for assembly programmers are much updated (many people asked me about examples of using floats in ASM programs, so this info is added).
More than 200 TIOS functions are no more "unknown", so they are moved out of unknown.h header file.
The documentation generally and the Frequently Asked Questions list are updated.
Release 1.5 (29. III 2000.)
Floating point support is implemented. For this purpose, a new header file timath.h is introduced, with 86 new functions, 4 macro constructors and a lot of constants and predefined types.
Basic support for the symbolic calculations (including symbolic algebra and calculus) is also implemented. For this purpose, a new header file estack.h is introduced. It contains 26 functions for manipulations with the expression stack (in the near future, I planed about 50-100 new functions in this header file).
Bugfix: grayscale support on Hardware Release 2 calculator is now stable. And, grayscale support now autodetects the hardware version!
94 TIOS functions are no more "unknown", so they are moved out of unknown.h header file.
Function NoCallBack is now implemented as cast constructor, so it will not be embeded in the program if not used.
All arguments which represent a handle or functions which return a handle
are now declared as HANDLE instead of
Yes, this is exactly the same, but the documentation is now more clear.
Information about timers in system.h are updated.
Information for assembly programers are slightly updated.
Information about how to use floating point and symbolic arithmetic and information about how to return a value to TI-Basic are added in the documentation.
Frequently Asked Questions are added to the documentation.
Release 1.1 (4. II 2000.)
Bugfix: strncmp was incorrectly declared as long, although TIOS strncmp puts the garbage in higher half of D0; it is now declared as int.
AMS 2.03 bugfix: NoCallBack is no more in the TIOS jump table, so this fact is now regarded. This fixed problems with usage of dialogs with AMS 2.03. If you used dialogs.h with previous release of the library, please recompile your program to become compatible with AMS 2.03!
Grayscale support implemented: a new header file gray.h and
a new patch
gray.o are introduced for this purpose.
Added support of passing arguments to the programs: for this purpose, a new header file args.h is introduced.
Header file assert.h is now included in all.h because I found an inteligent method how to implement assert on such way that it does not increase the program size if not used in the program (this is a tricky play with conditional assembling).
An information how to make a real stdio.h function printf is added into the documentation about printf.h.
Some additional notes and an example of usage are added for WinOpen function
Some typo errors in the documentation are fixed.
Release 1.0 (11. I 2000.)
The first official release.