                         
                                           
                                
                                         
                            

                           The Ultimate TI-85 OS

Andreas Ess, 16, ess.andreas@computerhaus.at
Sam Davies, 16, sdavies@mail.trilogy.net
Jimmy Mrdell, 18, mja@algonet.se
Austin Butler, 18, corndog@flash.net
Mel Tsai, 19, tsaimelv@pilot.msu.edu

[- ABOUT USGARD ----------------------------------------------------------]

Usgard 1.1 is only a little bit different from Usgard 1.0. We added 2
functions, fake-library support, some bug fixes, and also the option to
run programs without using a shell.

Why should you use Usgard instead of ZShell, CShell, OS-85, PhatOS etc etc?
The major reason is that Usgard has all their features and a lot more! One
of Usgards best features is that it is a lot easier to program Usgard stuff
than for example ZShell stuff. A lot of things that aren't possible in other
OS becomes available in Usgard. Of course, Usgard is ZShell compatible, since
else it would be very hard to get people switch OS.

Since Usgard 1.0, the user also may choose between two different versions -
a LITE version and a STANDARD version. All programs that work in the LITE
version works, of course, as well in the STANDARD version. The difference
will be listed in a section below.

[- USGARD FEATURES -------------------------------------------------------]

Some unique Usgard features listed below

 * RELOCATION
    The programs get smaller & faster

 * INTERRUPT PROGRAMMING SUPPORT
    Make your own stuff going on in the background while the program is
    doing something else.

 * TSR SUPPORT
    Want the possibility to change the contrast in a game, although the
    game doesn't have support for it? Want to use a debugger to correct
    hard-to-find errors in your game? Want to take a screen capture from
    some game? TSR support allows all that.

 * EXTERNAL VARIABLE SUPPORT
    If you want to create, delete or change external variables used by
    TI-OS, Usgard is the OS for you. External levels, save game features
    etc is all very easy done with the external variable support.

 * LOTS OF NEW USGARD CALLS
    Some functions in games and programs are used very frequently. For
    example, simple multiplications, random numbers, display a decimal
    number in menu font and a lot more - all these are built in the Usgard
    core which makes games smaller (since they could be used by most programs)

 * EXTERNAL FUNCTION
    NEW! One of the advantages with libraries was that they were so simple
    to use - you just had to call a function in it. External functions is
    even better - it allows the programmer to use already written code
    in the program, without having to bother how it is coded. The main
    difference from libraries is that the code gets included in the program
    rather than it's an external string on the calc. So, it doesn't save
    memory but it doesn't lose memory either (since it's not libraries, it's
    single functions).

 * FAKE-LIBRARIES
    Libraries are back... almost anyway. Fake libraries are not really
    libraries - they work more like DLL files in Windows. They should only
    be used when a program needs a lot of similiar functions. Winlib
    is a very good example of a fake-library.

_ALL THESE FEATURES_ are missing in _ALL_ currently OS's out there (some
of the new calls are of course there, but definately not all). One exception
is PhatOS which does have relocation, which is even better, but it has
several major disadvantages that we didn't like: the use of external variables
gets VERY limited (at least in the current PhatOS version) and Interrupt
(and TSR) support gets VERY hard (if possible) to implement - one of the
major features in Usgard.

[- USGARD LITE AND STANDARD VERSION -------------------------------------]

What's the difference between these versions then? The LITE version is
intended for the regular game. It's small (less than 1400 bytes) and doesn't
have the advanced external variable functions (deleting and resizing
existing variable) and therefore also misses the TSR support (which requires
those). Most likely, ALL games will work on the LITE version (if a game
uses the advanced variable functions, a LITE version could be created as well).
The STANDARD version is only needed when you want to, for example, make
a level editor, use TSR programs to make things more conveniant etc - ie
not something that's necessary at all. The STANDARD version is about 1900
bytes so if you can afford it, I still recommend the STANDARD version.

A minimum setup would require the LITE version and a simple shell. Using
the default shell, it would be about 1700 bytes altogether - and then with
a LOT OF new features and functions that the other OS are missing. Actually,
you don't need a shell at all in Usgard 1.1, but it does make selecting
which program to run a lot easier.

[- UPON STARTING ---------------------------------------------------------]

When you start Usgard for the first time, you will see a message telling that
Usgard has been patched. This is done by the external string PATCHROM which
makes your copy of Usgard compatible with your ROM version. PATCHROM can
after the first run be deleted, but if you want to send Usgard to another
calc with a DIFFERENT ROM version, you must also send PATCHROM (ie, still have
it on your calc).

Some people have complained about PATCHROM. All (?) other OS also have it's
ROM patching stuff, but it's built in in the core, thus making the OS
bigger (Usgard would be >400 bytes - yuck!).

[- THE USGARD SHELL ------------------------------------------------------]

When you start Usgard you'll enter the Usgard shell which is an external
file. The default shell for the LITE version is USGDSIMP, a shell that
looks and behaves like ZShell. The default shell in the STANDARD version
is called USGSHELL and looks almost identical. The major difference is that
it also supports TSR stuff a bit better (read USGSHELL.DOC for more info).
You could, of course, change the shell to USGDSIMP if you'd like (it is
about 300 bytes shorter).

The default LITE and STANDARD backup also contains CoolShell (in two
different version as well, phew!). Read a separate documentation for
differences - it has some additional features, and lacks some.
           
You can't choose the default shell manually - it must be programmed into
the shell itself. USGDSIMP and USGSHELL sets themselves as the standard
shell when executed however. If you delete the default shell, you need
to use the Usgard feature to "run something without using a shell".
To do that, you should first clear the screen and then type the name
of the program you want to run WITHOUT pressing enter! Just type the
name in the topleft corner (remember, it's case sensitive) and then press
[Custom] [F1].

[- WHAT HAPPEND TO THE LIBRARIES?! WHAT'S "FAKE-LIBRARIES"?---------------]

They're almost gone... here are the reasons

 * You have to find out which libraries a program/game needs. If you have
   unnecessary libraries, you waste memory instead of saving.
 * When a game uses a library, it often only uses one or maybe two functions
   in it. If the library takes 200 bytes, and the size of those two functions
   are 30 bytes, you would need 6 programs using the same library - not very
   likely on a calc with only 28k memory.
 * Many people doesn't use libraries at all, for different reason. The
   advantage with libraries requires that most programs uses them.
 * Removing libraries made the Usgard core a lot smaller

If you liked libraries because they were simple to use, you will just love
the external functions. Read USGDPRGM.TXT for more information.

Some stuff NEEDS to be in a library though. One example is Winlib. Because
of that fact, Usgard 1.1 supports something called "fake-library". There
is very little code in the Usgard core that handles it, so using fake-
libraries is not as easy as using libraries. However, since they shouldn't
be used very often, that shouldn't matter.

[- PROGRAMMING USGARD ----------------------------------------------------]

Read USGDPRGM.TXT for more info about programming Usgard programs.

[- LEGAL STUFF -----------------------------------------------------------]

By loading this software, you agree to the following terms:

No part of Usgard may be modified, disassembled, or removed without prior
written consent from the authors.

In no case may Andreas Ess, Sam Davies, Jimmy Mrdell, Austin Butler or
Mel Tsai be liable for any damage through the use or misuse of this product.
If your machine locks-up, freezes-up, blows-up, or throws-up, we are in no
way responsible, but we will pity you a little.
