*** The Avios REAME file. ***

This is just a short introduction to Avios as most of the documentation
you will need is in the DOCS directory. If you're in a hurry and can't
be bothered to read this yet read DOCS/comp_and_run for compiling info
and DOCS/versions for information pertaining to the new features in thie
release.

The OS
------
   Avios stands for A VIrtual Operating System, that is it loads and runs
multiple processes written in the AviosPL language which can interact with
each other and the outside world just as in a real OS. The system itself
appears however as a single process to the Unix operating system (Avios is
a Unix only program at the moment) as it does not fork off processes to run
its own internal processes , rather it runs them all sequentially swapping
them in and out as appropriate.
   
   The main reason for Avios existing is not simply to have a virtual OS as
by itself this concept isn't that usefull. Its raison d'etre is that it
provides a way for people with no C experience to set up an internet server
(or even mulitple ones) and then only having to code in AviosPL which is a
far simpler language than C as well as not having to worry about socket
coding details. As you will see from the rest of the documentation processes
can be set to run on any TCP port (UDP is not supported) simply by entering
one line in the init file.


The language
------------
   AviosPL is a procedural language and so you should not find it hard to 
pick up after you have looked at the example programs and the documentation.
It does have limitations which are more due to limits of my own coding abilities
rather than it being designed that way. Some parts of the language are clunky
(for example all maths is done using commands), others are perhaps a bit 
inconsistent so some of you may not like the language. Well , theres nothing
I can do about that. If I had the coding abilities of someone like Larry Wall
(wrote Perl) or Lars Penj (sp? wrote the original LPmud server) then the 
language could have been a lot better but I don't so you're going to have to 
live with it or go use something else. Having said that it does have a lot of 
features which other languages don't such as associative arrays (mappings)
which can be used to store relations (as they can have reverse lookups done
on them) and it also has some complex list processing functions.


Example code
------------
   With this server comes some example applications for you to run and look 
through to get a feel of how things are done. They are in the "avprogs"
directory and the main application is a simple talk server and talk client 
programs for you to use as a starting point to perhaps build your own. It is 
intended as a demonstrator not as a fully functioning talker so don't be 
disappointed when you run it (though if you're really not bothered about 
features it could be used as is) if you've been using NUTS or some other 
talker. 
   Another application is a simple web server program which you should be able 
to see shows how a separate web server and GCI back end can be built using 
Avios. I say a simple web server as there is no database connectivity and 
downloading gif and jpeg files are a problem as Avios is text based and isn't 
geared up to deal with binary data (and probably never will be).
   There is a noughts and crosses game too (ox) and some programs which give
an example of the transfer of Avios programs over a network (though its
only done within this system for this example) and they are sendprog and
runprog , the latter using the iexec command to execute the program once
it has been loaded in.
   Finally there is a clock program and pcs which is a short program which you 
can use as a type of console to view the processes in Avios and if kill_any is 
set to yes you can use its kill command to kill any non-image ones.
   When you run Avios you will see that the syslog says that the talkserv 
program gets open() errors. This is perfectly normal as talkserv is simply
trying to check some message board files which don't yet exist.


Restrictions
------------
Avios doesn't support floating point numbers and hence its maths functions are 
limited to integer operations. I was going to add floating point but the 
amount of work need is too great for the rather marginal (and for most
servers irrelevant) functionality gain. Also Avios is not very happy dealing
with binary data as it was designed to be a system to implement text based
servers.


Documentation
-------------
   Because theres so much to document with this system there may be minor
errors and/or omissions in the documentation. Please bear with me on this as
theres been a lot to write.
   Now go and read the COPYRIGHT file then continue on and read the rest of
the documentation. I would suggest starting with the comp_and_run file which
tells you how to compile and run Avios so you can see what its like then move
on to more in depth stuff perhaps starting with the processes and initfile
docs. If you have any questions concerning any part of the package or your 
have found some suspected bugs please email me about it (but *please* RTFM
first and make sure you're not getting it wrong!!)


Versions
--------
This version now can handle proper maths equations/expressions unlike previos
versions and can also locate to any position on a terminal screen to print
stuff so allowing graphically more complex programs. For details concerning
this and previous versions of the code see the CHANGELOG file (renamed from
the DOCS/versions file).

Neil Robertson

January 1998

Email: neil@ogham.demon.co.uk