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