VAPOR Users Guide
for release dated Feb 25, 2021*

Welcome to the documentation for Project VAPOR, a networking infrastructure that allows calculator users to quickly and easily manage the software on their devices, as well as connect to game servers without needing to physically install the dependencies through the usual manual procedure.

Installation

To install this program, sadly you will need to do it the old-fashioned way. Download prgmVAPOR (VAPOR.8xp) from either this website or the Cemetech/ticalc archives, and send it to your device. You will also need an assortment of the C libraries by MateoC present on your device including: FILEIOC, GRAPHX, SRLDRVCE, USBDRVCE, as well as a library of my own design, HASHLIB. Once you have all this software, you should be good to go!

Run VAPOR for the first time by going to the Catalog menu (2nd + 0), scrolling down to the Asm( token, and then pressing Enter. This will paste that token onto the homescreen. Then press Prgm to enter the Programs menu. Scroll down to VAPOR and then press Enter again. You should now see Asm(prgmVAPOR on the homescreen. Now press Enter for a third and final time.

Fair warning: the first time you run VAPOR, it will appear to have frozen--it will seem to be doing nothing for a very long time. Do not be alarmed. It is merely computing an initial hash (SHA-1) for itself. Once this hash is taken, unless you lose the VAPOR library file (appvar VPRLibr), you should not experience such a long wait on launch again.

Usage

Figure 1

VAPOR has two main menus and a number of hotkeys you can use. I made an effort to intuitively designate the primary interface by using the Arrow keys and the Y= through Graph keys to control primary components of the interface. But in the event the keybindings are needed for reference:

Y= Connect/Reconnect to VAPOR network

Window Scroll up within selected menu

Zoom Scroll down within selected menu

Scroll up sidebar menu

Scroll down sidebar menu

And that does it for the primary interface. Now each menu has two secondary options, which change depending on which of the two menus you are on. These are both bound to the Trace and Graph keys, respectively.

Trace
(LIBRARY TAB) Update all files in library
(SERVICES TAB) Retrieve list of active services on VAPOR network

Graph
(LIBRARY TAB) Placeholder
(SERVICES TAB) Connect to selected service
    (at present only updates required dependencies)

VAPOR Network

Figure 2
Figure 3

The VAPOR network serves two main functions. Firstly, it hosts a number of arbitrary servers for calculator games (or other applications). This allows anyone who wants to make a multiplayer game, or provide a networked service for the TI-84+ CE, to do so without much work, and allows calculator users to connect to those services without much work on their part. Secondly, it acts as an update mirror for calculator software, similar to the package sources in apt, Homebrew, or any other flavor of package manager.

Service Hosting (see Figure 2): The Services hosted can be listed from the calculator by pressing the Trace key while on the Services tab. Doing so requests that the server report any hosted services: the service name, host name, port number, and online state. Please note that if you are not actually connected to the VAPOR network, pressing the aforementioned key will do nothing. You can see your connection status on on the bottom left side of the screen, to the right of the Connect button. Consult the "Servers" tab in the sidebar to the left to see what Services we are currently hosting.

Software Mirror (see Figure 3): The VAPOR network also hosts files relevant to the Services that are hosted, as well as a frequently-updated download mirror for the CE C Libraries released by MateoC and licensed under LGPL-3.0. It also enables VAPOR to perform live self-updating if it detects there is a newer version of the VAPOR client. Update tracking is performed via SHA-1 hashes... when the calculator asks for a file update, it sends the hash of the current file. Should the hash of the file stored on the server differ, a file transfer is initiated, which terminates by providing the hash of the new file, which the device will log. It should be noted that all packages mirrored by VAPOR are analyzed periodically by file integrity software. Consult the "Packages" tab in the sidebar to the left to see what software is in our package lists.

Known Bugs

File Downloads are Slow
This is a caveat of the hashing that occurs as a file is being downloaded. At present, since HASHLIB was written in C, the SHA-1 and SHA-256 algorithms do take some time to run. A re-write of HASHLIB in full assembly that will likely be faster is underway, so just bear with us for now.
File downloads can sporatically fail to complete
This issue was resolved as of v1.1, where the server now waits for a "DATA_SEND_NEXT" packet before continuing to send the next buffer-worth of file data.
This occurs from time to time--the load bar will just stop moving but you won't get an error message. I have not quite worked out why this happens yet--there is a slight chance it could be a bug in the USB or SRL driver. If this occurs, it won't cause you any major problem, as we don't delete the older file until the file transfer succeeds and the hashes match. You will merely wind up with a stray temporary file on your device which will be cleaned right up with the next transfer that occurs. Press any key to remove the Download UI from the screen and re-start the download(s).

Acknowledgements

Contributing Developers
beckadamtheinventor - assembly routine to reload VAPOR after update
beckadamtheinventor = assembly GetKey routine compatible with SRL driver
C CE Libraries
https://github.com/CE-Programming/toolchain
source & license referenced as per stipulations of LGPL-3.0

License

Software License:
VAPOR client and server are distributed under the GPL-3.0 open source license, with the exception of any components that may be bound by other licenses. You are free to download, modify, and redistribute this software with the stipulation that modified clients may not be able to connect to the home instance of VAPOR's server. Any derived works must also inherit the licenses associated with them, as per GPL-3.0.
VAPOR Server EULA:
Members of the TI-84+ CE calculator hobbyist community (or general userbase) are welcome to use the VAPOR network for its herein-indicated purposes for as long as the VAPOR network is active, with the following stipulations:
  • Any bugs or exploits that adversely affect the Server's functionality in any way should be reported as soon as possible to the Server administrator using the Contact information provided below.
  • Developers hosting services or software on the VAPOR network must ensure that they have the right to distribute the software they are posting. This means either it is software of their own making, or that it is derived from open source or public domain works, or under explicit licensing agreement.
  • Any hosted software derived from open source or public domain sources that you distribute on our network is distributed under the terms of the source license, regardless of any licenses you may elsewhere stipulate. This applies only to libraries and borrowed code, not to portions that are not derived.

Contact

I may be reached for questions, comments, concerns, complaints or anything else at the following locations:

Email: acagliano97@gmail.com
Discord: acagliano#3685