GRASS (GRAphics Symbiosis System)

January 1st, 1973 - January 1st, 1974

Categories: Animation, Applications

Larry Cuba and the famous GRASS animation sequence from Star Wars
Larry Cuba and the famous GRASS animation sequence from Star Wars


GRASS (GRAphics Symbiosis System) was a programming language created to script vector graphics visual animations in 2D. The programing language was originally developed by Tom DeFanti for his 1974 Ohio State University Ph.D. thesis.

GRASS was similar to the BASIC programming language in syntax, but added numerous instructions for specifying 2D object animation and image enhancement. GRASS was not interactive, but was accessible to users who had little or no technical background. With GRASS, users could write script for scaling, translation, rotation and color changes of 2D objects in real-time. Its image manipulation capabilities made it of interest to artists who were working with video and the new medium of computer graphics.

GRASS was made famous internationally by Larry Cuba, who used it to create the “Attacking the Death Star will not be easy” animation in the original 1977 Star Wars film.

The GRASS system was initially purchased by the Chemistry Department and installed in the Circle Graphics Habitat at the University of Illinois at Chicago for use as a production and education tool. It was also made available to other scientists, educators and artists. The system incorporated a Vector General CRT, a PDP 11 minicomputer, a Sandin Image Processor and cameras and recorders.

The Circle Graphics Habitat was a working group that became what is now the current EVL lab.

The GRASS language was further developed into the GRASS3 language that was designed to run on the Z Box. The language then became known a Zgrass.

The Z-Box was a raster graphics machine, unlike the original GRASS systems, so while most of the GRASS3 style was maintained in Zgrass, it added a number of commands dedicated to raster images. This included an extensive set of bit block transfer commands in order to simulate sprites, something the hardware didn’t include.

Zgrass was based on a standard set of BASIC commands and used most of its syntax. Where Zgrass differed from BASIC was that all commands were in fact functions and returned values, similar to the C programming language. Programs in Zgrass were referred to as macros, and stored as strings and Zgrass allowed any string to become a program. With programs constructed from randomly selected modules, Zgrass needed to have better control over its variables than BASIC. In BASIC all variables are “global” and the use of the same common variable could set values that would lead to problems that would be difficult to debug. Under Zgrass two modules could frequently use similar variables as a loop counter and cause problems. To address this issue, Zgrass allowed the use of lowercase letters for variables, making the variable “local” only to that macro.

The last version of GRASS was RT / 1, a port of GRASS to other platforms that seperated the language from the display model and allowed it to be ported to other platforms. Versions existed for DOS, Windows, SGI platform using OpenGL, HP-UX, AIX, Macintosh and Amiga.

Research for and Development of the GRASS system was supported by the National Science Foundation, the Carnegie Corporation, Sloan Foundation, Graham Foundation, National Endowment for the Arts, Illinois Arts Council and Victor General Corporation.