Make your own free website on

Leonardo is an integrated environment for developing and animating C programs.

It is not intended to be a professional IDE, but it might be useful for visually debugging C programs and for creating algorithm animations in a declarative style.

Leonardo's executable file includes:

* a text editor with syntax coloring
* a compiler for the ANSI C language
* a compiler for the ALPHA language, used for animating C programs
* a reversible virtual CPU
* the FIRST reversible implementation of the ANSI C library
* a very simple operating system for process, I/O and memory management
* an integrated logic-based visualization system
* a basic graph editor

Here are Leonardo's main features:

* It allows you to edit, compile and execute arbitrary C programs on the virtual CPU.
* No size limits are imposed to C programs.
* It is a multiprogrammed time-sharing environment.
* Programs can be executed both forward and backward: it is possible to reverse the execution of a program at any time by means of a control tool window:

A reduced control tool is available, too:

Note the more space you have on your working secondary memory, the more number of program instructions you can reverse.

* Programs can be animated by embedding in the C source special declarations written in a simple logic-based programming language called Alpha.

For example, if you want a window to appear onto the screen you have simply to declare it by means of the "View" Alpha predicate. In the same way you may want a rectangle to appear in your window: just declare it with "Rectangle". Let's take a look at an example:

#include <stdio.h>

int i;


// Note declarations are always embedded as they were comments !

// We declare a window whose label is 1
View(Out V) Assign V=1;

// We declare a rectangle whose ID is 0, left-top corner in (10,10),
// height 15, length always equal to the content of program's
// variable i, and belonging to the view 1

Rectangle(Out ID,Out X,Out Y,Out L,Out H,V)
If V==1
Assign ID=0 X=10 Y=10 L=15 H=i;

// We declare that each rectangle having ID 0 in the view 1 must be cyan

RectangleColor(ID,Out C,V)
If ID==0 && V==1
Assign C=Cyan;


void main(){
for (i=10; i<=50 ; i+=10) printf("%d\n",i);

Once you have written, successfully compiled and launched this program, you will spot a rectangle in a window on the screen automatically growing as the i variable gets incremented in the for loop!
The next picture shows this behavior:

During the execution of a program the visualization system follows the computation state evolution and forces the image depicted on the screen to automatically reflect any significant change of program's variables. This is a powerful high level debugging facility and is the way programs are animated in Leonardo.

Note Alpha allows you to be more concise, and the declarations above could have been written in the following equivalent form:

View(Out 1);
Rectangle(Out 0,Out 10,Out 10,Out 15,Out H,1) Assign H=i;
RectangleColor(0,Out Cyan,1);

* Leonardo comes with many built-in animations: the "Programs" menu offers to you a repository of examples ranging from classical algorithms to games such as Tetris and Checkers and some demos showing Leonardo's graphic capabilities. If you don't have enough free space on your HD, you might want to disable the bidirectional execution from the "Edit" menu at program's startup or from the project settings at compile time. In this way no temporary memory will be allocated on your disk and you will not be able to reverse the execution.

* IMPORTANT NOTE: Leonardo is NOT able to generate native PowerPC/68K code, so you cannot use it for creating Macintosh stand-alone applications. Instead, Leonardo allows you to run programs on the Virtual CPU that supports fully-reversible execution and helps you in finding subtle programming errors (e.g. memory leaks, invalid format string passed to a printf family function, use of invalid file pointers etc.) that other environments fail to highlight. Moreover, it supports powerful logic-based visualization. If you want to create fast Macintosh stand-alone applications you should use a full-featured programming environment such as Metrowerks CodeWarrior, MPW or Vip-C (see for details.)

Software and hardware requirements:

Leonardo requires a Macintosh with PowerPC processor, at least 3 MB of free RAM, System 7.5 or higher and at least 6 MB of free space on your HD.

Distribution & licensing:

* The Leonardo 3.4.1 package is free. It can be freely distributed in electronic form on computer networks, on magnetic media or on CD-ROM, provided this "Read Me" file is included.

* We, Camil Demetrescu and Irene Finocchi, retain however all rights on original concepts, solutions and ideas implemented in Leonardo 3.4.1.


* This software is provided "AS IS" and without warranty of any kind, neither express nor implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. Under no circumstances including negligence, shall we, Camil Demetrescu and Irene Finocchi, be liable for any incidental, special or consequential damages that result from the use or inability to use the software, even if advised of the possibility of such damages.

* There are no advanced window management facilities, so it's easier to work with one process at a time.

* Leonardo appears to be quite stable, but will run better on fast CPUs.


* The Leonardo Internet site, including an on-line user manual (currently under construction) is available at the URL:

* The file C Language Notes in the Docs folder contains information about the current Leonardo's implementation of the C language.

* The file Compiling C Programs in the Docs folder contains useful information for re-compiling existing C programs in Leonardo.

* The file Leonardo 3.4.1 - What's new? in the Docs folder contains a list of all things that are new in Leonardo 3.4.1.

* This package comes with no other documentation, so please contact us for any question or problem with Leonardo at:


* Leonardo Da Vinci
* Pierluigi Crescenzi and Rossella Petreschi, for their valuable support
* Jon Kleiser, for his interesting suggestions, for his great software contributions and for promoting Leonardo
* Adolfo Piperno and Andrea Sterbini, for their interesting suggestions
* Fabio Lecca, for his valuable Macintosh expertise
* Marco De Simone and Marco Temperini, for their clever testing activity
* Marco Piovanelli, for his powerful text editing engine [WASTE text engine © 1993-1996 Marco Piovanelli]
* Dan Crevier and Timothy Paustian, for their excellent C/C++ WASTE-related software contributions
* David Hirsch, for his useful Add Files utility class
* All at Metrowerks for their wonderful CodeWarrior programming environment we used to develop Leonardo

Rome, July 28, 1999
Camil Demetrescu, Irene Finocchi

Original file name: Leonardo IDE 3.4.1 Read Me - converted on Saturday, 30 October 1999, 22:00

This page was created using TextToHTML. TextToHTML is a free software for Macintosh and is (c) 1995,1996 by Kris Coppieters