This article is under construction and needs to be completed. You can help by expanding it.
ZShell was the first assembly shell released for the TI-85 graphing calculator, and was also the first assembly shell released by the TI community. Although it has since been replaced by newer, more feature-rich shells, it still remains a testament to the ingenuity of the TI community as its functioning required hacking the TI-85 to allow for a work-around for assembly programming.
ZShell itself is stored in a string variable. All you have to do to put it in your calculator is use your the Graph-Link and transfer a memory backup to your calculator. To do this without losing whatever is presently in your memory, follow these steps:
- Transfer all of the data on your calculator to a group file on the computer.
- Transfer the ZShell backup file to your calculator.
- Transfer the group file back to your calculator. Don't overwrite any variables from the ZShell backup.
(Screenshot of Product)
Significance of Product
ZShell is a program for the TI-85 graphing calculator that enables execution of Z80-compatible programs stored in string variables; it is a shell and an operating system combined. The shell part provides an organized way to list and execute the string programs stored on the calculator, while the operating system part provides functions necessary for the string programs to work properly with different ROM versions and in the quicksand environment of the TI-85's memory.
- Why product was important to TI community
- Any controversy or interesting circumstances surrounding product
- Awards won, fond memories that people have
- How to use the product
- Can copy the author's readme file (if available)
January 1995: Version 2.0
Cursor returns to last location after program exits.
Cursor wraps from the bottom of the page to the top, and vice versa.
Optional checksum after program termination.
January 1995: Version 3.0
No need to recall ZShell into the graphics screen.
February 1995: Version 3.1
ROM 5.0 support.
November 1995: Version 4.0
ROM 9.0 support. ROM 10.0 support.
Rewrote basic layer for ZShell calls. All earlier programs has to
be recompiled with a new TI-85.H to work with ZShell 4.0, since
ROM offsets has been exchanged for indexes. This caused the
CALL_ROM routine to be renamed to ROM_CALL.
Added ability to "warp" out of ZShell.
Made ZShell inform the user if a program is newer than ZShell.
(Taken from ZShell ticalc.org page)
I made ZShell because I wanted a more flexible way to execute asm programs than by storing them in a PIC variable and recalling them to the graph screen.
Although I did not discover the hidden asm capability of the 85, I was the first to make such a shell (as far as I know).
As far as history goes, the change log in ZShell.doc is the best I can offer. It's been a long time since I've done anything with it. I handed the project over to Magnus and Rob a little over 2 years ago, I think.
Dan and I worked close (with me nagging and testing, and him coding) on the never-to-be-released ZShell 3.5. This included a few things like library support and the like. However, the library support was never good enough to be released.
Dan handed it over to me and Rob (I had seen the ZShell source before, but not much). Mainly Rob was into doing a 9.0/10.0 version. He basically provided the information, and I did most of the coding for version 4.0. It was a complete restructure of how ROM calls were handled (now by indexes instead of addresses). A few other things were also changed. The release date everybody should know of :-) And I believe that with a ZShell that could run on almost all the TI-85s (ROM 1 and 2 being the exception, I believe. ROM 7 as well, but I've never heard of that one), this is when assembly for the TI-85 _really_ took off. After the release of ZShell 4.0, we both took a break :-) Then after a while, started on ZShell 4.5 (never to be released). This version included library support (courtesy of Rob), support for ROM 2.0, some "kernel hooking" abilities. However, it all bogged down before the release due to a lack of time. We had a version that worked most of the time, but far from always.
Now with the release of many other shells (many of them built on the knowledge gained from ZShell - either by reverse-engineering or by simply asking for the information) appearing, I don't really see the need to create a new version of ZShell. ZShell currently has one stronghold - and that's not the shell itself. All other shells can run ZShell programs - but they can't run other shells programs.