[Main]
Title=History of the Library

[Top]
<B>Release 2.7 (31. X 2006.)</B>

<UL>
<LI>Added: Contributions to <A HREF="$$LINK(dialogs.h/)">dialogs.h</A>, <A HREF="$$LINK(files.h/)">files.h</A> (new), <A HREF="$$LINK(graphing.h/)">graphing.h</A> (new), and other files.</LI>
<LI>Bugfix: Several minor documentation mistakes fixed.</LI>
<LI>Updated: <A HREF="$$LINK(gray.h/GrayDBufToggleSync)">GrayDBufToggleSync</A> now works properly on HW1.</LI>
<LI>Bugfix: Fixed <CODE>%[</CODE> conversion in <A HREF="$$LINK(stdio.h/scanf)">scanf</A> family routines.</LI>
<LI>Added: A few new examples contributed by Jocelyn Berrendonner, Sébastien Leurent and Lionel Debroux.</LI>
<LI>Bugfix: Fixed a <A HREF="$$LINK(stdio.h/fputc)">fputc</A> bug with large (>65390 bytes) files.</LI>
<LI>Added: Support for GCC 4.0 (legacy GCC 3 is no longer supported by TIGCCLIB)</LI>
<LI>Added: <A HREF="$$LINK(peekpoke.h/poke_bchg)">poke_bchg</A> and
<A HREF="$$LINK(peekpoke.h/pokeIO_bchg)">pokeIO_bchg</A> macros</LI>
<LI>Bugfix: Fixed support for external data variables using Fargo-style compressed relocs</LI>
<LI>Added: Support for Mlink-format relocs</LI>
<LI>Updated: Grayscale routine size-optimized by Lionel Debroux, Jesse Frey and Martial Demolins.</LI>
<LI>Bugfix: Added <CODE>const</CODE> for the sprite data in the sprite function prototypes.</LI>
<LI>Bugfix: Fixed a bug in in-use bit support affecting PedroM versions prior to 0.81.</LI>
<LI>Updated: Merged an optimization to the in-use bit setting code from the <CODE>pstarter</CODE>.</LI>
<LI>Bugfix: Fixed calling <A HREF="$$LINK(gray.h/GrayOn)">GrayOn</A> twice not working (despite the documentation saying it works).</LI>
<LI>Bugfix: Fixed <A HREF="$$LINK(link.h/LIO_CTX)">LIO_CTX</A> structure (<CODE>VarSize</CODE> is an <CODE>unsigned long</CODE>, not an <CODE>unsigned short</CODE>).</LI>
<LI>Bugfix: Fixed an unoptimizable <CODE>jsr</CODE> into a <CODE>jbsr</CODE> in trampoline offset computation.</LI>
<LI>Bugfix: Fixed the formulas (wrong left side) in the documentation of <CODE>catanh</CODE> and <CODE>ccos</CODE>.</LI>
<LI>Updated: Optimized the address hack for <CODE>OSFastArrows</CODE>.</LI>
</UL>

<B>Release 2.6 (24. X 2004.)</B>

<UL>
<LI>Added: Many new <A HREF="$$INFOLINK(httigcc/advanced)">optimization definitions</A>.</LI>
<LI>Added: An implementation of <A HREF="$$LINK(stdio.h/scanf)">scanf</A>
and related functions.</LI>
<LI>Added: Support for <A HREF="$$INFOLINK(httigcc/comment)">program comments</A>.</LI>
<LI>Added: Support for <A HREF="$$INFOLINK(httigcc/incompat)">incompatibility flags</A>.</LI>
<LI>Added: Support for <A HREF="$$INFOLINK(httigcc/advanced_unofficial_support)">unofficial operating systems</A>.</LI>
<LI>Added: A lot of startup code to handle BSS sections, constructors, etc.</LI>
<LI>Added: Automatic setting of the in-use bit.</LI>
<LI>Added: References between functions in the documentation.</LI>
<LI>Updated: Library functions coded in assembly now take register parameters.</LI>
<LI>Updated: Internal F-Line emulator is now mostly compliant with the AMS.</LI>
<LI>Added: Contributions to <A HREF="$$LINK(intr.h/)">intr.h</A>, <A HREF="$$LINK(estack.h/)">estack.h</A>, and other files.</LI>
</UL>

<B>Release 2.5 SP4 (24. I 2003.)</B>

<UL>
<LI>Bugfix: Fixed bug in
<CODE><A HREF="$$INFOLINK(htretval/retval)">ENABLE_ERROR_RETURN</A></CODE>
with <CODE><A HREF="$$INFOLINK(httigcc/minams)">MIN_AMS</A></CODE>
values of 200 or higher.</LI>
<LI>Bugfix: Removed the rejection of a minimum AMS version of 2.07.</LI>
</UL>

<B>Release 2.5 SP3 (13. I 2003.)</B>

<UL>
<LI>Bugfix: Incorporated a fix for <A HREF="$$LINK(stdio.h/fclose)">fclose</A>.</LI>
</UL>

<B>Release 2.5 SP2 (12. I 2003.)</B>

<UL>
<LI>Bugfix: Important bugfixes for <A HREF="$$LINK(stdio.h/fopen)">fopen</A>,
<A HREF="$$LINK(stdio.h/fread)">fread</A> and
<A HREF="$$LINK(stdio.h/fwrite)">fwrite</A>.</LI>
<LI>Bugfix: Changed <A HREF="$$LINK(default.h/import_binary)">import_binary</A> to
export the symbol, and changed the IDE to make it work with it.</LI>
</UL>

<B>Release 2.5 SP1 (30. XII 2002.)</B>

<UL>
<LI>Bugfix: Fixed <CODE><A HREF="$$INFOLINK(httigcc/advanced_fileinuse)">SET_FILE_IN_USE_BIT</A></CODE>.</LI>
<LI>Bugfix: Fixed the prototype of <A HREF="$$LINK(rsa.h/MD5Update)">MD5Update</A>.</LI>
</UL>

<B>Release 2.5 (21. XII 2002.)</B>

<UL>
<LI>Updated: Greatly changed the structure of the whole library, making it cleaner and easier to read.</LI>
<LI>Updated: Made some changes to support the new <B>'-mregparm'</B> switch/option.</LI>
<LI>Added: Implemented <A HREF="$$INFOLINK(httigcc/advanced_flinerom)">F-Line ROM Calls</A>.</LI>
<LI>Added: Added beta version information to <A HREF="$$LINK(version.h/)">version.h</A>.</LI>
<LI>Added: Implemented checking for a minimum <A HREF="$$INFOLINK(httigcc/minams)">AMS Version</A>.</LI>
<LI>Added: Added types such as <A HREF="$$LINK(estack.h/SYM_STR)">SYM_STR</A> to differentiate between different uses of similar constructs.</LI>
<LI>Added: Added the <A HREF="$$LINK(estack.h/ESTACK)">ESTACK</A> macro.</LI>
<LI>Added: Added a <A HREF="$$LINK(intr.h/TRAP)">TRAP</A> macro which acts like <A HREF="$$LINK(intr.h/AUTO_INT)">AUTO_INT</A>.</LI>
<LI>Added: Added bitwise functions to <A HREF="$$LINK(peekpoke.h/)">peekpoke.h</A>.</LI>
<LI>Added: Added a lot of new functions to <A HREF="$$LINK(unknown.h/)">unknown.h</A>.</LI>
<LI>Added: Started documenting more functions from <A HREF="$$LINK(unknown.h/)">unknown.h</A>,
especially the high-level functions <A HREF="$$LINK(vat.h/VarRecall)">VarRecall</A> and <A HREF="$$LINK(vat.h/VarStore)">VarStore</A>.</LI>
<LI>Updated: Made <A HREF="$$LINK(kbd.h/_rowread)">_rowread</A> a library function.</LI>
<LI>Added: Added the <A HREF="$$LINK(kbd.h/_rowread_inverted)">_rowread_inverted</A>,
<A HREF="$$LINK(kbd.h/_rowread_internal)">_rowread_internal</A>,
<A HREF="$$LINK(kbd.h/_keytest)">_keytest</A>, and
<A HREF="$$LINK(kbd.h/_keytest_optimized)">_keytest_optimized</A> functions.</LI>
<LI>Added: Added missing <A HREF="$$LINK(intr.h/IntVecs)">interrupt vectors</A>.</LI>
<LI>Updated: Integrated <A HREF="mailto:Wazabbe@flashmail.com">Jocelyn Berrendonner</A>'s
vast updates to <A HREF="$$LINK(menus.h/)">menus.h</A>.</LI>
<LI>Added: Implemented <A HREF="$$INFOLINK(httigcc/advanced_calcdetect)">calculator detection</A> at startup.</LI>
<LI>Added: Implemented <A HREF="$$LINK(error.h/TRY)">TRY</A>...<A HREF="$$LINK(error.h/FINALLY)">FINALLY</A>...<A HREF="$$LINK(error.h/ENDFINAL)">ENDFINAL</A> blocks,
and added appropriate functions to <A HREF="$$LINK(alloc.h/)">alloc.h</A>.</LI>
<LI>Added: Implemented <A HREF="$$INFOLINK(htretval/reterr)">passing errors on to the AMS</A>, added default <A HREF="$$LINK(error.h/ErrorCodes)">error codes</A>,
and implemented <A HREF="$$LINK(error.h/ER_throw)">ER_throw</A>.</LI>
<LI>Added: Implemented <A HREF="$$INFOLINK(htdll)">nostub libraries</A>.</LI>
<LI>Added: Finished <A HREF="$$LINK(bascmd.h/)">bascmd.h</A>, added <A HREF="$$LINK(basfunc.h/)">basfunc.h</A> and <A HREF="$$LINK(basop.h/)">basop.h</A> without further documentation.</LI>
<LI>Added: Added a <A HREF="$$LINK(homescr.h/)">homescr.h</A> header file for Home Screen manipulation.</LI>
<LI>Added: Integrated a lot of new functions and updates contributed by other people (see <A HREF="$$INFOLINK(info/credits)">Credits</A>),
including updates to <A HREF="$$LINK(system.h/)">system.h</A>, <A HREF="$$LINK(statline.h/)">statline.h</A>, <A HREF="$$LINK(stdio.h/)">stdio.h</A>, and <A HREF="$$LINK(string.h/)">string.h</A>.</LI>
<LI>Added: Added a new <CODE><A HREF="$$INFOLINK(httigcc/advanced_ghostspace)">EXECUTE_IN_GHOST_SPACE</A></CODE>
directive, replacing the <A HREF="$$LINK(system.h/enter_ghost_space)">enter_ghost_space</A> function.</LI>
<LI>Updated: Included updated grayscale support from Thomas Nussbaumer, adding
<A HREF="$$LINK(gray.h/GraySetInt1Handler)">GraySetInt1Handler</A>,
<A HREF="$$LINK(gray.h/GrayGetInt1Handler)">GrayGetInt1Handler</A>,
and double-buffering functions.</LI>
<LI>Added: Added a <A HREF="$$LINK(stddef.h/)">stddef.h</A> header file.</LI>
<LI>Added: Added <A HREF="$$LINK(default.h/import_binary)">import_binary</A> macro.</LI>
<LI>Added: Added a <CODE><A HREF="$$INFOLINK(httigcc/advanced_fileinuse)">SET_FILE_IN_USE_BIT</A></CODE> directive.</LI>
</UL>

<B>Release 2.41 (20. I 2002.)</B>

<UL>
<LI>Updated: Made some changes that will hopefully enable support for the new
V200 calculator.  You can define <CODE>USE_V200</CODE> to activate this.</LI>
<LI>Added: A new file <A HREF="$$LINK(version.h/)">version.h</A> has been added to the
library.</LI>
<LI>Updated: Updated <A HREF="$$LINK(stdio.h/fopen)">fopen</A> and <A HREF="$$LINK(stdio.h/fclose)">fclose</A>
with new versions by <A HREF="mailto:gforce@calc.org">Greg Dietsche</A>.</LI>
</UL>

<B>Release 2.4 SP2 (27. XII 2001.)</B>

<UL>
<LI>Updated: The patch code has been cleaned up.</LI>
<LI>Updated: exit and atexit support have been reimplemented.</LI>
<LI>Added: A routine for 'long long' multiplication by Kevin Kofler has been integrated.</LI>
</UL>

<B>Release 2.4 SP1 (1. V 2001.)</B>

<UL>
<LI>Bugfix: exit and atexit support have been fixed.</LI>
<LI>A new directive, <CODE>NO_EXIT_SUPPORT</CODE>, has been added to optimize the program.</LI>
</UL>

<B>Release 2.4 (24. III 2001.)</B>

<UL>
<LI>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.</LI>
<LI>A standard library file has been added to work with multiple files.</LI>
<LI>New flickerless grayscale support implemented by
<A HREF="mailto:Thomas.Nussbaumer@gmx.net">Thomas Nussbaumer</A> has been added.</LI>
<LI><A HREF="$$LINK(gray.h/GrayMode)">GrayMode</A> has been replaced by
<A HREF="$$LINK(gray.h/GrayOn)">GrayOn</A> and <A HREF="$$LINK(gray.h/GrayOff)">GrayOff</A>.</LI>
</UL>

<B>Release 2.31 (24. XII 2000.)</B>

<UL>
<LI>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.</LI>
<LI>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.</LI>
<LI>Bugfix: Functions <A HREF="$$LINK(system.h/OSContrastUp)">OSContrastUp</A> and
<A HREF="$$LINK(system.h/OSContrastDn)">OSContrastDn</A> trashed some registers due to a bug in
the TIOS. This is fixed now (thanks to Patrick Davidson).</LI>
<LI>Bugfix: Programs which still have directives <CODE>USE_..._PATCH</CODE> couldn't be
compiled in "Doors" mode ('Duplicate identifier' errors) with TIGCCLIB 2.3, due to
superfluous declarations of some symbols (<CODE>bcopy</CODE> etc.) in
<A HREF="$$LINK(doors.h/)">doors.h</A> header file. This is now fixed.</LI>
<LI>Functions <A HREF="$$LINK(stdlib.h/abs)">abs</A>,
<A HREF="$$LINK(stdlib.h/min)">min</A> and <A HREF="$$LINK(stdlib.h/max)">max</A> are now
redefined to work with any numeric type, not only with short integers. Such behaviour
is proposed in ANSI C.</LI>
<LI>Indentifiers <A HREF="$$LINK(intr.h/AUTO_INT)">AUTO_INT</A>,
<A HREF="$$LINK(intr.h/AUTO_INT_COUNT)">AUTO_INT_COUNT</A>, <A HREF="$$LINK(intr.h/FIRST_AUTO_INT)">FIRST_AUTO_INT</A>
and <A HREF="$$LINK(intr.h/LAST_AUTO_INT)">LAST_AUTO_INT</A> were introduced in TIGCCLIB 2.3, but
I forgot to document them. This is now corrected.</LI>
<LI>As usual, there are some fixes in the documentation. Especially, thanks to Kevin Kofler for
very important information about <A HREF="$$INFOLINK(htretval)">returning values to TI-Basic</A>.</LI>
</UL>

<B>Release 2.3 (13. XII 2000.)</B>

<UL>
<LI>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.</LI>
<LI>The <A HREF="$$LINK(timath.h/)">timath.h</A> header file is completely rewritten, because the compiler
now supports the native ANSI C floating point types and values (click <A HREF="$$INFOLINK(htfloats)">here</A>
for more info). In addition to this, two new ANSI-compatible header files <A HREF="$$LINK(math.h/)">math.h</A>
and <A HREF="$$LINK(float.h/)">float.h</A> 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
<A HREF="$$INFOLINK(htfloats)">here</A> for more info.</LI>
<LI>There is no more need for usage of directives like <CODE>USE_..._PATCH</CODE>. 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
<B>tipatch.lib</B> 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).</LI>
<LI>Three new functions <A HREF="$$LINK(timath.h/float_to_bcd)">float_to_bcd</A>,
<A HREF="$$LINK(timath.h/bcd_to_float)">bcd_to_float</A> and <A HREF="$$LINK(timath.h/bcd_var)">bcd_var</A>
are added to <A HREF="$$LINK(timath.h/)">timath.h</A> header file.</LI>
<LI>A very important function <A HREF="$$LINK(estack.h/push_internal_simplify)">push_internal_simplify</A>
which is essential for symbolic mathematic is added to <A HREF="$$LINK(estack.h/)">estack.h</A> 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.</LI>
<LI>Four new functions <A HREF="$$LINK(peekpoke.h/peekIO)">peekIO</A>,
<A HREF="$$LINK(peekpoke.h/peekIO_w)">peekIO_w</A>, <A HREF="$$LINK(peekpoke.h/poke)">poke</A> and
<A HREF="$$LINK(peekpoke.h/pokeIO_w)">pokwIO_w</A> are added to <A HREF="$$LINK(peekpoke.h/)">peekpoke.h</A>
header file, to allow reliable reading and writing to hardware memory-mapped I/O ports.</LI>
<LI>A new function <A HREF="$$LINK(events.h/EV_getAppID)">EV_getAppID</A> is added in
<A HREF="$$LINK(events.h/)">events.h</A> 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.</LI>
<LI>A new function <A HREF="$$LINK(vat.h/FolderClear)">FolderClear</A> is added in <A HREF="$$LINK(vat.h/)">vat.h</A>
header file. The structure of <A HREF="$$LINK(vat.h/SYM_ENTRY)">SYM_ENTRY</A> is slightly improved
(without losing the compatibility).</LI>
<LI>Functions <A HREF="$$LINK(timath.h/atof)">atof</A> and <A HREF="$$LINK(timath.h/fabs)">fabs</A> are now
present in <A HREF="$$LINK(stdlib.h/)">stdlib.h</A> header file too, as proposed in ANSI C.</LI>
<LI>Bugfix: Changed definition of <A HREF="$$LINK(kbd.h/_rowread)">_rowread</A> so it works correctly
if used in a short loop with the new compiler.</LI>
<LI>Bugfix: The directive <CODE><A HREF="$$INFOLINK(httigcc/advanced_optrom)">OPTIMIZE_ROM_CALLS</A></CODE> 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 <A HREF="$$LINK(system.h/OSVRegisterTimer)">OSVRegisterTimer</A>,
<A HREF="$$LINK(stdio.h/vcbprintf)">vcbprintf</A>, etc.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(stdlib.h/exit)">exit</A> now will not cause a warning if used in
the body of a non-void function.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(vat.h/FolderDel)">FolderDel</A> now works as described (and reliably).</LI>
<LI>Bugfix: Some functions from <A HREF="$$LINK(ctype.h/)">ctype.h</A> are rewritten to avoid spurious
warnings if the warning-checking level is set too high.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(timath.h/hypot)">hypot</A> will not cause side effects anymore.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(estack.h/push_ANSI_string)">push_ANSI_string</A> now works correctly
in all cases.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(graph.h/LCD_save)">LCD_save</A> now does not cause spurious warnings
if used in "Doors" mode.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(system.h/XR_stringPtr)">XR_stringPtr</A> is rewritten to work with
all AMS versions (thanks to Romain Herault).</LI>
<LI>Bugfix: Enumeration <A HREF="$$LINK(events.h/StartTypes)">StartTypes</A> is rewritten to be
compatible with all AMS versions.</LI>
<LI>The library is changed to replace all <CODE>'int'</CODE>s to <CODE>'short'</CODE>s where this was
appropriate to support the <B>'-mnoshort'</B> command line option supported in the
new version of the compiler.</LI>
<LI>The documentation is much updated (including correcting of some information which was wrong).
The <A HREF="$$INFOLINK(faq)">Frequently Asked Questions</A> list is also slightly updated.</LI>
</UL>

<B>Release 2.22 (8. X 2000.)</B>

<UL>
<LI>Bugfix: A fatal bug which causes crash if <A HREF="$$LINK(system.h/enter_ghost_space)">enter_ghost_space</A>
function is used on AMS 2.03 is fixed.</LI>
</UL>

<B>Release 2.21 (2. X 2000.)</B>

<UL>
<LI>Release 2.21 is just a minor upgrade which includes the documentation in both <CODE>.chm</CODE>
and <CODE>.html</CODE> format, because this was requested by non-Windows users. Other modifications
includes slight fixes in the documentation, and much better organized <A HREF="$$INFOLINK(faq)">Frequently Asked
Questions</A> list (thanks to James Darpinian for helping me to organize it).</LI>
</UL>

<B>Release 2.2 (29. IX 2000.)</B>

<UL>
<LI>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 <A HREF="$$INFOLINK(hdrindex)">library functions</A>,
but about the whole <A HREF="$$INFOLINK(info)">TIGCC project</A>, including the <A HREF="$$INFOLINK(comopts)">compiler options</A>, a
brief reference to C language <A HREF="$$INFOLINK(keywords)">keywords</A>,
<A HREF="$$INFOLINK(opers)">operators</A> and <A HREF="$$INFOLINK(opers)">punctuators</A>, description of
GNU C <A HREF="$$INFOLINK(gnuexts)">language extensions</A>,
<A HREF="$$INFOLINK(gnuasm)">GNU Assember</A>, and much more. The <A HREF="$$INFOLINK(faq)">Frequently Asked Question</A> 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 <CODE>.chm</CODE> 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).</LI>
<LI>The header file <A HREF="$$LINK(tigcclib.h/)">all.h</A> is renamed to <A HREF="$$LINK(tigcclib.h/)">tigcclib.h</A>
to be more consistent. The old name will still be accepted, due to compatibility reasons.</LI>
<LI>It is not necessary any more to include <A HREF="$$LINK(nostub.h/)">nostub.h</A> 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
<A HREF="$$INFOLINK(httigcc/kernel)">USE_KERNEL</A>, or if you explicitely include <A HREF="$$LINK(doors.h/)">doors.h</A>
header file at the begining of the program.</LI>
<LI>A new directive <CODE><A HREF="$$INFOLINK(httigcc/advanced_optrom)">OPTIMIZE_ROM_CALLS</A></CODE> is introduced, which optimizes
ROM calls in "nostub" mode, which usually leads to shorter and faster programs (but not always).</LI>
<LI>Grayscale support on HW2 calculators is improved to be about 50% faster and more flickerless.
A new function <A HREF="$$LINK(gray.h/GrayAdjust)">GrayAdjust</A> 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.</LI>
<LI>It is not necessary any more to put <CODE>USE_GRAY_PATCH</CODE> in grayscale programs;
the library will now conclude automatically when the grayscale support is necessary, and it
will act accordingly.</LI>
<LI>Bugfix: trying to enable grayscale now will not cause the crash if the grayscale was
already enabled.</LI>
<LI>A new function <A HREF="$$LINK(gray.h/GrayCheckRunning)">GrayCheckRunning</A> and a new enumeration
<A HREF="$$LINK(gray.h/GrayPlanes)">GrayPlanes</A> are added in the <A HREF="$$LINK(gray.h/)">gray.h</A>
header file.</LI>
<LI>Bugfix: A fatal bug into functions <A HREF="$$LINK(stdio.h/fwrite)">fwrite</A> and
<A HREF="$$LINK(stdio.h/fread)">fread</A> which makes them unusuable is fixed. Also, a small
bug in <A HREF="$$LINK(stdio.h/fseek)">fseek</A> (a wrong returned value) is fixed too.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(stdio.h/fopen)">fopen</A> is now much more robust if something
is going wrong (for example, not enough memory).</LI>
<LI>A new function <A HREF="$$LINK(system.h/enter_ghost_space)">enter_ghost_space</A> is introduced,
for bypassing some protections introduced in AMS 2.xx.</LI>
<LI>A new header file <A HREF="$$LINK(intr.h/)">intr.h</A> is introduced, which contains functions,
language extensions, and data types for easy making of interrupt handlers, and for general
manipulations with interrupts.</LI>
<LI>Very useful enumeration <A HREF="$$LINK(kbd.h/CommonKeys)">CommonKeys</A> is introduced in
<A HREF="$$LINK(kbd.h/)">kbd.h</A> header file. It contains keycodes of some commonly used keys.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(kbd.h/_rowread)">_rowread</A> now works reliable on HW2
calculators (they needs more time for recovering the keyboard controlor).</LI>
<LI>The documentation now contains the keyboard matrix for usage of
<A HREF="$$LINK(kbd.h/_rowread)">_rowread</A> function.</LI>
<LI>Functions <A HREF="$$LINK(system.h/OSVRegisterTimer)">OSVRegisterTimer</A> and
<A HREF="$$LINK(system.h/OSVFreeTimer)">OSVFreeTimer</A> 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.</LI>
<LI>A new function <A HREF="$$LINK(alloc.h/alloca)">alloca</A> is added into <A HREF="$$LINK(alloc.h/)">alloc.h</A>
and <A HREF="$$LINK(stdlib.h/)">stdlib.h</A> header files.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(assert.h/assert)">assert</A> will not cause a crash anymore
when used together with the <CODE><A HREF="$$INFOLINK(httigcc/advanced_savescreen)">SAVE_SCREEN</A></CODE> directive.</LI>
<LI>Bugfix: Function <A HREF="$$LINK(assert.h/assert)">assert</A> now works properly if used inside
<CODE>if</CODE>...<CODE>else</CODE> constructions.</LI>
<LI>Bugfix: Functions <A HREF="$$LINK(assert.h/assert)">assert</A> and
<A HREF="$$LINK(stdlib.h/ldiv)">ldiv</A> will not trash line numbers anymore.</LI>
<LI>Bugfix: Functions <A HREF="$$LINK(args.h/GetFloatArg)">GetFloatArg</A>,
<A HREF="$$LINK(args.h/ArgCount)">ArgCount</A> and <A HREF="$$LINK(args.h/RemainingArgCnt)">RemainingArgCnt</A>
now works correctly in "Doors" mode.</LI>
<LI>Bugfix: Small corrections are made in functions <A HREF="$$LINK(peekpoke.h/poke)">poke</A>,
<A HREF="$$LINK(peekpoke.h/poke_w)">poke_w</A> and <A HREF="$$LINK(peekpoke.h/poke_l)">poke_l</A>, to
prevent some unnecessary warnings.</LI>
<LI>Bugfix: Constants <A HREF="$$LINK(limits.h/)">CHAR_MIN</A> and <A HREF="$$LINK(limits.h/)">CHAR_MAX</A> in
<A HREF="$$LINK(limits.h/)">limits.h</A> header file are now sensitive to the fact that the compiler
may be forced to treat chars as unsigned.</LI>
<LI>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.</LI>
<LI>The library is now programmed on such way that the compiler will emit a warning if you try to
return a value using the <CODE>return</CODE> keyword from the <CODE>_main</CODE> function,
because you in fact can not do this.</LI>
</UL>

<B>Release 2.1 (25. VI 2000.)</B>

<UL>
<LI>The alphabetical list (with appropriate links) of all functions, macro constructors, language
extensions, global variables, constants and predefined types is added to the documentation.</LI>
<LI>Bugfix: <A HREF="$$LINK(sprites.h/Sprite16)">Sprite16</A> function from
<A HREF="$$LINK(sprites.h/)">sprites.h</A> header file now works correctly. In addition to this
bugfix, a new function <A HREF="$$LINK(sprites.h/Sprite8)">Sprite8</A> is added for easier working
with small sprites.</LI>
<LI>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.</LI>
<LI>Bugfix: <A HREF="$$LINK(timath.h/M_FLT)">FLT</A> macro from <A HREF="$$LINK(timath.h/)">timath.h</A> 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.</LI>
<LI>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 <A HREF="$$LINK(timath.h/M_FLT)">FLT</A>
macro is used with just one argument. Now, it seems that this problem does not appear any more.</LI>
<LI>Programs which use floating point support now usually procuce a bit shorter code than earlier.</LI>
<LI>Bugfix: function <A HREF="$$LINK(stdlib.h/div)">div</A> from <A HREF="$$LINK(stdlib.h/)">stdlib.h</A>
header file now works correctly.</LI>
<LI>Bugfix: functions <A HREF="$$LINK(string.h/strcmp)">strcmp</A> and
<A HREF="$$LINK(mem.h/memcmp)">memcmp</A> 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.</LI>
<LI>Bugfix: function <A HREF="$$LINK(system.h/ASM_call)">ASM_call</A> from <A HREF="$$LINK(system.h/)">system.h</A>
header file assumed that called subroutine will preserve all registers, which caused a lot of
problems when these assumptions are violated. <A HREF="$$LINK(system.h/ASM_call)">ASM_call</A> now
saves all registers and restores them after the execution. In addition to this bugfix, a new
function <A HREF="$$LINK(system.h/ASM_fastcall)">ASM_fastcall</A> is added, for faster calling (when
you are sure that a called subroutine will not destroy any registers).</LI>
<LI>Bugfix: in release 2.0, it was impossible in "Doors" mode to create programs splited in
many modules which are linked separately, because symbol <CODE>_main</CODE> was unconditionally
exported in <A HREF="$$LINK(doors.h/)">doors.h</A> header file. This is now corrected.</LI>
<LI>Bugfix: function <A HREF="$$LINK(gray.h/GrayMode)">GrayMode</A> from <A HREF="$$LINK(gray.h/)">gray.h</A> 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.</LI>
<LI>Some errors in the documentation are fixed, and the documentation is slightly updated
(especially information about big number support in <A HREF="$$LINK(rsa.h/)">rsa.h</A> header file).
As usual, the <A HREF="$$INFOLINK(faq)">Frequently Asked Questions</A> list is updated with a lot
of useful suggestions.</LI>
</UL>

<B>Release 2.0 (25. V 2000.)</B>

<UL>
<LI>Starting from this release, TIGCCLIB is much more compatible with ANSI C
standard library. Nearly full implementation of <A HREF="$$LINK(stdio.h/)">stdio.h</A> and <A HREF="$$LINK(stdlib.h/)">stdlib.h</A> is
included (41 new functions in <A HREF="$$LINK(stdio.h/)">stdio.h</A> and 23 new functions in <A HREF="$$LINK(stdlib.h/)">stdlib.h</A>,
together with appropriate data structures and types). So, you can now use a
lot of functions known from various C tutorials: <A HREF="$$LINK(stdio.h/printf)">printf</A>,
<A HREF="$$LINK(stdio.h/fopen)">fopen</A>, <A HREF="$$LINK(stdio.h/gets)">gets</A>, <A HREF="$$LINK(stdlib.h/atoi)">atoi</A>,
<A HREF="$$LINK(stdlib.h/qsort)">qsort</A>, <A HREF="$$LINK(stdlib.h/bsearch)">bsearch</A>, <A HREF="$$LINK(stdlib.h/strtol)">strtol</A>...</LI>
<LI>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 <CODE>USE_LONGMUL_PATCH</CODE> etc.).</LI>
<LI>A directive <CODE><A HREF="$$INFOLINK(httigcc/advanced_savescreen)">SAVE_SCREEN</A></CODE> is introduced, which allows automatically saving and
restoring the content of the screen in "nostub" mode, without needness for
calling <A HREF="$$LINK(graph.h/LCD_save)">LCD_save</A> and <A HREF="$$LINK(graph.h/LCD_restore)">LCD_restore</A> manually.</LI>
<LI>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 <B>tcl15fix</B>).</LI>
<LI>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 <A HREF="$$LINK(estack.h/)">estack.h</A> header
file (82 new functions). The list of expression <A HREF="$$LINK(estack.h/Tags)">tags</A> is completed (more
than 500 tags), and the documentation about usage of expression stack is
much updated.</LI>
<LI>A new header file <A HREF="$$LINK(events.h/)">events.h</A> 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.</LI>
<LI>A new header file <A HREF="$$LINK(sprites.h/)">sprites.h</A> is introduced, with 2 new fast and
simple functions for sprite drawing (including masked sprites).</LI>
<LI>A new header file <A HREF="$$LINK(textedit.h/)">textedit.h</A> 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!</LI>
<LI>Four language extension macros
<A HREF="$$LINK(error.h/TRY)">TRY</A>, <A HREF="$$LINK(error.h/ONERR)">ONERR</A>,
<A HREF="$$LINK(error.h/ENDTRY)">ENDTRY</A> and <A HREF="$$LINK(error.h/PASS)">PASS</A> are added in
<A HREF="$$LINK(error.h/)">error.h</A> 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 <A HREF="$$LINK(error.h/)">error.h</A>, the documentation about it is updated, and some wrong
information are corrected.</LI>
<LI>A new header file <A HREF="$$LINK(flash.h/)">flash.h</A> is introduced, with 11 new functions for
low-level access to the Flash ROM. 3 new functions for high-level access to the Flash
ROM are added in <A HREF="$$LINK(vat.h/)">vat.h</A> header file.</LI>
<LI>Some new data structures are added in <A HREF="$$LINK(vat.h/)">vat.h</A> 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 (<A HREF="$$LINK(vat.h/HS_NULL)">HS_NULL</A> was
wrongly defined).</LI>
<LI>A new header file <A HREF="$$LINK(cert.h/)">cert.h</A> with 17 functions for working for certificate
files and other memory-mapped files (not necessary related to certificates) is introduced.</LI>
<LI>15 new functions for high-level accessing to the link port are added in
<A HREF="$$LINK(link.h/)">link.h</A> header file. Also, some information about
<A HREF="$$LINK(link.h/)">link.h</A> are corrected.</LI>
<LI>A new header file <A HREF="$$LINK(rsa.h/)">rsa.h</A> is introduced, with 8 new functions for working
with very big integer numbers, message diggesting and RSA decryption.</LI>
<LI>4 new functions are added in <A HREF="$$LINK(args.h/)">args.h</A> header file, which allow more
flexible getting of the arguments passed to the program. The list of argument tags is completed.</LI>
<LI>Two new header files <A HREF="$$LINK(limits.h/)">limits.h</A> and <A HREF="$$LINK(values.h/)">values.h</A>
are introduced. They contain various platform-dependent constants (proposed by ANSI). This helps
porting programs from other platforms.</LI>
<LI>A new header file <A HREF="$$LINK(compat.h/)">compat.h</A> 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).</LI>
<LI>Two very useful global variables are added in <A HREF="$$LINK(wingraph.h/)">wingraph.h</A> header
file. Also, some information about this header file and <A HREF="$$LINK(graph.h/)">graph.h</A> header
file are updated or corrected.</LI>
<LI>12 new functions are added in <A HREF="$$LINK(system.h/)">system.h</A> header file, mainly for
manipulating with queue structures, the cursor and the clipboard. Many information about
this header file are updated or corrected.</LI>
<LI>Information about <A HREF="$$LINK(kbd.h/)">kbd.h</A> header file are much updated. A hint is
added about how to avoid slow functions <A HREF="$$LINK(kbd.h/kbhit)">kbhit</A> and
<A HREF="$$LINK(kbd.h/ngetchx)">ngetchx</A> in high-perfomance keyboard reading applications,
without using very low-level functions like <A HREF="$$LINK(kbd.h/_rowread)">_rowread</A>.</LI>
<LI>A new header file <A HREF="$$LINK(bascmd.h/)">bascmd.h</A> 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...</LI>
<LI>3 new functions are added in <A HREF="$$LINK(menus.h/)">menus.h</A> 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).</LI>
<LI>Function <A HREF="$$LINK(assert.h/)">assert</A> is improved, so now there is no any limitations
about usage of this function in "nostub" mode.</LI>
<LI>Function <A HREF="$$LINK(alloc.h/realloc)">realloc</A> (proposed by ANSI) is added in
<A HREF="$$LINK(alloc.h/)">alloc.h</A> header file (it is also defined in <A HREF="$$LINK(stdlib.h/)">stdlib.h</A>),
and <A HREF="$$LINK(alloc.h/calloc)">calloc</A> is improved to generate smaller code.</LI>
<LI>Information for assembly programmers are much updated (many people asked me
about examples of using floats in ASM programs, so this info is added).</LI>
<LI>More than 200 TIOS functions are no more "unknown", so they are moved out of
<A HREF="$$LINK(unknown.h/)">unknown.h</A> header file.</LI>
<LI>The documentation generally and the <A HREF="$$INFOLINK(faq)">Frequently Asked Questions</A>
list are updated.</LI>
</UL>

<B>Release 1.5 (29. III 2000.)</B>

<UL>
<LI>Floating point support is implemented. For this purpose, a new header file
<A HREF="$$LINK(timath.h/)">timath.h</A> is introduced, with 86 new functions, 4 macro
constructors and a lot of constants and predefined types.</LI>
<LI>Basic support for the symbolic calculations (including symbolic algebra and
calculus) is also implemented. For this purpose, a new header file <A HREF="$$LINK(estack.h/)">estack.h</A>
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).</LI>
<LI>Bugfix: <A HREF="$$LINK(gray.h/GraySetAMSPlane)">GraySetAMSPlane</A> function from <A HREF="$$LINK(gray.h/)">gray.h</A>
now works correctly in "Doors" mode.</LI>
<LI>Bugfix: grayscale support on Hardware Release 2 calculator is now stable.
And, grayscale support now autodetects the hardware version!</LI>
<LI>Now you can make programs which return a result to the TI-Basic, i.e. which
acts like TI-Basic functions. For this purpose, header files <A HREF="$$LINK(nostub.h/)">nostub.h</A> and
<A HREF="$$LINK(doors.h/)">doors.h</A> are slightly changed.</LI>
<LI>Two very useful functions are added in <A HREF="$$LINK(args.h/)">args.h</A> header file:
<A HREF="$$LINK(args.h/GetFloatArg)">GetFloatArg</A> and
<A HREF="$$LINK(args.h/SkipArg)">SkipArg</A>. Also, documentation about <A HREF="$$LINK(args.h/)">args.h</A>
is much updated and some serious errors in the documentation are corrected.</LI>
<LI>2 new functions (<A HREF="$$LINK(system.h/ASM_call)">ASM_call</A> and <A HREF="$$LINK(system.h/EX_patch)">EX_patch</A>)
are added in <A HREF="$$LINK(system.h/)">system.h</A>.</LI>
<LI>94 TIOS functions are no more "unknown", so they are moved out of <A HREF="$$LINK(unknown.h/)">unknown.h</A>
header file.</LI>
<LI>Function <A HREF="$$LINK(dialogs.h/NoCallBack)">NoCallBack</A> is now implemented as cast
constructor, so it will not be embeded in the program if not used.</LI>
<LI><A HREF="$$LINK(kbd.h/_rowread)">_rowread</A> function from <A HREF="$$LINK(kbd.h/)">kbd.h</A> is
now more reliable.</LI>
<LI>All arguments which represent a handle or functions which return a handle
are now declared as <A HREF="$$LINK(alloc.h/HANDLE)">HANDLE</A> instead of <CODE>unsigned int</CODE>.
Yes, this is exactly the same, but the documentation is now more clear.</LI>
<LI>Information about timers in <A HREF="$$LINK(system.h/)">system.h</A> are updated.</LI>
<LI>Information for assembly programers are slightly updated.</LI>
<LI>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.</LI>
<LI><A HREF="$$INFOLINK(faq)">Frequently Asked Questions</A> are added to the documentation.</LI>
</UL>

<B>Release 1.1 (4. II 2000.)</B>

<UL>
<LI>Bugfix: <A HREF="$$LINK(string.h/strncmp)">strncmp</A> was incorrectly declared as long,
although TIOS strncmp puts the garbage in higher half of D0; it is now declared as int.</LI>
<LI>Bugfix: type definition for <A HREF="$$LINK(alloc.h/HANDLE)">HANDLE</A> in
<A HREF="$$LINK(wingraph.h/)">wingraph.h</A> and <A HREF="$$LINK(tigcclib.h/)">all.h</A> had a syntax error,
which is now fixed.</LI>
<LI>AMS 2.03 bugfix: <A HREF="$$LINK(dialogs.h/NoCallBack)">NoCallBack</A> 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 <A HREF="$$LINK(dialogs.h/)">dialogs.h</A> with previous release of
the library, please recompile your program to become compatible with AMS 2.03!</LI>
<LI>Grayscale support implemented: a new header file <A HREF="$$LINK(gray.h/)">gray.h</A> and
a new patch <CODE>gray.o</CODE> are introduced for this purpose.</LI>
<LI>Added support of passing arguments to the programs: for this purpose, a new header
file <A HREF="$$LINK(args.h/)">args.h</A> is introduced.</LI>
<LI>Header file <A HREF="$$LINK(assert.h/)">assert.h</A> is now included in <A HREF="$$LINK(tigcclib.h/)">all.h</A>
because I found an inteligent method how to implement <A HREF="$$LINK(assert.h/assert)">assert</A> 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).</LI>
<LI>An information how to make a real <B>stdio.h</B> function <B>printf</B>
is added into the documentation about <A HREF="$$LINK(printf.h/)">printf.h</A>.</LI>
<LI>Some additional notes and an example of usage are added for <A HREF="$$LINK(wingraph.h/WinOpen)">WinOpen</A>
function</LI>
<LI>Global variable <A HREF="$$LINK(estack.h/top_estack)">top_estack</A> is moved from
<A HREF="$$LINK(unknown.h/)">unknown.h</A> to <A HREF="$$LINK(args.h/)">args.h</A>.</LI>
<LI>Some typo errors in the documentation are fixed.</LI>
</UL>

<B>Release 1.0 (11. I 2000.)</B>

<UL>
<LI>The first official release.</LI>
</UL>
