home *** CD-ROM | disk | FTP | other *** search
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
- ReqChange V1.08 © Copyright 1992 Magnus Holmgren
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Replace some common requesters.
- Release date: 16 Apr 92
-
-
- Legal stuff
- ~~~~~~~~~~~
-
- This program is FREEWARE, which means you may spread and
- use this program freely, as long as the following
- restrictions are followed:
-
- 1) All files are copied in an unmodified state. If
- additional information is needed, place it in a separate
- file. Preferably redistribute in the original archive form
- (*.run).
-
- 2) The copying is done on a non-commercial and non-profit
- basis only. A copy fee to replace media costs, postage etc.
- may be charged, and mustn't exceed the fee to obtain an
- AmigaLibDisk from Fred Fish.
-
- 3) The copier/spreader is not claiming the Copyright © of
- this program.
-
- Any exceptions from these restrictions requires written
- permission from the author, Magnus Holmgren.
-
-
-
- DISCLAIMER:
- ~~~~~~~~~~~
-
- This program is supplied 'as is'. No warranty is given
- that the program will work exactly as documented. I assume no
- responsibility for the consequences of using this program.
- That is: Any loss of data, malfunction etc. caused by this
- program can't be blamed on me. If you use this program it's
- on your own risk.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 1
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
- What is ReqChange?
- ~~~~~~~~~~~~~~~~~~
-
- Every now and then, the programs you use needs to inform
- you of some important thing, or perhaps it needs the name of
- a file to operate on. When that happens, the programs often
- shows a requester of some kind, allowing you to easily select
- between a few options, or enter a filename. Before OS 2.0 (OS
- = Operating System), every program had to fix such things
- itself - except for information requesters with one or two
- answers - perhaps by using some shared library which
- contained the code (req.library is a good old one).
-
- With OS 2.0, such requesters was included. How nice! Now
- all programs will use the same requester, because everyone
- who has OS 2.0, will also have these requesters, and there is
- no need for the user to install some special library in the
- LIBS: directory.
-
- There was just a few small problems with these requesters:
- They weren't that good. For one thing, the information
- requesters where glued to the upper left corner of the
- screen, you had to use the mouse to confirm them - or some
- more or less cryptic key combination - and they didn't look
- *that* nice. The file requester was generally ugly, and it
- was unbelievably slow, at least on a standard Amiga 500.
-
- Arq came around. That program did something about the
- information requesters, but nothing about the file requester.
- It was also very big, ~40 Kb, and it was a bit slow on a
- standard Amiga 500 (that's the price of all those nice
- animations :).
-
- There seemed to be no good solution to this problem. But I
- wasn't the only one who thought like this! Nico François was
- one who though a bit like me here. So he made this new
- library: ReqTools, which is © Copyright Nico François. And
- yes, I know; Yet another library. But this is a good one! It
- contains a bunch of requesters which are powerful to the
- user, yet very easy to use. They looked good, and were
- generally fast and efficient. First time I saw them I
- thought: "Why can't all programs use these instead???". So I
- decided to do the best I could to allow all programs use this
- great library, and ReqChange is the program which fixes this
- as far as possible. I had some experience in writing patches
- (e.g. NewRequest, which modified the OS 1.3 AutoRequest to be
- much easier to use), so I knew what had to be done to get a
- safe program.
-
- The earlier versions of ReqChange only worked on OS 2.04.
- This version of ReqChange works on 1.3 systems too (when I
- say 1.3, I really mean 1.2/1.3). You need arp.library, and a
-
-
- Page 2
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
- 1.3 version of reqtools.library (included) for this though.
-
- What ReqChange will do is to change (i.e. patch) the
- system requesters, and some other requesters in common
- libraries to use the ones found in ReqTools. The requesters
- that are changed are currently these:
-
-
- AutoRequest & EasyRequest
-
- These are two very similar requesters, which the OS uses a
- lot (to the user, they are identical; to the programmer, they
- only differ in the way they are called). "About" in the
- Workbench menu uses EasyRequest, and the requesters which
- asks you to insert a disk ("Please insert...") are of this
- kind too. AutoRequest is mostly used by programs written for
- OS 1.3.
-
- EasyRequest is a new function in OS 2.04, so it's only if
- you have OS 2.04 this function will be patched.
-
- The requester in ReqTools supports a few more keyboard
- alternatives, so you won't need to use the mouse to confirm
- it. These keys are:
-
- RETURN, Y, V which yields a positive response. It really
- means that it will be equivalent with pressing the leftmost
- gadget. All programs should have a positive response on the
- leftmost gadget, but this isn't always case (curse those
- programs! :). This gadget has boldface text.
-
- ESC, N, R, B which yields a negative response. It really
- means that it will be equivalent with pressing the rightmost
- gadget. And again, this isn't necessarily the negative
- response, but it "should" be.
-
- If the requester only has one gadget, you can use any of
- the keys to reply to it.
-
-
- FileRequest
-
- The filerequester in arp.library (ARP for short). Once,
- this was more or less "the" standard filerequester, but it is
- a bit old, and doesn't look good at all under OS 2.04. It's
- only ARP V1.3 (arp.library V39+) that is supported! ReqChange
- will refuse to open arp.library with a version number lower
- than 39.
-
-
- RequestFile & AslRequest
-
-
-
- Page 3
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
- These are the new file and font requesters in OS 2.04. The
- code for these is located in asl.library (ASL for short).
-
-
- TextRequest
-
- This REQ function is similar to AutoRequest and
- EasyRequest, but it is a bit more powerful. The features of
- REQ V2 are fully supported (timeout and abortmask).
-
-
- GetString & NewGetString
-
- These routines are in req.library (REQ for short), and
- provides a string requester (only difference between the two
- is the way they are called).
-
-
- GetLong
-
- Another REQ function. This is a requester very similar to
- the GetString requester, but you can only enter numbers in
- this one. It also shows the max and min values you can enter
- (at least REQ V2 has this feature).
-
-
- ColorRequester & ExtendedColorRequester
-
- These are the color requesters in REQ (these two only
- differs in the way they are called). The type of centering
- used for this requester is the same as the one used for all
- file requesters.
-
-
- FileRequester
-
- This is the file and font requester in REQ.
-
-
- Compatibility
- ~~~~~~~~~~~~~
-
- Some of the features that exists in ARP and ASL does
- mostly exists in ReqTools too, but often in a more or less
- incompatible way. Thus, some features are not supported (at
- least not yet). This "ignorance" will at most cause a bit of
- inconvenience to you; a missing gadget which "should" be
- there, a few files are shown that really shouldn't be shown
- etc. But as far as I know, there aren't many programs that
- uses these features, so who cares?? :) ReqTools lacks some
- minor features in ASL, but I guess you'll never notice that.
-
-
-
- Page 4
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
- REQ's filerequester has a limit on the number of files the
- user may multiselect. As ReqTools doesn't have such a thing,
- it means that some of the files you multiselect might not be
- returned to the program (this also might happen if you're
- very low on memory). This is not a real problem, but you
- should be aware of it.
-
- Also note that you cannot select a directory if you also
- have a filename gadget with ReqTools - even if you select Ok
- - as you can with ASL. This is the only "real" problem with
- ReqChange that I know of at the moment. :( This causes
- AssignX to have some troubles with the "Assign..." function.
- You will not be able to select a directory to assign to, only
- files. Because of this, ReqChange has a similar feature
- builtin. If you use this feature, it will seem as AssignX
- isn't installed, so you might as well remove it from your
- startup. Please refer to the NOASSIGN parameter below for
- more information.
-
-
- Installation
- ~~~~~~~~~~~~
-
- ReqChange is very easy to install. Simply run it. But
- remember that the file reqtools.library (of appropriate
- version) must be in your LIBS: drawer. The Install script
- places this file there for you. ReqChange autodetaches
- nicely, which means you do not need to "Run" it, if you start
- it from a CLI. If anything goes wrong, a requester will pop
- up, informing you about it, possibly allowing you to take
- different actions. If you have started the program from a
- CLI, some of the messages will appear in that CLI-window.
-
- In the case that the C-startup part (which I can do
- nothing about) fails, you will not see that! But that doesn't
- happen *that* often. What can go wrong here is that the
- startup code fails to open dos.library, or ReqChange simply
- didn't load, because you're very low on memory. If
- intuition.library didn't open ReqChange will terminate with
- the return code 300. If no message appears ReqChange should
- have installed ok.
-
- Note that if you are using WShell 2.0, you will see a
- message saying "***Hanging forbid!" when ReqChange has
- detached ok (ReqChange does some more intializations after
- this, and these might fail). This is not a bug (neither in
- WShell nor in ReqChange). It must be done this way because of
- the way the autodetaching currently is implemented.
-
- MFR users who wants to use ReqChange for everything but
- the filerequesters (for which they use MFR :), should do
- this: First run ReqChange, and after that, MFR (if both MFR
-
-
- Page 5
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
- and ReqChange are in WBStartup, set the STARTPRI in
- ReqChange's tooltypes to at least 1 higher than the same
- value in MFR (if no such value can be found, it will default
- to zero)). I've tried this, and it works fine.
-
- NOTE: Although you have installed ReqChange, there might
- be programs active, which allocated some ASL buffers before
- ReqChange got active. If this is the case, ReqChange will not
- change that particular request (i.e. you'll see the old
- Asl-requester). Also note that you cannot exit while there
- are programs around that are using a requester, or have some
- buffers that was allocated after ReqChange was activated.
- Quitting these programs will enable you to terminate
- ReqChange.
-
-
- Options
- ~~~~~~~
-
- There are a few options you can use, to make ReqChange
- behave the way you want. These options can be used either in
- the CLI or via the ToolTypes fields in the icon. Here follows
- a list over all options. If the option in question ends with
- "/K", it means that it should be followed by additional
- information, here in numeric form. If the option ends with
- "/S", it means that the presence of this string is enough to
- activate it. Note that the "/K" and "/S" extensions shouldn't
- be entered! If an option is preceeded by an equal sign ("="),
- it means that the text in front of it can be used as a
- shortcut to the option (e.g. using IH means the same as
- IGNOREHEIGHT). A "(OS 2.04)" comment means that the option in
- question is used on OS 2.04 systems only. The options are:
-
-
- MIH=MINHEIGHT/K
-
- This option specifies the minimum height of the
- filerequester window. Any height requests lower than this
- will be ignored (and the requester will be MINHEIGHT pixels
- high). To disable this feature, use the height 0. Default
- value is 0.
-
-
- MAH=MAXHEIGHT/S
-
- This option specifies the maximum height of the
- filerequester window. Any height requestes higher that this
- will be ignored (and the requester will be MAXHEIGHT pixels
- high). To disable this feature, use the height -1 (which in
- fact will turn into 4 294 967 295...). Default height is -1.
- Note that this and the previous parameter should be entered
- as you would like it to be on a non-interlaced screen. If the
-
-
- Page 6
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
- requester is about to appear on a screen, which visible
- height is more than 400 pixels, these parameter values will
- be doubled.
-
-
- CS=CENTERSCR/S
-
- This switch will make all information requesters to be
- centered on the screen, instead of centering them beneath the
- mouse-pointer.
-
-
- CW=CENTERWIN/S
-
- This switch is similar to CENTERSCR, but it will make all
- information requesters centered within their parent window,
- if the task provided such a window. If not, the requester
- will be centered on the screen. This switch will override the
- CENTERSCR switch if both are used at the same time.
-
-
- FCS=FRCENTERSCR/S
-
- This switch is similar to CENTERSCR, but this one will
- affect all filerequesters.
-
-
- FCW=FRCENTERWIN/S
-
- This switch is similar to FRCENTERSCR, but this one will
- affect all filerequesters.
-
-
- CT=CENTERTEXT/S
-
- Although the name is similar to some other switches above,
- the difference in action is large. This switch makes all
- information requesters' text centered. That is, each line of
- the text in the requester is centered. This will definitively
- look bad if the text was centered "by hand" by the
- programmer, but it is not common.
-
-
- NOARP/S
-
- This switch tells ReqChange to not change the file
- requester in ARP. This means that the ARP filerequester will
- behave as normal. If this is specified, ReqChange will make
- no attempt to open ARP. Thus, you don't need arp.library to
- be able to run ReqChange. NOTE: If you are running OS 1.3,
- you need ARP! The NOARP switch is still useable though (to
- disable the filerequester patch).
-
-
- Page 7
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
-
-
- NOASL/S (OS 2.04)
-
- Same as NOARP, but now it's the filerequesters in ASL that
- won't be changed. This could be useful if it comes a new
- version of ASL which is much better (or it's inner workings
- have changed in such way that ReqChange fails to simulate the
- file requester. See below on the topic "Problems").
-
-
- NOREQ/S
-
- Same as NOARP and NOASL, but now its the functions in
- req.library that won't be changed (and req.library won't be
- opened).
-
-
- NOKEYS/S
-
- Disable most of the keyboard shortcuts in the text
- requesters, except for a few. If used, only Left Amiga 'V',
- Left Amiga 'B' and ESC can be used. Left Amiga 'V' is
- equivalent with the leftmost gadgets. Left Amiga 'B' is
- equivalent with the rightmost gadget, as is the ESC key.
-
-
- NOCX/S (OS 2.04)
-
- This option stops ReqChange from making its presence known
- to the Exchange program. I don't really know if this option
- is needed, but I added it anyway. ReqChange won't open
- commodities.library if you use this switch.
-
-
- NOASSIGN/S
-
- This switch will disable the code that checks for "Please
- insert volume..." requesters. When such a requester pops up,
- and this switch NOT is used, three gadgets will show up
- instead of the normal two. The extra one is called
- "Assign..." and lets you do just that, enter an assignment to
- use. Now you don't need any Shell/CLI to do this.
- Unfortunately, you cannot select any files with this
- requester (not so oftenly used), due to how ReqTools works,
- but it can be very handy anyway. This feature will always use
- ReqTools for requesters. Thanks to Steve Tibbet for his
- program AssignX which made me implement this feature - which
- is more or less a simplified AssignX - since his program
- didn't work that well if ReqChange was installed, I had to
- write one of my own instead. :)
-
-
-
- Page 8
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
-
-
- If arp.library, asl.library or req.library couldn't be
- opened for some reason, you will be presented with a
- requester informing you about the fact. It also has three
- gadgets, namely:
-
- "Retry" - Try to open the library again. Now you have a
- chance to install the library in question before proceeding.
-
- "Ignore" - Don't care about it. This also means that the
- requesters in the library in question won't be changed.
-
- "Quit" - Simply quits ReqChange.
-
- You will also see this requester if commodities.library
- didn't open (commodities.library is an OS 2.04 thingy). If
- you select the "Ignore" gadget, the result will be the same
- as it would be if you had used the "NOCX" switch.
-
- If reqtools.library won't open, you will be presented with
- a similar requester, but that one lacks the "Ignore" gadget.
-
-
- Removing ReqChange
- ~~~~~~~~~~~~~~~~~~
-
- You can remove ReqChange in tree ways:
-
- 1) Use the Exchange program. Select ReqChange in the list,
- and click on "Kill". This feature required OS 2.04.
-
- 2) Run ReqChange again. The screen will flash to indicate
- that a termination message was sent to the installed
- ReqChange.
-
- 3) Send ReqChange a break signal (to do this you can e.g.
- use Xoper). ReqChange will quit on any of the break signals
- C, D, E or F.
-
- Although you tell ReqChange to quit, this doesn't
- necessarily mean that the program will terminate. If some
- other program have changed any requester after ReqChange
- installed itself (e.g. AssignX), there are some allocated
- buffers around, or a requester is active, then ReqChange
- can't be removed. If this is the case, a requester will pop
- up, telling you about the specific problem.
-
-
-
-
-
-
-
- Page 9
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
- Problems
- ~~~~~~~~
-
- If a program uses the pattern matching feature in ASL,
- there is a small problem, because ReqTools handles .info
- files (i.e. icons) differently. Now, e.g. IconEdit's
- "Project/Open..." menu selection open up a file requester for
- the user to choose an icon to load. Since the user obviously
- only should choose an icon file, the pattern used here is
- "#?.info", which would show all files ending with .info. But
- ReqTools doesn't count the .info file as a "real" file. Each
- .info file is attached to its "parent" (e.g. ReqChange.info
- is attached to ReqChange), if such is available.
-
- If the pattern says that a parent shouldn't be shown, then
- the corresponding .info file will not be shown either,
- regardless of the state of the "Show/Hide *.info" gadget. If
- the gadget says "Show *.info", all ".info" files which has a
- visible parent is shown (if there is no parent, the ".info"
- file will be shown anyway), otherwise not. Since all parents
- fail because of the #?.info pattern, no files will be
- visible.
-
- To solve this problem, ReqChange checks to see if the
- pattern contains the string ".info", and if this is the case,
- ReqChange will not use any pattern in the requester (the
- pattern is still placed in the FileRequester structure
- anyway, if an ASL_Pattern tag is used).
-
- Since there are problems like this, ReqChange will force
- ReqTools to show a pattern gadget, if a pattern of any kind
- is used.
-
- There can be other problems with this program. Of what
- type I do not really know. To some extent, ARP can cause
- problems, but such problems shouldn't be serious in any way.
- At most, your life at the computer may be slightly harder
- :).
-
- The REQ patches are as compatible as possible. There
- should be no problems with req.library V2 or lower, but newer
- versions *might* cause some problems. This is because
- ReqChange uses some fields in the filerequester structure
- that are reserved for future use to get directory-buffering.
- As long as these are not used by any application, it should
- work ok.
-
- The ASL patches should work ok too. These patches might
- cause problems with newer versions of ASL than V37.27.
- Although I don't see this as likely, there is still a
- potential danger (and since I can't predict the future, I
- don't know what to do to eliminate this :).
-
-
- Page 10
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
-
- If you should experience problems with the ASL changes,
- use the NOASL switch to disable the changes, or reinstall the
- older version of asl.library, all depending on your taste
- (and why not send me a note about the problem?).
-
- There were other problems during the development. The
- Autodocs are incomplete about the file/font requester. E.g.
- there is a ASL_ModeList tag which is only mentioned in the
- asl.h file, but not a word about what it does. Since there
- seems to be no similar thing in ReqTools, I guess it doesn't
- matter that much.
-
-
- About the code
- ~~~~~~~~~~~~~~
-
- ReqChange is written almost completely in C, with some
- small assembler stubs. Yet the program is only about 14 Kb
- big (source is ~90 Kb). I compiled it with DICE (assembler
- part was assembled with the Devpac assembler), which can
- generate quite small code (especially if you're using the
- _main entry point! This way you get rid of a *lot* of
- "unneeded" code that the compiler otherwise would drag in).
-
- The assembler part takes care of pushing the register
- arguments (if so needed) on the stack and then call the C
- code (some of the patches are written entierly i asm though),
- stack switching - if that is needed, other kinds of glue, and
- the code that handles the auto-detaching.
-
-
- Technical information
- ~~~~~~~~~~~~~~~~~~~~~
-
- Those of you who knows a bit about programming might be
- interested about this.
-
- No hooks are supported in the ARP requester patch. This is
- because ARP guarantees that a4 will be left untouched. Some
- work is needed to fix this, and since I have no program that
- uses this feature, I haven't bothered to fix it.. Please let
- me know if you would like support for the DoWild hook (as
- this is the only thing ReqTools has).
-
- Each patch checks the stack, and if the free space left is
- less than 4 Kb, a new stack on 4 Kb will be allocated and
- switched in (there is a function in exec that might do this,
- but there is no Autodocs on it, so I have used my own version
- instead, which seems to work just fine), to ensure enough
- space for the requester functions. If no memory is available
- for a new stack, or the patch runs out of memory, the
-
-
- Page 11
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
- function in question will return failure. Upon returning,
- the stack (if a new one was allocated) will be freed, and the
- original will be restored.
-
-
- Future improvements
- ~~~~~~~~~~~~~~~~~~~
-
- In the future I might add some of the special features in
- the ARP filerequester. But is it worth the trouble? I doubt
- that, since the only code I know about that uses any of them,
- is code I've written myself... :)
-
- Some of the features AssignX has (Deny, Mount) might get
- implemented too, but since I've *never* used them yet (I've
- had AssignX installed a while), I didn't bother to implement
- these features in this version.
-
- I'm also thinking on adding directory caching to the ASL
- patches (this *will* be optional if I decide to implement
- it). This could waste quite a bit of memory, but if you think
- you can efford the memory, why not?
-
- If you would like to see some of these improvements,
- please let me know! That would increase the chance of them
- getting implemented a *lot*.
-
- And ofcourse, any bugs will be removed.
-
-
- Author contact
- ~~~~~~~~~~~~~~
-
- If you have some comments about this program, regarding
- problems, ideas of improvements etc., feel free to send me a
- note (and I will certainly not refuse donations of any kind,
- since I'm a poor student! :) to this address:
-
- Magnus Holmgren
- Rydsvägen 254 A:14
- S-582 51 Linköping
- SWEDEN
-
-
- If you don't like snail mail, you can send me e-mail via
- Internet or FidoNet. Via Internet, use any of these
- addresses:
-
- cmh@augs.se
- magnus_holmgren@augs.se
- cmh@lysator.liu.se
- d91magho@und.ida.liu.se
-
-
- Page 12
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
-
-
- FidoNet mail should go to AUGS BBS in Linköping, Sweden:
-
- "Magnus Holmgren" @ 2:204/404
-
-
- The latest version of ReqChange is also available for
- anonymous ftp at lysator.liu.se. Check the
- pub/amiga/ReqChange directory.
-
-
- Acknowledgments
- ~~~~~~~~~~~~~~~
-
- There are a few persons I feel I must thank, because they
- have in some ways made this program possible (or at least
- better) :
-
- Matt Dillon - For his great DICE compiler (and for
- answering all my (more or less silly) questions about C and
- DICE).
-
- Nico François - For reqtools.library. This library started
- this little program.
-
- Stefan Boberg - For helping me when ReqChanged crashed
- occasionally. (He discovered that the problem probably was
- stack overflow. After adding stack switching code, the
- problem have never been seen since).
-
- Stefan Becker - For providing an example (the source to
- ToolManager) on how to add a broker to Commodities.
-
- Eddy Carrol - For his Res function (and to Olaf `Olsen'
- Barthel, because this function was included in term, and the
- source to that program was included :), which enabled me to
- make ReqChange autodetach. I did some changes in the function
- though, so now it should be 100% safe and reliable (I hope).
-
-
- Revision history
- ~~~~~~~~~~~~~~~~
-
- Please read the History.Doc file for a revision history!
-
-
-
- May the Amiga be with you!
-
-
-
-
-
- Page 13
-
-
- ReqChange V1.08 User manual ReqChange V1.08
-
-
-
-
- Table of contents
- ~~~~~~~~~~~~~~~~~
- Legal stuff............................................. 1
- Disclaimer.............................................. 1
- What is ReqChange?...................................... 1
- AutoRequest & EasyRequest............................ 3
- FileRequest.......................................... 3
- RequestFile & AslRequest............................. 3
- TextRequest.......................................... 4
- GetString & NewGetString............................. 4
- GetLong.............................................. 4
- ColorRequester & ExtendedColorRequester.............. 4
- FileRequester........................................ 4
- Compatibility........................................... 4
- Installation............................................ 5
- Options................................................. 6
- MINHEIGHT............................................ 6
- MAXHEIGHT............................................ 6
- CENTERSCR............................................ 7
- CENTERWIN............................................ 7
- FRCENTERSCR.......................................... 7
- FRCENTERWIN.......................................... 7
- CENTERTEXT........................................... 7
- NOARP................................................ 7
- NOASL................................................ 8
- NOREQ................................................ 8
- NOKEYS............................................... 8
- NOCX................................................. 8
- NOASSIGN............................................. 8
- Removing ReqChange...................................... 9
- Problems................................................ 9
- About the code.......................................... 11
- Technical information................................... 11
- Future improvements..................................... 12
- Author contact.......................................... 12
- Snail mail address................................... 12
- E-mail addresses..................................... 12
- Acknowledgements........................................ 13
- Revision history........................................ 13
- Table of contents....................................... 14
-
-
-
-
-
-
-
-
-
-
-
-
- Page 14
-
-