The CIGAL language features over 400 commands and functions for data I/O, memory management, mathematical operations, graphics, image processing, sound, user menus, and program control. The main CIGAL language uses C-like syntax with structured program support, object-oriented data variables, and flexible support for a range of user-configurable peripheral hardware devices. The ~50,000 lines of C-language code that comprise CIGAL itself are quite stable, with new features added only occasionally as the need arises. Programs developed within the CIGAL programming environment, on the other hand, are all simple text files that are easy to write and modify, and thus make it simple to expand and customize CIGAL’s command repertoire for specific applications.
CIGAL is conceptually similar to MatLab (MathWorks) in design, in that it provides a high level programming environment that can be tailored for particular needs. The ShowPlay application program provides the customized user interface that makes CIGAL easy to use for fMRI.
Whereas the main CIGAL language uses a flexible command syntax with C-like structuring, CIGAL's real-time compiler and processor use a more limited command repertoire designed for very efficient run-time execution. This second programming language has its own command syntax and a versatile repertoire of 125 operations optimized for speed of execution and temporal accuracy. Real-time code sections are compiled into very efficient pseudo-machine code binary object modules immediately prior to execution, in which all memory references and program control references have been explicitly resolved. These object modules reside in system memory, and are then run using CIGAL’s real-time processor command to execute each operation at exactly its specified time. Real-time program code can be embedded within standard CIGAL programs.
For a more detailed description of CIGAL's main programming language see the Commands, Functions or
Syntax section of the on-line manual. For more detailed information on real-time programming see the
Realtime section of the reference manual. (Note: CIGAL's on-line manual is currently under revision to correct formatting errors and minor inaccuracies.)