filekey : ; #
:Copyright (c) 1994, 1995, 2002, 2003 Timothy Rue (3seas@threeseas.net)
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the file fdl.html
======================================================
ai.iq (initial iq parseability added - Aug. 2003)
-------------------------------------------------------------------------------
:
*** AI is the Virtual Interaction configuration (VIC) launch program ***
(AI) Alternating-Interface
:Brief:
AI - Setup, Start and Stop a VIC, and VIC external control.
This includes VIC to VIC communication and control.
:Specific:
(AI) Alternating-Interface - The concept of "AI" is to start-up a
Virtual Interaction Core (VIC) with options of setting the basic
starting contents of the configuration parts and to also shut a VIC
down. AI is also used to allow one VIC to communicate and control
another. It is one way to access a VIC from an external program.
; ON VIC NAMES and NUMBERS:
A name may be given to a VIC to allow accessing a VIC by name
but also a number is automaticly assigned to each VIC at startup.
The number is automatic and unique but the name need not be unique.
Both name and number are used together to distinguish between VICs
of the same name. If a name is given more than once, the number is
in relationship to the active count of the name use. If no name is
given the number is in relationship to VICs with no name. Numbers
start with '0' and any new VIC with the name will be numbered one
higher than the highest existing given name number.
In using VIC name/# as arguments, if the number part of the
argument is omitted the VIC with the given name and *Highest*
number will receive the line. This applies to all references of VIC
name/# arguments given below.
; ON UNIQUE ACCESS and CONTROL:
AI is unique from the other external access points of a VIC. It
is unique in that the VIC does not need to know ahead of time where
it is getting input from. SF, IQ, and ID are other ways to
externally access a VIC.
From a programmers perspective AI makes use of SF and PK in
setup, start, control, and shutdown of a VIC. AI also keeps an
internal list of all information or data it needs to perform its
functionality. This could be in the form of a list of directory
paths to all VICs, and inherently included VIC name(s) and number
counts. This internal list might be a simple ASCII alpha-numeric
list of VICs, each followed by its directory path and then
software code address. This is of course, to be determined in
creating the VIC program code.
On initial startup of a VIC, AI works as a typical command with
argument/options. Once up, the VIC can be accessed by the name/#
by running AI again with the existing name/# argument. The
limitation of this is: only one SF line can be entered at a time,
but if more than one line is needed, the one line can tell the VIC
where to get the rest.
; AI TOP PRIORITY:
AI has top priority over the other commands within a VIC. AI
can be considered the master external control of a VIC. Any AI
command given to a VIC, is processed ASAP. Meaning the current step
in progress will finish, then the AI command.
If run from a command line shell or another VIC, the VIC
detaches itself from the shell or VIC, allowing the shell or VIC to
continue it's work.
On initial execution of a new VIC, AI sets up the PK-file and
makes available the internal commands. The PK-file, default or
otherwise, is loaded first so that any other arguments are written
over in their proper location within the PK-file.
; ON DIRECTORY CREATION AND USE:
(Note: Due to the abilities of the VIC, it is easy to get around
much of the following in regards to file alteration. But not
through built-in abilities of the VIC. Also, for most applications
the following will be little used or should be used as little as
possible, in effort to keep things simple. In other words, don't
use more than you really need.)
A default "home" directory can exist while not needing to be in
the system path or current directory. This is done by assignment of
"VIC-HOME" to the selected directory. If this assignment is not
made prior to the initialization of the first VIC, then the current
directory will be the "VIC-HOME" directory. In any case, it is
possible to have two "VIC-HOME" directories. One by assignment via
user/system and the one that is used upon initialization of the
first VIC. These may be the same but the user/system assignment may
be changed. In determining which "VIC-HOME" to use, the user/system
assignment is looked for first. If not found, then uses the initial
"VIC-HOME".
Each VIC, including the first, will have it's own directory
"room", if it doesn't exist it will be created. The placement of a
VIC directory "room" will be as a sub-directory of either the
"VIC-HOME" directory or as a sub-directory of the VIC "room" that
started it. The name of the directory "room" is taken from the
"name/#" the VIC is given at startup.
The purpose of doing this is to allow the possibility of VICs
using the same files but modifying and saving different versions.
And has the added benefit of creating a SPAWN MAP (from the
directory tree.) Thus, giving a method of organization, structure,
and control of multi-VIC file usage.
THE RULES OF USE: NO VIC is allowed to modify or delete another
VICs "room" files but can make copies into it's own "room".
However, a VIC can be commanded, by another VIC, to modify or
delete it's "room" files. These files will generally be the
PK-files, OI-files, and KE-files, but may also be ID-files,
IQ-files, SF-files, output files and other VIC room files.
The "VIC-HOME" directory is a special directory following rules
of file protection. Typically, write protected files are files you
want to keep unaltered, such as default.?? files, specific start-up
files and VIC sub-process files. If a VIC tries to write to a write
protected "VIC-HOME" file, it will instead write the file to it's
"room". "VIC-HOME" read/write files are treated as global and may
be modified by any VIC. But only if the VICs accessing it use the
"VIC-HOME" assignment. VICs accessing files in the "VIC-HOME" via
real path or other assignment will only make a copy for their own
"room", and only in the event of modifying the file.
(NOTE RELAX: The use of "room"s and "room" files is not as scary or
messy as it may sound. For the most part the rooms and files are
temporary and few, unless you get into heavy experimentation. But
even here there is structure. Also such directories and files are
likely to be removed upon exit of the complete VIC system. It makes
possible easy data and VIC process passing between VICs.)
; ON (optional VIC-HOME:) AND (optional PATH:) USE:
The use of (optional VIC-HOME:) in the following arguments all
work in the same manner. Any files created will be placed in the
VIC-HOME directory and noted in the PK-file. Existing files in the
search path are copied to the VIC-HOME directory, if not already
there. If a file already exist in the VIC-HOME directory and is
write protected, it is copied to the VIC "room" directory and noted
in the PK-file. Specifying the path (optional PATH:), and if the
VIC-HOME is also specified, a copy is placed in the VIC-HOME
directory. Otherwise a copy is placed in the VIC "room" directory.
However, if a file(s) is not found in a specified "PATH:", the VIC
exits with an error message(s) noting the problem(s).
(Note: If there is need to have a non-write protected copy, of a
VIC-HOME write protected file, in the VIC-HOME, simply rename a
copy of it and save it to VIC-HOME. Also, to update files for
other VICs to use, it is best to update in the "room" then move
or copy the update over the older version in the older versions
directory. The use of "room"s adds a measure of safety in updating
and using files, even though they may be just temporary files.)
; ON VIC DEFAULT FILES and DATA CREATION:
On initialization of a new VIC any required files and data not
supplied or not found in search path will be created as follows
(with exception of specified "PATH:" option mentioned above):
If a PK-file is created it will contain all the default required
data not otherwise supplied on the command line. Minimum required
files and data are: the PK-filename "default.pk", OI-filename
"default.oi" (created if not already existing), IP set-options to
console keyboard (stdin), OP set-options to console window (stdout),
SF-filename set to (default.sf) or interactive mode if the
default.sf file does not exist, IQ-filename set to "default.iq"
(if exist), ID-filename "default.id" (if exist), KE-filename
"default.ke" (if exist.) Any files created will be placed in the
VIC "room" directory, unless "VIC-HOME" is specified. All other
data, unless specified on the command line is left unset.
; SEARCH PATH:
Unless a path is specified, the search path for all the following
arguments are: first the current directory, the VIC "room",
"VIC-HOME", then system path. If a path is specified, only the
specified path is checked and if the file is not found, the VIC
produces an error message.
; ERROR OUT WINDOW and SF USER INTERFACE:
AI does have a single error/info out window, regardless of how many
VICs are in use. This window may be closed but AI will re-open it
in the event it is needed. All error messages are proceeded by the
VIC name/# they are generated from.
Debug mode: An SF user interface is opened whenever an error occurs
from any VIC already up and running. This interface contains the
VIC name/# of the VIC it is connected to. The VIC causing the error
is set to step mode and the line in error is made the current line.
Giving the user an opportunity to correct the error.
:Command options:
Initial setup arguments and options:
-------------------------------------
(These options are only available on the initial start-up
command-line of a new VIC)
; AI (optional VIC-HOME:)(optional PATH:) (optional -n name)
The minimum command for starting up a VIC. If used with no options
then a "default.pk" file is looked for in the search path. Where
any required default files are not found then one is created but it
will be empty (except for the creation of default.pk). All files
created will be placed in the VIC "room" directory unless the
"VIC-HOME" is specified. In this case, any (default.??) files
created or found will be placed in the "VIC-HOME" directory and
this will be noted in the PK-file. All existing files, listed in
an existing default.pk file will be copied to the VIC "room"
directory except for files specified in the default.pk for
placement in "VIC-HOME". Keep in mind that any files found in the
"VIC-HOME" that are write protected will be copied to the VIC
"room" directory. The PATH: option is defined above and errors
on any missing default.?? files not in specified path, as well as
any missing required files, in a found default.pk file.
If used with the -n name option, gives the VIC a name and is set
in the PK-file.
; AI -pk (optional VIC-HOME:)(optional PATH:)filename
or
AI (optional VIC-HOME:)(optional PATH:)filename.pk
(Note: By creating a PK-file manually or in step mode with save,
and before regular VIC start-up, this command can simplify VIC
start-up of a specific VIC process. It may be the best way to
start-up a VIC with extensive PK-file contents. Keep in mind that
the PK-file is loaded first and any other options and arguments
used are written over in the PK-file).
Checks to see if the PK-file exist, if not and no path is
specified, creates it. Otherwise AI exits with and error message.
If found, makes a copy of the file in either it's "room" or the
"VIC-HOME", if specified. Then loads the PK-file. Any required
filename or data, not in the PK-file, is created and/or inserted,
as mentioned above. If the PK-file is obtained from another VIC
"room", the VIC name/# (dir) it got it from is also listed in the
PK-file. This VIC name/# can be different from the SPAWN MAP
directory tree. There can be the spawning VIC and a different VIC
process PK-file used for the new VIC, using this argument/option.
; AI -oi (optional VIC-HOME:)(optional PATH:)filename
or
AI (optional VIC-HOME:)(optional PATH:)filename.oi
Checks to see if the OI-file exist, if not and no path is
specified, creates it. Otherwise AI exits with an error message.
If found or created, places the filename in the proper location
within the PK-file as well as makes a copy, if not created, of
the file in either it's "room", or VIC-HOME if specified.
; AI -ip (set-options) or AI -i (set-options)
The set-options are: (sample- not listed here)
; AI -op (set-options) or AI -o (set-options)
The set-options are: (sample- not listed here)
; AI -f (flags)
The flag options are: (sample- not listed here)
; AI -sf (optional VIC-HOME:)(optional PATH:)filename(opt. @line#)
or
AI (optional VIC-HOME:)(optional PATH:)filename.sf(opt. @line#)
A filename without optional "@line#" starts at first line in file.
Otherwise the file starts at given line number.
Checks to see if the SF-file exist, if not and no path is
specified, creates it. Otherwise AI exits with an error message.
If found or created, places the filename in the proper location
within the PK-file as well as makes a copy, if not created, of
the file in either it's "room", or VIC-HOME if specified.
; AI -iq (optional VIC-HOME:)(optional PATH:)filename(opt. @line#)
or
AI (optional VIC-HOME:)(optional PATH:)filename.iq(opt. @line#)
A filename without optional "@line#" starts at first line in file.
Otherwise the file starts at given line number.
Checks to see if the IQ-file exist, if not and no path is
specified, creates it. Otherwise AI exits with an error message.
If found or created, places the filename in the proper location
within the PK-file as well as makes a copy, if not created, of
the file in either it's "room", or VIC-HOME if specified.
; AI -id (optional VIC-HOME:)(optional PATH:)filename(opt. @line#)
or
AI (optional VIC-HOME:)(optional PATH:)filename.id(opt. @line#)
A filename without "@line#" starts at first line in file.
Otherwise the file starts at given line number.
Checks to see if the ID-file exist, if not and no path is
specified, creates it. Otherwise AI exits with an error message.
If found or created, places the filename in the proper location
within the PK-file as well as makes a copy, if not created, of
the file in either it's "room", or VIC-HOME if specified.
; AI -ke (optional VIC-HOME:)(optional PATH:)filename
or
AI (optional VIC-HOME:)(optional PATH:)filename.ke
Checks to see if the KE-file exist, if not and no path is
specified, creates it. Otherwise AI exits with an error message.
If found or created, places the filename in the proper location
within the PK-file as well as makes a copy, if not created, of
the file in either it's "room", or VIC-HOME if specified.
; AI -s Forces step mode for new VIC. (Also, see below)
; AI -w Only works on initial start-up. Opens a watch window
of the PK-file. Note: through SF it is possible to
open and close this window after initial start-up.
; AI -u Only works on initial start-up. Opens the user SF user
interface. Note: through SF it is possible to open
and close this window after initial start-up.
; AI -e Creates an "error.log" file in the initial VIC-HOME.
: Other Options: (available before, during or after initial set-up)
-------------
; AI -? Opens the hypertext help system window, at AI help.
(???)(an AI command call to a VIC instance to run IQ
on a VIC-help.iq file for AI help which may contain an
external call to load a web browser and hypertext/html
AI help page.)
; AI -l List all current VIC name/#. This may be redirected
using the standard redirection or pipe character. If
not redirected, it is sent to the AI error out window.
; AI -s Force step mode on all VIC configurations.
Exception - if used in initial start-up only forces
step mode on the new VIC configuration.
; AI -s name/#, name/#,...
Force step mode on given VIC configurations.
Wildcards may be used.
; AI name/#, name/#,... SF (single sf command line)
This is the command argument for inserting a command
line into an existing VIC(s), from an external process
and without the VIC(s) knowing where it is getting the
command line from. Only one SF command line may be
entered at a time. Wildcards may be used for the VIC
names/numbers. Any command line may be used. What SF
does not process it sends to the output. If a VIC is
in a step mode, the line given is forced to be
processed. Otherwise it is the next line processed
(consistent with AI's priority mentioned above). See
SF and OP for more information on command lines.
; AI exit (optional name/#'s)
Exit given VIC configurations. Wildcards may be used
for name/#'s. If no name/#'s given, exist whole VIC
system. This includes removing the given VICs "room"
directories and files that are not delete protected.
The "VIC-HOME" directory files are only deleted on a
complete exit and only if they are not write protected.
; AI exits filename.vic (optional name/#'s)
This halts VICs, saves PK-files, writes a VIC script
then exits VICs. This VIC script can then be used to
restart the VIC processes from where they left off.
This script may be executed from any command line that
could be used to start a VIC, and has access to the
directories of the filename.vic and VIC AI program. In
halting VIC(s) wildcards may be used for the name/#s.
If no name/#'s given, does the whole VIC system. Note:
If VIC system is done in ram:, it needs to be moved to
hard storage before turning off the computer :-)
:Examples:
AI -pk DF1:Testfile script.sf -ke Holder