Yet Another Shell
(YAS)
version 0.92

by Aaron Curtis <acurti1@umbc.edu>

Important Stuff
---------------
This section is first because many people didn't read it last time...  With the emulation (ie/ 85 and 82 stuff) you MUST NOT run programs that have EVER been run on ANY other shell.  **This includes previous versions of YAS**.  The reason for this is that when an emulated program is run, permanent modifications are made to it to convince it to work under the shell; in different shells these modifications may do the same thing, but are not exactly the same.

Introduction
------------
I'm certain everyone has heard of shells...  There are at least a dozen for the TI-86.  What makes this one special is that I have tried very hard to make it emulate TI-85 and TI-82 programs correctly.  This is the only (released) shell that will run TI-85 (and TI-82) programs over 12k.  Of course there are lots of other less important features, such as program grouping, power down, icon support, etc.  There are downsides though, YAS is quite large as shells go, and the interface is not the prettiest thing to look at...

New since version .91
---------------------
Bug fixes...

Text wrapping in 82 emulation is a little better now

New since version .79
--------------------- 
TI-82 emulation (Ash and CrASH) -- While the 82 emulation is far from perfect, a good many programs do work (try Dying Eyes).

Many, many bugs fixed -- Really there are too many to name, but I suppose the most important one is that BASIC programs will now run without any problems.

Program hiding feature added -- This is not really the best feature, since you can't un-hide programs, but the real point of it was to add delete confirmation.

BASIC program descriptions -- Pretty self-explanatory.  Admittedly, I stole the idea from Emanon (another shell).

TI-85 emulation is pretty much the same, but a few minor things have been changed.  I doubt anyone will notice.

More?  You want more?!?

How to use it
-------------
YAS must be run using the basic program YAS and NOT by using the command asm(yas.  Programs are displayed in two columns, with comments displayed at the bottom.  Five folders are displayed below that.  To the right, the size and type of the selected program are shown, along with an icon; the bar to the far right indicates battery power.  Free memory is also displayed.  The controls are as follows:

2nd/Enter - run selected program
Alpha  - run in boss mode (exits to ti-os)
EXIT - exit to ti-os
MORE - change to next page of programs (if available)
arrows - move highlight bar
F keys - change current folder
X-VAR - select external variables for emulation (TI-85 only, more on this below)
+/- - change contrast
DEL - go to delete/hide menu, choose with F1 or F2, cancel with any other key
CUSTOM - rename current folder
STO - move program to another folder
ON (main screen) - turn off calculator
ON (in emulation) - break out of emulation, unfortunately this doesn't always work
PRGM - activate delay for TI-82 programs

A note on emulation
-------------------

TI-85

For TI-85 emulation to work, you NEED to have programs that have not been run using any other shell.  ASE and Rascall (and YAS .79/.91) both make permanent modifications to TI-85 strings, which will cause YAS to crash. 

About the x-var menu:  this will simply display every string on the calculator.  Press 2nd or Enter to select things, this will put a ">" in front of them.  Also, selecting too many variables may cause things not to work (it won't crash or anything, things just won't run).  A few games, such as Orzunoid or Loderunner, require that you select the main variable in this menu, then run the level set.  

YAS currently supports ZShell, PhatOS, Rigel, and Usgard 1.0+, although Rigel support is limited (no libraries or interrupts) and older Usgard programs that need libraries will not work (I don't like libraries :).  OS-85, CShell, SuperNova, and Usgard .95 are not supported and probably (meaning certainly) never will be.

If you find something that doesn't work, first make sure it has never been run on any other shell, then try and make sure it actually works on the 85.  If there are still problems, send me some mail and I'll see what I can do about it (seriously, I will).

TI-82

The stuff I said in the first paragraph of TI-85 emulation goes for TI-82 emulation too, although it's not real important since 82 support on the 86 has been rather lacking...  I'm not going to lie to you and say that every 82 game works, because a lot of them don't; if I had to guess, I'd say maybe 2/3 of them do.  There are a lot of problems that came up in TI-82 emulation, and I was not able to fix them all (the main thing is undocumented rom calls).

One problem was that some 82 games ran way too fast under emulation.  To combat this, I have added an optional delay which is accessible by pressing PRGM.  Not all programs need it though, so please don't use it to cheat in games :)

Another issue is that the keys aren't exactly the same on the 86 and the 82.  Most are the same though, and the ones that aren't are pretty easy to figure out.  The one possible exception is when 82 programs want you to press DEL, you should actually press MORE.

Currently only Ash and CrASH programs are supported, so you won't be able to run all those cool OS-82 games :)

To get TI-82 programs onto your TI-86:  you need to convert .82p files to .86p and transfer them in the normal way.  Open up a dos prompt (sorry mac users) and type "conv <program>" in the appropriate directory, where <program> is the name of the program you want to convert (without the file type extension).  For example, for Dying Eyes, type "conv deadeyes" (without the quotes).  You will need the files conv.bat, Devbac83.exe, and prgm86.exe in the same directory.  Those of you familiar with ASE may notice that these are exactly the same programs included with that shell.  Yes, I stole this stuff right out of the ASE archive.

Programming for YAS
-------------------
There are a few things you can put in your programs so they look nicer in YAS.  All of these are highly optional.  First, there  are comments.  This is exactly the same as the format used in ASE and Rascall (and nearly every other shell), but in case anyone forgot, here it is again.

	nop				;identifier for comment
	jp start			
	.dw 0				;version number of table
	.dw title			;pointer to title
title:
	.db "this is some text",0	;comment text (can be placed anywhere in code)
start:

Icons are also supported in YAS, although there are two ways to include them.  progxxxx/iconxxxx icons from Aurora will show up, but since I thought that method was kind of stupid, YAS has it's own icon system, which is very similar to comments.  Icons can theoretically be any size, but anything over 40 x 23 will interfere with the rest of the screen.  Here's the format:

	nop				;identifier for comment/icon
	jp start
	.dw 1				;note this is version 1 of the table
					;0 means just a comment
	.dw title			;pointer to title
	.dw icon			;pointer to icon
title:
	.db "this is more text",0
icon:
	.db 8,1				;this is the height, then the width (in bytes)
	.db %00000000		;then a bitmap
	.db %00100100		;as with comments, this can be placed anywhere
	.db %00100100
	.db %00000000
	.db %01000010
	.db %01000010
	.db %00111100
	.db %00000000
start:

Another thing you can do is make your programs not show up in YAS, this would be useful if you just wanted to use a program to store data.  This uses the same format as ASE:
	
	bit 2,(iy+31)
	jp z,$416c

For you non-asm people, I have included a way to attach comments to BASIC programs.  This follows the same format used in Emanon, which was the first shell to have this feature.  Simply stick the following at the top of your program:

	::"This is some text"

(The first : is the one already there, you need one extra)

The Future
----------
I have some interesting ideas for the future, but I can't really say when they'll get done, so I guess I won't say anything about them.  I had planned a lite version, but then I realized that there are lots of smaller shells out there already.  Last time I also hinted at 83 emulation, but I am rather hesitant to try it after the nightmare that 82 emulation was.  

Beta Testing (at some time or another)
--------------------------------------
Jean Vasquez
Brett Barwick
Tim Buckingham
Ahmed El-Helw
Blackbelt
Dan
Alan Kwan (check out his page, http://more486.ticalc.org)

Also Thanks To
--------------
CLEM - for the findpixel routine
Matt Johnson/Dave Phillips - 86 Central
Bill Nagel/Movax/Alan Bailey - for the 82->86 conversion stuff
Anyone who ever wrote a program on the TI-85 or TI-82 and released their source

Contact Information
-------------------
If you find any bugs or have other comments, send me some mail at acurti1@umbc.edu.  I try to respond to everything, although it seems there was a typo in my email address in the last release...

Final Note
----------
Hopefully there aren't too many bugs in this release, though I expect there are a few.  You'll probably have a few crashes with the 82 stuff... 

Man:  "I'm telling you, the light would work better if it pointed out to sea."
Cap'n:  "Darr, shut up!  I know what I'm doin'."
Cap'n (to himself):  "Arr, I hate the sea and everythin' in it."
