updated: 6-15-2024

BEST VIEWED with ME.TTP  <ctrl-X> <ctrl-C> EXIT without saving!
		<ctrl-S> Search
		<ctrl-V> PAGE Forward <esc>V PAGE Backward
		<esc>< MOVE to Beginning <esc>> MOVE to End of Buffer


          Instant Graphics! Online Graphics Script Interpreter
                   Copyright 1988-2024 by Larry Mears
 

                 Version 2.20 by Larry Mears, Freeware

*** IMPORTANT USE WITH HSMODA07.ZIP set up a 32K serial buffer the ST's 
    default serial buffer is only 256 bytes I believe, not near enough!!
	IG220.ACC needs it too. Set Interlink's serial port buffer to 31K.
	This allows IG to do it's graphics on the screen and not lose commands
	coming over the serial port at HIGH SPEEDs. :) 19.2K baud!
	Back in 1989  maybe a 4K or 8K serial buffer worked but we only had
	2400 baud modems, 2.4K baud!  The screen is not as fast as the serial
	port.  Without a big serial buffer even ASCII text will drop out a
	little bit. 
 
	Here's a couple of links to get HSMODA07.LZH / .ZIP
		www.scheutzow.de/museum/index.html
	https://github-wiki-see.page/m/z80andrew//SerialDisk/wiki/User-guide

	Also besides HSMODA07 that goes in the AUTO folder you may want to 
	put KX.PRG or KRX.PRGs I included cuts off key click sound and or key
	repeats. These can mess up the TAP-A-TUNE in the IGDEV program.

   Why a new version?  Back in 2019 Josh Renaud contacted me about
IG.  I knew some were still interested in the old computers, but nothing about
that thru telenet actual BBSs are still up and running!  I didn't have my old
Atari 1040STf anymore but my nephew still did!  He wasn't using it for
his midi anymore and it was just in his way, wow!  I was able to
use MegaMax C and Laser C again on the actual hardware that it all
started on.  I was going to try and make the IG Editor better but
the source that Kevin Moody gave me was corrupted by time, it still
helped. I wanted to make a IG drawing program that worked in all 3 ST
graphics modes.  I got my idea together about how I wanted it and
began my retro hobby.  I kept the menus simple text but still mostly
point & click.  As I went along the path I got ideas about making IG
better. It's still backward compatible with older IG versions but does much
more. 	I retired this year and I'm 30+ years older since IG217
was released back in 1992.  I'm in my mid 60's now, might live another 20+
years based on my relatives. I work out and ride motorcycles like I always have.
Updating IG has been a good uplifting experience for me.  I hope you enjoy my
efforts! 

WHAT'S NEW? 
  After working on this Retro project for 4+ years in what spare
time I could manage I created a IG terminal and Drawing program smash
up for developing IG scripts then ASCII uploading them. I also updated the
ACC & EMU versions. **I'd like to note that the "I" command did NOT do a 
restorative resolution switch.  I went back as far as IG210 and checked the
source code the older manual says it does a RES switch but it did NOT.  It did
everything else but not RES switch.  I added a I 5 option just for that,
seems like a good idea.  I recently discovered that the VDI Compatible
Resolution Switch by Steve Cole and Lawrence Gold if executed before setting
the color palette will mess with VT52 text color, so ALWAYS do a resolution
switch FIRST then set the palette.  Like G#I>5:I 0: otherwise you won't get the
colors you expect.

New for IG220
-------------
  This version adds 2 new X commands. See X 11 and X 12 for the details.
X 11 Loads the BitBlit Memory or Wipes with a BYTE value or random numbers.
It can Load ALL 32000 bytes or a 4000 byte section from the serial port or
disk.  This is so you can Load a Bit Map for the screen it takes about 30
seconds for the whole screen or 4 seconds for a 4000 byte horizontal section
at 19.2K baud the ST's max serial port speed.  The X 12 command loads a color
register palette, it loads 4 colors at a time.  With these 2 commands and
IGDEV13 and the IG GRAB commands Screen to Memory / Memory to Screen you can
save out a IG script constructed screen as a stagnate Bit Map  That may load
faster than the script if it is a complex drawing. Also the IGDEV13 program can
load a DEGAS/Elite uncompressed image into the BitBlit Memory .PI1 .PI2 and
.PI3 only. You can save the whole screen or horizontal sections and it's
palette also. See below the X 11 and X 12 commands for more details.
I also added Clip Set to the I 5 command, before it just set resolution.
Any time I refer to the DRAWER it is inside the IGDEV13.PRG by hitting
the F1 key. I also created a IGX1220.TTP it will display multiple IG files just
put a SPACE in between each filename. If the IG files are not in the same
FOLDER as the IGX1220.TTP you will have to give it the PATH  The IGX1220.TTP
just displays the files if you want a pause in between each ADD a G#t 9: at the 
end of the scripts if they don't already have one. 
In the DRAWER I also added support for the color rotation command.


***  IG219's  'G'rab command aka BitBlit is fixed so when IG switches from
medium resolution to LOW it doesn't ask GEM how many bit planes but checks
the resolution itself and sets the number of bit planes available so all BitBlit
commands should work after a res switch not just SCREEN to SCREEN.  I also
added a new BitBlit command Memory to Memory, lets you do hidden Blits
then pop them up.  No clipping so stay within the X,Y bounds.

IG219 BIGgest addition would be the the NEW f and z commands.  PolyFill the
f command draws a filled polygon with up to 128 sides. PolyLine the
z command draws a connected line with a minimum of 2 end points and
maximum 128 end points. Like the Line and Drawto IG commands but less IG script.

IG219 has a new X 10 command it sets the begining point for the  Drawto
command. Just a feature, not that critical, because the Line or Plot command
already set this as it should.  I also added to the R and I commands options
to SET the default VDI color palette and resolution. The IGDEV program has
added support for these additions.

I also added a full blown text editor ME.TTP,  IGDEV passes the draw buffer
to it as file so there is a decent text editor if you need to hand edit your IG
script. It writes a file called BUFF.IG then passes that to ME.TTP,  BUFF.IG
gets wiped out every time it does that, but it might save you if you forgot to
save your IG script at exit, at least from that hand edit point.  The IGDEV
program uses the out lined cross hair now.  If you press the CONTROL key you
get a drawing grid, multiple presses changes grid size.  LEFT SHIFT key prints
X,Y coordinates, mutiple presses changes position where X,Y is printed.
The draw grid and X,Y coordinates may appear on top off some of your drawing
but it is not permanate. They are just visual tools.  I also fixed a bug that
had been in all the IG2xx.ACCs that I wasn't aware of till recently, every exit
would drop 310 bytes. With IG219.ACC this doesn't happen.  The DEV progam and
EMU didn't have this issue. 

IG218 has editable fill and line patterns, a new
timing command that uses Vsync, internal double stepping for XORing
with BitBlit, the Spray Paint command has color rotation, the random
constant has two ranges r and R, the input command now uses all
mouse pointers not just a polymarker.  I changed the IG default color
palette and tried to make resolution swapping better.  I added a new
option for the N command you can jump forward in the buffer, this allows
you to jump to several short chip tunes as needed.  There is new X 9 
command that loads and executes IG graphic commands in the IG MIDI buffer.
In the IGDEV10.PRG just HIT the F1 key to Draw and make Music.  The IGS
Editor Kevin Moody & Anthony Rau did not support Low Resolution limiting it
to 4 colors.  I really wanted it to support Low Resolution 16 color mode.
When I wrote BIG Paint(DOS), Condor PAINT(DOS), Vectasketch and
Sketchpad(JAVA applets) they all had many colors. IG needed that too.
Bugs?  Few and far between I hope but nobody is perfect.  I will fix them 
if I can.  Most of time the Drawer is doing exactly what you tell it to,
it's command driven not a pixel bit painter. YOU have to THINK about what
you do and do it in the proper order.

IG  Palette		System Palette				Register
Pen	Color		Pen		Color			Number
0	White		0		White			0
1	Black		1		Black			15
2	Red		2		Red			1	
3	Green		3		Green			2	
4	Blue		4		Blue			4
5	Cyan		5		Cyan			6
6	Black yes	6		Yellow			3
7	Yellow		7		Magenta			5
8	Light Pink	8		Low White		7
9	Light Brown	9		Gray			8
10	Sandy Brown	10		Light Red		9
11	Sea Green	11		Light Green		10
12	Gray		12		Light Blue		12
13	Lake Blue	13		Light Cyan		14
14	Grass Green	14		Light Yellow		11
15	Dark Brown	15		Light Magenta		13

 		

                                 INTRO
   Instant Graphics! Desk Accessory graphics terminal or
Instant Graphics! Emulator for Interlink brings 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 have used 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.
**NOTE FLASH only has a 4k serial BUFFER and HSMODA has no effect on FLASH's
serial buffer size and FLASH dominates the buffer size, I'm NOT recommending
using FLASH with IG anymore because of this. FLASH at 2400 or 1200 baud
probably work OK.

   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 capture buffer to 8K and the RS232 buffer to 31K and
save then rerun Interlink from the desktop.  This MIGHT free up enough RAM to
load version 2.20 If you set the RS232 buffer lower than 31K you will have to
drop the BAUD Rate or drop outs may occur, experiment. 

                          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.

***** NEW !!!!******
NOTE: IG218+ when grabbing number values from the serial port or a file ALLOWS
a carriage return and line feed character to break the line the _ still works
the same too, here is example draws a rectangle and a pyramid:

G#9999,0,Test for new value(); routines.@
G#I>0:I>3:R>1,0:s>5:k>0:
G#C>1,1:T>2,1,1:T>2,1,0:L>10,48,
1
5
2
,
48:D>152,94:
G#D>10,_
9
4
:D>10,48:
G#&>0,639,4,0,L,4,
3
1
9
,
0,
x,199
:t>4:

*** Note: Utility programs I wrote rely on G#COMMAND>NUMS,NUMS: syntax

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.  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:

          LarryMears@hotmail.com  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 my EMAIL.  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.

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 IG Drawer makes IG creation easier but, a understanding of IG
and a text editor such as ME.TTP is still useful for many things or tweeking
script. IG Drawer is still great for drawings, tunes or doing simple BBS menus.
The IG Drawer also allows hand editing the script end, good for adding or
deleting commands to the end of BITMAPs. WARNING! Don't use ME.TTP for BIT MAPS
It produces IG script compatible with IG 2.20 and above.  New IG versions are
written so that old IG script files are compatible.  I don't expect any
monetary support.  I'm just doing this for a hobby.  I hope it helps some
SYSOPs and Users have some fun.

Note that a ^C executed when IG is writing it's prompts may crash or exit
the program, this is a ATARI TOS bug in it's ROM chips.
===========================================================================

                      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  Toggles Auto Line Feed on/off.

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

                               OTHER KEYS

INSERT set baud      ....Set baud 300 thru 19200 baud.

                        Note: No default at startup,  this is so when
                        using FLASH or Interlink the ACC baud remains the same
                        as the host program. Some of the other RS323 parameters
                        are changed by this option, always sets 8/N/1
			I've not tested IG past 19200 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      ....Toggles Auto Line Wrap.

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 4=user defined

                        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.  The IG Drawer will display examples.

			0-9 for user defined, 8 sets pattern 0 as RANDOM, looks
			like dirt or sand mostly, 9 or greater sets pattern 0 as
			it's stored default, looks like Star Trek symbol.
			Patterns 6 and 7 are also used for user defined LINES.
			SEE X 7 command for defining these patterns. 

                        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.
                        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.

23 SET LOOPS FOR FX'S 0-4	example:
-------------------------	G#23,0:

				Command identifer = b 23

			 Sets how many times sound effects 0-4
			 are looped default is 5*200. If you change
			 it's up to you to set it back.

			 1st parameter = How may times to loop.
					 Range is 0 to 16. If greater than 16
					 then it's set to 5 the default.  


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 or X 10 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



f Poly Fill		G#f 3,100,0,150,100,50,100:
-----------
			f = command identifer
			Fills a area defined by the X and Y points.
			The enclosed area will be filled with the current fill
			pattern, fill color, border set with the A command.

			1st parameter = number of paired X,Y points
			 so the 3 means 6 parameters following.  It also
			 will be the number of sides the area will have.
			 passing a 1 or 2 here draws a point or line.

			remaining parameters = X,Y pairs forming the points
			the last pair of points will be connected to the
			beginning points automatically by the routine.
						


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
			      4 = memory to memory


                        2nd parameter sets writing mode for the blit operation.
                         mode  logic...............Description
                          0    dest=0..............Clear destination block
                          1    dest=S AND 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

                          IF 1st PARAMETER = 4   "memory 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
                              7th = X destination, upper left corner
                              8th = Y destination, upper left corner


q Quick Pause with Vsync or set Internal Double Stepping 
--------------------------------------------------------
			G#q 180: 
			G#q 9995:
			G#q 9999:

			NOTE: Vsync() waits until the screen's next vertical
				  retrace occurs.

			Parameter = number of Vsync()s to pause, 60ths of a
		        	    second max 180.  No flow control with this
				    delay. 

			IF Parameter = 9995 double step the G command internally
				 	use 3 Vsync()s 
							
				       9996 double step the G command internally
					use 2 Vsync()s

				       9997 double step the G command internally
				 	use 1 Vsync()s

				       9998 double step the G command internally
					use 0 Vsync()s	

				       9999 Turn double step OFF
							

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>5:I 0:
-------------
                        I = command identifier
                        Initializes color palette 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.

			DESKTOP means what ever the setting was when IG is
			first opened this can be changed by the Control.ACC
			or by a program such as Interlink or Flash.
			The VDI and Instant Graphics color palette are hard
			coded and won't change.  You can alter the palette
			you are using with the S command.  IF using the I 5
			command use it before ANY of the palette setting
			commands.

                        Parameter:
                            0 = Set DESKTOP palette and attributes
                            1 = Set DESKTOP palette
                            2 = Set DESKTOP attributes
                            3 = Set Instant Graphics! default palette
			    4 = Set VDI default palette
			    5 = Set DESKTOP Resolution ***USE FIRST!!
				sets VDI Clipping area also even for MONO

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

z Poly Line		G#z 3,100,0,150,100,50,100:
-----------
			z = command identifer
			Draws a connected line defined by the X and Y points.
			Line color, type and line end points apply.
		
			1st parameter = number of paired X,Y points
			 so the 3 means 6 parameters following.
			 A minimum of 2 here required!  I forced this
			 because 1 here would crash the system! The maximum
			 number of points is 128.

			remaining parameters = X,Y pairs forming the points
			 of the Line.				



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.
                        MIDI, and sound chip.


                        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.

			 NEW for IG218...
			 Once the buffer is LOADED you can:

			 EXE Buffer N>6,x=From(0-1664), y=To(1-1665)chip notes
						 example N>6,300,701:

			 Each note takes six bytes so 1666 notes possible in
			 the 10001 byte buffer note 0 to 1665.  I wrote a GFA
			 Basic program that takes the IG Draw program's
			 Tap A Tune notes and auto generates the N chip note
			 byte format it's N_UTILB.PRG  Keep in mind this buffer
			 doesn't play in the background no multi tasking and 
			 you use it for one thing at a time MIDI or Chip Notes
			 or with the New X>9 command that stores and Executes
			 IG commands in it.

                              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_UTILB.PRG 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.
			DESKTOP color means the palette that has been set for
			the DESKTOP be it default or set with the Control Panel
			or program that the ACC or EMU was called from.
			If you Swap from MED to LOW RES select IG or VDI
			default palette. The R command sets the resolution then
			sets each VDI Pen color.

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

                        2nd Parameter is the system palette flag:
                        0 = no change          1 = DESKTOP colors
                        2 = IG default palette 3 = VDI default 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
			   7 = user defined ( see X 7 command )

                        3rd parameter selects size and line end styles,
			    and which user defined line

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

			for user defined lines:
			pattern numbers	1 thru 32


                        -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.
			If you Plot your text off screen you can use this
			command	as a way to COMMENT IG script.
                        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.
                             3 to 10 = MOUSE ZONE activates a GEM mouse pointer
					3=Arrow 4=Hour Glass 5=Bumble Bee
					6=Pointing Finger 7=Flat Hand
					8=Thin Cross Hair 9=Thick Cross Hair
					10=Outlined Cross Hair   
				       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 or 2 activates a polymarker for a mouse
				    pointer that you select with IG's "T"
				    command

				    A 3 to 10 activates the GEM mouse pointer
					3=Arrow 4=Hour Glass 5=Bumble Bee
					6=Pointing Finger 7=Flat Hand
					8=Thin Cross Hair 9=Thick Cross Hair
					10=Outlined Cross Hair   

                                    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
                           2		     3	        	   10		     11 	
			               3             6                 11            14
                           4             4                 12            12
                           5             7                 13            15
                           6             5                 14            13
                           7             8                 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.

			NOTE: to set color Rotation
			G#X 0,1,0,0,0,0: cut ON start at pen one to last pen
			available for the RESOLUTION you could say 
			G#X 0,7,0,0,0,0: here if in LOW RES 
			no effect in MONO of course.
			G#X 0,0,0,0,0,0: to shut OFF,  The Drawer does this
			automatically  even if you cancel.  Once you say
			ROTATE to The Drawer it put the script in to ROTATE,
			has to be canceled with another script. I added
			ROTATE after the fact, this was the quick fix.
			ERASE LAST in The Drawer can take it out.


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: or G#X 2,9,9,100:
---------------------------
                             Sets the range of the numbers returned when the
                             'r' or 'R' is used in place of constant value
			     parameter given to a IG command. The first example
			     sets r to a range of 0 to 50. The 2nd example sets
			     R to a range of 9 to 100, setting R requires a
			     extra parameter and the from parameters have to be
			     equal. The range value can be from 0 up to 9999.
			     The DEFAULT settings for random at startup are
			     0 to 199, so you might want to set them.
                             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:X>2,50,50,150: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 Load Fill Pattern 
-------------------
X 7 = Command identifer
	Loads a 16x16 bit pattern into one of the 8 pattern slots
	numbered 0-7 Patterns 6 and 7 also serve as Line patterns.

	1st parameter is the pattern number you are loading into
	0 to 7

	the other 16 parameters are 17 character strings ending 
	with the 17th as @ character.  To set the bit for the pattern
	it has be a X upper or lower case.  The other characters don't
	matter any mean 0, just put the @ symbol as	the 17th character.
  	I used minus signs, makes it easier to see the pattern.

 	The Draw program has a Fill Pattern Editor.  I thought about not
	writing one because this is so easy. The Draw Program won't
	store it like the example easy to see, because it trys to save
	lines, BBSs messages have limited lines. Although you could
	BitBlit the whole screen with the G command and contine in the
	following message!  

Example:

G#X>7,1,
----------------@
----------------@
--------XX------@
-------XXXX-----@
------XXX-XX----@
-----XXXX-XXX---@
----XXXXX-XXXX--@
----XXX-----XX--@
---XXXXX X XXXX-@
---XXXXXXXXXXXX-@
---XXXXXX---XXX-@
---XXXX------XX-@
---XXX-------XX-@
---XX---------X-@
---X------------@
----------------@


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
powerful animation tool in low resolution!


NEW for IG218:

9 Loads or Executes the IG MIDI Buffer with any IG Commands
-----------------------------------------------------------

X 9 = command identifier

	examples: 
	LOAD buffer  G#X>9,0,G#b>1:L>0,0,100,100:||}

	if 1st parameter is 0 then load until  ||} is found
		G#X>9,0,IG Commands here until ||}

	if 1st parameter is 1 then Execute.
	EXECUTE the buffer anytime after loading with just
	G#X>9,1:

	if 1st parameter is 2 then ERASE CLEAR the buffer
	Sets the whole buffer to zeros and zeros the buffer counters.
	G#X>9,2:

	This buffer is used by the N command too so you have to
	decide what you want to use it for, music or any IG commands.
	You can not make a X>9,1: command inside the buffer while it's executing
	I put a trap in for that so no infinite	loop. The buffer is 10001 bytes
	so 121 lines 80 characters LF/CR in general use with the IG Drawer more
	like 140 lines.		

NEW for IG219:

10 Sets the begin point for D the Drawto command
------------------------------------------------

X 10 = command identifier

	   example: G#X>10,100,50:D>75,100:

	   Using a L or P command also does the same thing X 10 just leaves the
	   screen untouched.


NEW for IG220:

11 LOAD or WIPE SCREEN BITBLIT MEMORY
-------------------------------------

X 11 = command identifer

example: G#X>11,0,0,49:    Wipes ALL BitBlit Memory with 49
		 G#X>11,0,4,49:    Wipes Horizontal Memory Section 4 with 49

	if 1st parameter is a 0 then WIPE BitBlit Memory
	if 2nd parameter is 0 then WIPE ALL 32000 bytes of BitBlit Memory
	if 2nd parameter is a 1 thru 8 then WIPE a Horizontal portion of
		BitBlit memory with 1 being Topmost portion of BitBlit Memory
		and 8 being the bottom portion.  These are 4000 byte sections.
	3rd parameter = value to WIPE with 0 to 255 if you put 256 it will 
		generate a random number for each byte, looks like bad TV
		reception. You can put a R or r here and it will fill the
		memory with ONE	random value. All these values besides 0 and
		255 just look like various vertical lines.


	if 1st parameter = 1 then LOAD and SHOW BitBlit Memory
		if 2nd parameter is 0 then LOAD and SHOW ALL 32000 bytes
		of BitBlit Memory, it will then attempt to get the 32000 bytes.
		if 2nd parameter is a 1 thru 8 then LOAD and SHOW a Horizontal
		portion of BitBlit memory with 1 being Topmost portion of
		BitBlit Memory and 8 being the bottom portion. These are 4000
		byte sections, and it will attempt to get 4000 bytes.

	if 1st parameter = 2 then just LOAD BitBlit Memory
		if 2nd parameter is 0 then just LOAD 32000 bytes
		of BitBlit Memory, it will then attempt to get the 32000 bytes.
		if 2nd parameter is a 1 thru 8 then just LOAD a Horizontal
		portion	of BitBlit memory with 1 being Topmost portion of
		BitBlit Memory and 8 being the bottom portion. These are 4000
		byte sections, and it will attempt to get 4000 bytes.

	The BitBlit memory has to be transmitted correctly each BYTE has to be
	full range 0 to 255 and in order otherwise the image will not be
	correct. This is easy from a floppy or hard disk but can be done over
	Telnet.	Once the BiBlit Memory is loaded it can be Blitted all over the
	screen with the Grab screen command G   The LOAD and SHOW always uses 
	the REPLACE mode. The X 11 command just loads or wipes it doesn't take
	care of the color palette or resolution. The IGDEV13.PRG creates the
	BitBlit Memory you first Grab the whole screen with Screen To Memory
	option it also gets the color palette settings just in case you want to
	save them at that Grab time. Use a Right Click on the SAVE option to
	save IG	loadable BitBlit Memory. It will create it for you.  The right
	click option does NOT save the drawing buffer commands. You can create
	a high detail IG script screen and save it as a BitBlit and just load
	it back	in perhaps saving time and space. A full screen takes about 30
	seconds at 19.2K baud one horizontal band takes about 4 seconds, 50
	pixels high in monochrome 25 pixels high in MED and LOW resolution.
	While the Draw Buffer seems to be OK with loading Bit Blit memory I
	never really design it that way. EMACS doesn't like it.  YMMV


12 LOAD Color Hardware Register Palette
---------------------------------------

X 12 = command identifer

example: G#X>12,0,0,1911,1792,112:


if 1st parameter is a 0 then the next 4 parameters are
	color registers 0,1,2,3 with the color values 

if 1st parameter is a 1 then the next 4 parameters are
	color registers 4,5,6,7 with the color values

if 1st parameter is a 2 then the next 4 parameters are
	color registers 8,9,10,11 with the color values 

if 1st parameter is a 3 then the next 4 parameters are
	color registers 12,13,14,15 with the color values

So for MED resolution it only needs to be called once but for LOW resolution
it's called 4 times if you need to set them all. The IGDEV13 program
generates the color palette values when you use SET Palette/Save whole Palette
It also grabs the actual values when you ALT-L in the terminal screen or
when you GRAB Screen to Memory while using the IGDEV13 program.  It will then
save the proper palette at a RIGHT CLICK on SAVE Buffer/Mem

******************************
Converting DEGAS/Elite images: Set the GEM DESKTOP in the Resoluton of
the DEGAS picture you want to convert .PI1 is LOW .PI2 is MED .PI3 is 
HIGH resolution.  Run the IGDEV13 progam in the terminal screen Press
ALT-L find the PICTURE.PI? you want to convert, not a .PC? file.  It will
load and display it reguardless of the resolution you are in currently, warn
you when it is the wrong resolution, but still load just looking messed up.
You have the power, maybe you want it messed up for effect.  The cursor will
most likely be blinking because you are still in the terminal mode. Next hit
the F1 key. Now _RIGHT_ Click on SAVE Buffer/Mem a file selector will
pop up CHANGE at least the Filename.EXT to .IG0 or .IG1 or .IG2 suggestions
maybe Filenam0 to 8 to signify 0 whole screen, 1 to 8 which piece, otherwise
you will be OVER WRITING your DEGAS.PI? file.  It will then state it's going
to save bit blit memory and also a tip to get something into bit blit memory
first. It will display what's in bit blit memory and you will be asked
which portion of the screen you want to save the horzontal lines are there to
help only. Next is a chance to save the color palette or not. It will then 
attempt to save the color palette first and the bit blit data next, you will
see how many bytes are saved then Tap a Key to continue. That just saved the
palette and bit blit buffer to a FILE nothing else and NOT the Draw buffer.
You have to LOAD it back in to actually use it, but first if you want to set
the resolution, you may not depending on what you are doing, select
BEGIN/EXIT Drawing click on one the BEGINs you want, the palette gets set
from the converted DEGAS if you saved it, Next _Right_ click LOAD Buffer/Apnd
load in your converted DEGAS image, the CLICK BEGIN/EXIT Drawing and select
one of the ENDs.  You can then Execute the buffer to display it.  SAVE the
buffer if you want to keep it that way. These Bit Maps saved are NOT suitable
to post in a message.  You should be able to use them for menus or maybe
door games on your BBS depending on how the BBS handles the IG file.  
Don't try to edit these with EMACS (ME.TTP).  It thinks it's a VERY LONG line
and can mess up your work.

 			


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



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