Instant Graphics and Sound (IGS)
Instant Graphics and Sound, also known as IGS or IG, is a graphics language created by Larry Mears for the Atari ST computer to transmit vector graphics, sound effects, and animation from text-based bulletin board systems.
Introduced in 1988, IGS provided a way to encode commands for drawing graphics or playing sounds as ASCII text. The IGS specification also allowed for the creation of graphical user interfaces with menus and clickable buttons. These IGS menus could replace the ASCII or VT-52 text menus that were common on Atari ST BBSes. To view these graphics, a user needed to install the IGS desk accessory. Once installed, GEM-based terminal programs like FLASH could properly translate the text sequences.
History
In the 1980s, Atari ST BBSes were entirely text-based, but the ST's character set eschewed the semigraphical characters featured in ATASCII, PETSCII, or Code page 437. And while the ST's VT-52 terminal emulation allowed for cursor movement and changing the text's foreground and background colors, most BBSes ran in the ST's 80-column medium resolution, where the palette was limited to four colors.
Mears was disappointed with these limitations[1] [2], and he wanted to find a way to enable sysops to create more immersive bulletin board systems.
In 1986, he developed a simple communications program called GTerminal which supported a text protocol with commands to invoke the Atari ST's built-in VDI graphics routines for generating colored lines, shapes, and text with various sizes and effects.
When GTerm did not catch on, Mears cooked up a new command set and tried another approach. Rather than a full terminal, he created a desk accessory which could be invoked from within any GEM terminal program, such as the popular Flash. He dubbed this system "Instant Graphics!" and released it in 1988.
Over time, Mears added additional features to the IG text protocol, such as looping, sound effects and music, bit-blitting, color cycling, and resolution changes. With the addition of sound effects, "Instant Graphics" became "Instant Graphics and Sound," or "IGS."
A writer for Atari Interface magazine in 1990 praised IGS as "the future of the ST telecommunications," saying it enabled "dazzling visual effects."[3]
Mears released Instant Graphics! in 1988, four years before the better-remembered Remote Imaging Protocol was introduced for DOS — and the same year that Michael Cox released his SkyPix protocol for the Commodore Amiga.
The exact date IGS debuted in 1988 is unclear. The files in the v1.01 release of Instant Graphics have creation dates in November 1988. A readme file for "Victor," a utility for IG, contains an earlier date -- June 15, 1988 -- so v1.0 likely came before that.
Legacy
A small ecosystem grew around Instant Graphics and Sound, as people developed IGS-related software and utilities, ranging from door games with IGS effects, to utilities to convert Degas pictures to IG format, and more.
In 1989, Anthony Rau and Kevin Moody developed an IGS plugin for Interlink. The plugin spurred new interest in Instant Graphics among Atari BBSers, and renewed Mears' enthusiasm for the project. Later, all three agreed that Mears would take over development of the Interlink plugin and incorporate any new features that he added to the IGS protocol.
Rau and Moody also developed an editor utility to make it easier for users to draw IGS graphics and animations, releasing several versions between 1990 and 1993. Moody used the editor to help him develop a graphical Star Trek-themed BBS door game called "Star Battle" in 1990.
Dissatisfied with the existing IGS editors, Ron Rabaut made his own drawing tool, which he called "LineDraw."
Steve Turnbull, perhaps the most prolific and talented artist to use IGS, created a fully graphical, mouse-driven dice game called "Crapz!" in 1991.
As the ST declined in popularity, Mears began developing a similar system for the PC, which he called Blue Instant Graphics, or BIG. This later morphed into a driver, which he called Condor.
Mears stopped working on IGS for the Atari ST in 1992, releasing the final contemporary version, v2.17, in January. He released the source code several months later.
But 30 years later, Mears unexpectedly began releasing new versions of IGS, which include a new editor program. These versions add many new features, including robust support for the ST's 16-color low-resolution mode.
Commands
The tables below list the commands available in IGS v2.19, but without the many possible parameters for each.
In IGS, commands are preceded by the "attention" sequence (G#), followed by a space ( ) or a chain (>), and than a comma-delimited list of parameters.
For example, the command to draw a 100x100 square is:
G#B>0,0,100,100,0
Main IGS commands
Code | Name | Meaning |
---|---|---|
G#A | attributes | Sets attributes for fills and sets border option. |
G#b | bells and whistles | Plays sound effects using the ST's sound chip. |
G#B | Box | Draw a box/rectangle. Can be hollow or filled. |
G#C | Color set | Selects the pen number to use |
G#D | Draw to | Draws a connecting line from the last point or line segment draw. |
G#E | text Effects | Sets VDI text effects (attributes, size, rotation) |
G#F | Flood fill | Fills a bounded area by replacing the color found at a point on screen. |
G#f | Filled polygon | Draws a filled polygon using the current fill pattern, fill color, and border options. |
G#g | graphic scaling | Turn graphic scaling on or off. |
G#G | Grab screen | Grabs a rectangular section of the screen and blit it to memory or vice-versa. |
G#q | quick Pause | Pause for specified number of vsyncs (60ths of a second); or set internal double stepping. |
G#H | Hollow set | Disables filling of shapes, so only their outline appears. |
G#I | Initialize | Initializes color palette and most attributes to whatever they were before Instant Graphics was launched. |
G#J | elliptical arc | Draws an elliptical arc, which is part of an oval. |
G#k | cursor | Turns the text cursor on or off, or toggle backspace between destructive or nondestructive. |
G#K | arc | Draws an arc, which is part of a circle. |
G#L | Line | Draws one line between a pair of specified points. |
G#z | Polyline | Draws a segmented line between multiple specified points. |
G#M | drawing Mode | Change between replace, XOR, transparent, or reverse transparent. |
G#n | chip music | Use IG's sound effects as musical notes. There is no flow control with this command. |
G#N | Noise | For handling sound, MIDI, and the sound chip. |
G#O | Circle | Draws a circle. Can be hollow or filled. |
G#P | Plot polymarker | Plots a point or polymarker shape on the screen. |
G#Q | ellipse | Draws an ellipse/oval. Can be hollow or filled. |
G#R | set Resolution | Switch between low and medium resolution. |
G#s | screen clear | Clears the whole screen or portions of it. |
G#S | Set pen color | Change the R, G, and B values of the specified pen. |
G#t | time a pause | IG will send ^S for the specified number of seconds, then send ^Q. Pressing a key will abort the pause prematurely. |
G#T | Types of line/marker | Change the polymarker type (point, star, plus, etc); or the line type (solid, dashed, dotted, etc). |
G#U | rounded rectangle | Draws a rounded rectangle. Can be hollow or filled. |
G#V | pieslice | Draws a pieslice, which is part of a circle. |
G#W | Write text | Writes text on screen at any (x,y) coordinate. |
G#Y | elliptical pieslice | Draws an elliptical pieslice, which is part of an oval. |
G#Z | filled rectangle | Draw a filled rectangle. |
G#< | input command | Gets input from user's keyboard. |
G#? | Ask IG | Allows the host system to obtain data about the user's IG terminal, such as resolution, IG version, and mouse position. |
G#& | loop a command | Loops an IGS command a specified number of times, with stepping and other special options. |
Modified VT-52 commands
Code | Name | Meaning |
---|---|---|
G#c | color | Sets text and background color |
G#d | delete line | Deletes specified number of text lines; the bottom line on the screen is scrolled upward. |
G#i | line insert | Inserts lines at cursor position or top of screen. |
G#l | line clear | Clears text lines. |
G#m | cursor motion | Homes or moves cursor one line at a time, or one column at a time, from current position. |
G#p | position | Puts cursor at a specified column and line. |
G#r | remember | Remembers or recalls cursor position. |
G#v | inverse video | Turn inverse video on or off. |
G#w | line wrap | Turns line wrap on or off. |
Extended Commands
Code | Name | Meaning |
---|---|---|
G#X0 | spray paint | Plots polymarkers at random in a rectangular area with specified concentration. |
G#X1 | set color register | Sets a color register with Xbios 7. Use to set a specific register. The S command differs in that it sets a PEN's register. |
G#X2 | set random function range | Sets the range of the numbers returned when 'r' or 'R' is used in an IG command in place of a constant value parameter. |
G#X3 | right mouse button macro | Sets a string of characters to be transmitted when the right mouse button is pressed. |
G#X4 | define and load zone data | Defines a rectangular area as a zone and associates a string of characters with it. Allows point-and-click operation of remote systems. |
G#X5 | flow control shutdown | Disables flow control. |
G#X6 | left mouse button cr/lf | Toggle using the left mouse button as a carriage return and/or linefeed. |
G#X7 | load fill pattern | Loads a 16x16 bit pattern into one of the 8 pattern slots. |
G#X8 | rotate color registers | Rotates color registers left or right the specified number of times. |
G#X9 | buffer | Loads or Executes the IG MIDI buffer with any IG Commands |
G#X10 | Drawto begin | Sets the begin point for the [D]rawto command. Similar to the [L] and [P] commands. |
See also
Downloads
Precursors
- GTerminal v7.1 (1986)
Original releases
- IGS v1.01 (1988-11)
- IGS v2.10 (1989-10)
- IGS v2.11 (1989-10)
- IGS v2.12 (1989-11)
- IGS v2.14 (1990-05)
- IGS v2.15 (1990-09)
- IGS v2.16 (1991-10)
- IGS v2.17 (1992-01)
- IGS v2.17 source code
New releases
- IGS v2.18 and IGDEV 1.1 (2022-12)
- IGS v2.19 and IGDEV 1.2 (2023-06)
- IGS v2.20 and IGDEV 1.3 (2024-06)
Editors
- IGS Editor v1.6 (1990-04)
- IGS Editor v2.5 (1993-01)
- LineDraw 2 (after IGS Editor v2.5)
- IGDEV 1.3N and IGX viewer (2024-07)
References
- ↑
Larry Mears (4 May 1990). "Instant Graphics v2.14 documentation".
If you are tired of the bland VT52 colors that most ST BBS' offer, then you will be pleasantly surprised by the super fast graphics and sound this NEW terminal emulation unlocks!
- ↑
Stewart, David (March 1990). "ST World On-line". ST World. Gollner Publishing Ltd.
Because the graphics are not transmitted as a block-map or bit-map, IGS is impressively fast ... The possibilities for this system are quite broad.
- ↑
Bailey, Jon (October 1990). "Instant Graphics and Sound: An OnLine Odyssey". Atari Interface. Unicorn Publications.
I have seen the future of ST telecommunications and this is it. The new Instant Graphics and Sound (IGS) program, from shareware author Larry Mears, not only provides dazzling visual effects, but also beeps, bells, hoots, whistles and a varied assortment of other goodies!