updated: 1-26-92

                 Instant Graphics! Online Interpreter
                   Copyright 1988-92 by Larry Mears
                         All rights reserved.


                 Version 2.17 by Larry Mears, Shareware
                Now with online point and click commands,
                 and greater control over sound effects!


                                 INTRO
   Instant Graphics! Desk Accessory graphics terminal or
Instant Graphics! Emulator for Interlink bring a whole
new concept in online graphics and sound!  Now see TRUE online
graphics and hear sound and MIDI music over the modem!  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!

                              INSTALLATION
   Place IG.ACC in root directory of your boot drive A: or C: and
select it from the menu bar to use, you have to stay in the accessory
to see the graphics and hear the sound effects. The desk accessory has some
features not found in the IG.EMU both have their own virtues use
which best serves your needs.  I use both at the same time, you need a
1mb ST or better to do that.  If you only have 512K and are using the ACC
with FLASH, drop all extra AUTO folder programs and ACCs.  Boot up and
run FLASH  FIRST, do not select the ACC and then run FLASH.  If you do
FLASH will think there isn't enough RAM.  At least this is how it is on my
1040ST running a 512K ramdisk to simulate a 520ST with 512K.

   The IG.EMU loads into INTERLINK just like your ANSI or ATASCII Emulator
does.  Just double click on the ??? for your "Style" of
communications and away you go!  If you do this with the RECORD
feature on, then it can be done automatically for you when you
boot up Interlink.  If using a 512K ST with Interlink remove extra AUTO
folder programs, all desk ACCs and choose STARTUP parameters from Interlinks
dropdown menu, set the buffer to 28K and the RS232 to 8K and save then rerun
Interlink from the desktop.  This should free up enough RAM to load
version 2.17  If it still bombs do the same thing and drop the buffer
by 2K each time till it'll load in properly.  Setting it to 28K should work
WITHOUT ANY EXTRA transfer ".TXF" protocals loaded in should do it but I may
be wrong, I just tried to simulate the 512K RAM condition.  There are
many good ramboards out there on the market and RAM is fairly cheap now
go to a 1 meg if you can.

                          SOME BACK GROUND
        IG does VDI graphics by way of a attention command sequence,
simular to a Hayes modem, and interprets one letter commands and values up
to 9999.  It also does  VT-52  graphics in their standard form or
with special attention commands, thus allowing VT-52 graphics by choice,
if the standard escape sequences aren't used.  So what's so great about VDI?
Well it means lines, circles, ovals, rectangles, fill patterns, system fonts,
you can have BIG COLORED text any where on the screen.  IG with a little help
from the users out there could open a new door for telecommunications.
This terminal would allow better game programs to be written for FOREM's doors.
Another use is bar and pie charts.  A good idea would be to have a online
comic strip.  Ascii publications such as ST-REPORT could embed graphics
commands into their text for illustration purposes. There are lot's of
possibilities and if I come up with anymore good ideas for commands
I'll try incorporate them into the next version.

                                 SYNTAX
        IG is case sensitive.  G# gets it's attention g# does not.
commands can be chained with the > character but they can not exceed one line,
unless you use the _ option (IG 2.13+) as the first digit in a number passed.
In other words IG does not check for a linefeed or CR all the time, it will
try to interpret it as a command, chain character, value, or value separator.
Line noise will of course blow it's performance to shreds.  Any non numerical
character can be used as a value separator, I suggest a comma or space. I like
to use a : to separate commands when chaining but you can use any non numerical
character.  If you don't use the chain character you have to have some character
there anyway so why not a space, looks good and saves confusion.  When using
the W command the string is ended with the @ character and if chaining the next
command comes directly after the @ no separator at all.  OK, I guess you need
to see some examples to study over.

Chain example:

G#I>0:k>0:s>4:g>2:
G#A>3,8,1:B>0,0,639,149,1:A>1,1,1:C>2,2:B>30,15,610,134,1:
G#E>4,18,0:C>3,3:W>170,35,Instant Graphics!@C>2,1:
G#V>319,80,60,0,119:A>3,3,1:V>319,80,60,119,239:A>3,1,1:
G#V>319,80,60,239,360:E>0,9,0:T>2,1,2:T>2,1,52:
G#L>90,80,240,80:C>3,1:W>140,77,REST@
G#T>2,1,51:L>390,95,540,95:W>445,92,WORK@
G#L>390,60,540,60:W>445,57,PLAY@
G#p>24,19:We all wish it were that way!
G#k>1:t>2:t>5:I>0:s>0:g>0:

Notice the C directly after the @ in line number 3 and the colon at the end of
the last line to keep the carriage return from being eaten as a value separator.
If you want the carriage return and linefeed to not be present in your
display use the ">" chain indicator and put a : after the last digit in the
line. IG213+ allows splitting of lines with the _ character, the _ has to be
used in place of the first digit in a value passed, see below.

example below, for Medium Resolution:
( This example could be shrunk in size with the & command's READ DATA option
  it could elimnate all the L>'s but one. The line end points would ALL be
  read from the modem THEN plotted. )


G#I>0:k>0:s>4:g>2:
G#L>206,35,225,44:L>225,44,236,112:L>236,112,226,_
169:L>226,169,206,159:L>206,159,196,92:L>196,92,206,_
35:L>206,35,226,169:L>225,44,206,159:L>236,112,196,92:
G#L>411,30,433,39:L>433,39,443,106:L>443,106,432,163:
G#L>432,163,411,152:L>411,152,400,86:L>400,86,411,30:
G#L>411,30,432,163:L>433,39,411,152:L>443,106,400,86:
G#L>329,83,334,75:L>334,75,345,80:L>345,80,350,93:
G#L>350,93,350,114:L>350,114,345,121:L>345,121,334,117:
G#L>334,117,329,104:L>329,104,329,83:L>288,84,293,77:
G#L>293,77,304,81:L>304,81,309,94:L>309,94,309,115:
G#L>309,115,304,123:L>304,123,293,118:L>293,118,288,105:
G#L>288,105,288,84:L>329,83,288,84:L>288,84,273,87:
G#L>273,87,283,92:L>283,92,309,94:L>309,94,350,93:
G#L>350,93,365,90:L>365,90,355,85:L>355,85,329,83:
G#L>329,104,288,105:L>288,105,273,108:L>273,108,283,113:
G#L>283,113,309,115:L>309,115,350,114:L>350,114,365,111:
G#L>365,111,355,106:L>355,106,329,104:L>345,80,304,81:
G#L>304,81,283,92:L>283,92,283,113:L>283,113,304,123:
G#L>304,123,345,121:L>345,121,365,111:L>365,111,365,90:
G#L>365,90,345,80:L>334,75,293,77:L>293,77,273,87:
G#L>273,87,273,108:L>273,108,293,118:L>293,118,334,117:
G#L>334,117,355,106:L>355,106,355,85:L>355,85,334,75:
G#L>278,90,283,103:L>283,103,278,111:L>278,111,273,98:
G#L>273,98,278,90:L>257,90,262,103:L>262,103,257,111:
G#L>257,111,252,98:L>252,98,257,90:L>278,90,257,90:
G#L>283,103,262,103:L>278,111,257,111:L>273,98,252,98:
G#L>360,87,365,100:L>365,100,360,108:L>360,108,355,95:
G#L>355,95,360,87:L>381,87,386,100:L>386,100,381,107:
G#L>381,107,375,95:L>375,95,381,87:L>360,87,381,87:
G#L>365,100,386,100:L>360,108,381,107:L>355,95,375,95:
G#L>257,94,261,102:L>261,102,257,108:L>257,108,254,99:
G#L>254,99,257,94:L>236,95,240,103:L>240,103,237,108:
G#L>237,108,233,100:L>233,100,236,95:L>257,94,236,95:
G#L>261,102,240,103:L>257,108,237,108:L>254,99,233,100:
G#L>381,90,384,99:L>384,99,381,104:L>381,104,377,96:
G#L>377,96,381,90:L>401,90,405,98:L>405,98,401,103:
G#L>401,103,398,95:L>398,95,401,90:L>381,90,401,90:
G#L>384,99,405,98:L>381,104,401,103:L>377,96,398,95:
G#L>236,98,238,102:L>238,102,237,105:L>237,105,235,101:
G#L>235,101,236,98:L>216,99,217,103:L>217,103,216,105:
G#L>216,105,214,101:L>214,101,216,99:L>236,98,216,99:
G#L>238,102,217,103:L>237,105,216,105:L>235,101,214,101:
G#L>401,93,403,97:L>403,97,401,100:L>401,100,399,96:
G#L>399,96,401,93:L>422,93,423,97:L>423,97,422,99:
G#L>422,99,420,95:L>420,95,422,93:L>401,93,422,93:
G#L>403,97,423,97:L>401,100,422,99:L>399,96,420,95:
G#t>5:I>0:s>4:k>1:g>0:


You can execute commands on fly in the same line by having several G#'s.

G#v 1:Turn inverse video on G#v 0:and back off.

Notice the space between the command and the number, meaning don't chain and
the colon after the numbers.  The colon will be eaten by the routine that gets
numbers from the modem. It has to know when to quit and any non numerical
character gets swallowed. A colon after the commands parameters are passed
looks good anyway, right?  Shades of BASIC huh?  Also the commands are
case sensitive.  A  w  is a totally different command than  W ,  so be careful.


  There is a pause command called  t   lets you
pause a screen, it sends a ^S times it and then sends a ^Q.  Good for
messages with multiple screens or long graphic welcome bulletins.



    Report bugs and comments to:

        ( IG online graphics interpreter author, write me a letter or
          send EMAIL to Larry Mears at FNET node 74 )  Don't be to hard
          on me I have many many many months into this project and
          made very little from it, actually it is a loss money wise.
          Don't be to picky but if you do find a bug capture the IG script
          that caused it with the graphics OFF then send it to me on disk or
          upload it to BIG CITY 205-880-9896 WWIVNET...email 1@2509.
          You could upload it into a EMAIL message if you like.
          Be sure to include a explaination of the bug
          as it may not be apparent to me, it may be a syntax error or
          something like that.  Oh, need to know it is was the EMU or ACC
          and how much memory you have, what AUTO folder programs you run
          and other ACCs.

                    Larry Mears
                11027 Crestfield Dr.
                Huntsville, Alabama
                          35803 USA



I'll try to fix bugs if I can but, I can not guarantee a fix and I
will not be held responsible for any problems caused by use of this software.

Just use Flash's or InterLink's buffer(unfiltered mode) to edit the graphic
files.  The Moody/Rau IGS editor is sort of like a paint program and worth
having, a guy with a understanding of IG and a text editor can out do the
IGS editor it is still great for doing CURVES or doing simple BBS menus.
A IG programmer can always go in there and tweak the IG script with a text
editor to soup up performance. Look for IG_ED00.ARC.  It produces
IG script compatible with IG 2.12 and above.  New IG versions are written so
that old IG script files are compatible.  The IGS editor is a SEPERATE
Shareware project from the IG EMULATOR and ACC, supporting the editor does
not support the IG terminal and vice versa.

Note that a ^C executed when IG is writing it's prompts will crash or exit
the program, this could be fixed at the cost of several K of memory by using
printf instead of Cconws, but memory is tight for half meg users.
============================================================================

                      KEYBOARD COMMANDS for IG.ACC
                      ----------------------------

                             FUNCTION KEYS

F10 cut graphics off ....Allows online entry of graphic commands.
F9  cut graphics on  ....Executes any graphics commands from the modem.

     Important!  Default mode is graphics on.
     If typing in a graphics message on a BBS push F10 first.
     To view it push F9 and tell the BBS to list the message.
     Do not use ^S and ^Q while graphics commands are executing!

F8  execute from file....Read a text file execute imbedded graphics commands.
                          This allows off line composing.

F7  read file only   ....Read a text file ignore graphics commands.

    Note:  When reading or executing text files it's ok to use ^S ^Q and ^C .

F6  duplex toggle..... use half duplex on GENIE.

F5  locks out the Resolution switch command.

F4  MIDI playback on/off toggle.   ( Default MIDI playback on! )

                               OTHER KEYS

INSERT set baud      ....Set baud 300 thru 9600 baud.

                        Note: No default at startup,  this is so when
                        using FLASH and the ACC the baud remains the same
                        as the host program. None of the other RS323 parameters
                        are changed by this option only baud and I've not tested
                        IG past 2400 baud.

+ Plus Sign          ....MIDI out SYNC,  If music is garbled hit it.

CLR HOME restore     ....Clear screen, restore resolution and colors.

HELP screen          ....Short list of keyboard commands.

UNDO exit            ....Exits Instant Graphics!  Sets screen to 24 text lines,
                         good to go back to "Flash/Interlink".

LEFT SHIFT+UNDO      ....Exits Instant Graphics!  Sets screen to 25 text lines,
                         use when exiting to the Desk Top.


################################################################################
        !!!! PLEASE READ NEW CHANGES FOR IG214+.EMU FOR INTERLINK !!!!
             See the entries under UNDO and the INSERT keys also
             half duplex must now be set with control+shift+p .
             This was necessary in order to steal the MOUSE from
             Interlink so POINT and CLICK menus could be done
             online.  It also keeps that annoying STATUS line from
             popping up in your graphics when you've already got rid
             of it!  It gives IG the FUNCTION keys too, so I might
             use them for special features later on.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

                         KEYBOARD COMMANDS for IG.EMU
                         ----------------------------

UNDO                 ....Give MOUSE and FUNCTION keys to Interlink
                         till another character is received via the serial
                         port  while  graphics  are  ON.
                         Tap once when BBS is waiting for input,
                         such as at logon when the BBS is
                         asking for name/password, then hit your
                         Function key to shoot out your name/password to
                         the BBS.  Use the same way for file transfers,
                         tap UNDO then hit F2.  The Interlink status
                         line can be updated also this way. Tap UNDO
                         while BBS is waiting for input from you and
                         your Interlink status line will update until
                         another  character is received  via the serial
                         port. Same goes for using the Interlink Mouse buttons
                         to jump to Interlink's GEM menus,  dialer and the
                         double button file transfer click.

CLR HOME restore     ....Clear screen, restore resolution and colors.

INSERT               ....Cuts graphics ON or OFF, sound indicator
                         doodle doodle doo = ON   dunt = off
                         While graphics are ON the Interlink status
                         line will not be updated and the MOUSE
                         belongs to IG as well as all other keys
                         function keys included.  A control+shift+INSERT
                         will cut graphics off but doesn't give Interlink
                         the mouse or functions keys and status line,
                         a almost useless feature, a quirk really.

                         Important!  Default mode is graphics on.
                         If typing in a graphics message on a BBS push
                         INSERT first.



+ Plus Sign          ....MIDI out SYNC,  If music is garbled hit it.

control+shift+m      MIDI playback on/off toggle.  Default MIDI playback on!

control+shift+r      ....locks out the Resolution switch command.

control+shift+p      .....duplex toggle,  use half duplex on GENIE.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


                               INSTANT GRAPHICS!
                               -----------------

A attributes for fills  G#A 1,1,0:
----------------------
                        A  =  command identifier
                        Sets attributes for fills and sets
                        border option.

                        1st parameter selects pattern type:
                        0=hollow, 1=solid, 2=pattern, 3=hatch

                        2nd parameter selects pattern index number it
                        ranges 1-24 for type pattern and 1-12 for type hatch.
                        These patterns are illustrated in the ST BASIC manual,
                        page 95 in mine.

                        3rd parameter specifies if a border is to be drawn
                        around the filled area.  1=yes, 0=no


b bells and whistles    G#b>0:
--------------------
                        b = command identifer.
                        Allows special sound effects to be played
                        using the ST's Sound Chip. 

number Description
--------------------
0      Alien Invasion
1      Red Alert
2      Gunshot
3      Laser 1
4      Jackhammer
5      Teleport
6      Explosion
7      Laser 2
8      Longbell
9      Surprise
10     Radio Broadcast
11     Bounce Ball
12     Eerie Sound
13     Harley Motorcycle
14     Helicopter
15     Steam Locomotive
16     Wave
17     Robot Walk
18     Passing Plane
19     Landing



~~~~~~~~~~~~~~~~~~~~~~~
Sound Effects Utilities
-----------------------

ID  Description
-- --------------------------
20  Alters Sound Effects 0-19

                                Example:  alters sound effect
                                          number 7   " G#b 7: "
                                          G#b>20,1,7,12,1,30,0:

           breakdown of parameters:

           b 20,play_flag,snd_num,element_num,negative_flag,thousands,hundreds


                                   "The sounds in IG use GIST.
                                    GIST is the GI Sound Tool by:

                                    Synthetic Software
                                    880 Wisconsin Street
                                    San Francisco, CA 94107
                                    415-285-8832

                                    ANTIC was selling it.  If they aren't
                                    anymore contact Synthetic Software.
                                    Buy GIST and you can create all sorts
                                    of neat sounds that can be converted into
                                    IG loadable format.  Without GIST it's a
                                    shot in the dark. GIST let's you edit
                                    sounds with a graphics interface it's
                                    a great piece of software, buy it!"

                        Command  Identifier = b 20
                                    Let's you alter any sound effect.  The
                                    sound effects each have 56 elements that
                                    corespond exactly with the elements
                                    that GIST saves out in the '.C' file as
                                    a   " int array ".  You take the values
                                    in the GIST '.C' sound file and put them
                                    into IG one at a time with the b 20 command
                                    PARAMETER NUMBER 3.  If you don't have GIST
                                    you can play around with the  & LOOP and
                                    this command to come up with variations.

                        1st parameter = play_flag.  If this is anything other
                                        than 0, then the sound will be played
                                        with the new setting, otherwise it
                                        alters it but does not play.  Setting
                                        this flag to 1 is useful for using the
                                        & LOOP and running through a series of
                                        changes to hear what the effect
                                        your alteration has on the sound.

                        2nd parameter = snd_num.  This is the sound effect
                                        you wish to alter.  It can be any
                                        effect 0 to 19.

                        3rd parameter = element_num.  This tells which one of
                                        56 elements to alter in the sound
                                        effect's array  they are 0-55.
                                        Element 0 is duration,
                                        element 1 is frequency.

                        4th parameter = negative_flag.  If this is a 0 then
                                        the value changed in the effect will
                                        be positive, a 1 here or any number
                                        other than 0 will set the value in
                                        the sound effect array as a
                                        negative number.

                        5th parameter = thousands. This is a number from
                                        0 to 32 that is multiplied by 1000
                                        by IG internally  and added to the
                                        next parameter to make up the actual
                                        value that is stored into the element
                                        number specified by parameter 3.

                        6th parameter = hundreds.  The hundreds, tens, and ones
                                        of the value to be placed into the
                                        sound effect element specified by
                                        parameter 3.  You can exceed this and
                                        use 4 digits here, it just adds the
                                        5th and 6th parameters together to get
                                        a range of values from -32767 to
                                        +32767 that GIST requires.


                        PLEASE NOTE that sound effects 0-4 are looped by IG
                        internally 1000 times each for effect. It's like this
                        in basic FOR I=1 to 1000:SOUND_EFFECT:NEXT I   This
                        will give a different effect than you hear if you
                        are using the GIST sound editor so bear this in mind.
                        To transfer a whole new sound from GIST  ".C" format
                        this little IG command will have to be called 56 times.
                        Look in this ARC to see "IF" I wrote a GFA BASIC v2
                        GIST2IG.BAS converter. You could use a effect that was
                        close to the one you needed and only change a few
                        elements.  The & LOOP and this command should be able
                        to produce some amazing Sounds with some effort.


21  STOP ALL SOUND AT ONCE                   example:
--------------------------                   G#b>21:

                             command identifer = b 21:

                             Shuts off all sound effects that are being played.


22 RESTORE SOUND EFFECT                      example:
-----------------------                      G#b>22,19:

                             Command identifier = b 22

                                      Restores a sound effect to IG's default.
                                      Use to insure that a sound effect is what
                                      it should be or to restore after a
                                      alteration as a courtesy to your SYSOP
                                      and other IG users.  You can use the
                                      & LOOP to restore all the effects real
                                      fast.

                              1st parameter = sound effect number to restore.
                                              range is 0 to 19.



B  box                  G#B 0,0,100,100,0
------
                        B = command identifier
                        General purpose command for drawing
                        rectangles.  All attributes effect this
                        command.
                        1st parameter = upper left corner  X coordinate
                        2nd parameter = upper left corner  Y coordinate
                        3rd parameter = lower right corner X coordinate
                        4th parameter = lower right corner Y coordinate
                        5th parameter = rounded corners flag  0=no  1=yes


C color set             G#C 0,2:
-----------
                        C  =  command identifier
                        Selects the Pen number to perform the screen
                        operation with.

                        1st parameter selects screen operation pen to change.
                        0 = Polymarker color, used for the (P  plot command).
                        1 = line color
                        2 = fill color
                        3 = text color,  used with the ( W command ).

                        2nd parameter selects the Pen number 0 thru 15.


D line DRAWTO           G#D 149,99:
-------------
                        D = command identifier
                        draws a line from the last polymarker plot,
                        draw LINE or DRAWTO command.  You should use
                        the P or L command to first establish a point
                        for DRAWTO to begin at.
                        See also the entry for T and C commands.

                        1st parameter = X coordinate
                        2nd parameter = Y coordinate


E text EFFECTS          G#E 8,18,1:
--------------
                        E = command identifier
                        Sets VDI text effects for text put on the screen
                        with the  W  command.

                        1st parameter selects font effect they can be combined
                                0 = normal      1 = thickened (bold)
                                2 = ghosted     4 = skewed
                                8 = undelined   16 = outlined

                        2nd parameter sets text size in points 1/72 of a inch.
                        Values the default system font may be printed in:
                                        8  9  10  16  18  20

                        3rd parameter sets the text rotation.
                                0 = 0 degrees           1 = 90 degrees
                                2 = 180 degrees         3 = 270 degrees
                                4 = 360 degrees


F flood FILL            G#F 600,0:
------------
                        F = command identifier
                        Fills a area by replacing the color found
                        at specified X Y coordinates till it hits
                        another color or edge of screen.

                        1st parameter = X coordinate
                        2nd paraneter = Y coordinate



g  Graphic scaling      G#g 1:  or  G#g 2:  or  G#g 0:
------------------
                        g = command identifier
                            Turn graphic scaling on or off.
                            When on all X Y coordinates are plotted to
                            an imaginary screen 10,000 by 10,000.
                            0,0 is in the upper left corner, while the
                            lower right corner is 9999,9999 This means
                            graphics plotted with graphics scaling should
                            look approximately the same in all resolutions!
                            In practice though it's only really good for
                            general positioning.  The new Y coordinate *2
                            will save you time when converting graphics.  Make
                            your graphics for medium resolution and then
                            when you do the mono version  just add a
                            G#g 2: at the top of your script and a
                            G#g 0: at the end if you want to cut it back off.
                            this should fix the medium res graphics to run in
                            640x400 mono mode with only the adjustment of
                            the 'S'etcolors, 'C'olor, and maybe the 'c' command
                            Keep in mind that none of these 'g' options work
                            within a "& LOOP".


                            Parameter:
                             0 = off
                             1 = on
                             2 = Y coordinate *2 if in monchrome 640 x 400 mode
                                 will not change value if in low or medium
                                 resolution.




G  grab screen                  G#G 0,3,0,0,100,100,100,50:  screen to screen
--------------                  G#G 1,3,0,0,100,100:         screen to memory
                                G#G 2,3,200,50:              memory to screen
                                G#G 3,3,50,50,75,75,150,100: piece of memory to
                                                             screen

                         G = command identifier
                             Screen grab,  "Bit-Blit".
                             Grabs a rectangular portion of the screen
                             copies it to another portion of the screen
                             or to memory, or copies memory to screen,
                             depending on 1st parameter.  The whole screen
                             can be blitted to memory and back!

                             1st parameter sets type of blit to do:
                              0 = screen to screen
                              1 = screen to memory
                              2 = memory to screen
                              3 = piece of memory to screen


                        2nd parameter sets writing mode for the blit operation.
                         mode  logic...............Description
                          0    dest=0..............Clear destination block
                          1    dest=SAND D
                          2    dest=S AND (NOT D)
                          3    dest=S.............Replace mode
                          4    dest=(NOT S) AND D...Erase mode
                          5    dest=D...............Destination unchanged
                          6    dest=S XOR D.........XOR mode
                          7    dest=S OR D..........Transparent mode
                          8    dest=NOT (S OR D)
                          9    dest=NOT (S XOR D)
                          10   dest=NOT D
                          11   dest=S OR(NOT D)
                          12   dest=NOT S
                          13   dest=(NOT S) OR D....Reverse Transparent mode
                          14   dest=NOT (S AND D)
                          15   dest=1...............Fill destination block

                          The rest of the parameters depend on the
                          1st parameters setting:

                          IF 1st PARAMETER = 0   "screen to screen"
                              3rd = X source, upper left corner
                              4th = Y source, upper left corner
                              5th = X source, lower right corner
                              6th = Y source, lower right corner
                              7th = X destination, upper left corner
                              8th = Y destination, upper left corner

                          IF 1st PARAMETER = 1  "screen to memory"
                              3rd = X source, upper left corner
                              4th = Y source, upper left corner
                              5th = X source, lower right corner
                              6th = Y source, lower right corner

                          IF 1st PARAMETER = 2  "memory to screen"
                              3rd = X destination, upper left corner
                              4th = Y destination, upper left corner

                          IF 1st PARAMETER = 3   "piece of memory to screen"
                              3rd = X source, upper left corner
                              4th = Y source, upper left corner
                              5th = X source, lower right corner
                              6th = Y source, lower right corner
                              7th = X destination, upper left corner
                              8th = Y destination, upper left corner


H hollow set            G#H 0:
------------
                        H = command identifier
                        When on non solids are drawn, a circle will be
                        drawn instead of a disk.

                        Parameter  1=on  0=off



I  initialize           G#I 0:
-------------
                        I = command identifier
                        Initializes color pallet and most
                        attributes to what ever they were before
                        the Instant Graphics ACC was executed.
                        Issue this command at the start of each  graphic
                        sequence and you'll have a common starting point.

                        Parameter:
                            0 = Set resolution, pallet, and attributes
                            1 = Set resolution and pallet
                            2 = Set attributes
                            3 = Set Instant Graphics! default pallet


J  elliptical arc       G#J 0,199,400,600,0,270:
-----------------
                        J = command identifier
                        Draws a elliptical ARC, which is part of a oval.

                        1st parameter = X coordinate for the oval center
                        2nd parameter = Y coordinate for the oval center
                        3rd parameter = X radius of the oval
                        4th parameter = Y radius of the oval
                        5th parameter = begining angle to start drawing at
                        6th parameter = ending angle to to stop drawing at


k  cursor               G#k 0:
---------
                        k = command identifier
                        Turns text cursor on or off and
                        sets BACKSPACE as destructive or nondestructive.

                        Parameter:
                            0 = cursor off
                            1 = cursor on
                            2 = destructive backspace
                            3 = nondestructive backspace



K  arc                  G#K 300,99,75,90,180:
------
                        K = command identifier
                        Draws a ARC, which is part of a circle.

                        1st parameter = X coordinate for the circle center
                        2nd parameter = Y coordinate for the circle center
                        3rd parameter = radius of the circle
                        4th parameter = begining angle to start drawing at
                        5th parameter = ending angle to to stop drawing at


L draw LINE             G#L 0,0,300,150:
-----------
                        L = command identifier
                        Draws a line between specified points.
                        See also the entry for T and C commands.

                        1st parameter = begining X coordinate
                        2nd parameter = begining Y coordinate
                        3rd parameter = ending   X coordiante
                        4th parameter = ending   Y coordinate


M drawing MODE          G#M 1:
--------------
                        M = command identifier

                        Parameter sets drawing mode.
                        1 = replace     2 = transparent
                        3 = XOR         4 = reverse transparent


n chip music            G#n 13,1,16,60,200,2:
------------
                        n = command identifer
                        Treats IG's sound effects as musical notes.
                        There is no flow control with this command.

                        Note:
                        Long tunes should use this command within a
                        "& LOOP" or use the 'N' command. The values
                        listed below apply to the 'N' command except
                        'N' takes it's parameters as a ASCII string of
                        characters one BYTE per parameter a 255 value
                        is the max that can be passed to 'N'.
                        Values are passed as characters with the proper
                        ASCII value to 'N'. Sound effects for this command
                        may be altered with "b 20".


PARAMETERS for 'n' command
. . . . . . . . . . . . . .

                        1st parameter is the effect number to use
                        from 0-19.  These are the same effects as the
                        'b' command uses exception that n doesn't loop
                        the first 5 effects internally.

                        2nd parameter is the voice to use 0-2.

                        3rd parameter is the Volume 0-15.

                        4th parameter is pitch 0-255.  A 0 will play no
                        effect but allow TIMIMG and STOP type to be executed.

                        5th parameter is timing 0-9999.  This stops IG in it's
                        tracks for a specified time in 200ths of a second,
                        unless the user taps a key.

                        6th parameter is stop note type 0-4.
                            0=no effect, sound remains on.
                            1=move selected voice into release phase.
                            2=Stop select voice immediately.
                            3=move all voices into release phase.
                            4=Stop all voices immediately. ( same as "b 21" )


N noise command                 G#N>2:
---------------
                        N = command identifier
                        The N command is for handling sound.
                        Currently only MIDI, but other things
                        may be handle by N in the future,


                        1st parameter = N operation to perform.
                         If 1st parameter = 0, 1, 3 or 4  a 2nd parameter
                         is required, which is number of MIDI data bytes
                         to read into the MIDI buffer, MAX of 9999.


    Load only midi:      N 0,9998,datadelaydatadelaydatadelay....
        sound chip       N 3,9996,DataDataDataDataDelayData....

    Load and execute:    N 1,9998,datadelaydatadelaydatadelay....
        sound chip       N 4,9996,DataDataDataDataDelayData....

                         The 0 means load the MIDI buffer only,
                         then the number of bytes to load followed
                         by a comma, then the MIDI data in the form
                         data byte, delay byte, back to back with the
                         data byte always first.  The delay is in 200ths
                         of a second so a delay of about 1.25 seconds
                         between each data byte is the max. After
                         the MIDI buffer is loaded with a N 0 or 1 command
                         a N 2: (midi) or N 5: (sound chip) issued later will
                         replay the buffer without reloading, like
                         G#N 2:  If a user CONTROL C's or CONTROL X's
                         the MIDI data while it is being loaded the MIDI
                         buffer will be set to 0 and N 2: will play
                         nothing.  However it a user aborts while MIDI is
                         being played the MIDI buffer will remain intact.
                         If a user has the MIDI option off (F4 function key
                         on the ACC, control+shift+m for the EMU) MIDI data
                         will be still loaded but not executed. If line noise
                         creeps into the MIDI buffer when it's loaded it will
                         garble the sound, the user might be able to recover
                         by pressing the + key to try to get the MIDI flow
                         out to the ports in proper sync datadelaydatadelay,
                         line noise can get it in reverse order.

                               DATA FORMAT FOR SOUND CHIP
                         The data to the sound chip  routine is in
                         ASCII values ie " a capital A represents 65 ".
                         the format is:

                         Effect_numberVoiceVolumePitchTimingStop_effect
                             0-19      0-2  0-15 0-255 0-255 0-4

                         When a 0 is passed as a pitch value timing and
                         stop effects can be issued without executing
                         a note.  For more details see the "n" command.

                   *** Download MS2IG.ARC for a Music Studio to IG MIDI file
                       converter.
                   *** See "n" command also and look for N_UTIL1.LST in arc.


O   CIRCLE              G#O 300,100,75:
----------
                        O = command identifier
                        Draws a disc or circle depending if the
                        H command is active or not.

                        1st parameter = X coordinate of circle center
                        2nd parameter = Y coordinate of circle center
                        3rd parameter = radius of circle


P polymarker PLOT       G#P 149,99:
-----------------
                        P = command identifier
                        Plot a point or polymarker shape on the screen.
                        See also the entry for the  T and C  commands.

                        1st parameter = X coordinate
                        2nd parameter = Y coordinate


Q  ellipse              G#Q 300,100,200,60:
----------
                        Q = command identifier
                        Draws an ellipse, which is a OVAL.
                        See H and A commands also.
                        1st parameter = X coordinate of oval center
                        2nd parameter = Y coordinate of oval center
                        3rd parameter = X radius of oval
                        4th parameter = Y radius of oval


R set Resolution        G#R 1,0:
----------------
                        R = command identifier
                        Allows to switch between low and medium resolution.
                        Low resolution allows the use of 16 VDI colors!
                        Medium resolution only allows 4 colors.
                        If the resolution selected is the one the system is
                        currently in, IG ignores it. This is so you
                        can set the set the color palette and not do a
                        resolution switch.  Resolution switching might cause
                        havoc for some commercial terminals you may be using
                        IG with, although it shouldn't  with FLASH 1.60 and
                        Interlink.  With Interlink IG.EMU the CLR HOME key will
                        restore Medium resolution, with the ACC it's automatic.


                        1st Parameter selects resolution to switch to:
                        0 = low resolution      1 = medium resolution

                        2nd Parameter is the system palette flag:
                        0 = no change           1 = default system colors.
                                                2 = IG default color palette


s  screen clear         G#s 0:
---------------
                        s = command identifier
                        Clears whole screen or portions of it.

                        Parameter:
                            0 = Clear screen home cursor.
                            1 = Clear from home to cursor.
                            2 = Clear from cursor to bottom of screen.
                            3 = Clear WHOLE screen with VDI.
                            4 = Clear WHOLE screen with VDI and VT52
                                cursor will be set to home.
                            5 = Clear,Home,ReverseOff,Text Background to reg 0,
                                Text Color to register 3.  All done with VT52,
                                a VT52 quick reset of sorts.


S set PEN color         G#S 1,0,0,7:
--------------------
                        S = command identifier
                        1st parameter selects pen color to change 0 thru 15.
                        2nd parameter selects red   color level 0 thru 7.
                        3rd parameter selects green color level 0 thru 7.
                        4th parameter selects blue  color level 0 thru 7.


t  time a pause         G#t 2:
---------------
                        t = command identifier
                        Tells IG to send ^S, times it for X seconds
                        and then tells IG to send ^Q.  Any key
                        will abort the pause prematurly.
                        MAX time is 30 seconds if more of a pause is needed
                        chain a few together.  G#t>30:t 5:
                        I'm hoping this will eliminate the BBS from timing
                        out and logging a user off.

                        Parameter = number of seconds to pause, 30 max.


T  line, marker TYPES   G#T 2,1,4:
---------------------
                        T = command identifier

                        1st parameter selects lines or polymarkers to change.
                        1 = polymarkers  ( effects output of the P command )
                        2 = lines        ( effects D and L commands )

                        2nd parameter picks type of line or polymarker
                        depending value of 1st parameter.

                        for polymarkers:
                           1 = point            2 = plus sign
                           3 = star             4 = square
                           5 = diagonal cross   6 = diamond

                        for lines:
                           1 = solid            2 = long dash
                           3 = dotted line      4 = dash-dot
                           5 = dashed line      6 = dash-dot-dot


                        3rd parameter selects size and line end styles.

                        -size-
                        for polymarkers: 1 thru 8
                        for lines:       1 thru 41


                        -line end styles-
                         0  = both ends square

                         50 = arrows on both ends
                         51 = arrow on left,  squared on right
                         52 = arrow on right, squared on left
                         53 = arrow on left,  rounded on right
                         54 = arrow on right, rounded on left

                         60 = rounded on both ends
                         61 = rounded on left,  squared on right
                         62 = rounded on right, squared on left
                         63 = rounded on left,  arrow on right
                         64 = rounded on right, arrow on left


U rounded rectangles    G#U 100,0,300,150,1
--------------------
                        U = command identifier
                        Draws a rounded rectangle.

                        1st parameter = upper left corner  X coordinate
                        2nd parameter = upper left corner  Y coordinate
                        3rd parameter = lower right corner X coordinate
                        4th parameter = lower right corner Y coordinate
                        5th parameter = 0 selects filled rounded rectangle
                                          with no borders.
                                        1 selects rounded rectangle
                                          affected by all attributes and
                                          H command as well as line patterns
                                          set with the T command.


V  pieslice             G#V 50,50,100,180,270:
-----------
                        V = command identifier
                        Draws a pieslice, which is part of a circle.

                        1st parameter = X coordinate for the circle center
                        2nd parameter = Y coordinate for the circle center
                        3rd parameter = radius of the circle
                        4th parameter = begining angle to start drawing at
                        5th parameter = ending angle to to stop drawing at


W  WRITE text           G#W 50,100,DEVO E-Z Listening Disc@
-------------
                        W = command identifier
                        Writes text on screen at any X Y coordinate.
                        Carriage Return and Linefeed are ignored (IG214) so
                        you can split the text to be written across two lines,
                        the maximum length is 128 characters.
                        The @ symbol ends the text to be written.
                        See also the E and C commands.

                        1st parameter = X coordinate
                        2nd parameter = Y coordinate
                        3rd parameter = text ended with @

                        Chain example:
                        G#W>20,50,Chain@L 0,0,300,190


Y  elliptical pieslice  G#Y 80,80,100,200,0,180:
----------------------
                        Y = command identifier
                        Draws a elliptical pieslice. which is part of a OVAL.

                        1st parameter = X coordinate for the oval center
                        2nd parameter = Y coordinate for the oval center
                        3rd parameter = X radius of the oval
                        4th parameter = Y radius of the oval
                        5th parameter = begining angle to start drawing at
                        6th parameter = ending angle to to stop drawing at


Z filled rectangle      G#Z 10,10,200,100:
------------------
                        Z = command identifer
                        Fills a area.  The A commands
                        border set has no effect on this
                        fill.

                        1st parameter = upper left corner  X coordinate
                        2nd parameter = upper left corner  Y coordinate
                        3rd parameter = lower right corner X coordinate
                        4th parameter = lower right corner Y coordinate


<  INPUT Command       G#< 1,0,1:
----------------
                       Gets input from user's keyboard and transmits it as soon
                       as the chain " > " from the last G#  is broke.  Should
                       be used near the end of a MENU, as the BBS will continue
                       to send to the terminal while the INPUT command is
                       waiting on the user.  This is so the BBS will be waiting
                       for INPUT when IG sends the user's response at '>' exit.
                       The INPUT command is good for letting you use
                       any 4 colors you want for a BBS MENU and then to issue
                       some reset commands. ie G#<>1,0,1:I>0:k>1:s>0:   Also
                       optionally INVOKES MOUSE routine for the X 4  command
                       so ZONES can be pointed to and clicked on, you must
                       use X 4 to define and load the zone strings first and
                       you should use IG to draw some borders around the
                       zones so the user will know where and what he is
                       selecting when he clicks on a ZONE, that way you
                       have the job of cosmetics, that's half the fun anyway.
                       The selected Zone's associated data string is
                       transmitted to the BBS as soon as IG exits
                       the chain from the last G#  .  ZONE 47 is the default
                       ZONE, it's associated data string will be sent if no
                       ZONES match where the user clicked.  You should always
                       define ZONE 47. ( Check out X 4,9998: LOOPBACK also!)
                       You may find the X 3 and the X 6 command useful too.

                   1st parameter = Transmitt carriage return at the end
                                   of the string INPUTted?  1 = YES  0 = NO



                   2nd parameter = INPUT type
                                   0 = One key,  (hot key input for FoReM)
                                   1 = String, with a return to
                                       end input from user,
                                       max string length = 128
                                   2 = MOUSE ZONE, activate a POLYMARKER
                                       mouse pointer, use the " T " command
                                       to select mouse type and size and the
                                       " C " command to set mouse color.
                                       User moves mouse and clicks on a
                                       "ZONE". Selection is processed
                                       when button is released.
                                       The associated ZONE string
                                       is copied into INPUT's
                                       string to be transmitted to BBS
                                       at the end of the IG script chain.


                   3rd parameter = Output options
                                   0 = Don't show input typed from user
                                       on his screen. Has no effect on
                                       Mouse ZONES.
                                   1 = Show input typed from user on screen.
                                       Has no effect on Mouse ZONES.
                                   2 = Show input but throw it away, don't
                                       transmit it at the end of the chain.
                                       Does effect Mouse ZONE.
                                   3 = Don't show input from user, and throw it
                                       away too.  Does effect Mouse ZONE.

           Note:  If 2 ZONES areas are over lapping on the screen the
                  ZONE with the lower value ID number will get selected when
                  the mouse is clicked on both ZONEs at the same time.

                          +----+--------------------+
 user clicks in here ---> |ID=1|                    |
 ZONE 1 gets selected     +----+   ID=10            |
                          |                         |
                          +-------------------------+

                          +----+--------------------+
 user clicks in here ---> |ID=7|                    |
 ZONE 2 gets selected     +----+   ID=2             |
                          |                         |
                          +-------------------------+





? Ask IG                G#? 0:
--------
                        ? = command identifier
                        Asks the Instant Graphics terminal
                        questions.  Transmit it to the
                        BBS  ( Host system ).

                        1st parameter selects the question to ask.
                                0 = Version number, IG will transmit in
                                    ASCII to the host system the version
                                    number it is.

                                1 = Ask IG where the cursor is and the
                                    mouse button state.  When this question
                                    is asked a 2nd parameter is passed also,
                                    like G#? 1,0  the zero means just check
                                    the cursor and mouse buttons and send it to
                                    host system immediatly.  If the second
                                    parameter is a 1 then the user can move the
                                    cursor with the mouse until a button is
                                    pressed then the cursor location and button
                                    state is transmitted.  In other words a
                                    point and click cursor!!!  The cursor and
                                    and mouse button state is sent in three
                                    characters, subtract 32 from the ASCII
                                    value of these characters to arrive at
                                    COLUMN number 0-79    ROW 0-24   BUTTON 0-3
                                    With this command the cursor should be
                                    enabled with the G#k 1 command.

                                2 = Ask IG where the mouse is and button state.
                                    A second parameter is required when this
                                    question is asked, like G#? 2,0 the zero
                                    indicates that IG is to send the BBS the
                                    mouse coordinates immediatly a 1 will
                                    activate a polymarker for a mouse pointer
                                    That you select with IG's "T" command.
                                    The user can move the pointer around till
                                    he clicks a button then the host system is
                                    sent the X,Y,Button in a ASCII string just
                                    like this  420,150,1:   It's up to the
                                    host system to convert the ASCII string
                                    into actual numbers.  The "g" command has
                                    no effect on this command in version 2.12.

                                3 = Asks IG what resolution the terminal is in
                                        0:    low resolution     320x200
                                        1:    medium resolution  640x200
                                        2:    high resolution    640x400





&  loop a command       G#& 0,198,6,0,L,4,0,0,x,y:
-----------------
                        XOR stepping example:
                        G#G 1,3,0,0,50,50:
                                G#&>198,0,2,0,G|4,2,6,x,x:


                        & = command identifier
                        Loops a operation specified number of times with
                        stepping, special options for XOR ing and the
                        'W'rite text command. The CHAIN character > only
                        works directly after the &>   You can loop a
                        chain of commands, see parameter 5,  but you can't
                        loop a loop.  Still this command is very powerful
                        and worth the effort to learn.

                        1st parameter = FROM value
                            if from value bigger than TO value
                            loop will detect and step backwards.

                        2nd parameter = TO value
                        3rd parameter = step value, positive number only.
                        4th parameter = DELAY in 200 hundredths of a between
                            each step of the loop.
                        5th parameter = command Identifier to loop.
                            optional specification character after 5th
                            parameter instead of comma:
                               | = XOR stepping
                               @ = get text for W command everytime
                                   otherwise text written from loop
                                   with the W command is last text
                                   written with W command before the
                                   loop was executed.  W command now
                                   ignores CR and LF so loop command
                                   can be used for easy Written text
                                   placement with the  loop's stepping.
               NOTE: (Chain Gang) If a > symbol is given here as a command
                                  identifer chain gang option is invoked.
                                  This allows multiple commands to LOOPed.
                                  Instead of one command specified for this
                                  parameter a string of command identifers
                                  are passed.
                                  The > to get IG's attention to chain gang
                                  and ending with the @ FOLLOWED by a comma.
                                  Like this >CL@,
                                    C is at command position 0
                                    L is at command position 1
                                  The position of the command is the key
                                  to which command will be executed.
                                  There can be up to 128 (0-127) commands in
                                  this command string in any order you like.

Example: switching line color and drawing lines too
G#I>0:k>0:s>4:S>3,0,0,6:
G#&>0,636,4,0,>CL@,16,0)1,3:1)319,99,x,0:0)1,2:1)319,99,+2,0:
   You can replace the  )  above with the commands  themself and  it will  work
G#&>0,636,4,0,>CL@,16,0C1,1:1L319,99,x,199:0C1,2:1L319,99,+2,199:
G#t>6:I>0:s>4:b>7:k>1:


                        6th parameter = number of parameters command that
                            to be looped requires.  You should at
                            least specify the number the command requires
                            ie L command requires 4 , ie W command 2.
                            You can specify multiples of the required number
                            such as 8 or 12 for the L command Max up to
                            2048. It's just a total of all the parameters
                            required that follows it.
                            This will work like BASIC's READ DATA
                            statements between each loop step.  Also note
                            a _ underscore may be used to split parameters
                            across lines if it is used in place of the first
                            digit of value, this will make huge detailed
                            files smaller (DEGAS conversions).

                      REMAINING parameters = whatever the command being looped
                                requires.  If you use a "x" as a parameter
                                it will be stepped in the direction of the
                                FROM TO values, if you use a "y" the loop
                                will step the value in a reverse direction.
                                You can use both "x" and "y" at the same time.
                                If you use a number it will remain as a constant
                                for the command being looped through out the
                                loop execution.  Adding a + before constant
                                will add the "x step value" to the constant.
                                Adding a - before the constant will subtract
                                the constant value from the current "x step"
                                value.  Adding a ! before the constant will
                                subtract the "x step" value from the constant.
                                Like so :
                                G#&>10,30,2,0,L,4,100,+10,-10,+600,!99:



loop Written text option example:

G#E>0,18,0:C>3,2:s>0:
G#&>20,140,20,0,W@2,0,x,A. Item 1@
B. Item 2@
C. Item 3@
D. Item 4@
E. Item 5@
F. Item 6@
G. Item 7@
G#W>200,140,Power Graphics with IG!!!@
G#& 140,20,20,0,W,2,200,x:
G#W>10,180,That's so DEVO!!!@

Example of loop used to READ DATA and step within at the same time in
both directions, once you get used to the "& loop" you will use it
a lot!!

G#I>0:s>0:k>0:L>300,10,340,10:S>2,7,4,5:S>1,0,0,0:
G#&>85,300,5,0,D,24,340,10:340,60:420,60:420,85:_
340,85:340,180:85,180:x,85:220,85:220,60:x,60:x,10:
G#L>300,180,300,85:A>1,1,1:C>2,2:F>320,20:E>0,10,0:M>2:
G#C>3,1:W>210,141,Because of@
G#W>210,156,God's Love@
G#W>210,171,we are.@M>1:
G#t>3:G>1,3,80,8,421,181:s>0:
G#&>0,220,4,0,G,16,2,3,x,x:2,3,y,y:2,3,x,y:2,3,y,x:t>2:s>0:
G#&>0,638,4,0,G,8,2,3,x,9:2,3,y,9:
G#t>3:s>0:k>1:G>2,3,80,8:p 0,20:


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



                          Modified  VT-52 COMMANDS
                          ------------------------


c  COLOR                G#c 1,1:
--------
                        c = command identifier
                        Sets text and background color

                        1st parameter selects text or background
                         0 = background         1 = text

                        2nd parameter = color register 0 thru 15

                         Note: color registers can be changed with the
                         S command but the ST's VDI pen numbers do not
                         corespond with color register numbers here a
                         reference chart:

                        register        pen             register        pen
                           0             0                 8             9
                           1             2                 9             10
                           3             6                 10            11
                           4             4                 11            14
                           5             7                 12            12
                           6             5                 13            15
                           7             8                 14            13
                                                           15            1



d  delete line          G#d 4:
--------------
                        d = command identifier
                        Deletes specified number of text lines, the bottom
                        line on the screen is scrolled upward.

                        Parameter =  number of lines to delete.



i  line insert          G#i 1,3:
--------------
                        i = command identifier
                        Inserts lines at cursor position or top of screen.

                        1st parameter selects type of insert.
                                0 = move cursor up a line until it hits
                                    the top of the screen, then insert
                                    blank lines.
                                1 = Insert line at cursor, bottom line is
                                    scrolled off.

                        2nd parameter = number of times to perform
                                        this operation.


l line clear            G#l 0:
------------
                        l = command identifier
                        Clears text lines.

                        Parameter:
                            0 = Clear whole line and carriage return.
                            1 = Clear line from begining to cursor inclusive.
                            2 = Clear line at cursor to end of line.


m  cursor motion                G#m 1,20:
----------------
                                m = command identifier
                                Homes or moves cursor a line at a time
                                or a column at a time, from current position.

                                1st parameter selects direction.
                                        0 = Home cursor.
                                        1 = up
                                        2 = down
                                        3 = right
                                        4 = left

                                2nd parameter sets number of times to do this
                                    operation.



p  position             G#p 70,19:
-----------
                        p = command identifier
                        Positions cursor at  column, line.
                        Like X Y only with characters.

                        1st parameter = column   0 thru 79

                        2nd parameter = line     0 thru 24


r  remember             G#r 0:
-----------
                        r = command identifier
                        Remembers or recalls cursor position.

                        Parameter:
                                0 = remember cursor position
                                1 = recall cursor position, and put it there


v  inverse video        G#v 1:
----------------
                        v = command identifier
                        Turn inverse video on or off.

                        Parameter:
                            0 = off
                            1 = on



w  line wrap            G#w 1:
------------
                        w = command identifier
                        Turns line wrap on or off.

                        Parameter:
                            0 = off
                            1 = on


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                           eXtended Commands
                           -----------------

                Extended commands are invoked by a captial
                X and a number ranging from 0 to 9999, this is
                sort of like the old 8 bit XIO thing.
                Opens a door for 10,000 new commands!!!


0  SPRAY PAINT          G#X 0,400,50,200,145,200:
---------------
                        X 0 = command identifier
                        Plots polymarkers at random in
                        a rectangular area with specified concentration.

                        1st parameter upper left corner  X coordinate.
                        2nd parameter upper left corner  Y coordinate.
                        3rd parameter X range from upper left corner, 255 max.
                        4th parameter Y range from upper left corner, 255 max.
                        5th parameter concentration, 9999 maximum.


1 SET COLOR REGISTER    G#X 1,4,0:
--------------------
                        X 1 = command identifier
                        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.

                        1st parameter = color register 0 thru 15.
                        2nd parameter = color value 0 thru 9999,
                                        note that the ST only uses up
                                        to 1911, larger values may prove
                                        useful on STE.




2 SET RANDOM FUNCTION RANGE  G#X 2,0,50:
---------------------------
                             Sets the range of the numbers returned when the
                             'r' is used in place of constant value parameter
                              given to a IG command.  Above example sets r to
                              a range of 0 to 50.  The range value can be
                              from 0 up to 9999.
                              To use it in the line command
                              or any other like so: L 0,r,400,r:
                              another example with the & "loop" command:
                              G#s>0:X>2,0,639:P>0,0:& 0,128,1,0,D,2,r,r:


3 RIGHT MOUSE BUTTON MACRO  G#X 3,2,1,1,30,C'mon Baby let's do the Twist!:
--------------------------
                           X 3 = command identifier

                           Set's a string of ANY characters to be transmitted
                           when the RIGHT mouse BUTTON is pressed. Intended
                           for pulling up a FUNCTION menu on a BBS, but could
                           be used to tell a MAINFRAME to TYPE a IG script
                           file for a POINT and CLICK navigation menu.

                           1st parameter = operation

                    Deactivate -->  if 1st parameter is 0 then
                                           mouse macro is shut off and
                                           no other parameters are to follow.
                                           example: X 3,0:

                    Reactivate -->  if 1st parameter is 1 then
                                           mouse macro is ON and requires
                                           a 2nd parameter to tell it whether
                                           or not to transmit a carriage
                                           return at the end of the string.
                                           examples:
                                           X 3,1,0:   =  no CR
                                           X 3,1,1:   =  send CR at end.

 LOAD with,activate,deactivate --> if 1st parameter is a 2 then a whole
                                          bunch  of parameters follow.

                                      2nd parameter cuts the mouse macro
                                          on or off. 0=off  1=on

                                      3rd parameter tells it whether or not
                                          to send a carriage return at the
                                          end of the string. 0=no  1=yes

                                      4th parameter is the length of the
                                          string in characters that the
                                          mouse macro will be sending, don't
                                          count the seperator at the end of
                                          the string.

                                      5th parameter is the string to send.
                                          it can contain any characters at
                                          all and has to be at least one
                                          character and not more than 80.
                                          At the end of the string a
                                          seperator is required anything can
                                          be used I suggest a : for good
                                          looks.
                                   examples below:
                                   X 3,2,1,1,3,m/a:
                                   X 3,2,1,1,5,f/L:
                                   X 3,2,1,1,1,?:
                                   X 3,2,1,1,25,c:\bin\type c:\ig\menu.ig:



4  DEFINE and LOAD ZONE data   G#X 4,0,0,0,79,49,3,f/L:
----------------------------
                             X 4 = command identifier

                             Defines a rectangular area and associates a
                             string of characters with it, a ZONE.
                             The string is sent to the bbs by the
                             " < " command if the mouse option is
                             used.  This allows point and click operation of
                             remote systems.

            Zone ID  ->      1st parameter = zone number to define/load
                                 This is a number between 0-47 or
                                 optional value is 9999-9997. If Zone ID is
                                 9999  ALL Zone's retangular areas
                                 are defined as -1,-1,-1,-1 by the
                                 terminal internally.  This is
                                 to give a quick clean slate.
                                 Cutting Zone LOOPBACK on will make the
                                 user select a valid defined Zone.
                                 A console bell will ding and the the
                                 terminal will continue to poll the mouse
                                 until a valid defined Zone is selected.
                                 Default is off only to help maintain
                                 compatiblity with older prexisting IG
                                 scripts.
                                 examples G#X 4,9999:
                                          G#X 4,9998:   Zone LOOPBACK On
                                          G#X 4,9997:   Zone LOOPBACK Off
                                                        (default off)

                                 No other parameters
                                 are required if Zone ID is 9999-9997.

    Define Rectangle ->      2nd parameter = upper left  corner X coordinate
                             3rd parameter = upper left  corner Y coordinate
                             4th parameter = lower right corner X coordinate
                             5th parameter = lower right corner Y coordinate
    Load string data ->      6th parameter = number of characters in string to
                                             transmit to bbs, maximum 80.
                             7th = the string itself with a ending : seperator,
                                   don't count the seperator as part of the
                                   string length required for parameter
                                   number 6.


5 FLOW CONTROL SHUTDOWN     G#X 5,0:   or   G#X 5,1: or G#X 5,4:
-----------------------     G#X 5,2,19,2:  or G#X 5,3,17,2:

                            X 5 = command identifier

                            Back by request, no flow control.

                            Stops the IG terminal from sending
                            Control-S's  and Control-Q's  on
                            all commands or alters the values sent
                            that XONs and XOFFs the flow and number
                            of repetitions, for safety.
                            This should be used with caution.
                            No flow control is good for issuing a short
                            pause " t " command and let the RS232 buffer
                            get ahead of the terminal, when the pause is
                            over a burst of speed will occur as the
                            terminal catches back up.  Data may be lost
                            this way so be careful.  Altering the XON
                            XOFF values and repetitions is good for
                            BBS programs that don't use the standard
                            ^s ^q sequence.   IG's default is ^s once
                            XOFF and ^q once XON.  The defaults work fine
                            with FoReM and Turbo, so if you switch them be
                            SURE to issue a G#X>5,4: in your log off file to
                            reset the defaults. FoReM sysops may want to
                            add this G#X>5,4: in their welcome file for
                            safety sake.

                           1st parameter = flow control on/off
                                           0 = OFF
                                           1 = ON
                                           2 = ON set xon value,  repetitions
                                           3 = ON set xoff value, repetitions
                                           4 = ON set to IG's defaults

                           2nd parameter = ASCII value to send for
                                           XON or XOFF. For instance
                                           put a 65 here for a captial A.
                                           This parameter not included
                                           if 1st parameter = 0 or 1 or
                                           greater than 3.

                           3rd parameter = number of repetitions to send the
                                           the XON and XOFF character. You
                                           can have IG send different for
                                           XONs than XOFFs. Like send
                                           2 XONs and 3 XOFFs.
                                           This parameter not included
                                           if 1st parameter = 0 or 1 or
                                           greater than 3.





6 LEFT MOUSE BUTTON CR/LF   G#X 6,1:  or G#X 6,2: or G#X 6,0:
-------------------------
                            X 6 = command identifier

                            Activate / deactivate left MOUSE button
                            as a CARRIAGE RETURN and or Linefeed.

                       1st parameter =
                            0 = OFF normal mode, default
                            1 = ON as a CARRIAGE RETURN
                            2 = ON as a CARRIAGE RETURN with LINEFEED.

                       Note: This doesn't affect the < INPUT command's
                             mouse zone option either way.  It should
                             work ok with this active.  I wanted to
                             be able to leave my hand on the mouse and
                             hit the button to read the next message
                             while online and not have to mess with the
                             right mouse macro 'X 3'. You can just set the
                             mouse in your lap and click to read messages.
                             You probably wouldn't want this active with the
                             '?' ASK IG command.

7 reserved
----------


8 Rotate Color Registers     G#X 8,1,3,20,10:
------------------------
                             X 8 = command identifier

                             Rotates color registers left or right
                             a certain number of times.

                       1st parameter =
                             Starting color register number

                       2nd parameter =
                             Ending color register number

                       3rd parameter =
                             0 = Reset the registers to what they were
                                 when detected with X 8,1,1,1,1:
                                 This will reset all the color registers.
                             Any other number =  number of times to shift
                                 colors.

                       Note: If the 1st parameter is less than the
                             2nd parameter, then the colors will shift
                             to the right. If the 1st parameter is
                             greater than the 2nd parameter, then the
                             colors will shift to the left.

                      4th parameter =
                           number of 200 hundredths of a second between
                           each color shift.  range 0-9999.


      An application of this function would be to draw a waterfall using,
say... registers 8 to 14 for various shades of blue. Once it is drawn
properly, you could make the water start flowing with the following:

G#I>0:k>0:R>0,2:A>1,1,1:
G#C>1,5:C>2,5:&>0,300,20,0,Z,4,x,5,+15,35:
G#&>0,0,0,0,>CF@,90,0C2,0:1F0,11:0C2,1:1F20,10:0C2,2:1F50,10:0C2,3:1F70,_
10:0C2,4:1F90,10:0C2,6:1F130,10:0C2,7:1F150,10:0C2,8:1F170,10:0C2,9:1F_
190,10:0C2,10:1F210,10:0C2,11:1F230,10:0C2,12:1F250,10:0C2,13:1F_
270,10:0C2,14:1F290,10:0C2,15:1F310,10:
G#X>8,1,15,150,0:X>8,1,1,1,1:t>3:I>0:R>1,1:

Or you could make steam coming out of a locomotive, a flaming mine,
lettering made of scrolling rainbows, lightning behind clouds, etc.
This command is limited in med resolution, worthless in hi res, and a
very powerful animation tool in low resolution!

---------------------------------------------------------------------------



===================
END OF TEXT  G#I 0:
