GRASS (programming language)

GRASS was similar to BASIC in syntax, but added numerous instructions for specifying 2D object animation, including scaling, translation and rotation over time.

GRASS included a number of vector-drawing commands, and could organize collections of them into a hierarchy, applying the various animation effects to whole "trees" of the image at once (stored in arrays).

There he joined up with Dan Sandin and together they formed the Circle Graphics Habitat (today known as the Electronic Visualization Laboratory, or EVL).

The IP was an analog computer which took two video inputs, mixed them, colored the results, and then re-created TV output.

In 1977 another member of the Habitat, Nola Donato, re-designed many of GRASS's control structures into more general forms, resulting in the considerably cleaner GRASS3.

[1] Larry Cuba's Star Wars work is based on semi-automated filming of a GRASS system running on a Vector General 3D terminal.

In 1977, DeFanti was introduced to Jeff Frederiksen, a chip designer working at Dave Nutting Associates.

Nutting had been contracted by Midway, the videogame division of Bally, to create a standardized graphics driver chip.

Midway was quite interested in seeing the GRASS language running on their system, and contracted DeFanti to port it to the platform.

Versions existed for MS-DOS, Microsoft Windows, SGI platform using OpenGL, HP-UX, AIX, Macintosh and Amiga.

Where Zgrass differed from BASIC was that all commands were in fact functions and returned values, similar to the C programming language.

For instance, MYBOX="BOX 0,0,100,100,2" defines a string (no need for a $ on the variable as in Microsoft BASICs) containing a snippet of Zgrass code.

This feature can be used in place of the more traditional GOSUB command from BASIC, but has the added advantage of having a well-defined name as opposed to an opaque line number.

Most BASIC interpreters of the era converted the input text into a tokenized version in which each of the commands was replaced by a single number (typically one byte long).

Zgrass also included nameless branches, using the SKIP instruction, which would move forward or back a given number of lines.

In keeping with its original purpose as a graphics language, Zgrass included numerous commands for simple drawing.

Zgrass's coordinate system had one point for each pixel in the high-resolution mode of Nutting's graphics chip, giving a 320×202 grid.

This included the ability to "capture" parts of the display into an array as a bitmap, which could then be manipulated as any other graphic item.

Zgrass included a TIMEOUT function that would call macros on a timed basis, making the implementation of timers very easy.