                         
                                           
                                
                                         
                            

                           The Ultimate TI-85 OS

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

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

Usgard 1.5 is only a little bit different from Usgard 1.1. We added 2 functions,
fixed a tiny bug, made it a lot smaller (at least the LITE version) and added
a non-ZShell lite version, which will only run Usgard programs. Plus, Usgard
1.5 also support ROM 2.0!!

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.
Now, with 1.5, there's also the NON-ZSHELL version, which is the LITE version
without ZShell support, i.e. you can't run ZShell programs.

[- 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).

 * ROM 2.0 SUPPORT
    Though not yet approved, we added support for ROM 2.0. We'd like someone
    to test this!

_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 (about 1300 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 1400 bytes altogether - and then with
a LOT OF new features and functions that the other OS are missing.

[- HOW TO INSTALL USGARD -------------------------------------------------]
Ensure that you have a ROM version between 2.0 and 10.0 by pressing the following
key combo: [2ND] [MODE] [ALPHA] [S]. You'll see the message "Enter selftest"
and a number, which is your ROM version. Press any key, but DO NOT PRESS ENTER!
This will clear your memory.
Next, transfer one of the .85Bs included in the ZIP to your calc. You're finished!

NOTE: we also included the strings files UsgStd.85S, UsgLite.85S, UsgTiny.85S.
IF you have Usgard already installed, you can just send the string and then 
do a 

UsgStd->Usgard (replace UsgStd with your version),

which will update Usgard!! This also works to change Standard to Lite version, 
etc.

[- 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).

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 must
renamde a string to the same name. I didn't want to waste >30 bytes on
something that shouldn't be necessary...

[- WHAT HAPPEND TO THE LIBRARIES?! ---------------------------------------]

They're gone :) Completely... 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.

[- 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.
