IHLP1
Script Language├Script ManagerhLearning Script WritingÉ,Script LearnP-Script Learn Introduction╞IScript Learn CommandsvcSLearn/Automated JobsÄvSLearn/Stand Alone ScriptsiàScript LogonsÉEditing Learned ScriptsòöAttaching Learned Scriptsk£Keyboard Codes@»Color Codesé╕Script Debugging╫╞ASCII Codes╔╧Extended ASCII Codes╓╪Coming SoonÑFor help with scripts, please choose one of the help links listed below. 
For more information on selecting help links, press the [F1] key.

	Script Manager 		Learning Script Writing
	Script Learn			Script Learn Commands
	Editing Learned Scripts	Script Debugging
	SCRIPT.DOC			SCRTUTOR.DOC
	ASCII Codes			Extended ASCII Codes
	Keyboard Codes 		Color Codes

See also:
	Text Editor
	Coming Soon
úThe Script Manager is accessed by pressing [Alt-U] from any major Icom
menu.  Use of the manager is quite straightforward.  The first step is to
hilight the script you are interested in, by moving the hilight bar in the
upper box (use the cursor keys or your mouse to move the hilight bar). 
Once you have the proper script hilighted you can perform one of the
following actions on it by using the menu running along the bottom of the
screen (either tap the hilighted menu letter, move the hilight bar with the
cursor keys and press ENTER, or move the mouse cursor to the item and
click):

Tag
▀▀▀
Tag is used when you wish to perform a group operation on several scripts. 
For example if you'd like to delete several scripts simply hilight and Tag
each script, then select the Delete option (the same works for Ren/Move and
Copy).  You may also Run several Tagged scripts, though the scripts must be
written to handle this: I.e. each script should either perform a task to
completion (dial, logon, perform a session and logoff, etc.) or the scripts
should be sorted in such a manner that when the first script finishes, the
next one picks up where it left off (see "Run" below for details on re-
sorting scripts).

Run
▀▀▀
Run is used to execute either the hilighted script (if no scripts are
tagged), or all tagged scripts.  If you Tag/Run multiple scripts, they are
executed starting at the first Tagged script in the left column from top to
bottom, then right column top to bottom (if more than one screen-full of
scripts exists, once the first screen completes, the same happens on the
second screen, left column first).  To re-sort your scripts, simply Rename
them using "Ren/Move", using numbers in the filename (1MYSCRIPT.SCR,
2MYSCRIPT.SCR) or use symbols to sort to the top (!FIRST.SCR, etc). 
Scripts are sorted by the ASCII Code value of the letters/symbols you use
in the filename; and according to ASCII codes, 1 is "lower" than 2, and 9
is "lower" than A, etc.	The "lower" the ASCII code used as the first
letter/symbol in a script filename, the closer it sorts to the top of the
Script Manager.  See the ASCII Codes link to see exactly which
letter/symbols are lower/higher than others.

Create
▀▀▀▀▀▀
This option is used to create a new script.	If you have an Extnl Editor
defined in the Icom main setup (Filenames/Paths screen), Icom calls the
external editor when you select Create.  Otherwise you enter the internal
Text Editor.

Edit
▀▀▀▀
Used to edit an existing script (hilight the script first... Tags are
ignored when Edit is selected).  If you have an External Editor defined in
the Icom main setup (Filenames/Paths screen), Icom calls the external
editor when you select Edit.	Otherwise Icom's internal Text Editor is
used.

Find
▀▀▀▀
In the Script Manager, Find is used to search an entire disk for a
filespec.  You may precede the filespec with a drive letter to search a
drive other than the current drive (the 'current' drive is listed when you
select Find).	Wildcards * and ? are accepted in the filespec (please see
your DOS manual if you aren't familiar with wildcards).

Copy
▀▀▀▀
Copies either the hilighted script (if no scripts are tagged) or all Tagged
scripts to another drive and/or directory.

Ren/Move
▀▀▀▀▀▀▀▀
Can be used to either rename one or more scripts, or to move one or more
scripts to another directory on the same drive.  To rename, enter the new
filename WITHOUT a directory (no \ characters; if several scripts are
tagged you'll be prompted for a new filename for each tagged script).  To
move, simply specify the new directory name (no filenames... just the
\DIRECTORY or \DIR\SUBDIRECTORY, etc).

Delete
▀▀▀▀▀▀
Deletes the hilighted script or all Tagged scripts, after confirmation.

Untag
▀▀▀▀▀
Untags all tagged scripts.

NewDir
▀▀▀▀▀▀
Displays a new directory and or filespec (C:\BAT\*.BAT, D:\, etc.  *.* is
assumed if no filespec is given, and the current drive is assumed if no
drive is specified).

Cnvrt
▀▀▀▀▀
Used to convert an Intellicomm v1 script to v2 format.  Conversion of
EXISTING v1 scripts is done during Icom v2's installation normally, but you
may obtain scripts in the future (from a BBS, etc) that were programmed for
Icom v1, and such scripts must be converted before you attempt to Run them
with Icom v2.	The differences between Icom v1 and v2 scripts are subtle,
but a dead give-away is the WHEN command: If you obtain a script and don't
know which version of Icom it was programmed for, look for a WHEN command:

    Icom v1 Format			    Icom v2 Format
  ────────────────────────────────────────────────────────
  WHEN "This" "That"	    WHEN "This" SEND "That"
  WHEN "This" LABEL 	    WHEN "This" GOTO LABEL
  OFFLINE LABEL		    OFFLINE GOTO LABEL
  ONLINE LABEL 		    ONLINE GOTO LABEL
  EXIST D:FILE.EXT LABEL     EXIST "D:FILE.EXT" GOTO LABEL

Note the use of SEND and GOTO in v2 script commands, while the v1 scripts
do not have these secondary commands.  If you see this v1 format in a
script you obtain, just "Tag" the script and select "Cnvrt" to update the
script to v2 format.  Convert will insert the necessary SEND/GOTO commands
for you, and will also make sure that constant text has double quotes
around it.  This was legal in Icom v1 scripts:

  EXIST D:\PATH\FILENAME.EXT LABEL

It is NOT legal in v2 scripts, and "Cnvrt" will convert such a line to the
following:

  EXIST "D:\PATH\FILENAME.EXT" GOTO LABEL

...putting double quotes around constant text, and adding the necessary
GOTO command.	Please see "CHANGES FROM THE V1.00 SCRIPT LANGUAGE" in
SCRIPT.DOC for full details.

Note that the existing/unconverted scripts are renamed to *.OLD (same
filename, with an .OLD extension) after conversion takes place, but you
won't SEE these *.OLD files from the Script Manager, since it displays only
*.SCR by default.  To see ALL files in the script directory (to Delete,
Copy, Ren/Move the *.OLD files), select "Newdir" and enter "*.*" (no
quotes) which means to display ALL files in the current directory.

eXit
▀▀▀▀
Exits the Script Manager.
&Many people think scripts are too difficult or time-consuming to learn, and
avoid scripts without even trying.  It's a shame though, as you can gain so
much enjoyment from writing your own scripts that it's well worth the small
amount of effort required to learn how to write them.	You might have
looked at SCRIPT.DOC already and decided that there was too much to learn,
but if that's the case you are quite mistaken:  The script language is NOT
designed in a such a manner that you must learn each and every aspect of it
to make use of it.	Using three commands, WHEN, SEND, and WAITFOR, you can
automate virtually any BBS task, complete with error-handling.  With one
more command, DOWNLOAD, you can download files.  With one other command,
CAPTURE, you can capture specific BBS text (bulletins, etc) to specific
files for later viewing.  With another, HANGUP, you can force a disconnect.

Learning the entire script language is not necessary and quite often just
two or three commands will allow you to get a very useful job done.  The
idea is to pick and choose the commands you NEED, and ignore the rest.  If
you learn and use 10% of the script commands you'll have done well, and
will gain an incredibly flexible new tool to enjoy.

You can learn how to write scripts in one of two ways.  1) Use the
Script Learn feature have Icom write the scripts for you, 2) Take a few
minutes out the next time nothing good is on TV, relax, and read the
introductory material in SCRTUTOR.DOC.	Using Script Learn does not
necessarily allow you to avoid understanding at least the basics of
scripts.	As with most all auto-learned scripts created by comm. programs,
you may have to slightly modify the script Icom creates to get everything
working properly (specifically the BBS prompts that are captured).  And for
that you will need at least a basic understanding of scripts; which is what
SCRTUTOR.DOC will provide you with.

There is a very specific way to use the script manuals SCRTUTOR.DOC and
SCRIPT.DOC.  The first step is to understand that the script language is
designed to be used by anyone from absolute beginners to advanced
programmers, and is designed to serve you not only today but also next
month when you have more experience and want more.  The trick is to locate
the commands that you NEED (and that are at your level), and to avoid
attempting to learn commands you don't need.  This is what SCRTUTOR.DOC
does for you; it outlines all of the basic commands (and rules) and shows
you how to use them.

Once you're finished with SCRTUTOR.DOC, get SCRIPT.DOC handy (preferably
on-disk in the \ICOM directory so you can view it through the Online Help)
and use it as follows:

 1.	Give the SCRIPT COMMANDS AT A GLANCE section a quick browse (it is
	sorted by command PURPOSE), making sure that you quickly skip over
	commands you don't anticipate needing.	There are over 200 commands in
	all and it will take you approximately TWENTY minutes just to read the
	Commands at a Glance section if you read each and every command
	description.  If you don't want to spend twenty minutes at it, quickly
	SKIP descriptions of commands (or entire sections) you don't need at
	present.	Don't bore yourself to death on your first glance.

 2.	When you find a command you're interested in, using the Commands at a
	Glance section, look the command up in the DETAILED COMMAND SUMMARY
	(which is sorted alphabetically, by script command name).  If you
	printed SCRIPT.DOC look in the Table of Contents for the page number. 
	If you didn't print SCRIPT.DOC and are viewing it via the Online Help
	or File Manager, press [Alt-F] (Find) enter the command followed by an
	underscore (PRINT_), press ENTER then search DOWNWARDS to locate the
	Detailed Summary.  Each script command in the Detailed Summary is
	followed by a line of underscores to allow you to locate the command
	in just such a manner.

 3.	Read the SUMMARY of the command, ignoring anything that confuses you
	(all will be explained in the DESCRIPTION), then the DESCRIPTION and
	EXAMPLE.	If the command is not quite what you had in mind, see the
	SEE ALSO section for similar commands.

With the above skills, you should be able to quickly pick out the commands
you NEED, quickly find all the details on one specific command (along with
a useful example), and put the command to use in your script in no time
flat.
╛Script Learn Information:

	Script Learn Introduction
	Attaching Learned Scripts
	Script Learn Commands

Script Learn Examples:

	SLearn/Automated Jobs
	SLearn/Stand Alone Scripts
tScript Learn is a registered user bonus feature and is not available in the
unregistered version of Intellicomm.  Please see ORDERING INFORMATION for
registration details.

What can Script Learn do for me?
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Icom's BIFs and internal automation routines are capable of doing most of
the common tasks on most BBS's.  But they can't, and were not designed to
handle everything.	Script Learn, on the other hand, allows you to easily
automate ANY Intellicomm or BBS task, since it doesn't use the fixed
information available in BIFs: it watches what you do and creates a self-
contained 'program' for Icom to read.  These programs are called scripts.

Script Learn is intended to pick up where BIF Learn leaves off, allowing
automation of any Intellicomm or BBS online task you can dream up.  You can
also attach learned scripts to function keys so that the script executes
upon pressing the key, or you can leave them as stand-alone scripts to be
executed from the Script Manager, from a job Custom Command, from any BIF
response, or from the DOS command prompt via the /scr: command line option. 
Lots of options are available.

Before you use Script Learn it is recommended that you browse the script
tutorial SCRTUTOR.DOC.  Knowing script basics will help you to understand
how Script Learn does its work, and will also help you to modify scripts to
add enhancements.  It is almost certain that you will have to edit the
scripts created with Script Learn when automating tasks at BBS's, to clean
up the BBS prompts that are captured (similar to BIF Learn). SCRTUTOR.DOC
quickly gives you all the skills you need, not only to find and edit
scripts but also to understand enough about them that you make progress and
accomplish the task at-hand, instead of working in the dark.

General Notes
▀▀▀▀▀▀▀▀▀▀▀▀▀
Intellicomm's Script Learn is fairly smart in comparison with the learn
modes available in other comm. packages.  Scripts produced by Icom's learn
mode WILL handle errors... in that if a BBS prompt the script is looking
for is not found within a timeout period, the script will go to its error-
handling routine (all scripts created with Icom's Script Learn contain this
error-handling routine).  The error-handler sounds an alarm when a BBS
prompt isn't found after a given timeout period, and prints a message
telling you that the script has failed.  It then waits fifteen seconds for
you to return to the computer and press a key.  If you do not return and
press a key within fifteen seconds of the alarm, the script hangs up and
aborts, saving you from incurring long-distance charges or wasting all your
online time for the day if something major goes wrong.  In most other learn
modes a timeout is used but no error-handling is done at all, and the
script might simply terminate (leaving you online, for who knows how long)
or may even blindly continue sending commands to the WRONG BBS prompts,
whether an error occurs or not.

Further, the timeout periods added to the learned script between each
command are the ACTUAL time it took to carry out the task when the script
was learned, plus sixty seconds leeway.  Most other script learn modes have
a fixed timeout period (two minutes or the like... or sometimes even thirty
seconds, for ALL commands) which means that if the script sends a command
to the BBS such as displaying a large BBS file listing, which takes longer
than a fixed timeout period to complete, the script will fail.  With
Intellicomm's smarter timeouts, your learned scripts do not suffer from
this shortcoming.

Script Learn will even ignore your keyboard typos.  If you enter the wrong
command to the BBS and press BACKSPACE to delete the mistake, Script Learn
will not record the mistake or the BACKSPACE.

Response Delays
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Some BBS software may encounter problems with learned scripts in that the
commands may be sent too quickly.	The hallmark of this problem is that you
know the script is sending a response (i.e. you can see the SEND command in
the script) but the BBS doesn't seem to receive the command.  If this
happens, simply add a "Response Delay" to your BIF (screen 1): 

║ Receive Mail . .					 Response Delay . 10		    ║
								 ───────────────────
The script SEND command observes this delay set in the BIF.  A delay of 10
would cause all SEND commands to pause for one second (10 tenths of a
second) and this should eliminate the problem.

Activating Script Learn
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
When you turn Script Learn on, either by pressing [Alt-Q] or by selecting
"Learn" from the Main Menu, BBS Directory, or Terminal menu, you are first
asked whether you wish to "attach" the script to a BIF or Function Key, or
to leave it as a stand-alone script.

If you aren't attaching the script to a function key, you are asked for the
Script FILENAME.  Enter a filename that will remind you of what the script
does (the .SCR extension is implied; you needn't enter an extension unless
you want to use something other than .SCR), then press ENTER.  If you elect
to attach the script to a function key, the Script FILENAME is not needed.
Icom builds the filename according to the key pressed (please see
Attaching Learned Scripts for details).

All scripts, whether attached to a function key or not are saved in the
Script Directory (\ICOM\SCR).  If the script FILENAME you enter already
exists, or if there is already a script attached to the function key you
will be asked whether to Overwrite it, Add to the end (append to), or you
can View the existing script first to refresh your memory as to what it
does.

Script Learn will watch what you do from this point on, translating your
actions into the equivalent script commands (see Script Learn Commands),
and writing them to the script file on-disk.  If you are connected, BBS
text will be captured where appropriate so that the same response or action
happens at the same location on the BBS each time you run the script.  BBS
text that Script Learn captures from the BBS (which will appear between
double quotes after WAITFOR commands in the script) may have require
touching up before you use the script.	Editing Learned Scripts explains
where and how to perform these touch ups.

Pausing and Unpausing Script Learn
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
To temporarily pause Script Learn, press [Alt-Q] and select "Pause Learn
Mode" from the menu.  Nothing will be recorded to the script while paused. 
When you're ready to start recording again, press [Alt-Q] and select
"UnPause Learn Mode" from the menu.  This can be useful if something
unexpected happens that you don't want recorded such as if someone breaks
in for a chat.  As long as you pause Script Learn BEFORE you type any other
keys to respond to an unusual situation, your learned script will not be
affected.  It's only when you press keys (and only if pause is OFF) that
data is written to the learned script.

Turning Script Learn Off
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
When you have finished the task at hand, press [Alt-Q] and select "Learn
Mode OFF" from the menu.  If you automated an online task at a BBS, make
sure you "Edit" the script from the Script Manager to check the WAITFORs
before using it.

See also:
	Attaching Learned Scripts
	Script Learn Commands
«Script Learn translates your keystrokes, and data from the BBS, when
appropriate, into equivalent script commands.  In many cases the only
keystrokes you'll enter will be responses to the BBS.	However, Script
Learn does record many Intellicomm functions as well.	Below is the list of
the Icom functions Script Learn records, the key used to activate the
function, the equivalent script command put in the script by Script Learn,
and any special notes (in brackets).

NOTE: If doorway mode is on ([Alt-=]) then all extended keycodes are
translated into script SENDKEY commands (which sends the extended key to
the BBS) and none of the script translations below are active.

──────────────────────────────────────────────────────────────────────────
COMMAND			 HOTKEY		SCRIPT COMMAND / NOTES
──────────────────────────────────────────────────────────────────────────
Add Line Feeds 	[Shf-TAB] ASSIGN $LINEFEED x	(where x is 0 or 1)
Send Break		[Ctl-End] SENDBREAK
Editor			[Alt-A]	Ignored.
Scrollback		[Alt-B]	SCROLLBACK
Clear Screen		[Alt-C]	CLS
Echo 			[Alt-E]	ASSIGN $ECHO x (where x is 0 or 1)
Goto Manual		[Alt-G]	Ignored (for auto jobs only)
Init Modem		[Alt-I]	INITMODEM
DOS Shell 		[Alt-J]	DOS
Keystroke Buffer	[Alt-K]	Ignored unless you re-send a previous
						command; SEND "<previous command>" is used if
						you re-send a command.
Capture			[Alt-L]	CAPTURE "FNAME", CAPCLOSE, or CAPPAUSE
Hotkey 1			[Alt-N]	SENDKEY 12544 (the keycode for Alt-N)
Hotkey 2			[Alt-O]	SENDKEY 6144 (the keycode for Alt-O)
Port Settings		[Alt-P]	SETCOMM "<new_settings>" (only if changed)
Learn Menu		[Alt-Q]	Not recorded; controls learn mode status.
Chat 			[Alt-T]	CHAT
Archive Viewer 	[Alt-V]	SENDKEY 12032 (the keycode for Alt-V)
Show WHENs		[Alt-W]	Ignored (no WHENs are active during learn)
View/Edit BIF Notes [Alt-Y]	SENDKEY 5376 (the keycode for Alt-Y)
Upload			[PgUp]	UPLOAD "P" "FILE1 FILE2 ... " (*see below)
Download			[PgDn]	DOWNLOAD "P" "FILENAME.EXT" or ""
Terminal Menu		[Alt-Z]	Ignored unless you select something.
Send User Stats	[Alt-1]	through [Alt-0] translates to SEND "data",
						where "data" is what the key sent (if any).
Doorway Mode		[Alt-=]	ASSIGN $DOORWAY x (where x is 0 or 1).
Capture MARK		[Alt- ]	(Alt-Space) ignored.
Main Menu 		[Alt-M]	Ignored unless you do something at the menu
						such as changing to the BBS Directory and
						dialing a BBS, or enter the File Tagger, etc.
Job Directory		[Alt-R]	Ignored.	Scripts cannot run automated jobs.
BBS Directory		[Alt-D]	Ignored unless you select "Dial" or "Manual"
						and connect to a BBS.  If you select "Dial"
						and connect a 'DIAL "BIF Description" 1'
						command is added to the script (the 1 forces
						an exact match of the BIF Description).  If
						you select "Manual" and connect, a 'DIAL
						"^M<phone_number>"' is placed in the script. 
						^M signifies a manual number.
Script Manager 	[Alt-U]	Ignored unless you "Run" one or more scripts. 
						If you run a script a SCRIPT "SCRNAME.SCR"
						command is added where SCRNAME.SCR is the
						name of the executed script.	If you Tag/Run
						several scripts, multiple SCRIPT commands
						will be recorded.
File Manager		[Alt-F]	FILEMAN (enters the File Manager)
Exit to DOS		[Alt-X]	If you select "Yes" from the Exit to DOS
						menu, a SYSTEM command is added to the
						learned script (which exits to DOS). 
						Otherwise ignored.
File Tagger		[None]	TAGGER (enters the File Tagger)
Function Key		[F2-F12]	and all variations ([Alt], [Ctrl], [Shift])
						translate to either a SENDKEY <keycode>
						(where <keycode> is the code of the function
						key) or SCRIPT "SCRNAME", depending upon
						whether a script is attached to the function
						key or not.

All other keys are translated to either SEND or SENDNC (send with no
Carriage Return) commands, or SENDKEY commands if the key is an extended
keycode.	If you enter one or more keys followed by [Enter], SEND is used. 
If you enter one or more keys and the BBS starts sending text (i.e. if a
Carriage Return is received from the COM port) before you press [Enter], a
SENDNC is added to the script (it is assumed that 'hotkeys' are active on
the BBS, and [Enter] is not needed).  If you enter one or more regular keys
and then press an extended key before pressing [Enter], SENDNC is added
(the keys you pressed before the extended key) then a SENDKEY (or one of
the commands listed above in the table) is added.

In all cases above, if text was sent from the BBS prior to the command a
WAITFOR is placed in the script to ensure that the action takes place at
the same BBS location as when the script was originally learned.

* [PgUp] (UPLOAD) commands are sometimes translated into several script
commands, depending on how many files you upload.  The script processor
observes only the first 256 characters of a command line, so if lots of
files are uploaded (i.e. via the upload File Picker) Script Learn uses a
special technique to translate the task to script format.  Protocols (all
internal and most external) allow a LIST FILE to be passed as the filename,
in which case the protocol reads the LIST FILE to get the filenames to
upload instead of reading them from the command line.	In cases where all
filenames cannot be passed to the UPLOAD command within the 256 character
script line limit, Icom writes the following script commands (note that the
double underscores [__] preceding variable names below are simply used to
avoid any possible conflicts with other variable names you might define
later if you enhance the script):

 VARIABLE __FNAME $HOME_DIR "UPLIST.$$$"  ;define variable '__FNAME' and
						; store C:\ICOM\UPLIST.$$$ in it
 VARIABLE __FH 			;define a variable for the file handle
 FOPEN __FH __FNAME "w"		;creates C:\ICOM\UPLIST.$$$ in "w"rite mode
 FPUTS __FH "\DIR\FILE1.EXT"	;writes the first filename to UPLIST.$$$
 FPUTS __FH "\DIR\FILE2.EXT"	;writes the second filename to UPLIST.$$$
  ; ...etc.
 FCLOSE __FH				;closes the file
 STRINS __FNAME "@" 0 1		;@C:\ICOM\UPLIST.$$$ (insert @)
 UPLOAD "x" __FNAME 		;where "x" is the protocol letter
						; The protocol then reads UPLIST.$$$ to get
						; the filenames to upload (as mentioned
						; earlier, all internal protocols support
						; this as do most external protocols).
 STRDEL __FNAME 0 1 		;lose the @ (delete 1st char)
 DELETE __FNAME			;delete the list

If you don't understand the above script commands, suffice to say the end-
result is that all files get uploaded, no matter how many filenames you
upload in a batch while Script Learn is on.
This example outlines how to use Script Learn to automate an online (BBS)
task from the BBS main menu.	With Script Learn it's up to you to decide
whether you want the script to dial and logon itself, or whether you want
to let Icom do the logon via an automated job/BIF, then to run the script
from a job Custom Command.  Letting Icom do the logon (i.e. using
BIF Learn to the point of a successful logon) is the more reliable of the
two methods, and that's what this example covers.

SLearn/Stand Alone Scripts provides an example of using Script Learn to
dial and logon.

CREATING THE SCRIPT
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Since you'll want this script to run from the BBS main menu (i.e. after
Icom has logged on), the first thing you must do is either Run your "Logon
- BIFNAME" job, or access the BBS Directory (Script Learn is OFF at this
point), hilight the BIF, and select "Dial" to connect and logon.
BIF Learn (or manual BIF setup) must already have been used to the point of
a successful automated logon for this example.

When you reach the BBS main menu and Icom switches to manual, press [Alt-
Q], select "Script Learn", select "No" when asked to attach to a Function
Key, then enter a filename that will remind you of what the script does
(the .SCR extension is implied).  I.e. if the script will capture a BBS
bulletin, you might call it BLTCAP.SCR.  "SLearn" then blinks on the status
line to show you that Script Learn is active.

Next, enter the BBS and/or Icom hotkey commands (open a new capture file,
etc) to carry out the task at-hand, doing things just as you would
normally.  If something unexpected happens that you don't want included in
the learned script (i.e. if someone wants to Chat with you) press [Alt-Q]
and select "Pause Learn Mode" from the menu (do the same again to UnPause
it when you're back to where you want to be).  When the task is complete
and you and have returned to the BBS Main Menu (always return to the BBS
menu you started from) press [Alt-Q] again and select "Learn Mode OFF". 
The "Slearn" at the bottom of the screen will then be replaced with
"Manual" to show that you're back in manual mode.  Logoff the BBS and
disconnect.

The next step is to edit the script to ensure that no 'variable' text was
captured in any of the BBS prompts.  To do so, press [Alt-U] to enter the
Script Manager, hilight the script that was just created and select "Edit". 
Once you've removed any variable text from the WAITFORs, re-save the script
and exit the editor (see Editing Learned Scripts for details).

USING THE SCRIPT
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
To use the script manually, enter the BBS Directory, hilight the BBS you
created the script on, and select "Dial".  When you reach the Main Menu,
press [Alt-U] to call up the Script Manager, hilight the script and select
"Run".

Attaching the script to an automated job will allow you to simply select
"Run" from the Job Directory to carry out the dialing, logon, running of
the script, and logoff.	To go this route, enter the Job Directory (press
[Alt-R]), select "Create", then hilight the BBS the script was learned on
and choose "Select" from the bottom menu.  From the Job Editor, enter 12 to
define a Custom Command task, and enter @SCRIPTNAME as the command (where
SCRIPTNAME is the Script FILENAME you used for the script).  We'll assume
the learned script was named BLTCAP.SCR for the example:

║ 12  Custom Command/Run script	    │   CC: @BLTCAP 			   ║

The job should look like this:

	Call The BBS
	  CC: @BLTCAP

You could also add the same Custom Command task to another job (which
contains a "Call" to the same BBS), but if you do make sure that Icom is at
the same BBS menu when it runs the script as it was when it learned it.  If
the BBS uses a separate Message Menu (or a Qmail door, etc), you cannot do
this:

	Call The BBS
	  Send message replies
	  Get all new mail
	  CC: @BLTCAP

If you did, Icom would be at the Message Menu when it ran the script, and
the script would fail.  In this case you could either move the CC: above
the two mail tasks, or could use the Change BBS/File Areas task to get back
to the Main Menu prior to running the script:

║ 10  Change BBS/File Areas		    │   New Area: [L]			   ║

The job would look like this:

	Call The BBS
	  Send message replies
	  Get all new mail
	  New Area: [L]
	  CC: @BLTCAP

The [L] tells Icom to change to the 'logon' menu (the Main Menu) from
whichever menu it happens to be at (assuming the BIF contains the proper
BBS command to exit the message menu ("Leave Message Menu") on the BIF
"Message" screen).	In a "Change BBS/File Areas" task, [L] is the Main
Menu, [M] is the Message Menu, [F] is the File Menu, [B] is the Bank Menu. 
The square brackets are used to change menus rather than changing file
areas (BBS conferences, etc).  See Change BBS/File Areas for more details.

See also:
	SLearn/Stand Alone Scripts
┘This example outlines use of Script Learn for a complete BBS session.  With
other communications programs which don't have built-in automation routines
and a BIF Learn mode, scripts are the only way to automate tasks.  But with
Intellicomm it really makes little sense to use a script to logon the BBS
since BIFs and the internal automation routines are much more reliable and
can cope with unexpected happenings at the BBS (such as an unceremonious
loss of connection).  Learned scripts cannot recover from logon errors and
will fail if anything unexpected happens during the logon.	
However, if you simply cannot get a BIF to logon a BBS a learned script is
better than nothing, and with a bit of experience and perusal of
SCRTUTOR.DOC and SCRIPT.DOC you CAN make your scripts quite reliable by
using WHEN/WAITFOR (WHEN allows scripts to watch for multiple BBS prompts
at the same time) and designing your own error-handling, instead of using
learned scripts as is.  It also depends on the BBS and your telephone line. 
If you rarely lose connections, and if logons are always straightforward,
Script Learn will be reliable.

NOTE: BIFs used for manual dialing or script logons such as in this example
should contain nothing more than the BBS/Host Name, telephone numbers, and
proper port settings (baud, parity, etc).  Hilight the [Blank Template] and
select "Create" from the BBS Directory to start with a clean BIF.  In cases
where you want a script to handle everything the BIF needn't contain any
BBS prompt/response information at all.  More importantly, the dialer
determines whether to use Icom's internal logon routines after connecting
by checking to see if you've entered a logon password in the BIF.  If you
have, then Icom tries to perform an auto-logon using the BIF information. 
Thus you should make sure that there is no password defined in the BIF if
you intend to use a SCRIPT to handle the logon.

Okay, on to the example.  Since you want this learned script to handle
everything from dialing onwards, the first step is to turn Script Learn on. 
Press [Alt-Q], select "Script Learn", select "No" when asked to attach to a
function key, then enter a Script FILENAME that will remind you of the task
at hand.

Next, press [Alt-D] to access the BBS Directory, hilight the BIF of
interest (one WITHOUT a logon password defined) and select "Dial".

When you connect, carry out the logon and whatever other tasks you want to
automate.  If something unexpected happens that you don't want included in
the learned script (i.e. if some mail is waiting for you and you have to
read it) press [Alt-Q] and select "Pause Learn Mode" from the menu (do the
same again to UnPause it when you're back to where you want to be).

You can either logoff the BBS and press [Alt-H] to hangup when you're done,
or can turn Script Learn off while online so that the script will leave you
online when it finishes.  Whichever is the case, press [Alt-Q] and select
"Learn Mode OFF" when you're finished.

The next step is to edit the script to ensure that no 'variable' text was
captured in any of the BBS prompts.  To do so, press [Alt-U] to enter the
Script Manager, hilight the script that was just created and select "Edit". 
Once you've removed any variable text from the WAITFORs, re-save the script
and exit the editor (see Editing Learned Scripts for details).

USING THE SCRIPT
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
To use this script, you can either Run it from the Script Manager (make
sure you're offline when you do so, since the script dials a BBS) or can
run it from the DOS command line (a .BAT file, menu system, etc) using the
/scr:SCRIPTNAME command line option.  You cannot attach the script to an
automated job or use it as a BIF response since it dials a BBS.

See also:
	SLearn/Automated Jobs
▒
To automate a logon using a script, activate Script Learn by pressing [Alt-
Q].	Then do the following (you might want to print this help screen by
setting up your printer and pressing [Alt-P], so you can follow along):

■ Press [Alt-D] to enter the BBS Directory, hilight the [Blank Template]
and select "Create".  Enter the proper BBS/Host Name, telephone number(s)
and Port Settings, eXit and save the BIF information using a unique
filename.

■ Select "Learn" from the BBS Directory bottom menu, then "Script Learn".

■ It's up to you whether you want to attach the script to a function key or
not.  If you do attach it, you'll be able to dial and auto-logon from most
any Icom location, by pressing a single function key.	If you don't, you
can dial and auto-logon by "Run"ning the script from the Script Manager, or
by having a .BAT file or menu program (or Windows/DESQview, etc) send the
command ICOM /scr:SCRNAME (where SCRNAME is the name you'll enter in a
second).

■ If you elected NOT to attach the script to a function key, enter a
filename, when asked, that will remind you of what the script does.

■ When Script Learn is activated, hilight the BIF you created above (if
necessary), and select "Dial".

■ When you are online, perform your logon manually -- making sure you don't
"anticipate" any questions and answer them before the full BBS prompt is
displayed.  Script Learn captures the text to the immediate left of the
cursor (the BBS prompt) when you enter the first keystroke of each response
to the BBS.

■ When you reach the BBS's Main Menu, feel free to perform any setup work
you usually perform (Joining a specific conference, or anything else you'd
like the script to do for you every time it logs on), then press [Alt-Q]
and select "Learn Mode OFF" from the menu.

Your script is now complete, but may not be quite ready for use yet. 
Logoff the BBS and hangup with [Alt-H] if necessary, then press [Alt-U] to
change to the Script Manager.  Hilight the script you just created and
select "Edit".  See Editing Learned Scripts for full details on touching up
the learned script (if you're reading a printout right now, press [F1] for
help once in the Editor, press [Shift-F1] to pop up the Help Index, and
pick the Script Language link to get at the Editing Learned Scripts link).

Once you're finished touching up the script (if any changes were necessary;
sometimes they're not) press [Esc] to exit the Editor, answer "Yes" when
asked whether to save the changes, and "Yes" again to overwrite the
existing script.  Now just select "Run" to see the result of your efforts,
to be enjoyed forever more!  (Or, rather, until the Sysop decides to change
some BBS prompts on you.)

See also:
	BIF Logons
wWhen a script is created with Script Learn, Icom captures BBS text where
key actions are performed, so that the action will occur at the same BBS
location as when the script was originally learned.  The script has to
ensure that the command or action (such as a download) is carried out at
the proper BBS prompt.

This is accomplished with the WAITFOR command which causes a script to
pause until certain text comes in from the BBS.  However, it's impossible
for Icom to distinguish constant BBS text from text which might vary, such
as your time remaining online, or the current time of day, or the current
BBS conference/area, etc., if such information was used in the BBS prompt. 
For example:

WAITFOR "[10:00am] Command? " 120 ERROR

The above WAITFOR would fail unless it happened to be exactly 10:00am every
time you executed the script.  The solution is to get rid of the varying
text:

WAITFOR "] Command? " 120 ERROR

The WAITFOR above would now work fine no matter what time of day it was. 
You must check all Learned scripts (and BIFs as well) for this sort of
thing and edit out BBS text that will vary from session to session.
╘For general information on script learn mode see Script Learn.

Attaching a Learned Script
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
When you turn Script Learn on, you are asked whether you wish to attach the
script to a Function Key or not.

If you don't wish to attach the script to a Function Key, select "No", and
Icom will simply prompt you for a Script FILENAME.  You can later execute
the script from the Script Manager, DOS command prompt, or from a job
Custom Command or BIF, just as you would any other script (see SCRTUTOR.DOC
for all the details).

If you attach the learned script to a function key, the script will be
executed whenever you press that function key.  You will not be asked for a
Script FILENAME in this case since the script filename is automatically set
to the Keyboard Codes of the function key you press.  For example, the
Keyboard Code for the [F2] key is 15360.  If you elect to attach a learned
script to the [F2] key, Icom will create a script called 00015360.SCR in
the Script Directory and whenever you press [F2] from that point on,
00015360.SCR will be executed.  To un-attach the script, or to attach it to
another function key, you can either Delete or Rename it from the
Script Manager.

See the Keyboard Codes to attach the script to a different function key
(i.e. Rename the script), and don't forget to pad the left side of the
Script FILENAME with zeros so that it is eight characters long.	Renaming
00015360.SCR to 00021760.SCR moves it from [F2] to [Shift-F2] (21760 is the
Keyboard Code for Shift-F2).	If the Keyboard Code used in the script
filename is not a function key (or is one of the [F1] variations) the
script will not execute when you press the key.  The [F1] key is reserved
for online help, [Shift-F1] calls up the Hotkey Menu (to change Icom
areas), [Alt-F1] and [Ctrl-F1] are reserved for future expansion, all of
the [Alt-letter] and [Alt-number] keys are used up for terminal and other
hotkeys, and all other keys are used for other purposes.
╙The tables below list all keys on a standard IBM XT or enhanced (101 key)
AT keyboard.  Note that the [F11] and [F12] function keys are only
available on AT (101 key) keyboards, so avoid using these two keys if
you'll be distributing your script to the general public.

The 'Key' column lists the actual key, the 'Norm' column lists the code of
the key when pressed alone (without [Shift], [Ctrl] or [Alt]), the 'Shift'
column lists the code of the key when pressed in combination with either
the left or right [Shift] key, the 'Ctrl' column lists the code of the key
when pressed in combination with either the left or right [Ctrl] key,  and
the 'Alt' column lists the code of the key when pressed in combination with
either the left or right [Alt] key.

The most common use of these tables is for use with the INKEY, INKEYW
INKEYT and SENDKEY commands, or with the $HOTKEY_? variables.  The numbers
and/or characters in the tables below show you how to check or specify a
given key press.

Please see the Keyboard Codes Appendix in SCRIPT.DOC for a full explanation
of Keyboard Codes.

Key	  Norm	 Shift	Ctrl 	Alt 
───────────────────────────────────────────────────────────────
 A	    "a"	   "A"	 "^A"	7680
 B	    "b"	   "B"	 "^B"    12288
 C	    "c"	   "C"	 "^C"    11776
 D	    "d"	   "D"	 "^D"	8192
 E	    "e"	   "E"	 "^E"	4608
 F	    "f"	   "F"	 "^F"	8448
 G	    "g"	   "G"	 "^G"	8704
 H	    "h"	   "H"	 "^H"	8960
 I	    "i"	   "I"	 "^I"	5888
 J	    "j"	   "J"	 "^J"	9216
 K	    "k"	   "K"	 "^K"	9472
 L	    "l"	   "L"	 "^L"	9728
 M	    "m"	   "M"	 "^M"    12800
 N	    "n"	   "N"	 "^N"    12544
 O	    "o"	   "O"	 "^O"	6144
 P	    "p"	   "P"	 "^P"	6400
 Q	    "q"	   "Q"	 "^Q"	4096
 R	    "r"	   "R"	 "^R"	4864
 S	    "s"	   "S"	 "^S"	7936
 T	    "t"	   "T"	 "^T"	5120
 U	    "u"	   "U"	 "^U"	5632
 V	    "v"	   "V"	 "^V"    12032
 W	    "w"	   "W"	 "^W"	4352
 X	    "x"	   "X"	 "^X"    11520
 Y	    "y"	   "Y"	 "^Y"	5376
 Z	    "z"	   "Z"	 "^Z"    11264
 1	    "1"	   "1"	  N/A    30720
 2	    "2"	   "2"	  768    30976
 3	    "3"	   "3"	  N/A    31232
 4	    "4"	   "4"	  N/A    31488
 5	    "5"	   "5"	  N/A    31744
 6	    "6"	   "6"	  N/A    32000
 7	    "7"	   "7"	  N/A    32256
 8	    "8"	   "8"	  N/A    32512
 9	    "9"	   "9"	  N/A    32768
 0	    "0"	   "0"	  N/A    33024
 ,	    ","	   ","	  N/A    13056
 .	    "."	   "."	  N/A    13312
 /	    "/"	   "/"	  N/A    13568
 ;	    ";"	   ";"	  N/A	9984
 '	    "'"	   "'"	  N/A    10240
 [	    "["	   "["	 "^["	6656
 ]	    "]"	   "]"	 "^]"	6912
 `	    "`"	   "`"	  N/A    10496
 -	    "-"	   "-"	 "^-"    33280
 =	    "="	   "="	  N/A    33536
 \	    "\"	   "\"	 "^\"    11008

Key	  Norm	 Shift	Ctrl 	Alt 
───────────────────────────────────────────────────────────────
F1	  15104	 21504	24064    26624
F2	  15360	 21760	24320    26880
F3	  15616	 22016	24576    27136
F4	  15872	 22272	24832    27392
F5	  16128	 22528	25088    27648
F6	  16384	 22784	25344    27904
F7	  16640	 23040	25600    28160
F8	  16896	 23296	25856    28416
F9	  17152	 23552	26112    28672
F10	  17408	 23808	26368    28928
F11	  34048	 34560	35072    35584
F12	  34304	 34816	35328    35840
Enter   "^M"	  "^M"	 "^J"	7168
Ins	  20992	 20992	37376    41472
Del	  21248	 21284	37632    41728
Esc	   "^["	  "^["	 "^["	 256

NOTE: The values in the table below assume that [Num Lock] is OFF.  If
[Num Lock] is ON, and the numeric keypad [Home], [End], etc., keys are
used, the 'Norm' and 'Shift' fields will be REVERSED.	I.e. if [Num Lock]
is ON, [Home] will be key code "7" and [Shift-Home] will be key code 18176.

The extended cursor control keys on AT-type keyboards (the cursor keys that
are separated from the numeric keypad) return the same value for both
'Norm' and 'Shift', regardless of the state of [Num Lock].	I.e. whether
[Num Lock] is on OR off, the extended [Home] key will always return 18176,
and [Shift-Home] will also return 18176.  Extended or "enhanced" (101 key)
keyboard hardware DOES make a distinction between the extended cursor
control key codes, and the numeric keypad cursor control key codes. 
Intellicomm's keystroke handler simulates the same key code for either
though (either the extended [Home] key or the numeric keypad [Home] key for
example), to simplify keyboard handling.

Key	  Norm	 Shift	Ctrl 	Alt 
───────────────────────────────────────────────────────────────
Home   18176	   "7"	30464    38656
End	  20224	   "1"	29952    40704
PgUp   18688	   "9"	33792    39168
PgDn   20736	   "3"	30208    41216
Up	  18432	   "8"	36096    38912
Down   20480	   "2"	37120    40960
Left   19200	   "4"	29440    39680
Right  19712	   "6"	29696    40192
Tab	   "^I"	  3840	37888    42240
BckSpc  "^H"	  "^H"	  " "	3584
Kpad 5 19456	   "5"	36608	 N/A
Grey *  "*"	   "*"	38400	 N/A
Grey -  "-"	   "-"	36352    18944
Grey +  "+"	   "+"	36864    19968
@	Using the codes below, you can create your own colors for use with the
script SCROLL (scroll or clear an area of the screen) and PRINTRAW commands
(print directly to the screen in a specific color).  You can also ASSIGN
custom colors to the color variables Icom uses: $NORM_COLOR, $BOLD_COLOR,
$BORDER_COLOR, etc., to draw menus (BARMENU, etc) and boxes (BOX) in
different colors.

If your script is going to be used by others it is recommended that you do
NOT use custom colors in your script.  Laptop and monochrome displays
cannot display all colors properly, so even if your script looks good on
your screen, it is possible that it will be unreadable on someone else's
screen.

To create a custom color first pick your background color from the table
below (the number of the color).  Background colors can be ONLY the colors
listed in the first column of the table (0-7).  If you try to use a
background color above 7, the foreground color will BLINK.	Once you have
your background color, multiply it by 16, then add the foreground color. 
Any of the 16 colors (0-15) may be used for a foreground color.	The
formula to create a color (and the background color limitation of using
only 0-7) has nothing to do with the script language; it's simply how IBM-
compatible video adaptors work.  The formula is (* being multiplication):

				COLOR = background * 16 + foreground

				0  Black			   8 Dark Grey 
				1  Blue			   9 Light Blue
				2  Green			  10 Light Green
				3  Cyan			  11 Light Cyan
				4  Red			  12 Light Red
				5  Magenta		  13 Light Magenta
				6  Brown			  14 Yellow
				7  Light Grey		  15 White

						+128  Blink

For example, to display white foreground text on a red background you'd
multiply 4 (Red) by 16, then add 15 (White).  The number you come up with
(79) could then be used in PRINTRAW and SCROLL commands, or could be
ASSIGNed to the various COLOR System Variables to change the colors Icom
uses with the BOX, BOXGETS, MENUBAR, etc. commands.  With PRINTRAW the
color is the 3rd parameter:

  PRINTRAW $SCRN_X $SCRN_Y 79 "White text on a red background"

To make the foreground text blink on and off, just add 128 to the color
value end-result.  79 was the value we came up with for White text on a Red
foreground; to make the White text blink add 128 (79 + 128 = 207):

 PRINTRAW 1 1 207 "White blinking text on a red background"
SHandy help links for use while in debug mode:
	Script Language	Keyboard Codes
	SCRIPT.DOC		SCRTUTOR.DOC
	ASCII Codes		Extended ASCII Codes

The following keys are active when the Script Debugger is active (debug
mode in general is explained below):

[Alt]	press and hold the [Alt] key to display the script line in its
		original format (showing variable names instead of the contents
		of variables).  When you release the [Alt] key the variable
		contents will be displayed again.
[Right]	the right arrow cursor key (or right mouse motion) scrolls the
		line being displayed right, if it's longer than can be displayed
		on the screen.
[Left]	the left arrow cursor key (or left mouse motion) scrolls the line
		being displayed left again after using [Right].
[Space]	or [Enter] (or the left mouse button) executes the script line
		being displayed (step-by-step mode).
[Alt-Q]	(Quit) can be used to abort a script without aborting the
		automated job that called the script (if the script was called
		via a job Custom Command or from a BIF command), or to abort both
		the job and the script.	[Alt-Q] is also used to change debug
		modes from 'step-by-step' to 'animate' or vice versa, or to turn
		debugging off.

The following 'hotkeys' can also be used in debug mode.  When you exit from
the called task you'll return to debug mode exactly as it was before you
pressed the hotkey:

[Alt-A]	Run editor (either internal or external, as defined in the Icom
		main setup).  NOTE: if you modify your script when in the
		external editor, it will NOT affect the script Icom is running
		(which is in memory).  You must abort and re-start the script
		before any changes take effect.
[Alt-J]	Jump to DOS shell.	Type EXIT from the DOS prompt to return.
[Alt-N]	User-defined Hotkey 1, as defined in the Icom main setup.
[Alt-O]	User-defined Hotkey 2, as defined in the Icom main setup.
[Alt-V]	Run external Archiver.

Script Debug Mode
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Script debug mode causes Icom to pause and display each script line (with
variables replaced to show the CONTENTS of the variable, where applicable)
prior to executing it.  Please perform a search for USING THE SCRIPT
DEBUGGER in SCRTUTOR.DOC for detailed information.

To turn debug mode on or off, either press [Alt-Q] (Quit, normally used to
abort a job or script) and select the various "Script DEBUG Mode" options
from the Alt-Q menu, or use DEBUG 1 (Step-by-Step) DEBUG 2 (Animate) or
DEBUG 0 (debug OFF) in your script.  You can also debug a single variable
by specifying DEBUG <variable>, where <variable> is the variable name.

Once script debugging is on, Icom will display each script line on the
bottom screen line in the following format, prior to executing it:

line#: COMMAND "parameter 1" "parameter 2" ...

'Line#' is the script line number, COMMAND is the command that is about to
be executed, and "parameter x" are the parameters (if any) following the
command.	If the parameter is a NUMBER, it may be displayed without quotes
around it (quotes are not required around numeric parameters).  If one or
more script variables are specified as parameters, the CONTENTS or value of
the variable is displayed, rather than displaying the variable name.	For
example, if the script command was PRINT $BIF_NAME Icom would display this
prior to executing the line:

line#: PRINT SOMEBIF

where SOMEBIF was the currently loaded BIF.

Step-by-step mode pauses each line until you press [Space] or [Enter]. 
Animate mode pauses each line for half-a-second (two lines per second) and
doesn't require a keypress.  Use [Alt-Q] to toggle the debugging mode from
step-by-step to animate or vice versa.
≡Below is the American Standard Code for Information Interchange (ASCII),
which assigns Numbers (the Num column) to all the letters and symbols (the
Char column) used on most personal computers.  Since computers understand
numbers and numbers only, someone had to assign numbers to all the letters
and symbols we humans use; so computers could communicate with us.  Below,
you will find these numbers, and (in the first column) the "Control Code"
equivalent (in the Char column) you can use in most script commands, to
specify control characters.  For example, to send [Esc] to a BBS, you'd use
SEND "^[" in a script; to send a Line Feed, you'd use SEND "^J", etc. 
[Works with any script command that takes a parameter, not just SEND.]

		 Num Char Name    Num Char	 Num Char     Num Char
		 ─────────────    ────────	 ────────     ──────── 
		  0	 ^@	NUL	    32		  64    @ 	96	 `
		  1	 ^A	SOH	    33	!	  65    A 	97	 a
		  2	 ^B	STX	    34	"	  66    B 	98	 b
		  3	 ^C	ETX	    35	#	  67    C 	99	 c
		  4	 ^D	EOT	    36	$	  68    D     100	 d
		  5	 ^E	ENQ	    37	%	  69    E     101	 e
		  6	 ^F	ACK	    38	&	  70    F     102	 f
		  7	 ^G	BEL	    39	'	  71    G     103	 g
		  8	 ^H	BS	    40	(	  72    H     104	 h
		  9	 ^I	HT	    41	)	  73    I     105	 i
		 10	 ^J	LF	    42	*	  74    J     106	 j
		 11	 ^K	VT	    43	+	  75    K     107	 k
		 12	 ^L	FF	    44	,	  76    L     108	 l
		 13	 ^M	CR	    45	-	  77    M     109	 m
		 14	 ^N	SO	    46	.	  78    N     110	 n
		 15	 ^O	SI	    47	/	  79    O     111	 o
		 16	 ^P	DLE	    48	0	  80    P     112	 p
		 17	 ^Q	DC1	    49	1	  81    Q     113	 q
		 18	 ^R	DC2	    50	2	  82    R     114	 r
		 19	 ^S	DC3	    51	3	  83    S     115	 s
		 20	 ^T	DC4	    52	4	  84    T     116	 t
		 21	 ^U	NAK	    53	5	  85    U     117	 u
		 22	 ^V	SYN	    54	6	  86    V     118	 v
		 23	 ^W	ETB	    55	7	  87    W     119	 w
		 24	 ^X	CAN	    56	8	  88    X     120	 x
		 25	 ^Y	EM	    57	9	  89    Y     121	 y
		 26	 ^Z	SUB	    58	:	  90    Z     122	 z
		 27	 ^[	ESC	    59	;	  91    [     123	 {
		 28	 ^\	FS	    60	<	  92    \     124	 |
		 29	 ^]	GS	    61	=	  93    ]     125	 
		 30	 ^^	RS	    62	>	  94    ^     126	 ~
		 31	 ^_	US	    63	?	  95    _     127	DEL

See also:
	Extended ASCII Codes
	Keyboard Codes
	Color Codes
	The characters listed below are not part of the standard ASCII set, but are
extended characters IBM PC's use.	The corresponding symbol for each number
may or may not be the same on other computer types (Apple Macintosh
computers, for example, have a different Extended ASCII Code set).  Thus,
it's best not to SEND (transmit via a script) the characters below to
another computer; unless you're sure you're dealing with another IBM PC. 
To enter any of the characters below in Icom's Text Editor, and in most any
other program on your computer in fact, hold down the [Alt] key, type the
numbers in the "Num" column on the NUMERIC KEYPAD (not the number keys
along the top of the keyboard) then release the [Alt] key.	For example, to
enter Ç you'd press and hold [Alt], type [1], [2], [8] on the numeric
keypad (128 being the Number for Ç), then release [Alt].  The character
will then be displayed.

		 Num Char     Num Char	  Num Char	Num Char
		 ────────     ────────	  ────────	──────── 
		 128   Ç	    144	É	  192   └ 	208	 ╨ 
		 129   ü	    145	æ	  193   ┴ 	209	 ╤ 
		 130   é	    146	Æ	  194   ┬ 	210	 ╥ 
		 131   â	    147	ô	  195   ├ 	211	 ╙ 
		 132   ä	    148	ö	  196   ─ 	212	 ╘ 
		 133   à	    149	ò	  197   ┼ 	213	 ╒ 
		 134   å	    150	û	  198   ╞ 	214	 ╓ 
		 135   ç	    151	ù	  199   ╟ 	215	 ╫ 
		 136   ê	    152	ÿ	  200   ╚ 	216	 ╪ 
		 137   ë	    153	Ö	  201   ╔ 	217	 ┘ 
		 138   è	    154	Ü	  202   ╩ 	218	 ┌ 
		 139   ï	    155	¢	  203   ╦ 	219	 █ 
		 140   î	    156	£	  204   ╠ 	220	 ▄ 
		 141   Ä	    157	¥	  205   ═ 	221	 ▌ 
		 142   Ä	    158	₧	  206   ╬ 	222	 ▐ 
		 143   Å	    159	ƒ	  207   ╧ 	223	 ▀ 
		 160   á	    176	░	  224   α 	240	 ≡
		 161   í	    177	▒	  225   ß 	241	 ±
		 162   ó	    178	▓	  226   Γ 	242	 ≥
		 163   ú	    179	│	  227   π 	243	 ≤
		 164   ñ	    180	┤	  228   Σ 	244	 ⌠
		 165   Ñ	    181	╡	  229   σ 	245	 ⌡
		 166   ª	    182	╢	  230   µ 	246	 ÷
		 167   º	    183	╖	  231   τ 	247	 ≈
		 168   ¿	    184	╕	  232   Φ 	248	 Φ
		 169   ⌐	    185	╣	  233   Θ 	249	 Θ
		 170   ¬	    186	║	  234   Ω 	250	 Ω
		 171   ½	    187	╗	  235   δ 	251	 √
		 172   ¼	    188	╝	  236   ∞ 	252	  
		 173   ¡	    189	╜	  237   φ 	253	 ²
		 174   «	    190	╛	  238   ε 	254	 ■
		 175   »	    191	┐	  239   ∩ 	255	 

See also:
	ASCII Codes
	Keyboard Codes
	Color Codes

Coming soon to an Icom script near you... LEAN and FAST compiled scripts! 
'Compiled' normally implies that an .EXE file is produced, though that
usually isn't how it works with script and macro languages.  Icom will
tokenize the text script into a more compact format, replacing lengthy
command lines with just a few bytes of symbolic code, removing comments and
'whitespace' (CR/LF, spaces, tabs), etc., which means the compiled version
of scripts that Icom runs will take up less memory, and will run much, much
faster!  You'll still write scripts as usual and will still debug them as
usual, and won't notice any difference in the way you design your scripts
(i.e. don't hold off on script writing to wait for the compiled scripts). 
Before running a script, Icom will check the date/time stamp on your .SCR
file, and will look on-disk for the compiled version of the same script
(same filename with an .SCC extension or the like).  If the compiled
version is older than the text version, which will be the case when you
modify the .SCR file... Icom will automatically re-compile.  It'll be
totally seamless and behind the scenes.  You won't notice any difference
other than improved script execution speed and lower memory usage.

Compiled scripts will also have other advantages: If you wish, you can
distribute ONLY the compiled version of the script making it virtually
impossible for people to place nasty commands in your script (the compiled
script will also have a CRC built-in so Icom can check its integrity). 
This keeps your source code, which is necessary to modify and/or add to the
script, from prying eyes, making it virtually impossible for someone else
to capitalize on your work.  Variable names will be gone... labels will be
gone... command names will be gone... and the compiled version of the
script will just look like a bunch of garbage to anyone but Intellicomm. 
And without the source code, the debugger won't work either so people will
not be able to go into step-by-step mode to analyze the code.

Yet another benefit will be enhanced error-checking.  Icom will have to
give the entire script the once over to compile it, and thus it will be
able to point out all errors BEFORE you actually run the script.  With non-
compiled scripts, errors must be run across (during execution) before they
are noticed.

I was within minutes of re-writing the script interpreter to support
compiled scripts, but slapped myself in the face instead in order to get
v2.0 released.  It was months overdue.	So here's to whichever future
release we can squeeze this into!
