Disaster

author: william756
version: 83/84/etc.
summary: 'just a screen saver of a ball bouncing from left to right over & over until you press the on button to break it.'
description: 'look at summary'
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '1'
compatibility: bb
download: null
image: null
fileSize: '405'
fileSizeUnit: '1'
dateMade: '1571374800'

Hi this is my first time doing a project, I'm trying to program a game called "darklands" but there's still a lot I don't know about programming and I could use allot of help, any one who contributes in helping will get a spot in the credits. Just for some info on the main idea is that it's a futuristic rpg on you waking up out of a capsule, just to learn you were chosen by prophets 200 years ago to battle the dark forces of _ * I still haven't got a name for him*, so that's all I have to say for now, I'm only available to post on; Thursday, Friday evening, and saturday. If you have questions feel free to ask.

Sep 25 A new forum category specifically for CE and CSE programming questions has been added to separate these threads from those for the monochrome models

sample.png

Command Summary

Clears table values

Command Syntax

This command takes no arguments

Menu Location

This command can be found under F1 (Tools) and then selecting 8:Clear Table

Calculator Compatibility

This command works on all calculators.

Token Size

X byte(s)

Clears all table values, applies only to ASK setting on the Table Setup dialog box.

:ClrTable          Done

Related Commands

Several (around 3) commands have a similar function or are used in a similar context to this command. Make a bulleted list of them, with links to the other commands' pages. It will often be the case that several commands all link to each other.

  • Command 1
  • Command 2
  • Command 3

See Also

(this section is usually not present)
If a command can be used in a particular design concept or technique, you should mention it and provide a link to its respective page. This section should come at the end of the page, and be a bulleted list that contains all of the design or technique related links mentioned throughout the page.

  • Design Concept 1
  • Design Concept 2
  • Technique 1

sample.png

Command Summary

Clears the graph screen

Command Syntax

This command does not take any arguments

Menu Location

This command can be found in the Draw menu on the Graph Screen or from the CATALOG.

Calculator Compatibility

This command works on all calculators.

Token Size

X byte(s)

Clears any functions or expressions that were created using the Graph command or the Table command. Any previously selected Y= functions will be graphed the next time the graph is displayed.

:ClrGraph        Done

Related Commands

See Also

Graphing Section

toolbar-separator.png This article is currently in development. You can help TI-Basic Developer by expanding it.

You just completed a project on your calculator you've been working on for quite a while. And you're wondering, "How can I back up my programs in case they get deleted?" This tutorial will teach you how to backup certain programs on your calculator or PC. Backing up is extremely important for keeping projects alive, and to not shoot yourself in the foot when you lose them all. Backing up on your calculator is one of the steps for backing up should you don't have a PC lying around. For starters,
let's talk about what specifically what types of files you can back up. You can back up anything; programs, lists, app vars, matrices, strings, all that stuff. But there's a price to pay when backing up. You must back up 2 or more files in your backup, else, it wont work. Another thing is you must have memory available. Backing up files must be in RAM, because the OS doesn't mess with files in archive. So without further ado, let's back up your projects!

Preparation

Ensure your files are in RAM, if they're in archive, un-archive them. Ensure you have archive space left, because back-ups are written to archive. On the calculator and across the Internet, back-ups are called groups. Groups are like "zip folders" containing files that were in RAM, and now in archive. These groups cannot be un-archived, so don't try to un-archive them.

Backing Up

To group your programs, press [2ND], [+], [⬆], then [ENTER]. Type in the name of the group of your back up. Press [ENTER] when you're finished. A menu will be shown indicating what files you can back up. If you are backing up many types of files (i.e., programs, pics, strings), it's best to select All-. All+ selects ALL files in RAM, so you want to do the second option to select specific files. Use the arrow keys to move the cursor up and down to scroll through all the files, and hit [ENTER]
to select the file you want. A little black square will indicate that file will be backed up. When you have selected all the files you want, hit [➡] and select the option "Done". Your calculator should say or so "Copying variables to group: group name", then after it will show "Done" when the back up is complete. You're done!

Warnings

Yes, there are some warnings that you need to know. When you backed-up your projects and there are some things you need to add/change, you do not need to constantly group your projects when you make small changes. Only do it once you make big changes. Doing so can slow the calculator down, and can sometimes do a back-up fail. Back-up fails is when the group fails to write to archive. Meaning, your calculator can simply shut off for no reason or just freeze at the "Grouping" screen. If it freezes, you are forced to remove a battery to escape this. RAM will be cleared the next time you turn your calculator on. Not although you lose your groups, you lose your projects as well. Why? Because they were in RAM when you attempted the back-up, and when it crashed, they remained in RAM when you removed the battery. So now, your projects are permanently gone.

Keeping those projects alive

To keep your stuff from being deleted, make two groups when you back up for the first time. Then, when you make big changes, you delete the first group, then back up your projects. After a while, when you make even more changes, delete and back up to the second group. Keep doing this back and forth until you are 100% done with your projects.

But… what if those groups get deleted? Then you have nothing to spare! So what do you do now when you have the groups in archive and don't want them both gone? Back them up to your PC.

Backing up to your computer

Back-ups on your PC are harder to lose compared to your calculator. Files from your calculator are stored to your computer's hard drive, so they're not lost when your PC crashes. Cool, huh? So what do you do to back up files to your PC? It's not that simple as you may think it is. You need a special software for your computer to communicate with your calculator. Connecting your calculator won't just show up in Connected Devices. Depending on your calculator model, you may need either software:

If you have a TI-84 Plus/SE/CSE/CE/T

Download TI-Connect CE. This software is made for the 84+ family, and has a easy-to-use user interface. Requires Admin privileges to install.

If you have a TI-83/+/SE, 89/Titanium, 85, 86, Voyage 200, etc.

Download TI-Connect. This software is made for any calculator, including the 84+ family. This software can get slow and annoying, but it's old. Expect it to be slow. Requires Admin privileges to install.

Now you have the software. But aren't you forgetting something? Oh yeah! A linking cable. This is another important necessity for backing up to your PC. Most TI models don't have Bluetooth or Wifi on it (Except the newer N-Spire calculators)! There are many different cables made specifically for your model/family. Links to purchase these will be added later, so stay tuned. Connect your calculator to your PC.

Backing up to your PC

Now make sure your calculator is on and has a good battery charge. Now find the software on your computer and open it. Find the option to send/upload files to your PC.

More detailed explanation will be explained later.

Wrapping Up

Now that you know how so send files to your PC and back up on your calculator, you can now not worry about losing anything!

Changes will be made on-the-go, expect more content on this page.

Uploading Help

Ever have any trouble with uploading content to the archives? Don't worry, this page will help solve that problem. Many people have trouble with uploading files to the archives, due to the dreaded AJAX error. So don't get upset if it doesn't work, there's nothing to get upset about. So follow these steps and tips and you'll be good to go.

I bet you want to upload your stuff ASAP, right? Don't you just cram as much info with the file and screenshot and hit submit? Well, hold on a second. That's not the way to go. You risk an AJAX error. For those of you who do not know what that is, let me put it this way. Once you get it, you can't really do anything after that error. You'll have to discard changes you've made to your archive page.

When you want to prevent the risk of that error, here are some things you can't put in your archive (yet):

  • The download file
  • The screenshot

Here are some additional rules you need to know about your archive. Doing any of these will probably throw an AJAX error:

  • Keep the short summary less than 400 characters.
  • Don't include any decimals in the file size. i.e., 4.2, 108.9, etc
  • Don't spend too long editing the initial archive page.

If you kept the file and screenshot out of the way, good. Save your archive with only the information. No summaries or descriptions. Here are some tips you should do in case something happens:

  • Keep your description and summary in a text document (Notepad for Windows or Text Editor for MacOS).
  • Keep your files in the Downloads folder for easy access, so you don't have to scrounge your PC for the files and screenshots you need.

Make backups of your files unless they get deleted on accident. Deleted files on removable mediums will be deleted permanently, so be careful!

So now that you have your text document open and ready to copy and paste, and your files in the Downloads folder for easy access, you're ready to upload your archive! Edit your archive page, and copy and paste your summary and description. Add your file and screenshot. It is highly recommended that your uploaded file is a .zip archive. Make sure your screenshot isn't too big, or some of it will be cut off. The screenshots are intended to be captured by calculator screens. Now hit upload. If it said "Page Saved!", your good! Your archive was saved and your page is now viewable to other members of the site!

author: 'Texas Instruments Incorporated, Uploader: Bio_Hazard1282_rPi3Bio_Hazard1282_rPi3'
version: '5.4'
summary: 'Get the latest features for your TI-84 Plus CE graphing calculator by updating to the newest version using the new bundle file – includes apps!'
description: "The version 5.4 upgrade is available for:\n\n* TI-84 CE graphing calculator\n* TI-84 CE apps\n\nUsing version 5.4 enhances the usability of your graphing calculator and ensures you have access to the latest features and functionality, including:\n\n* Graphing piecewise functions in a familiar form\n* TI-Basic editor improvements including cut/copy/paste and syntax improvements\n* OS/APPS/Images Bundle file — one file to update everything\n* Preset TI-SmartView™ CE emulator with different settings for your algebra, geometry and calculus classes\n* Rover Support\n\n**Copied from https://education.ti.com/en/product-resources/whats-new-84-ce**\n© Copyright 1995-2019 Texas Instruments Incorporated. All rights reserved.\n--\n+++ Disclaimer\nThe TI-84 Plus CE OS® is made by Texas Instruments® and protected by Copyright. Do not distribute the OS without written consent, share any of it's contents to other users, claim it as your own, or produce fraud versions of this operating system to the Internet. By downloading this OS you agree to TI's Terms and Conditions. You also agree that you are not a bot."
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '1'
compatibility: ff
download: 'archivefile:ti-84-plus-ce-5-4/TI-84-Plus-CE-5-4.zip'
image: null
fileSize: '4'
fileSizeUnit: '3'
dateMade: '1564034400'

author: 'Bio_Hazard1282_rPi3Bio_Hazard1282_rPi3'
version: 'Currently 3.5, soon 3.6'
summary: 'Token Finder+ is a unique tool for accessing inaccessible tokens on your graphing calculator.'
description: "Token Finder+ is a special tool for accessing inaccessible tokens on your graphing calculator\nthat you couldn't do in pure TI-BASIC. Meaning, you can get any token or ASCII character\nyou ever dreamed of on your calculator. Also contains a Spanish version of the program and Read Me!\n\n+++ Version 3.5 Updates:\n\n- Faster selection; the blinking cursor was removed.\n- Icons; to represent options in menus, messages, etc.\n- Download All; save all the tokens given the hex value in the appvar and write them to prgmTOKENS.\n- Decreased memory size\n- Simplified messages\n\n+++ Version 3.6 coming soon\n\n3.6 will soon arrive the archives. 3.6 includes further optimizations, memory decrease, and a better validation process at the beginning of the program. The validation process checks to see if all the hex values in the TokenHex application variable are usable. Must be 4 characters long, 0-9 & A-F. If the validation fails, the application variable will be deleted. Faster seperate deletions will be added too, and some minor bug fixes in the code."
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:token-finder/Token-Finder.zip'
image: 'archiveimage:scrot2/scrot2.png'
fileSize: '26'
fileSizeUnit: '2'
dateMade: '1562479200'

author: 'Bio_Hazard1282_rPi3Bio_Hazard1282_rPi3'
version: 4.87.5
summary: 'File Manager is a Celtic 3 program that allows you to run and manage files. You can manage BASIC programs, Application variables, and groups. Please read more for more information.'
description: "File Manager is special program for managing programs. In this program, you can archive, hide, lock, and run programs like a lot of other utilities. But this utility specifically is special in some ways. Manager can download the contents of programs or app variables, view the files inside any group file, prevent unlocking protected z80 assembly programs, parse for different program types (Any program, MirageOS, z80 assembly, and Ion [MirageOS, Ion, ans z80 assembly parsing DOES NOT work with zStart installed]), and conerting programs to app variables and back to programs. THIS IS AN UPDATED VERSION 4.86.7, so feel free to explore the new updates implemented in the program. To view what updates that were specifically installed, click the Files To Send/Ver 4.87.5/New Updates.txt. This program is still compatible with the TI-83+/SE, but NOT recommended with the original TI-83. Please leave me a review and rate my file to help improve this program in the future! This program works on older operating systems, but has a catch. On the 84+/SE, the OS MUST be upgraded from 2.20 or later, 0.40 WILL NOT work. On the 83+/SE, the OS MUST be upgraded from 1.13 or later, 1.10 WILL NOT work. NEW GIFS HAVE BEEN MADE!!!\n\n[[code]]\n _ _ _ _ \n| | | | | | | | \n| | | |_ __ | | __ _| |_ _ _ \n| | | | '_ \\ / _‘ |/ _` | __/ _ \\/ __|\n| || | |_) | (_| | (_| | || /\\ \\\n \\/| ./ \\,_|\\,_|\\\\_||_/\n | | \n |_| (Updates)\n\nNew updates for File Manager:\n\n Info\n\nVersion: 4.87.5\nSize: 7084 (568 bytes less from previous)\nLines of code: 682 (39 lines less from previous)\nCapability: TI-83+/84+/SE\nTotal Updates: 3\nTotal Added: 0\nTotal Changed: 3\nTotal Removed: 0\nUnknown (forgotten updates): 0\n\n Implemented/Removed Functions\n A - Added\n R - Removed\n C - Changed\n\n* NEW DOWNLOAD METHOD! Most files will download INSTANTLY.\nNo need to wait for slow download times. NOTE: Files that\nare 8500 bytes or more CANNOT be downloaded. [C]\n* Some bugs fixed in the main managment menu. [C]\n* Changed OS version display in the title screen. [C]\n[[/code]]\nNew Miscellaneous files have been added!\n\nUpdated Monday; September 2, 2019 at 7:36AM."
arcade: ’0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:filemanager/filemanager.zip'
image: 'archiveimage:manager/Manager.gif'
fileSize: '9'
fileSizeUnit: '3'
dateMade: '1567404000'

sample.png

Command Summary

Clears the error status.
and clears the internal error context variables.

Command Syntax

ClrErr

Menu Location

This command can only be found in the CATALOG

Calculator Compatibility

This command works on all calculators.

Token Size

? byte(s)

Clears the error status. It sets errornum to zero and clears the internal error context variables. The Else clause of the Try…EndTry in the program should use ClrErr or PassErr. If the error is to be processed or ignored, use ClrErr. If what to do with the error is not known, use PassErr to send it to the next error handler. If there are no more pending Try…EndTry error handlers, the error dialog box will be displayed as normal.

Related Commands

Several (around 3) commands have a similar function or are used in a similar context to this command. Make a bulleted list of them, with links to the other commands' pages. It will often be the case that several commands all link to each other.

sample.png

Command Summary

factors the first argument for all its variables or for var.

Command Syntax

cFactor(expression1[,var])
cFactor(list1[,var])
cFactor(matrix1[,var])

Menu Location

MATH/Algebra/Complex

Calculator Compatibility

This command works on all calculators.

Token Size

X byte(s)

cFactor(expression1) returns expression1 factored with respect to all of its variables over a common denominator.

expression1 is factored as much as possible toward linear rational factors even if this introduces new non-real numbers. This alternative is appropriate if you want factorization with respect to more than one variable.

When a list or matrix is provided, cFactor() will iterate over the list or matrix.

:cFactor(a^3*x^2+a*x^2+a^3+a)
          a*(a+⁻i)*(a+i)*(x+⁻i)*(x+i)
:cFactor(x^2+4/9)
          (3*x + -2*i)*(3*x + 2*i)
:cFactor(x^2+3)
          x²+3
:cFactor(x^2+a)
          x²+a

Related Commands

  • Command 1
  • Command 2
  • Command 3

See Also

  • Design Concept 1
  • Design Concept 2
  • Technique 1

sample.png

Command Summary

Creates data variable dataVar based on the information used to plot the current graph.

Command Syntax

BldData [dataVar]

Menu Location

This command is only available from the CATALOG

Calculator Compatibility

This command works on all calculators.

Token Size

? byte(s)

Creates data variable dataVar based on the information used to plot the current graph. If dataVar is omitted, the data is stored in the
system variable sysData.

the increment for the independent value (ex. x for function or θ for polar graphs) is calculated based off the window settings.

for 3D graphs, x remains constant until y increments through its range, this continues until x increments through its range.

When the Data/Matrix editor is started for the first time after BldData is run, dataVar or sysData will be the active variable.

Related Commands

  • Command 1
  • Command 2
  • Command 3

See Also

  • Design Concept 1
  • Design Concept 2
  • Technique 1

sample.png

Command Summary

Returns the forward-difference quotient (average
rate of change).

Command Syntax

avgRC(expression1, var [,h])

Menu Location

This command can only be found in the CATALOG

Calculator Compatibility

This command works on all calculators.

Token Size

? byte(s)

AvgRC() returns an expression equal to the following formula:

(1)
\begin{align} \frac{f(x+h)-f(x)}{h} \end{align}

h is the step value, which defaults to 0.001.

:avgRC(f(x),x,h)
           (f(x+h)-f(x))/h
:avgRC(sin(x),x,h)|x=2
          sin(h+2)-sin(2)/h
:avgRC(x^2-x+2,x)
          2.*(x-.4995)
:avgRC(x^2-x+2,x,.1)
          2.*(x-.45)
:avgRC(x^2-x+2,x,3)
          2*(x-1)

Error Conditions

Related Commands

  • Command 1
  • Command 2
  • Command 3

See Also

  • Design Concept 1
  • Design Concept 2
  • Technique 1

sample.png

Command Summary

returns a new list or matrix that is list2/matrix2 appended to list1/matrix1

Command Syntax

augment(list1,list2)
augment(matrix1, matrix2)
augment(matrix1; matrix2)

Menu Location

  • Press 2nd MATH to enter the MATH popup
  • Press 4 to enter the Matrix submenu
  • Press 7 to select augment(

Calculator Compatibility

This command works on all calculators.

Token Size

? byte(s)

when lists are used as arguments, a list is returned that is list2 appended to list1. When matrices are used, if a comma is used to separate arguments, the matrices must have equal row dimensions and matrix2 is appended to matrix1 as new columns. If a semicolon is used, the matrices must have equal column dimension and matrix2 is appended to matrix1 as new rows.

augment({1,⁻3,2},{5,4})
          {1,⁻3,2,5,4}
:[1,2:3,4]→M1
          [1,2:3,4]
:[5,6]→M2
          [5,6]
:augment(M1,M2)
          [1,2,5:3,4,6]
:[5,6]→M2
          [5,6]
:augment(M1;M2)
          [1,2:3,4:5,6]

Advanced Uses


Separate unrelated advanced uses with a horizontal bar.

Optimization

Error Conditions

240 - Dimension mismatch happens when either the rows or columns of the matrix do not align. See above..

Related Commands

author: 'Bio_Hazard1282 does not match any existing user name'
version: '1.1'
summary: 'A very simple program to find out which product/brand deals is better to find. No need to do the math yourself!'
description: "A very simple program to find out which product/brand deals is better to find. No need to do the math yourself!\nSource Code:\n[[code]]\nClrHome\nFor(I,1,2\nDisp \"Product/Brand \"+sub(\"12\",I,1)+\"?\nInput \"Price: $\",P\nInput \"Amount: \",A\nP/A\nIf I=1:Ans→B\nIf I=2:Ans→C\nClrHome\nEnd\n\"1\nIf B<C:\"2\nDisp \"Deal \"+Ans+\" is\n\"a better buy.\n[[/code]]"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:deal/DEAL.8xp'
image: null
fileSize: '172'
fileSizeUnit: '1'
dateMade: '1546930800'

Follow the same template as errors but use the info from the warning codes document.

sample.png

Command Summary

Returns the modulo of value1 with respect to value2

Command Syntax

mod(value1, value2)

This command returns the modulo of two numbers. This is defined as the remainder when value1 is divided by value2. This command is identical to the remain command, which returns the remainder of the dividend.

mod(12,5) = 2

mod(8,2) = 0

mod(64, 15) = 4

Error Conditions

Error conditions still need to be added to this command page

Related Commands

Several (around 3) commands have a similar function or are used in a similar context to this command. Make a bulleted list of them, with links to the other commands' pages. It will often be the case that several commands all link to each other.

sample.png

Command Summary

Returns the fractional part of a value.

Command Syntax

fPart(value)

fPart(value) returns the fractional part of value. Also works on complex numbers, lists and matrices.

fPart(5.32)
             .32
fPart(4/5)
              .8
fPart(‾5.32)
             ‾.32
fPart(‾4/5)
              ‾.8

Advanced Uses

fPart(, along with int( or iPart(, can be used for integer compression.


Also, fPart( is an easy way to find A mod B (the positive remainder when A is divided by B).

:B(A<0)+iPart(BfPart(A/B))

If A is guaranteed to be positive, the following shorter code can be used, omitting B(A<0):

:iPart(BfPart(A/B))

Finally, the easiest way to check if a number is a whole number is not(fPart(X:

:If not(fPart(X:Then
: // X is an integer
:Else
: // X is not an integer
:End

You can use this, for example, to check if a number is divisible by another: if X is divisible by N, then X/N is a whole number. This is useful when you want to find the factors of a number. Warning: when storing values with repeating decimals and later multiplying them to see if a number makes it an integer it can return a value of 1 or -1 instead of 0 even if it is an integer. Example: if you store 1/3 as X and then do fpart(3x) it will return 1 instead of 0. This is because fpart(.999…) results in .999… and then rounds to 1 when displaying rather than rounding to 1.0 and then displaying the fpart( as 0.

Optimization

Often you want to find the value of a-1 mod b — this occurs, for example, in movement routines with wraparound. However, the problem is that if a=0, a-1 will be negative. Rather than use the longer version of the modulo routine, you might replace subtracting 1 with adding (b-1). This will have the same result, but without sign problems.

Related Commands

See Also

sample.png

Command Summary

A short description of what the command does.

Command Syntax

The generic syntax of calling the command, with arguments.

The Ans variable holds the last answer that was stored in the calculator. Because Ans is stored in a special storage area built-in to the calculator, and it is extensively used by the calculator, you cannot delete it. Ans is also useful; it can make your programs both smaller and faster:

  • Unlike other variables which have a value type hard-coded in (i.e., a string can only hold text, and lists and matrices can only hold numbers), Ans can take on whatever value you want: a real or complex, list, matrix, or string are all acceptable.
  • Along with the finance variables, Ans is faster than the real, complex, list, matrix, and string variables; and subsequently, you should try to use it as much as possible.

One of the most common places to use Ans is in place of storing a value to a variable. Just paste the Ans variable to the location where the variable was called, and then when the expression is evaluated, the calculator will use the current value of Ans. Using the Ans variable allows you to eliminate the variable, which helps save a little or a lot of memory (depending on the type of variable and its size).

30+5A→B
Disp 25A,30+5A
;can be
30+5A
Disp 25A,Ans

The one major drawback to using Ans is that its current value is only temporary. Whenever you store a value to a variable or place an expression or string on a line by itself, Ans is updated to the new value. This restriction essentially limits your use of Ans to only a single variable. If you are manipulating two or more variables, it's best to just use the variables.

There are several cases in which changing the value of a variable does not modify Ans, thus preserving its current value for later use:

  • storing to an equation variable
  • using the DelVar command to delete a variable (i.e., set its value to zero, if it's a real variable)
  • initializing or changing the value in a For( loop.

These cases can be very useful, allowing you to use Ans to store an expression rather than create a temporary variable for it.

A list is a collection of elements (made up of numbers, variables, or expressions). Although lists can have up to 999 elements (the only exception is the TI-83, which can only have 99 elements), they are limited by the amount of free RAM. Besides the six built-in lists (from L1 to L6), which can be accessed by pressing [2nd] and [1] to [6] (for whichever list you want), you can also create custom lists. A custom list name can be one to five characters, comprised of any combination of capital letters and numbers and theta, but it must begin with a letter or theta.

Lists are very versatile variables. They are used for storing highscores and map information, and just about anything else. Lists are also important because they are the only variable that can be assigned a name. This adds a certain security to using them. Other programs can still access your lists (and change or corrupt them), however, but there is a smaller likelihood of this happening simply because there are millions of possible names available.

To use lists, you must become familiar with some specifics of their syntax:

  • The little command, which belongs at the beginning of any list name, except the default lists L1…L6. Almost always, when using a list, you must include this: e.g., to access the list SCORE, you would enter ∟SCORE. When you choose a list from the [2nd][LIST] menu, this is added by default so you don't have to worry about it.
  • The curly brackets: { and }. These allow you to manually enter a list. When manually writing a list, you begin with putting a single opening curly brace ({) that will enclose the list. You then type a number or variable or expression, and put a comma after it. You repeat this for however many elements you want. You then put a single closing curly brace (}) that will close the list.
  • Parentheses: ( and ). These access a specific element of a list: for example, ∟NAME(5) would be the 5th element of ∟NAME. You can also use this to store to an individual element of the list.

Commands

List variables stand out from other advanced variable types because most commands you can use for numbers can be used for lists as well. In such a case, the command will be applied to each element of the list individually, and a list of the results will be returned. If two lists are used like this in the same command, their elements are "paired up" and the command will be applied to each pair. For example:

:cos({30,60,90
will be evaluated like
:{cos(30),cos(60),cos(90
:{3,4,5}={6,7,5
will return
:{0,0,1

Before doing any list comparison operations, you should first check that both list dimensions are the same size using the dim( command. This check is necessary because if the lists are not the same size, it will cause an ERR:DIM MISMATCH error. Of course, if you can guarantee their sizes will be identical, you can leave off the size check.

:If dim(L1)=dim(L2
:Then
:If min(L1=L2
:Disp "EQUAL
:End

There are some special commands for lists; some can be used for normal commands as well, but have a special meaning when used for a list. These are typically accessed through the [2nd][LIST] menu, and include:

Some statistical commands are used with lists as well: see the Statistics page for details.

Optimization

Some optimization tricks are used specifically with lists. For example, you may sometimes omit the little ∟ symbol at the beginning of a list. The most common situation where this applies is when using the → (store) command to store to a list. For example:

:{1,2,3→∟NUMS
can be
:{1,2,3→NUMS

This is even possible with a single-letter name, such as ∟X: the calculator will realize that you did not intend to store to the real variable X because lists cannot be stored to a real variable.

Another optimization that is possible is storing to the element just past the end of the list. For example, if ∟X has 5 elements, storing to ∟X(6) is also allowed. This increases the size of ∟X to 6 elements, and then sets its 6th element as usual. The following is a standard construction to add an element to the end of a list:

:(value)→∟X(1+dim(∟X

You can even store to the first element of a list that doesn't exist. Because there are no elements in the list, the calculator will first create a new element at the beginning of the list, and then assign it the value. This optimization works especially well when looping with a For( loop, since you can use the loop variable as the list index.

Advanced Uses

Lists can be linked together in a way similar to an Excel spreadsheet using a quotation mark:

:"2L₁→L₂

After running this code, modifying a value in L1 will cause the corresponding element in L2 to be updated accordingly. Modifying a value in L2 will break the link. Connected lists are indicated by a ♦ symbol in the list editor on the TI-84+, and by a small lock on the TI-84+CE.
sample.png

Command Summary

Returns the minimum of two elements or of a list.

Command Syntax

  • for two numbers: min(x,y)
  • for a list: min(list)
  • comparing a number to each element of a list: min(x,list) or min(list,x)
  • pairwise comparing two lists: min(list1,list2)

min(x,y) returns the smallest of the two numbers x and y. min(list) returns the smallest element of list. min(list1,list2) returns the pairwise minima of the two lists. min(list1,x) (equivalently, min(x,list1)) returns a list whose elements are the smaller of x or the corresponding element of the original list.

min(2,3)
     2
min({2,3,4})
     2
min({1,3},{4,2})
     {1 2}
min({1,3},2)
     {1 2}

Unlike relational operators, such as < and >, min( can also compare complex numbers. To do this, both arguments must be complex — either complex numbers or complex lists: min(2,i) will throw a ERR:DATA TYPE error even though min(2+0i,i) won't. In the case of complex numbers, the number with the smallest absolute value will be returned. When the two numbers have the same absolute value, the second one will be returned: min(i,-i) returns -i and min(-i,i) returns i.

Advanced Uses

min( can be used in Boolean comparisons to see if every value of a list is 1 (true) — useful because commands like If or While only deal with numbers, and not lists, but comparisons like L1=L2 return a list of values. In general, the behavior you want varies, and you will use the min( or max( functions accordingly.

Using min( will give you a strict test — only if every single value of a list is true will min( return true. For example, the following code will test if two lists are identical — they have the same exact elements — and print EQUAL in that case:

If dim(L1)=dim(L2
Then
If min(L1=L2
Disp "EQUAL
End

The first check, to see if the sizes are identical, is necessary because otherwise comparing the lists will return a ERR:DIM MISMATCH error.

Error Conditions

  • ERR:DATA TYPE is thrown when comparing a real and a complex number. This can be avoided by adding 0i to the real number.
  • Dimension Mismatch is thrown, when using min( with two lists, if they have different dimensions.

Related Commands

sample.png

Command Summary

Exclusive or statement. Returns the truth value of value1 or value2, but not both, being true.

Command Syntax

value1 xor value2

xor takes two numbers of expressions and checks to see if exactly one is True. If both are True or both are False, it returns 0.

1 xor 0
           1

:2 xor (3 xor 0)    (after evaluating 3 xor 0, it simplifies into True xor True.)
           0

:0 xor (1-1)^2
           0

Table of Results

For reference, the following true/false table shows what gets returned when you use different combinations of 1 (true) and 0 (false):

xor 1 (true) 0 (false)
1 (true) 0 (false) 1 (true)
0 (false) 1 (true) 0 (false)

Related Commands

author: 'Bio_Hazard1282_rPi3Bio_Hazard1282_rPi3'
version: '1'
summary: 'This is a game where you go around the screen and hunt down your target as quick as possible, and kill the COM before it kills you.'
description: "This is a game where you go around the screen and hunt down your target as quick as possible, and kill the COM before it kills you. This is a very fun game,\nand can be very addicting (for some). This game is well-made, and has no memory leaks. Enjoy!\n\n+ Official Full Game Release\n.zip Archive Contents:\n* Targets! Demos - Includes sample GIFS of the program(s) being executed on different calculators\n* READ_ME.txt\n* SOURCE_CODE.txt\n* TARGETS.8xg\n* TARGETS.8xp\n* TARGETS2.8xg\n* TARGETS2.8xp\n--\n+ Editors Notes\n* This program is still playable on the TI-83+/SE, but it is not recommended. It can run slow or worse, not work at all. If you do download it to your TI-83, make sure to remove the CLASSIC part in both programs, or this program won't work!\n* The save data lists are\n # Targets: ⸤TGT\n # Targets 2: ⸤TRGT\n* These are MirageOS compatible, but it may not work correctly. If you run it directly from MirageOS, it will immediately play the game w/o warning.\n* These programs are un-edit locked. \n--\nTry out the program, and let me know what you think about it!\n+ TO-DO List\n* Add in the optimizations that TrenlyTrenly provided and re-upload the optimized programs to this archive."
arcade: '1'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '1'
compatibility: bb
download: 'archivefile:targets/Targets.zip'
image: 'archiveimage:screenshot-targets/Screenshot-targets.png'
fileSize: '2'
fileSizeUnit: '3'
dateMade: '1543215600'

Hey! I just created an account to ask for some optimizations for my 3D rendering program for a TI-84 Plus CE. I know matrices are slow to work with, so optimizations regarding that is the main goal for this. I've been coding in TI-BASIC for quite some time, so I have sufficient knowledge of the language. This code was translated from The Coding Train (java) to BASIC, so the original code is not mine, all I did was port it over.

Feel free to drop by and contribute what you may, all help is accepted, including constructive criticism.

Here's my code:

: //Setup
: ClrHome
: TextColor(BLACK
: 2→L
: 
: //Matrix Setup
: {8,2→dim([D]
: {8,3→dim([A]
: Fill(.5,[A]
: For(A,2,8,2
: -.5→[A](A,3
: End
: For(B,0,4,4
: For(A,3,4
: -.5→[A](A+B,2
: End
: End
: For(A,5,8
: -.5→[A](A,1
: End
: 
: //Graph Setup
: 16.5→Xmax
: -Ans→Xmin
: 10.25→Ymax
: -Ans→Ymin
: ClrDraw
: GridOff
: AxesOff
: PlotsOff 
: FnOff 
: 
: //Main Loop
: 0→θ
: Repeat getKey=45
: //Calcualations
: startTmr→W
: For(A,1,8
: Matr▶list([A]^^T^^,A,L₁ //"^^T^^" is the superscript transpose token
: List▶matr(L₁,[B]
: [[cos(θ),-sin(θ),0][sin(θ),cos(θ),0][0,0,1→[J]
: [[1,0,0][0,cos(θ),-sin(θ)][0,sin(θ),cos(θ→[I]
: [[cos(θ),0,-sin(θ)][0,1,0][sin(θ),0,cos(θ→[H]
: [J][B]
: [I]Ans
: [H]Ans→[B]
: 1/(L-[B](3,1
: [[Ans,0,0][0,Ans,0
: 20Ans[B]→[B]
: [B](1,1→[D](A,1
: [B](2,1→[D](A,2
: End
: 
: //Drawing Edges
: ClrDraw
: For(A,1,4
: For(B,0,4,4
: [D](A+B-(A=4),1→N
: [D](A+B-(A=4),2→O
: [D](A+B+1+(A=2)-4(A=4),1→S
: [D](A+B+1+(A=2)-4(A=4),2→T
: Line(N,O,S,T,BLACK,1
: End
: [D](A,1→N
: [D](A,2→O
: [D](A+4,1→S
: [D](A+4,2→T
: Line(N,O,S,T,BLACK,1
: End
: 
: Text(0,0,"SPF: ",checkTmr(W //SPF is seconds per frame
: θ+π/16→θ
: End

author: CodingCuber
version: '1.0'
summary: 'A moderately advanced clone of minesweeper built on the Ti-84 Plus.'
description: 'This minesweeper clone is built in the graph and uses the cursor to navigate the board. Programmed entirely in TI-Basic. Runs fast and uses a matrix for mine location storage. Has a button at bottom of the screen ("F") to switch between mine and flag modes. Please post any bugs you find and I will fix them as soon as possible. Only works and Ti 84 devices with a screen size of 94 x 62 pixels due to the use of the graph. More features will be added as they are programmed. Feel free to post suggestions for features'
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '1'
rpg: '0'
strategy: '1'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: dd
download: 'archivefile:mnesweep/MNESWEEP.8xp'
image: null
fileSize: '690'
fileSizeUnit: '1'
dateMade: '1540526400'

author: 'Jon Sturm'
version: Unknown
summary: 'Ever wanted the TI-83 Plus Font on your PC? Here it is!'
description: "Ever wanted the TI-83 Plus Font on your PC? Here it is!\n\nRequires administrative privilages to install."
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '1'
compatibility: bb
download: 'archivefile:ti-83p-font/TI-83P-Font.ttf'
image: null
fileSize: '19'
fileSizeUnit: '2'
dateMade: '1217829600'

author: Bio_Hazard1282
version: '1.0'
summary: 'Similar to Chatroom. But SHORTER.'
description: "Similar to Chatroom. But SHORTER. Less than One K.\nSource Code:\n[[code]]\n:\"C3 Chat Box v1.1\n:DCS6\n\"7FFECB9BB9C9BAABCACDFFFF9FFB9DABAADF9DABFFFF7FFE0FC01F003C007000\nCLASSIC\nClrHome\nIf det([[1:Then\nDisp \"Celtic 3 is\",\"not installed.\nStop\nEnd\nHoriz\nClrDraw\nAxesOff\nGridOff\nPlotsOff \nFnOff \nreal(7,0\nText(0,0,\"Preparing…\nGetCalc(A\nnot(A→A\nidentity(6,6,8,1\nText(0,0,\"Chat Box ready.\n\" →Str1\nAns→Str2\nAns→Str3\nLbl M\nClrHome\nreal(7,0\nreal(13,1\nDisp \" Chat Box \"+sub(\"BA\",1+A,1)+\" \nreal(13,0\nDisp \"₁.Send\",\"₂.Receive\nRepeat max(K={92,93,22,45\ngetKey→K\nEnd\nClrHome\nIf K=92:Goto S\nIf K=93:Goto R\nIf K=45:Goto C\nFull\nreal(13,1\nDisp \" Chat Box \nreal(13,0\nStop\nLbl S\nInput \"Send:\",Str3\nIf A\nStr3→Str1\nIf not(A\nStr3→Str2\nidentity(6,6,8,1\nText(0,0,sub(\"BA\",A+1,1)+\":\"+Str3\nGoto M\nLbl R\nDisp \"Receiving…\nIf A:Then\nGetCalc(Str2\nStr2→Str3\n\" →Str2\nElse\nGetCalc(Str1\nStr1→Str3\n\" →Str1\nEnd\nIf Str3≠\" \":Then\nidentity(6,6,8,1\nText(0,0,sub(\"AB\",A+1,1)+\":\"+Str3\nEnd\nGoto M\nLbl C\nClrDraw\nText(0,0,\"Chat Box cleared.\nGoto M\n[[/code]]\nCompatible for Mirage, DoorsCS6 and 7. Comes with icon for doors."
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '0'
compatibility: bb
download: 'archivefile:chatbox/CHATBOX.8xp'
image: 'archiveimage:chat-box/Chat-Box.png'
fileSize: '711'
fileSizeUnit: '1'
dateMade: '1537164000'

author: Deoxal
version: '1.0'
summary: 'Two programs that recursively calculate the value of a function.'
description: "RECURSER.8xp and RECURSEV.8xp ask for a function, a seed value, and the number of iterations to calculate and store graph settings to GDB 9. Recuser uses a custom list to store each iteration of the calculation as well as the seed, which caps the iterations at 999. Recursev does not have this limitation.\n\nBoth programs use XTANS.8xp(X to Ans) to replace X with Ans in the equation."
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:recurse/Recurse.zip'
image: 'archiveimage:capture-5/Capture.png'
fileSize: '875'
fileSizeUnit: '1'
dateMade: '1535860800'

author: 'Bio_Hazard1282_rPi3Bio_Hazard1282_rPi3, contains some content from this Wiki.'
version: '7.3'
summary: 'A unique shell that runs programs and enhances file munipulation.'
description: "+ What is BasicOS?\nBasicOS is a shell that enhances file manipulation on your calculator. This shell is unique in most ways, and in it's own ways. BasicOS works pretty flawlessly, but there are some commands that are from Celtic III that are not fully implemented.\n\n--\n+ Attachments\nBasicOS Folder contents:\n\n- Original CelticIII folder\n- Source Code\n- The BasicOS Group\n- The BasicOS Program itself\n- Readme\n- This file your reading right now\n- Cool Fonts for zStart (Refer to \"AVARS.8xg\")\n- zStart Orginal folder\n- Token IDE Original folder\n- BasicOS 7.3 Example\n\n+ Source Code (Included)\n
\n\nVersion 7.5 is coming soon, featuring:\n* Instead of the source code of files stored into a string, the content are stored into a seperate program called \"DOWNLOAD\", which allows managing source codes for programs much easier. The likelihood of a successful download is a lot higher compared to a string.\n* Improved memory efficiency.\n\n--\n+ Author's note:\n\nThis program will no longer be supported on June 10th, 2019. You may download it for now. However, when this date arrives, this program will permanently be removed from the archives. Thank you for downloading and enjoying this program! This has been a great program, but a better version of this is located here."
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: dd
download: 'archivefile:basicos/BasicOS.zip'
image: 'archiveimage:basicos-7-3-example/BasicOS-7-3-Example.gif'
fileSize: '2514'
fileSizeUnit: '2'
dateMade: '1537509600'
Pong CE

author: Bio_Hazard1282
version: 4.8.3
summary: 'A Celtic 3 Chatroom for your graphing calculator. The Celtic III library could not be uploaded.'
description: "A Celtic 3 Chatroom for your graphing calculator. (Celtic 3 NOT Included)\n\nEDIT: This link below is the official Celtic 3 Library guide:\nhttp://f.eeems.ca/Resources/program%20readmes/Celtic%20III/ReadME%20Celtic%203%20app.txt"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:chat/CHAT.8xp'
image: 'archiveimage:chat-1/CHAT.gif'
fileSize: '3301'
fileSizeUnit: '1'
dateMade: '1534572000'

Sorcery of Uvutu
Frogger CE
Cookie Clicker Color
Basic Tetris
Flappy Bird CE
Don't Touch The Color
Shades CE
Flood-It-CE
Stick Hero CE

author: 'Ataul Noor'
version: 1.0.0
summary: 'This program solves for percent error.'
description: ''
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '0'
compatibility: bb
download: 'archivefile:pererror/PERERROR.8xp'
image: 'archiveimage:capture-4/Capture-4.png'
fileSize: '464'
fileSizeUnit: '1'
dateMade: ''

Command Summary

Computes the angle of a complex number or a set of complex numbers.

Command Syntax

angle(Expr1)expression
angle(List1)list
angle(Matrix1)matrix

The angle( command computes the angle of a complex number, which corresponds to the rotation of a vector whose length is equivalent to the abs( of the number. The angle is returned in degrees, gradians, or radians, depending on the mode the calculator is in.

Degree mode
:angle(1+i) = 45
Radian mode
:angle(1+i) = π/4

angle( can also return the angles for a list or matrix of complex numbers, returning the outputs in a list or matrix respectively. angle( will attempt to return a closed-form expression for the value rather than a decimal expression when utilizing the CAS, and can also return a symbolic evaluation of an angle.

:angle(z) = π(sign(z)-1)/2

Formulas

The general formula for the angle of complex number x+iy is given by

(1)
\begin{align} \mathrm{angle}(x+iy) = \dfrac{\pi \times \mathrm{sign}(y)}{2} - \tan^{-1}\bigg(\dfrac{x}{y}\bigg) \end{align}

Often denoted as θ, the angle of a complex number is used in its polar representation

(2)
\begin{align} x+iy = re^{i\theta} \end{align}

where r is the absolute value of the number.

Related Commands

author: 'Kevin Gomez (kg583)'
version: '1.0'
summary: 'A package of programs for number theory.'
description: 'TINT, or TI Number Theory, is a package of lists and programs designed for number theoretic computation and analysis on the TI-84+ series of calculators. These programs are designed to be used as subprograms for larger projects, and are optimized for numbers less than 10^12. This packages requires OS 2.53MP to run.'
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '0'
compatibility: ee
download: 'archivefile:tint/TINT.zip'
image: null
fileSize: '3500'
fileSizeUnit: '1'
dateMade: '1533358800'

Command Summary

Boolean AND comparison of expressions or groupings of expressions.

Command Syntax

BooleanExpr1 and BooleanExpr2
BooleanList1 and BooleanList2
BooleanMatrix1 and BooleanMatrix2
Integer1 and Integer2

The and command compares two Boolean expressions (or lists or matrices of expressions) and performs the logical AND comparison, where the output is TRUE if and only if both inputs are also TRUE.

Command Output
0 and 0 0
1 and 0 0
0 and 1 0
1 and 1 1

and can also be used to simplify logical conditions. For example,

:x≥3 and x≥4
outputs
:x≥4

because, in order to satisfy both logical conditions, x need only satisfy x≥4. and can perform this process on a list or matrix of Boolean expressions:

:{x≥3,x≤0} and {x≥4,x≤-2}
outputs
:{x≥4,x≤-2}

which is the intersection of two inequalities. This can be thought of as the overlap of two regions of a number line, where x must lie in order to satisfy all of the logical conditions simultaneously.


and's final use is for bitwise comparison of integers. Consider two integers, 24 and 17, which when converted to binary become 0b11000 and 0b10001 respectively. To compare the two integers, and compares each bit of the binary number, outputing 1 when both bits are 1 and 0 otherwise:

0b11000: 24
0b10001: 17
  -----  --
0b10000: 16

Integers can be entered in any base for use with and, including binary (0b) and hexadecimal (0h). The output will match the base of the inputs (if they are identical), defaulting to decimal.

Related Commands

author: ''
version: ''
summary: ''
description: "Password is alipor\nA temporary text thingy"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '0'
compatibility: bb
download: 'archivefile:alipor-txtooditor-1/Alipor-txtOODITOR.7z'
image: null
fileSize: '62'
fileSizeUnit: '2'
dateMade: ''

author: Alipor
version: '1.1'
summary: 'A text maker (Cnnot save it is a one-text-use thing)'
description: Password—alipor
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '0'
compatibility: bb
download: ''
image: null
fileSize: '1'
fileSizeUnit: '2'
dateMade: ''

Routine Summary

This routine randomly selects a number given a list of partial probabilities

Inputs

L₁ - The bin sizes of the partial probabilities

Outputs

C - Which bin is selected

Variables Used

The variables used in the routine.

L₁, L₂, X, U, S, L, T, C,E

Calculator Compatibility

TI-83/84/+/SE/CSE/CE

Author

Trenly

L₁→L₂
sum(L₂→X
Xˉ¹→U
U→S
DelVar LDelVar C
rand→T
For(E,1,dim(L₂
While L₂(E) and not(C
If L≤T and U≥T
Then
E→C
Else
L₂(E)-1→L₂(E
U+Xˉ¹→U
L+Xˉ¹→L
End
End
End
C

This routine takes a single list, and randomly selects an element according to the bin sizes in the list. It copies the list so as to not overwrite the data. It then sums the list, and takes the inverse of the sum to use as an interval. It then generates a random number between 0 and 1. By testing if this number falls within the intervals defined by each partial probability, it determines which bin the random number falls into.

As an example, if the input is {4,11,2,3} there is a 4/20 chance that Bin 1 is chosen, an 11/20 chance for bin 2, 2/20 for bin 3, and 3/20 for bin 4. If a bin size is 0, it will be skipped and never selected as the probability is 0.

Got the basic naughts and crosses engine going. ||
To Do:

  • Create the memory setup for the AI
  • Create the Code for the AI to recall the gameboard partial probabilities
  • Create the code for remembering which gameboards were recalled and which moves were played
  • Create the code for adjusting the partial probabilities for each gameboard
  • Create the AI - Created the selection already
  • Implement the AI

Main Naughts and Crosses Engine: (Player vs Player)

SetUpEditor ʟM,ʟMC
{0→ʟM
{0→ʟMC
StoreGDB GDB1
AxesOff
GridOff
CoordOff
Full
LabelOff
ExprOff
RectGC
Normal
Func
63→Ymax:0→Ymin
93→Xmax:0→Xmin
ClrDraw
Text(⁻1,2,14,"M.E.N.A.C.E.
Line(29,49,65,49
Line(65,49,65,13
Line(65,13,29,13
Line(29,13,29,49
Line(32,47,62,47
Line(31,46,63,46
Line(63,46,63,16
Line(62,47,62,15
Line(62,15,32,15
Line(61,15,33,15
Line(31,16,31,46
Line(32,15,32,47
Line(42,45,42,15
Line(52,45,52,15
Line(33,25,61,25
Line(33,36,61,36
19→H
35→V
1→P
Repeat dim(ʟM)=10
1→T
If fPart(dim(ʟM)/2):2→T
Line(H+14,V+2,H+22,V+2
Repeat sum(K={45,21,105
Repeat sum(K={45,21,105,24,25,26,34
getKey→K
End
If K=45:Stop
If sum(K={24,25,26,34:Then
Line(H+14,V+2,H+22,V+2,0
P+(K=26)(P<9)-(K=24)(P>1)+3(K=34)(P≤6)-3(K=25)(P≥4)→P
P/3
If Ans≤1:35→V
If Ans≤2:24→V
If Ans≤3:14→V
If sum(P={1,4,7
19→H
If sum(P={2,5,8
29→H
If sum(P={3,6,9
39→H
Line(H+14,V+2,H+22,V+2
End
End
If (K=105)not(sum(P=ʟM:Then
P→ʟM(1+dim(ʟM
Line(H+14,V+2,H+22,V+2,0
P/3
If Ans≤1:19→G
If Ans≤2:29→G
If Ans≤3:39→G
If sum(P={1,4,7
35→U
If sum(P={2,5,8
46→U
If sum(P={3,6,9
56→U
Text(⁻1,G,U,sub("OX",T,1)
expr(sub("020305071113171923",2P-1,2))→ʟMC(dim(ʟM
If dim(ʟMC)≥6:Then
1→A
For(E,2,dim(ʟMC),2
AʟMC(E)→A
End
If not(sum(not(fPart(A/{30,1001,7429,238,627,1495,506,935}):Then
1→A
For(E,3,dim(ʟMC),2
AʟMC(E)→A
End
End
sum(not(fPart(A/{30,1001,7429,238,627,1495,506,935})→W
If W:10→dim(ʟM
End
End
End
If not(W:Then
Text(⁻1,52,23,"TIE GAME!
Pause 
Else
If T=2:Text(⁻1,52,15,"CROSSES WIN!
If T=1:Text(⁻1,52,15,"NAUGHTS WIN!
If T:Pause 
End
RecallGDB GDB1
ClrDraw
ClrHome

Routine Summary

Finds a sublist within a list, with different degrees of specificity.

Inputs

L₁ - List to search
L₂ - Sublist

Outputs

Ans - Initial index of sublist in L₁*
L₃ - Indices of L₁ which match the sublist*

*See individual routines for details

Variables Used

L, X*

*Only used for gapped sublist searching

Calculator Compatibility

TI-83/84/+/SE/CSE/CE

Author

kg583

Find Exact Sublist (Permutation)

For a sublist stored in L₂, this routine will find where in L₁ the precise sublist (in order, no gaps) is found and return the initial index as Ans (0 if not found).

:For(L,1,1+dim(L₁)-dim(L₂
:L
:If min(L₂=seq(L₁(X),X,L,L-1+dim(L₂
:Return
:End
:0

Find Sublist with Gaps (Permutation w/ Gaps)

For a sublist stored in L₂, this routine will find if the ordered sublist is found, with gaps between entries allowed, in L₁ and return 1 or 0 as Ans.

:1→X
:For(L,1,dim(L₁))
:If L₁(L)=L₂(X
:X+1→X
:1
:If X>dim(L₂
:Return
:End
:0

Alternatively, a few extra lines will return the matching indices as L₃.

:1→X
:ClrList L₃
:For(L,1,dim(L₁
:If L₁(L)=L₂(X:Then
:L→L₃(X
:X+1→X
:End
:If X>dim(L₂
:Return
:End

Find Shuffled Sublist (Combination)

For a sublist stored in L₂, this routine will find where in L₁ any shuffling (without gaps) of the sublist is found and return the initial index as Ans (0 if not found).

:For(L,1,1+dim(L₁)-dim(L₂
:L
:If prod(seq(max(L₁(X)=L₂),X,L,L-1+dim(L₂
:Return
:End
:0

Find Shuffled Sublist with Gaps (Combination w/ Gaps)

For a sublist stored in L₂, this routine will find if any shuffling with gaps of the sublist is found in L₁ and return 1 or 0 as Ans.

:prod(seq(max(L₁=L₂(X)),X,1,dim(L₂

Alternatively, two extra lines will return the matching indices as L₃.

:prod(seq(max(L₁=L₂(X)),X,1,dim(L₂
:If Ans
:seq(1+sum(not(cumSum(L₁=L₂(X)))),X,1,dim(L₂→L₃

Routine Summary

Finds specific text in a string and replaces all occurrences with replacement text.

Inputs

Str1 - The main string to modify
Str2 - What to search for
Str3 - What to replace with

Outputs

Str1 - the modified string

Variables Used

Str1, Str2, Str3, I, J

Calculator Compatibility

TI-83/84/+/SE/CSE/CE

Authors

Michael2_3B

URL: Cemetech

"SEARCH"→Str2
"REPLACE"→Str3
length(Str2→J
1→I
While inString(Str1,Str2,I
inString(Str1,Str2,I→I
Str3
If I>1
sub(Str1,1,I-1)+Ans
If I+J<1+length(Str1
Ans+sub(Str1,I+J,1+length(Str1)-(I+J
Ans→Str1
I+length(Str3→I
End

First, note that the input for the search string (Str2) and replacement string (Str3) can be modified for however you need them to be input. In this case, the texts "SEARCH" and "REPLACE" have been used as examples for these 2 strings.

To start off, we first store the length of the search string in variable J. Then, we check if the search string can be found in the main string. If not, the loop doesn't continue to run. Otherwise, we store the index in the string where the search string was found in variable I.

After this, we have to account for 3 distinct options:
1. The search string was found at the beginning of the main string
2. The search string was found at the end of the main string
3. The search string was found somewhere in the middle of the main string

So, we first put Str3 in Ans.
Then, if some of the string exists before the search string (so I>1), we add the replacement string in Ans onto that text.
After that, we check if the string exists after the search string (so I+J<1+length(Str1)), and if so, we add the rest of the text onto Ans.

After modifying the string like this, the program then checks if there are any more occurrences of the search string in the main string. If so, this whole process is repeated over.

sample.png

Command Summary

Calculates the binomial cumulative probability, either at a single value or for all values

Command Syntax

for a single value:
binomcdf(trials, probability, [lower_bound,] upper_bound)

for a list of all values (0 to trials)
binomcdf(trials, probability)

Menu Location

From inside a document:
Press Menu, then scroll to probability.
Press the right arrow, then scroll to Distributions.
Press the right arrow, then scroll to Binomial Cdf (B)

This command is used to calculate the binomial cumulative probability function. In plainer language, it solves a specific type of often-encountered probability problem, that occurs under the following conditions:

  1. A specific event has only two outcomes, which we will call "success" and "failure"
  2. This event is going to repeat a specific number of times, or "trials"
  3. Success or failure is determined randomly with the same probability of success each time the event occurs
  4. We're interested in the probability that there are at most N successes

For example, consider a couple that intends to have 4 children. What is the probability that at most 2 are girls?

  1. The event here is a child being born. It has two outcomes "boy" or "girl". In this case, since the question is about girls, it's easier to call "girl" a success.
  2. The event is going to repeat 4 times, so we have 4 trials
  3. The probability of a girl being born is 50% or 1/2 each time
  4. We're interested in the probability that there are at most 2 successes (2 girls)

The syntax here is binomcdf(trials, probability, value). In this case:

binomcdf(4,.5,2)

This will give .6875 when you run it, so there's a .6875 probability out of 4 children, at most 2 will be girls.

If you wanted the probability that at least 1 and at most 2 will be girls, the syntax would be:

binomcdf(4,.5,1,2)

Another alternate syntax for binomcdf( leaves off the last argument, value. This tells the calculator to compute a list of the results for all values. For example:

:binomcdf(4,.5

This will come to {.0625 .3125 .6875 .9375 1} when you run it. These are all the probabilities we get when you replace "at most 2 girls" with "at most 0", "at most 1", etc. Here, .0625 is the probability of "at most 0" girls (or just 0 girls), .3125 is the probability of at most 1 girl (1 or 0 girls), etc.

Several other probability problems actually are the same as this one. For example, "less than N" girls, just means "at most N-1" girls. "At least N" girls means "at most (total-N)" boys (here we switch our definition of what a success is). "No more than", of course, means the same as "at most".

Related Commands

[[row]]
[[cell style="text-align: center;background: #f4f4f4;padding: 5px 10px;"]]{$number}[e{$number}][[/cell]]
[[cell style="background: #f4f4f4;padding: 5px 10px;"]]{$description}
{$moreinfo}
[[/cell]]
[[/row]]

[[row]]
[[cell style="text-align: center;padding: 5px 10px;"]]{$number}[e{$number}][[/cell]]
[[cell style="padding: 5px 10px;"]]{$description}
{$moreinfo}
[[/cell]]
[[/row]]

[[row]]
[[cell style="text-align: center;padding: 5px 10px;"]]{$number}[{$number}][[/cell]]
[[cell style="text-align: left;padding: 5px 10px;"]]{$name}[{$reference}][[/cell]]
[[cell style="padding: 5px 10px;"]]{$description}
{$moreinfo}
[[/cell]]
[[/row]]

[[row]]
[[cell style="text-align: center;background: #f4f4f4;padding: 5px 10px;"]]{$number}[{$number}][[/cell]]
[[cell style="text-align: left;background: #f4f4f4;padding: 5px 10px;"]]{$name}[{$reference}][[/cell]]
[[cell style="background: #f4f4f4;padding: 5px 10px;"]]{$description}
{$moreinfo}
[[/cell]]
[[/row]]

Command Summary

Returns the absolute value of a number

Command Syntax

abs(Number)

This command can be used to return the absolute value of a number, or an expression which evaluates to a number.

⁻5→X
abs(x)

Outputs: 5

Optimization

This section includes both ways to optimize use of the command, and other common pieces of code that this command can replace in an optimization. Make sure to mention if the optimization improves speed of the program, size, or both. Sample code should be included too, preferably in the following format:

If X<0
Then
⁻X→X

can be

abs(X)→X

NOTE: Due to the limitations of the wiki markup language, the {$cmd} command on this page does not appear as it would on the calculator. See Wiki Markup Limitations for more information.

Another page that should be created similar to wiki-limits

Unfortunately, the rich vocabulary of wiki syntax doesn't allow to properly display a command in titles and code blocks. When this happens, the offending page will link here so we can properly apologize, clarify what is meant, and give the syntax that displays them correctly where it is possible to do so.

Here are the commands and symbols that suffer from this problem:

See Also

This page should contain a list of all the errors from the ti-nspire. Would like it set up similarly to errors

This table lists all the possible error messages that can occur. The error number to the left is not displayed, but is stored to the errornum system variable, which can be used in a Try..EndTry block. Some error messages are very explicit (like #680), but others are less so. Where the error message itself gave too little information, this table explains the error more thoroughly.

A large part of the information here was taken from the Nspire CX Reference Guide at education.ti.com

Errors need to be added to the table below. Please alternate between using error1 and error2

Error Code Error Description
010 No Value A function did not return a value
020 Unresolved Boolean A test did not resolve to TRUE or FALSE
This error is commonly caused when attempting a comparison with an undefined variable
030 Cannot be Folder Name Argument cannot be a folder name
040 Argument Error Argument error
050 Argument Mismatch Two or more arguments must be of the same type
060 Argument- Boolean Argument must be a Boolean expression or integer
070 Argument - Decimal Argument must be a decimal number
090 Argument - List Argument must be a list
100 Argument - Matrix Argument must be a matrix
130 Argument - String Argument must be a string
140 Argument - Name Argument must be a variable name
Make sure the name does not begin with a digit, contains no spaces or special characters, and does not exceed length limitations
160 Argument - Expression Argument must be an expression
165 Battery Level Batteries too low for sending or receiving
Replace or charge the batteries before sending or receiving
170 Bound The lower bound must be less than the upper bound
180 Break The d or c key was pressed during a long calculation or program execution
190 Circular Definition This is displayed to avoid infinite replacement of variables during simplification
Example: a+1→a will throw this error when a is undefined
200 Constraint Expression Invalid The expression used as a constraint is not valid
210 Data Type An argument is of the wrong data type
220 Dependent Limit The limit is dependent and must be independent
230 Invalid Dimension A list or matrix index is not valid
235 Dimension Error Not enough elements in the lists
240 Dimension Mismatch Two or more arguments must be of the same dimension
250 Divide by Zero An expression evaluated to a division by zero
260 Domain Error An argument must be in a specified domain
rand(0) throws this error since the domain must be greater than 0
270 Duplicate Variable A variable with that name already exists
280 Invalid Else An Else or ElseIf statement was outside the If-EndIf block
290 EndTry Missing Else EndTry is missing the matching Else statement
295 Excessive Iteration Excessive iteration
Not much is currently known about this error
300 List or Matrix Expected Expected a 2 or 3 element list or a matrix as an argument
310 Single Variable Equation The first argument of nSolve must be an equation in a single variable
The equation cannot contain an undefined variable other than the variable of interest
320 Equation or Inequality Expected The first argument of solve or cSolve must be an equation or inequality
solve(3x^2-4,x) is invalid because the first argument is not an equation
345 Inconsistent Units The calculation cannot be performed with mismatched units
Ensure all units are matching
350 Index Out Of Range The index specified is not valid
360 Indirection String Indirection string is not a valid variable name
380 Undefined Ans Either the previous calculation did not create Ans, or no previous calculation was entered
390 Invalid Assignment The value cannot be assigned to the variable
400 Invalid Assignment Value The value cannot be assigned to the variable
410 Invalid Command The command entered is not valid
430 Invalid For Mode The calculation, command, or answer is not valid for the current mode settings
435 Invalid Guess The guess is not valid
440 Invalid Implicit Multiplication This is to prevent errors between implied multiplication and function calls
x(x+1) is invalid, whereas x*(x+1) is the correct syntax; (x+1)x may also work, but not much is known about this
450 Invalid Command Use Invalid in a function or Current Expression
Only certain commands are valid in a user-defined function. The command which this error references cannot be used in a user-defined function
490 Invalid in Try..EndTry Block The command is not valid in a Try Block
510 Invalid List or Matrix The List or Matrix is undefined or not valid
550 Invalid Command Use Invalid outside function or program
A number of commands are not valid outside a function or program. For Example, Local cannot be used unless it is in a function or program
560 Invalid outside Loops The command must be within a Loop..EndLoop, For..EndFor, or While..EndWhile block
Certain commands, such as Exit are only valid inside loop blocks.
565 Invalid Command Use Invalid outside program
The command can only be used in a program, and is invalid in a function or on the home screen
570 Invalid Path Name The specified folder or path is invalid
Notably, \var is considered invalid
575 Invalid Polar Complex The Polar Complex is invalid or could not be resolved
580 Invalid Program Reference Programs cannot be referenced within functions or expressions
Example: 1+p(x) throws this error when p( is a program
600 Invalid Table The table referenced is invalid
605 Invalid Use of Units The usage of units is invalid
610 Invalid Local Variable Invalid variable name in a Local statement
620 Invalid Name The function name of variable name is invalid
630 Invalid Variable Reference The reference to the variable is invalid
640 Invalid Vector Syntax The syntax for the vector is invalid
650 Link Transmission A transmission between two units was not completed
Verify the connecting cable is connected firmly on both ends
665 Matrix not Diagonalizable The Algebraic Multiplicity of the matrix does not equal the geometric multiplicity of each of the eigenvalues
670 Low Memory The space in memory is running low
You should try to 1) Delete some data from the document. 2) Save and close the document. If both fail, remove and re-insert the batteries
672 Resource Exhaustion The available resources have been exhausted
Not much is known about this error
673 Resource Exhaustion The available resources have been exhausted
Not much is known about this error
680 Missing ( An open parentheses is missing
690 Missing ) A close parentheses is missing
700 Missing " A quotation mark is missing
710 Missing ] A close bracket is missing
720 Missing } A close brace is missing
730 Block Syntax Missing start or end of block syntax
740 Missing Then Missing Then in an If..EndIf block
750 Not a Function or Program {$description}
765 No functions selected No functions were selected
780 No Solution No solution was found
800 Non-Real Result The answer returned was not real
If the software is in the real setting $√⁻1$ is invalid. To allow complex results, change the "Real or Complex" Mode Setting
830 Overflow The answer overflowed the buffer for Ans
850 Program not Found A program reference inside another program could not be found in the provided path during execution
(1)
\begin{equation} {$eqn} \end{equation}
{$picture}

Command Summary

{$summary}

Command Syntax

{$syntax}

Menu Location

{$location}

Calculator Compatibility

{$compatibility}

[[include inc:nspire-command-help
|picture=@@
|summary=@@
|syntax=@@
|compatibility@@
]]

In general, omitting all the variables for a section is the way to go if you don't want the section to be displayed. The exception is "calculator compatibility" - omitting the variables for that section will display the default message (compatible with all calculators).

|picture=

If the image is embedded on the same page, then only the full name of the image is to be written here. Otherwise, simply paste the full URL of the image.

|summary=

Just type in a brief description of the command.

|syntax=

Enter the general syntax of the command.

|compatibility

If the command works on all calculators, simply say "All calculators." Otherwise, specify which calculator(s) the command is compatible with.

Only one option can be applied (and they are exclusive of each other), otherwise unpredictable results may occur.

sample.png

Command Summary

A short description of what the command does.

Command Syntax

The generic syntax of calling the command, with arguments.

Menu Location

Describe how to get the command from a menu.

(Include this disclaimer if command xxxxx doesn't appear correctly due to markup limitations. See iff for an example)

NOTE: Due to the limitations of the wiki markup language, the xxxxx command on this page does not appear as it would on the calculator. See Wiki Markup Limitations for more information.

A complete description of the basic uses of the command. All commonly used and documented ways of calling the command should be listed here; inputs, outputs, and anything else important should be mentioned.

:At least one piece of example code 
:should be included here.

Advanced Uses

Advanced uses include rarely used or undocumented ways of calling the command in question. If there's an unusual but effective way of using the command, that too should be listed. Another type of advanced use is a programming technique to which the command is critical. Finally, system variables modified by the program should be listed here. With each advanced use, you should have a piece of example code to show how it works, as well as an explanation.

If there is already a page on the advanced use of the command, give a short synopsis, then link to that page - you shouldn't include the entirety of that page here.


Separate unrelated advanced uses with a horizontal bar.

Optimization

This section includes both ways to optimize use of the command, and other common pieces of code that this command can replace in an optimization. Make sure to mention if the optimization improves speed of the program, size, or both. Sample code should be included too, preferably in the following format:

:unoptimized code
can be
:optimized code

Formulas

(this section is usually not present)
This section is unnecessary for most commands. The only ones that would require it are the ones on the high end of mathematical complexity, such as the statistics commands. Use the math template to type in a LaTeX formula that matches the rest of the page in background. For example, type [[include inc:nspire-math eqn = \sum_{i=1}^n\frac{a}{r^i}]] to get:

(1)
\begin{align} \sum_{i=1}^n\frac{a}{r^i} \end{align}

Error Conditions

For the non-generic errors that might occur when using this command (that is, syntax-type errors shouldn't be included). In a format similar to the following:

  • ERR:DIM MISMATCH is thrown if the two list arguments have different dimensions.
  • ERR:RESERVED is thrown if ∟RESID is supplied as an argument.

Related Commands

Several (around 3) commands have a similar function or are used in a similar context to this command. Make a bulleted list of them, with links to the other commands' pages. It will often be the case that several commands all link to each other.

  • Command 1
  • Command 2
  • Command 3

See Also

(this section is usually not present)
If a command can be used in a particular design concept or technique, you should mention it and provide a link to its respective page. This section should come at the end of the page, and be a bulleted list that contains all of the design or technique related links mentioned throughout the page.

  • Design Concept 1
  • Design Concept 2
  • Technique 1
May 21 Congratulations to TI-BD user Trenly for being promoted to Administrator!

author: 'Bio_Hazard1282 does not match any existing user name'
version: '1'
summary: 'Math Equation Puzzle Solver is a simple game you''ll just want to play when you''re bored. To win, you need to create an equation with the specific length and answer. '
description: "[[code]]\nClrHome\nAxesOff\nZStandard\nZInteger\nFnOff\nPlotsOff\n1→Xmin:100→Xmax\nText(0,1,\"Equation Puzzle solver //You can use uppercase letters too, to save bytes\nFor(I,0,94\nFor(J,0,6\nPxl-Change(J,I\nEnd\nEnd\nthe end statements\nText(7,0,\"Create an equation with:\nrandInt(10,20→R //A random number between 10 and 20 is generated to determine\nthe number of rounds\nFor(I,1,R\nrandInt(5,50→L //Required length of the equation\nrandInt(1,1000→N //Required answer of the equation\nText(13,0,\"Length of: \",L\nText(19,0,\"Answer of: \",N\nRepeat L=length(Str1) and N=G\nInput \"Equation:***\",Str1 //Replace the asterisks with spaces.\nClrHome\nIf length(Str1)≠L:Then\nDisp \"Equation Length\",\"MUST be:\",L\nPause\nEnd\nexpr(Str1→G\nIf N≠G:Then\nDisp \"Equation Answer\",\"does not equal:\",N\nPause\nEnd\nEnd\nFor(I,7,0,-1\nLine(Xmin,I,Xmax,I,0\nLine(Xmin,-I,Xmax,-I,0\nEnd\niPart(I/R*100\nLine(0,Ymin,Ans,Ymin\nEnd\nPause\nFull\n\"Math Equ. Solver\n[[/code]]"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '1'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '1'
compatibility: bb
download: 'archivefile:eqnpuz/EQNPUZ.8xp'
image: null
fileSize: '544'
fileSizeUnit: '1'
dateMade: '1526274000'

author: 'Justin Wales'
version: '1.0'
summary: 'This program disables the [ON] button'
description: "Ever wanted a program with the [ON] button disabled? This program is for you! View this file on ti-calc.org\n\n\nSOURCE CODE (z80):\n[[code]]\n.nolist\n#include \"ti83plus.inc\"\n.org userMem-2\n.db $BB,$6D\n.list\n\n bcall(_RclAns)\n bcall(_ConvOp1)\n ld a,e\n or a\n jr z,Install_Interrupt\n dec a\n ret nz\nUninstall_Interrupt:\n im 1\n ret\nInstall_Interrupt:\n\n di\n ld hl,$9900\n ld de,$9901\n ld bc,256\n ld (hl),$9a\n ldir\n\n ld hl,interrupt_start \n ld de,$9a9a \n ld bc,interrupt_end-interrupt_start \n ldir \n ld a,$99\n ld i,a \n im 2 ;switch to mode 2\n ei ;enable interrupts\n ret\n\nInterrupt_Start:\n ex af,af'\n exx\n in a,($03)\n and %11111110\n out ($03),a\n call $003A\n reti\nInterrupt_End:\n.end\n[[/code]]"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:onblock/onblock.zip'
image: null
fileSize: '139'
fileSizeUnit: '1'
dateMade: '1078639200'

author: Bio_Hazard1282
version: '1.0'
summary: 'You are an explorer in a very deep forest, and you need to escape it to civilization. You are on your motorcycle, your only way of transportation. Unless you prefer walking. Can you beat the high score? Good luck!'
description: "You are an explorer in a very deep forest, and you need to escape it to civilization. You are on your motorcycle, your only way of transportation. Unless you prefer walking. Can you beat the high score? Good luck!\n--\nSource code:\n[[code]]\nPROGRAM:FRUN\nClrHome\nClrDraw\nAxesOff\nZStandard\nZInteger\nPlotsOff\nFnOff\nSetUpEditor FRUN\n2→dim(⸤FRUN\nText(44,0,\"FOREST ESCAPE\nText(51,6,\"HIGH DISTANCE: \",⸤FRUN(1),\"m //meters (metres if your in a different region)\nText(57,2,\"TOTAL DISTANCE: \",⸤FRUN(2),\"m\nPause\nDelvar DDelvarG47→X\nRepeat K=45 or pxl-Test(31,X\ngetKey→K\nPxl-On(31,X\nAsm(prgmDOWN\nD+1→D\nIf max(K={24,26,25\nK→G\nIf K=105:Pause\nX+(G=26)-(G=24→G\nX+95(X=-1)-95(X=95→X\nText(0,randInt(0,94),\"Y\nEnd\nIf D>⸤FRUN(1\nD→⸤FRUN(1\n⸤FRUN(2)+D→⸤FRUN(2\nText(44,2,\"HIGH DISTANCE: \",⸤FRUN(1),\"m\nText(44,2,\"TOTAL DISTANCE: \",⸤FRUN(2),\"m\nPause\nClrDraw\nClrHome\n[ //Shift screen down one pixel level\n[[/code]"
arcade: '1'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: bb
download: 'archivefile:forst-escape-1/Forst_Escape.txt'
image: null
fileSize: '783'
fileSizeUnit: '1'
dateMade: '1524808800'

Routine Summary

Sorts a list based on frequency, then by value

Inputs

L₁ - A list to be sorted

Outputs

L₁ - The original list, sorted by frequency of elements

Variables Used

L₁, L₂, L₃

Calculator Compatibility

TI-83/84/+/SE/CSE/CE

Author

Trenly

SortD(L₁
DelVar L₂DelVar L₃
SetUpEditor
For(θ,1,dim(L₁
L₁(θ→L₂(1+dim(L₂
sum(L₁=Ans→L₃(dim(L₂
θ-1+Ans→θ
End
DelVar L₁
SetUpEditor
While dim(L₂
1+sum(not(cumSum(L₃=max(L₃→θ
L₃(θ)→N
For(E,1,N
L₂(θ→L₁(1+dim(L₁
End
For(E,θ+1,dim(L₂
L₂(E→L₂(E-1
L₃(E→L₃(E-1
End
dim(L₂)-1→dim(L₂
dim(L₃)-1→dim(L₃
End

This routine uses the List Frequency routine to find the frequency of each number. It then deletes, and reconstructs L₁ from the values in those lists by searching for the highest frequency, then adding it into L₁ the number of times it occurs. It then shifts the elements inside the frequency lists above the value down 1, overwriting the value which was just inserted into L₁. It then decreases the length of the frequency lists, and repeats until there are no more values to be added. This routine automatically cleans up, leaving L₂ and L₃ empty. If you wish to sort in ascending frequency, change the max( on line 12 to min(. If you wish to sort the values in ascending order instead of descending order, change the SortD( on line 1 to SortA(

Error Conditions

Related Routines

GraphMenu.png

Routine Summary

This routine is used for creating complex graphical menus. It can have hundreds of sub-menus, and works quite similarly to a menu on the home screen.

Inputs

Str1 - A list of menu options, each being of length L
L - The length of the sub-strings for the current menu
N - The number of options in the current menu
O - The menu identifier
S - The current item/row selected

Outputs

The variable(s) that the routine stores to at the end.
O - The menu identifier
S - The current item/row selected

Variables Used

Str1 - A list of menu options, each being of length L
L - The length of the sub-strings for the current menu
N - The number of options in the current menu
O - The menu identifier
S - The current item/row selected
K - A keystroke identifier
Xmin - Graph Settings
Xmax - Graph Settings
Ymin - Graph Settings
Ymax - Graph Settings
Theta - For Loop Counter
Z - For Loop Counter
GDB1 - Cleanup Variable

Calculator Compatibility

TI-83/84/+/SE

Author

Trenly

StoreGDB 1
Lbl M0
ClrDraw
AxesOff
GridOff
ClrHome
62→Ymax:0→Ymin
94→Xmax:0→Xmin
"1:Option 2:Option3:Option "→Str1
0→O:1→S:8→L:3→N
Lbl M
Text(0,0,"Custom Menu Beta 0.1"
Horizontal Ymax-7
For(θ,0,N-1
Text(8+7θ,0,sub(Str1,1+Lθ,L)
End
Horizontal Ymax-9-7N
For(θ,6,1,⁻1
For(Z,0,4
Pxl-Change(8+7S-θ,Z
End
End
Repeat sum(K={23,45,105
Repeat sum(K={23,45,105,34,25,72,73,74,82,83,84,92,93,94
getKey→K
End
If K=34(S<N) or K=25(S>1
Then
For(θ,6,1,⁻1
For(Z,0,4
Pxl-Change(8+7S-θ,Z
End
End
S+(K=34)-(K=25)→S
For(θ,1,6
For(Z,0,4
Pxl-Change(8+7S-θ,Z
End
End
End
If sum(K={72,73,74,82,83,84,92,93,94
Then
K-13int(K/13(2>abs(5-abs(5-abs(K-83
If Ans≤N and Ans>0
Then
Ans→S
105→K
End
End
End
ClrDraw
ClrHome
If (K=23)O:Goto M0
If (K=23)not(O:Goto E
If K=45:Goto E
If (O=0)(S=1:Goto M1
If (O=0)(S=2:Goto M2

--Add an if statement here for each option you have--
-- O defines which menu you are currently in --
-- S defines the option they selected --

Lbl E
ClrDraw
RecallGDB 1
ClrHome
Return

This menu is made for the graphscreen on monochrome calculators. It functions similarly to the Menu( command, in that it highlights the current menu option, and uses labels. To create your own menus, each menu needs a menu id, a string containing entries of the same length, the number of entries, the length of the entries, and the starting selection. What makes this code functional is that each menu option is referenced by a menu ID, and the number of the selection. Because of this, the same code can be used to display multiple menus.

In addition to the up and down arrows and enter, a user can use the numberpad to select an option. The clear key will exit the program from any menu, and the delete key will return to the main menu from inside any menu. If the delete key is used on the main menu, the program will end.

The main menu has an ID of 0 by default, and can be shown at any time using "Goto M0". Any sub-menus you wish to add should be in the following format. You will need to change O, L, and N for each menu. In the code below, O is set to 1. This is what gets referenced in the If statements in the main code. S is set to 1 since I want the first option to be selected when we load the menu. L is set to 22 in this example because each menu option is 22 characters long. You will notice there are spaces included to make sure each item is the same length. Finally, there are 6 options in this example, so N is set to 6. We then Goto M to display the menu

Lbl M1
"1:Kilograms◄ ►Lbs     2:Meters◄ ►Feet       3:ElectronVolt◄ ►Joule4:Joule◄ ►Calorie     5:Horsepower◄ ►Watt   6:Back                →Str1
1→O:1→S:22→L:6→N
Goto M

Error Conditions

Related Routines

You are an explorer in a very deep forest, and you need to escape it to civilization. You are on your motorcycle, your only way of transportation. Unless you prefer walking. Good luck!

PROGRAM:FRUN
ClrHome
ClrDraw
AxesOff
ZStandard
ZInteger
PlotsOff
FnOff
SetUpEditor FRUN
2→dim(⸤FRUN
Text(44,0,"FOREST ESCAPE
Text(51,6,"HIGH DISTANCE: ",⸤FRUN(1),"m   //meters (metres if your in a different region)
Text(57,2,"TOTAL DISTANCE: ",⸤FRUN(2),"m
Pause
Delvar DDelvarG47→X
Repeat K=45 or pxl-Test(31,X
getKey→K
Pxl-On(31,X
Asm(prgmDOWN
D+1→D
If max(K={24,26,25
K→G
If K=105:Pause
X+(G=26)-(G=24→G
X+95(X=-1)-95(X=95→X
Text(0,randInt(0,94),"Y
End
If D>⸤FRUN(1
D→⸤FRUN(1
⸤FRST(2)+D→⸤FRST(2
Text(44,2,"HIGH DISTANCE: ",⸤FRUN(1),"m
Text(44,2,"TOTAL DISTANCE: ",⸤FRUN(2),"m
Pause
ClrDraw
ClrHome
PROGRAM:DOWN
:AsmPrgm213396113F9601F402EDB823010C00EF304CEF6A48C9  //Shift screen down one pixel level

author: master_programmer
version: '1.0'
summary: ''
description: 'Simple slots game that took me 1 week to make. It uses 20 programs total, 19 sub programs, 2 custom lists, and adds and takes away coins. If your 1m+ coins disappear, dont worry! They were just stored in the second list so that the coin count wont overflow into the next row. I will post updates for the program as well, so stay tuned!'
arcade: '1'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '1'
board: '0'
utility: '0'
misc: '0'
compatibility: bb
download: null
image: null
fileSize: '2097'
fileSizeUnit: '1'
dateMade: '1523941200'

Apr 23 The new chat is available for use by the TI-BD community! This chat should be more secure than the last one.
asmprgm-example.gif
Example of Inputting Hex Code

There are all sorts of small assembly programs that you can create simply using the calculator's built-in assembly commands (specifically, Asm84CEPrgm along with the appropriate hexadecimal code. In order to run a program, you need to use the Asm( command, where Asm(prgmPROGNAME is the program that contains the hexadecimal code.

As a word of caution, when entering in the hexadecimal, you need to be very careful that you type it in exactly as you see it. If there is a single incorrect character, the calculator might crash and reset your RAM when you turn it on again. We have tested the hexadecimal codes to make sure they work, but it's up to you to enter them in correctly.

Turn Off LCD

:AsmPrgm84CE
:3E01321900E3C9

Turn On LCD

:AsmPrgm84CE
:3E09321900E3C9

This is the same as the code for turning off the LCD, except that the 01 is a 09 instead.

Set LCD Brightness

:Asm84CEPrgm
:CD500F02CD700F02322400F6C9

Set the brightness to a value between 0 and 255 stored in Ans, 255 is low, 0 is high.

Enable Lowercase Letters

:Asm84CEPrgm
:FDCB24DEC9

Invert Screen Colors (AKA "Dark Mode")

:Asm84CEPrgm
:211808F874364436216C3601C9

author: coltonj96
version: '0.1'
summary: 'A Fancy Analog Clock!'
description: 'Has fancy looking hands and is first in a series of fancy clocks I plan to make'
arcade: '0'
graphics: '1'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: ff
download: 'archivefile:aclock-2/ACLOCK.8xp'
image: 'archiveimage:aclock-1/AClock.png'
fileSize: '1328'
fileSizeUnit: '1'
dateMade: ''

author: Bio_Hazard1282
version: ''
summary: 'Tally counter is a program that allows you to count a number forever. You are able to count (obviously), set the counter value, and it''s increment. This version below is the modified version of the alternative. Make sure you understand and think through the code.'
description: "[[code]]\nClrHome\nCLASSIC //Ignore this if you do not have the TI-84+ Series, this is added to improve performance. Performance is high already with the normal TI-83+\nSetUpEditor COUNT\nIf 0=dim(⸤COUNT\n{0,1→COUNT //Many users insert the \"⸤\" in front of the name, we remove it to save a byte\n⸤COUNT(1\nLbl M\nMenu(\"Tally Counter\",sub(\"Start***Continue\",1+8(Ans>0),8),1,\"Reset\",2,\"Set\",3,\"Value\",4,\"Quit\",5 //Replace asterisks with spaces\nLbl 1\n⸤COUNT(1→C\nOutput(1,1,C\nPause\nRepeat getKey\nC+⸤COUNT(2→C\nOutput(1,1,C\nrand(20\nEnd\nPause\nGoto M\nLbl 2\nMenu(\"Reset?\",\"No\",M,\"Yes\",Y\nLbl Y\n{0,1→COUNT\nGoto M\nLbl 3\nClrHome\nMenu(\"Set\",\"Value\",V,\"Increment\",I,\"Cancel\",M\nLbl V\nInput \"Value:\",C //It does not matter if we still use the C variable, since the main feature of this program changes it anyways\nabs(iPart(C→⸤COUNT(1\nGoto 3\nLbl I\nInput \"Increment:\",C\nabs(iPart(C→⸤COUNT(2\nGoto 3\nLbl 4\nDisp \"You are on:\",⸤COUNT(1\nPause \nGoto M\nLbl 5\nArchive ⸤COUNT\n[[/code]]\n\n* 36 lines of code\n* Available to all graphing calculators TI-Basic friendly\n* Easy to read and understand\n* Fully programed in TI-Basic HbKuTtp.png\n\n+ Alternative\nThe only difference between this version and the other one, it just counts. No menus, no \"36 lines of code\". It still has the list, with only the tally counter value.\n\n[[code]]\nClrHome\nSetUpEditor COUNT\n⸤COUNT(1→C\nOutput(1,1,C\nPause\nRepeat getKey\nC+1→C\nOutput(1,1,C\nrand(20\nEnd\nPause\nClrHome\nArchive ⸤COUNT\n[[/code]]\n--\nWell, that wraps up the tally counter program. Enjoy! If you have any questions or comments, please click the discuss button below.\n"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '1'
compatibility: bb
download: 'archivefile:tally-counter/Tally-Counter.docx'
image: 'archiveimage:51qv97b6lpl-sy355/51QV97B6lPL_SY355_.jpg'
fileSize: '950'
fileSizeUnit: '1'
dateMade: ''

Introduction

Celtic III is a Flash Application for the TI-83 Plus, TI-83 Plus Silver Edition, TI-84 Plus, and the TI-84 Plus Silver Edition graphing calculators, designed to extend the functionality of these calculators so that BASIC games and utilities can perform actions that cannot easily be done through the language itself. Celtic III supports its own command set focused more on file handling and manipulation. It also supports a command set used for manipulating image files and screen data. It also supports decent compatibility with the popular xLIB library so you don't have to change anything.1

How To Use

The ListPages module does not work recursively.

The ListPages module does not work recursively.

author: 'AravenFtw Luke'
version: ''
summary: "A fake virus program. Source code is below\n"
description: "[[code]]\n0→X\nClrHome\nLbl 1\nOutput(1,5,\"WARNING!\"\nOutput(2,1,\"1 virus found on\nOutput(3,1,\"your machine.\nOutput(5,2,\"Remove viruses\nOutput(6,2,\"Reinstall TI-OS\nOutput(8,3,\"Navigate  \"\n0→A\nRepeat X=100\ngetKey→X\nIf A=0:Output(5,1,\"\"\nIf X=34 and A=0:Then:1→A:Output(5,1,\" \"):End\nIf A=1:Output(6,1,\"\"\nIf X=25 and A=1:Then:0→A:Output(6,1,\" \"):End\nIf A=0 and X=105:Goto 3\nIf A=1 and X=105:Goto 2\nEnd\nStop\nLbl 2\nClrHome\n0→A\nOutput(1,1,\"Reinstall TI-OS?\nOutput(2,1,\"Continuing will\nOutput(3,1,\"delete all data\nOutput(4,1,\"and programs.\nOutput(7,2,\"Cancel\nOutput(8,2,\"Reinstall OS\nRepeat X=100\ngetKey→X\nIf A=0:Output(7,1,\"\"\nIf X=34 and A=0:Then:1→A:Output(7,1,\" \"):End\nIf A=1:Output(8,1,\"\"\nIf X=25 and A=1:Then:0→A:Output(8,1,\" \"):End\nIf A=0 and X=105:Then:ClrHome:Goto 1:End\nIf A=1 and X=105:Goto 4\nEnd\nStop\nLbl 4\nClrHome\nOutput(1,1,\"Resetting…\nFor(X,1,10000):End\nClrHome\nPause \"Memory Cleared\"\nGoto 84\nStop\nClrHome\nDisp \"Ti-34 MultiView\nLbl 84\nInput \"\",S\nDisp S\nGoto 84\nStop\n\n\n\n\n\n\n\n\n\nLbl 3\nClrHome\nOutput(1,1,\"Select payment\"\nOutput(2,1,\"type:\"\nOutput(4,2,\"Credit Card\"\nOutput(5,2,\"PayPay\"\nRepeat X=100\ngetKey→X\nIf A=0:Output(4,1,\"\"\nIf X=34 and A=0:Then:1→A:Output(4,1,\" \"):End\nIf A=1:Output(5,1,\"\"\nIf X=25 and A=1:Then:0→A:Output(5,1,\" \"):End\nIf A=0 and X=105:Goto 5\nIf A=1 and X=105:Goto 6\nEnd\nLbl 5\nClrHome\nDisp \"Credit Card #:\"\nInput \"\",Str1\nClrHome\nOutput(1,1,\"CREDIT CARD #:\"\nOutput(2,1,Str1\nOutput(4,1,\"COST: $150.99\nOutput(6,2,\"Continue\"\nOutput(7,2,\"Cancel\"\n0→A\nRepeat X=100\ngetKey→X\nIf A=0:Output(6,1,\"\"\nIf X=34 and A=0:Then:1→A:Output(6,1,\" \"):End\nIf A=1:Output(7,1,\"\"\nIf X=25 and A=1:Then:0→A:Output(7,1,\" \"):End\nIf A=0 and X=105:Goto 10\nIf A=1 and X=105:Goto 3\nEnd\nLbl 10\nrandInt(1,2)→X\nIf X=1:Goto 11\nLbl 11\nClrHome\nDisp \" TI-BASIC\nDisp \"Virus removal\nDisp \"failed. Your\nDisp \"machine will be\nDisp \"terminated.\nOutput(7,1,\"Press any key\nOutput(8,1,\"to continue…\nRepeat X=100\nEnd\nIf X=2:Goto 12\nStop\nLbl 6\nClrHome\nDisp \"PayPal ID#:\"\nInput \"\",Str1\nClrHome\nOutput(1,1,\"PayPal ID#:\"\nOutput(2,1,Str1\nOutput(4,1,\"COST: $150.99\nOutput(6,2,\"Continue\"\nOutput(7,2,\"Cancel\"\n0→A\nRepeat X=100\ngetKey→X\nIf A=0:Output(6,1,\"\"\nIf X=34 and A=0:Then:1→A:Output(6,1,\" \"):End\nIf A=1:Output(7,1,\"\"\nIf X=25 and A=1:Then:0→A:Output(7,1,\" \"):End\nIf A=0 and X=105:Goto 10\nIf A=1 and X=105:Goto 3\nEnd\nLbl 12\nClrHome\n\"VIRUS REMOVED!\n[[/code]]"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '1'
compatibility: bb
download: 'archivefile:untitled1/Untitled1.8xp'
image: 'archiveimage:justices/justices.gif'
fileSize: '1797'
fileSizeUnit: '1'
dateMade: ''

author: 'DJ_O? (Not confirmed) Uploader: Bio_Hazard1282'
version: 'Lost Between times'
summary: 'This game takes 98304 bytes of archive, and may crash. Be careful.'
description: 'This game takes 98304 bytes of archive, and may crash. Be careful.'
arcade: '1'
graphics: '1'
platform: '0'
puzzle: '0'
rpg: '1'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: bb
download: null
image: null
fileSize: '98304'
fileSizeUnit: '1'
dateMade: ''

author: 'Sorunome '
version: UNKN
summary: 'Join Reuben on an epic RPG fantasy adventure which includes tons of puzzles, side-quests, hidden things and much more!'
description: 'Join Reuben on an epic RPG fantasy adventure which includes tons of puzzles, side-quests, hidden things and much more!'
arcade: '1'
graphics: '1'
platform: '0'
puzzle: '1'
rpg: '1'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: bb
download: null
image: null
fileSize: '229'
fileSizeUnit: '2'
dateMade: '1482994800'

author: 'Brian Coventry'
version: 'zStart v1.3.013'
summary: 'This app truly is the "Swiss army knife" of utility apps for the 84+.'
description: 'This app truly is the "Swiss army knife" of utility apps for the 84+. zStart runs on every ram clear to setup your calculator environment to do just about anything you want. Features include: Mathprint/Classic, Degrees/Radians, Diagnostic On/Off, fixing lcd (ALCDFIX), setting contrast, running archived programs, editing archived programs, displaying 8 level grayscale picture on startup, running programs on ram clears/startup, custom fonts with an on-calc editor, enabling Axe, shortcut keys to run programs/compile axe programs/recall tokens, enabling omnicalc/catalog help, copy/paste, base conversions, molar mass calculations, 14% speed increase in basic programs, and more! Supports 83+!'
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '0'
compatibility: bb
download: 'archivefile:zstart/zstart.zip'
image: 'archiveimage:zstart-example/zStart-Example.gif'
fileSize: '253'
fileSizeUnit: '2'
dateMade: '1515913200'

I think we all know what pacman is…

I'm just new to this site and would love some help.

This will be re-done.

author: TI
version: 2.55MP
summary: "ROM of the TI-84 Plus Silver Edition ROM.\n"
description: "ROM of the TI-84 Plus Silver Edition ROM.\nIf you would like to delete this archive, send me a message WHY you wanted to do this."
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: null
image: null
fileSize: '2048'
fileSizeUnit: '2'
dateMade: '1515567600'

This project is an attempt to recreate MENACE. This article describes MENACE in its entirety

author: mattyjraps
version: '1.0'
summary: ''
description: "This is a Mario game made pretty much in pure BASIC (except for an asm snippet to fix the bug with the Text() command, grr). Featuring 6 worlds, 5 enemy types, animated coin blocks, and MUCH more, this is a truly must-have for your calculator if you are at all interested at gaming. It is the first BASIC Mario game of its size (~14,000 bytes) and has good looking graphics on top of that. Yahoo! All instructions are included in the readme.\n\n"
arcade: '1'
graphics: '1'
platform: '1'
puzzle: '1'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: bb
download: 'archivefile:mario-extreme/Mario-Extreme.zip'
image: 'archiveimage:main-menu/main-menu.gif'
fileSize: '0'
fileSizeUnit: '1'
dateMade: ''

author: Trenly
version: '1'
summary: 'This page is just testing for the 504 error'
description: 'Testing program and GIF uploading for the 504 error'
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:physic/PHYSIC.8xp'
image: 'archiveimage:testgif/TESTGIF.gif'
fileSize: '1262'
fileSizeUnit: '2'
dateMade: '1512540000'

author: Michael2_3B
version: '1.0'
summary: 'Flood the board with a single color in the least amount of moves!'
description: "Click the blocks to fill the board with a single color. See if you can do it within a specified amount of moves! You should catch on pretty quickly ;) More info in the readme. Original game: http://unixpapa.com/floodit\n\nThe flood algorithm may be a tiny bit slow, but that is due to the limits of TI-Basic."
arcade: '1'
graphics: '0'
platform: '0'
puzzle: '1'
rpg: '0'
strategy: '1'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: ff
download: 'archivefile:floodit/FloodIt.zip'
image: 'archiveimage:002929/002929.gif'
fileSize: '4'
fileSizeUnit: '2'
dateMade: '1512540000'

When programming, you may find that you want to execute a piece of code based on if another section of code has been executed. The easiest way to do this is to use a flag. What exactly is a flag? A flag is typically considered a placeholder or variable which contains a binary or Boolean value. In TI-Basic, it is typically a variable which holds a value of 0 or 1. This variable is called a flag because it is either up (1), or down (0). Flags can be very useful when used in the proper circumstance; They can help prevent double conditionals, allow for the program to behave differently based on which sections of code it has already run, or even change what a program does altogether. Let's look at an example:

prgmFLAG
:0→F
:Lbl 1
:Disp "Flag is"
:If F:Disp "Up"
:If not(F:Disp "Down"
:1→F
:If not(F:Goto 1

In the code above, we see a very basic flag. The flag is either up, 1, or down, 0. The program will display that the flag is down, set it to be up, then say that it is up before exiting. That's a great start, but how can flags be used in more useful ways?

Recycled Flags

Recycled flags are flags that are used more than once for the same purpose inside of a program. They are commonly used within loops, but can be used in other ways depending on what you are attempting to do. Consider the following: You have a variable A which you want to compare to B; If A is greater than B, you want to display a message. The only catch is, if A is greater than 50 you want to display a different message. This is a perfect place for a Recycled flag, especially if you want to repeat the comparison with different values. Take a look at the following code:

prgmACOMPB
:randInt(1,50→B
:Repeat A=B
:1→T
:Prompt A
:If A>50
:Then
:Disp "A is Greater than 50"
:0→T
:End
:If T(A>B):Disp "A is Greater than B"
:If A<B:Disp "A is Less than B"
:End

Did you understand how it worked? If not, let me walk you through it. As you may have guessed, this is a very simple guess the number game. First, we store a value to B. This value doesn't particularly matter, but we want it to be 50 or less for this game. We create a repeat loop that will run until we enter the value of B. Next, we set our flag. I put this flag setting inside the repeat loop, since we want it to reset every time we enter a new number. The program will then ask the user for a value of A to test, and now this is where the flag comes in. The program tests if A is above 50, in which case it would be out of the range of values of B. If A is greater than 50, it displays that and sets our flag to 0, or turns it off. The next conditional tests if A is greater than B. If A is greater than 50, it will always be greater than B, but since we already determined if it was greater than 50, we don't want to accidentally display a message twice. If you take a close look at the statement, we are testing "If T(A>B)" which can be rewritten as "If T and A>B" or even "If T≠0 and A>B". Lets step back and look at the values of when we compared A to 50. If A was greater than 50, T got set to 0; If A was less than or equal to 50, T was left as 1. This means that the statement we are testing will only be true if A is less than or equal to 50 based on the value in T.

Solitary Flags

The flag in the last example was a recycled flag, meaning we used it multiple times. This is debatably the most common form of flags. The other type of flag is a solitary flag, or a flag that is only used once. Perhaps the best example of this is a program where the author wants the user to do something before running the program. A flag may be used to allow the program to give instruction to the user before executing the code.

If A
Then
ClrAllLists
Output(1,1,"Please enter data in L₁
Delvar A
Pause
Return
End
Disp mean(L₁
1→A

While this is another simple piece of code, it displays a solitary flag very well. This program displays the mean of L₁, however we know that if there is no data in L₁ this code will throw an error. Lists are one of the variables that cannot be directly stored to using input or prompt, and because of this we want to tell the user to enter their data into the list. This code checks to see if there is a value stored in A, and if there is it then tells the user to enter the data, sets the flag, and exits. The reason this code checks to see if there is a value in A rather than if there is not a value in A is due to the fact that there will be a value in A most of the time. This program, for the flag, sets A to 0 by deleting it once it has told the user where to enter the data. When the program is run again, presumably after they have entered their data, it will see that there is no value and will then display the mean of L₁ as intended before finally putting a value back into A so it can be run again.

author: 'Unknown User'
version: 3.7.66.43.25TI83
summary: 'A FREE emulator of a TI-83 Plus, use this if you don''t own a TI-Basic Calculator!'
description: 'A FREE emulator of a TI-83 Plus, use this if you don''t own a TI-Basic Calculator!'
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:vti83-20171201t150451z-001/VTI83-20171201T150451Z-001.zip'
image: null
fileSize: '777'
fileSizeUnit: '2'
dateMade: ''

This is a simple program for yahtzee. But this is just the dice really.

ClrDraw
FnOff 
AxesOff
0→Xmin
0→Ymin
94→Xmax
62→Ymax
For(I,4,76,18
Line(I,21,I,35
Line(I,21,I+14,21
Line(I,35,I+14,35
Line(I+14,21,I+14,35
End
randInt(1,6,5→L₁
0→K
While not(K
getKey→K
End
For(I,1,5
18I-7→X
If fPart(L₁(I)/2)=.5
Pt-On(X,28,2
If L₁(I)≠1:Then
Pt-On(X-4,32,2
Pt-On(X+4,24,2
End
If L₁(I)>3:Then
Pt-On(X-4,24,2
Pt-On(X+4,32,2
End
If L₁(I)=6:Then
Pt-On(X-4,28,2
Pt-On(X+4,28,2
End
End
Pause
ClrDraw
AxesOn
FnOn
ZStandard
Output(1,1,"

author: LAX18
version: ''
summary: ''
description: ''
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: bb
download: null
image: null
fileSize: '1'
fileSizeUnit: '3'
dateMade: ''

This is a program that is like the Pen command.

Let's make a program that could define the variable B, as (10^10). Let's start!

Count()
:Prgm
:  Local a,b
:  10^10→b
:  For a,1,b
:    Disp a
:  EndFor
:EndPrgm

Let's break this code down piece by piece starting from the beginning.

counting()
:Prgm

The first code is the title of the project called "Count()" but you could make it whatever you want. While the second code is ": Prgm", which let's the calculator understand that it is a "program".
:  Local a,b
:  10^10→b
:  For a,1,b
:    Disp a

In this code, a "For loop" is established, which will store each successive number from 1 through B (10^10) in variable A.The program then outputs the data currently stored in Variable A, to character space 1,1 in the screen
:  EndFor
:EndPrgm

For this segment, "EndFor" ends the for loop after the code is executed. While "EndPrgm" ends the code.

…that you can use a combination of real and imaginary numbers to compress a real list, and use imag( and real( to decompress it?

…that you can use plot sprites to make simple, easily movable sprites on the color calculators?

author: 'Texas Instruments'
version: 2.55MP
summary: "The latest TI-84 Plus operating system 2.55 update* features MathPrint™ and is available to download free for TI-84 Plus and TI-84 Plus Silver Edition graphics calculators.\n"
description: "The latest TI-84 Plus operating system 2.55 update* features MathPrint™ and is available to download free for TI-84 Plus and TI-84 Plus Silver Edition graphics calculators.\n--\nDownload this simply instead of going through the mess of TI's website!\n--\nUploaded by: Bio_Hazard1282 does not match any existing user name"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '1'
compatibility: dd
download: 'archivefile:ti84plus-os255/TI84Plus_OS255.8Xu'
image: 'archiveimage:eap-2d-templates-a/EAP_2D-templates_a.jpg'
fileSize: '16384'
fileSizeUnit: '1'
dateMade: '1294297200'

If you haven't read Your First Program yet, I recommend you do so first.

Indentation

Whenever you write TI-Basic code, you should make sure it's readable. This will help both yourself and others in the future. One way to make your code more readable is to use indentation. Indentation is important because it allows you to easily see when one block of code ends and the next begins. Squashing all your code together with no indentation can make it hard to read.

Indentation is usually done with one space per level. The calculator keeps track of how many spaces begin a line, so they will survive being tokenized. When you begin a block, such as If, or Loop, or While, you add a level of indentation to lines after it, and remove it when you reach an 'End', such as 'EndIf', 'EndLoop', or 'EndWhile'. Here's an example of good indentation:

:indtexmp()
:Prgm
: © Prgm begins a block, so the rest of the code is indented
:
: Loop © Loop also begins a block, so add an indentation level
:  If getKey()=13 Then
:   Exit
:  EndIf
:
:  Disp "Hello, World!"
: EndLoop © EndLoop ends the block, so remove the indentation level
:EndPrgm © EndPrgm is not indented at all

Indentation is going to be hard to maintain on a real calculator, or in many TI-Basic editors, since it isn't too common in the TI-Basic community. However, it will be worth it when you're working on a large program. Notice the blank lines before and after blocks like Loop. Like indentation itself, it is entirely optional and it only assists in reading the code. Here's an example of no indentation:

:noindent()
:Prgm
:Loop
:If getKey()=13 Then
:Exit
:EndIf
:Disp "Hello, World!"
:EndLoop
:EndPrgm

This is a simplified example. Imagine an application with 10 or 15 nested If statements, each with their own Else and ElseIf statements. Now imagine needing to put code inside a specific If. You will most likely need indentation to keep track of where to put the code, or you might just sit there for a while trying to make sense of all those nested Ifs!

It should be clear that indentation isn't required. Most members of the community don't use it for their programs, maybe because it increases program sizes, or because it's cumbersome to maintain. Maybe it just isn't worth the effort. You should decide whether indentation is for you. You could indent because it makes code more readable, or even just because you're used to indenting code. To indent, or not to indent? That is the question, and the reasoning for your answer is up to you.

Commenting

Variable Naming

<< Your First Program Table of Contents Setting up your 68k calculator >>

…that 68k calculators can not only program in TI-Basic, but can program in Assembly and C as well?

There are no new updates.

This is a Celtic 3 program that allows you to do things that a Non-Celtic 3 program would do. Requires Celtic 3 to be installed, and requires at least 3000 bytes of RAM to use (even when you run the program, a little ram [130 bytes] is taken away when a program is ran)
File will be posted soon


author: _iPhoenix_
version: v1.0
summary: 'A port of the popular game Stick Hero, ported to the CE in pure TI-Basic!'
description: 'A port of Stick Hero, for the CE! I took a lot of inspiration from PT_''s CSE port of the game, so check that out, too!'
arcade: '1'
graphics: '0'
platform: '1'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: ff
download: 'archivefile:stickheroce/StickHeroCE.zip'
image: 'archiveimage:image/Image.gif'
fileSize: '1303'
fileSizeUnit: '1'
dateMade: ''

author: Bio_Hazard1282
version: 1.0.7
summary: 'http://thevideogamingsite.wikidot.com/program-manager'
description: "This is a program that is related to Oasis (A shell programmed in pure TI-Basic), and is programmed in pure TI-Basic.\nIt allows you to:\n• Archive and Un-Archive programs\n• Hide/Show programs\n• Lock/Unlock programs\n• Garbage Collect\n• View Data about programs (Shows how many lines of code is in the program, tells if it is archived, hidden, locked, converts name to hexadecimal string, and shows how big that program is.)\n• Delete/Create Programs\n\n++++++ New Updates\n• Run programs\n• Download program codes and store them into a string, then recall the string\n• Sort for MirageOS, BASIC, Assembly programs\n• The program source code\n• Important updates\n• More det( and real functions\n• The program will become an app\n--\n++++ I am thinking…\n++++++ This could become an OS, I am thinking if calling it ManagerOS…"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:program-manager/Program-Manager.docx'
image: null
fileSize: '1783'
fileSizeUnit: '1'
dateMade: '1508306400'

getnum.png

Command Summary

Returns the numerator of a fraction or given expression

Command Syntax

getNum(expression1)

Menu Location

[MATH][9][B][1]

Calculator Compatibility

This command works on all calculators.

Token Size

X byte(s)

The getNum() command return the value of a given expression (an expression being a number or an algebraic expression).

getNum(3/5)
   3
getNum((x+1)/(x-1))
   x+1

Related Commands

author: wifijoe
version: v1.0
summary: 'Play the famous game Minesweeper on your calculator! '
description: "controls are:\narrow keys: movement\n2nd button: reveal square\nALPHA button: mark/un-mark mine\n\nto win: clear the board of all of the squares. Empty spots will not clear themselves.\n\nside note: while this can run on a ti-83+, it is not recommended.\n\njust ask me if you want it to be open source!"
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '1'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: cc
download: 'archivefile:mine/MINE.8xp'
image: 'archiveimage:capture/Capture.png'
fileSize: '1183'
fileSizeUnit: '1'
dateMade: '1508299200'

This page consists of various techniques that can be used while programming in 68k Basic.

_default

+ list pages

84cse

+ list pages

admin

+ list pages

admin-forum

+ list pages

admin-nav

+ list pages

admin-section

+ list pages

admin-thread

+ list pages

archive

+ list pages

archive-categories

+ list pages

archivefile

+ list pages

archiveimage

+ list pages

archives

+ list pages

badge

+ list pages

basicbuilder

+ list pages

board

+ list pages

challenges

+ list pages

deleted

+ list pages

empty-page

+ list pages

excerpt

+ list pages

featured-program

+ list pages

featured-project

+ list pages

forum

+ list pages

how-to

+ list pages

member

+ list pages

nspire

+ list pages

pages

+ list pages

portable

+ list pages

portal

+ list pages

projects

+ list pages

projectupdates

+ list pages

project-updates

+ list pages

reports

+ list pages

resources

+ list pages

sandbox

+ list pages

screenshot

+ list pages

search

+ list pages

showcases

+ list pages

system

+ list pages

template

+ list pages

wishlist

+ list pages

Text displayed when hoveredText to hover

TI Basic is great!

Revision types:  ALL
 new pages
 source changes
 title changes
 page name changes
 tags changes
 metadata changes
 files changes
From categories:
Revisions per page:
page 1123...next »
nspire: Errors S 19 Oct 2019 05:21 (rev. 24) Trenly
You successfully reverted the page to revision number 21
archive: screen saver*ball* N 19 Oct 2019 03:26 (new) william756
projects: Darklands N 16 Oct 2019 17:50 (new) william756
nspire: Errors S 16 Oct 2019 00:42 (rev. 23) Aisane
nspire: Errors S 16 Oct 2019 00:41 (rev. 22) Aisane
updated link and variable name
forum: Forum Thread F 14 Oct 2019 15:11 (rev. 69) Bio_Hazard1282_rPi3
Uploaded file "Yu-Gi-Oh! Life counter Program".
The LinReg(a+bx) Command S 06 Oct 2019 10:29 (rev. 14) jojo40605
Changing LEFT to RIGHT in the location directions because it was wrong
projectupdates: MENACE Update: V0.3 S 05 Oct 2019 23:45 (rev. 16) Trenly
Command Index (Color) S 01 Oct 2019 00:12 (rev. 140) VoxelPrismatic
Asm84CEPrgm S 01 Oct 2019 00:11 (rev. 3) VoxelPrismatic
OS 5.3.1 doesn't support this token, a note has been added
Uploading Help A 29 Sep 2019 03:15 (rev. 4) Bio_Hazard1282_rPi3
Added tags: uploading. Removed tags: archiving, memory-managment, uploading-help.
Uploading Help A 29 Sep 2019 03:08 (rev. 3) Bio_Hazard1282_rPi3
Added tags: archives, archiving, memory-managment, uploading-help.
TI-84+ Tokens S 26 Sep 2019 15:56 (rev. 32) PeterTillema
TI-84+ Tokens S 26 Sep 2019 15:30 (rev. 31) PeterTillema
Changed CE tokens
news: News A 26 Sep 2019 03:03 (rev. 1) Trenly
Removed tags: _announcement.
news: News N 26 Sep 2019 03:01 (new) Trenly
84ce: 84+ CE Hexcodes S 22 Sep 2019 23:06 (rev. 6) MateoConLechuga
84cse: 84+CSE Hexcodes S 22 Sep 2019 22:47 (rev. 20) kg583
Added "dark mode" hex code
84cse: 84+CSE Hexcodes S 13 Sep 2019 17:32 (rev. 19) Bio_Hazard1282_rPi3
page 1123...next »

author: 'Ti Programs Online'
version: '1.0'
summary: 'Helps calculate taxes for 2017 fiscal year.'
description: 'Helps calculate taxes for 2017 fiscal year.'
arcade: '0'
graphics: '0'
platform: '0'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '1'
misc: '1'
compatibility: bb
download: 'archivefile:taxfnd17/TAXFND17.zip'
image: null
fileSize: '487'
fileSizeUnit: '1'
dateMade: '1507438800'

rcl.gif

Command Summary

Pastes the content of a variable

Command Syntax

Rcl variable

Menu Location

[2ND][STO>]

Calculator Compatibility

TI-83+/84+/C/SE

Token Size

N/A

Rcl is a functionality of the calculator which allows the user to paste the value of a variable into a text entry field. The Rcl function can be used anywhere where text entry is required, but may not be used as a command within a program. When the user presses [2ND][STO>], the Rcl prompt will appear. Enter the name of the variable that you wish to recall here, and press [ENTER]. For example, you could use Rcl to paste the contents of a string variable into an Input prompt in a running program.

Rcl Str1

Advanced Uses

Rcl can be used to paste one program into another program, allowing for duplicating programs on the calculator. This is particularly useful when modifying a working program. If you decide that your changes should be reverted, you will have a backup copy of the original program

Related Commands

This code finds the angle of intersection of two lines.

Routine Summary

Finds the angle of intersection for any two lines.

Inputs

Str1 and Str2

Outputs

Ans

Variables Used

Y1, Y2, I, Ans, X

Calculator Compatibility

TI-83/84/+/SE/CSE/CE

Authors

kg583, Myles_Zadok

:Degree
:Str1→Y1
:Str2→Y2    \\If your equations are already stored in Y1 and Y2, these two lines are unneccessary
:E‾9→I      \\This threshold can be changed to adjust the output accuracy
:angle(I+i(Y2(X+I)-Y2(X
:Ans-angle(I+i(Y1(X+I)-Y1(X
:Disp "ANGLE OF INTERSECTION IS",Ans

The routine works by assuming the graphs are almost straight lines at a very small scale around the point of intersection given by X. The two graphs are approximated by complex numbers made by combining the x and y coordinates. The angle( command finds the angle for each complex number, then they are subtracted. This command is useful as it avoids domain errors caused by using tanֿ¹(.

If you do not already know the x-coordinate of the intersection of the two graphs, you can add this line at the beginning to find it:

:solve(Y2(X)-Y1(X)=0,X,0→X
piecewise(.png

Command Summary

Graphs up to 5 piecewise expressions.

Command Syntax

(expression, condition [,expression, condition])

Up to 5 (expression,condition) pieces are allowed.

Menu Location

1: While editing a program, press [math]

2: Then press [alpha] [apps] (B) or scroll down.

Calculator Compatibility

TI-84+CE OS 5.3

Token Size

2 bytes

The piecewise( command is a new addition in the release of OS 5.3 for the TI-84 Plus CE. As implied, it allows for the graphing of piecewise functions in the Y= editor. The example code demonstrates how this works from within a program.

:ClrDraw
:Input "Y1=",Str1
:Input "Y2=",Str2
:Str1→Y1
:Str2→Y2
:FnOff
:"piecewise(Y1,X≥0,Y2,X<0→Y3
:DispGraph

Advanced Uses

One use of the piecewise( function is to evaluate an expression for a given value of X. For example:

:piecewise(X²+2,X≥0

This code will return the value of the expression if X≥0. So if X=0, then the program will return a value of 2. If X=3, it will return a value of 11. If X=-5, it will return an error.

Optimization

This command can simplify and compact the usage of piecewise expressions in programs. If you have less than 6 conditions that will never overlap, and they all affect a single variable, you can use the piecewise( command to make your code smaller, as shown below. Beware of comparability, though.

:If X<2
:Then
:4.5X→N
:Else
:8X+3→N
:End
can be
:piecewise(4.5X,X<2,8X+3,X≥2→N

Error Conditions

  • ERR:INVALID is thrown if expressions are not defined.
  • ERR:DATA TYPE is thrown if a quotation mark is not placed before a piecewise command that is to be stored to an equation variable.

Related Commands

  • Command 1
  • Command 2
  • Command 3

See Also

The ListPages module does not work recursively.

author: eeffeemorgan
version: '1.1.2-Base Codes'
summary: '2D Minecraft'
description: "83-Craft is a Minecraft like game in which you can place/destroy blocks and move around. \nAlso, giving credit where it is due, this was not entirely mine it is my take on Ti-Craft by 12Me21. Go check it out here:\nhttp://tibasicdev.wikidot.com/archive:ticraft\nAlso, I will be updating this almost constantly because I never have anything to do in my classes at school.\n\n\nBiomes:\n0:Default\n1:Forest\n2:Flat lands\n3:Barren\n4:Underground\n5:Plains\n6:Barren Plains\n7:Skylands?\n\nControls:\nPress the arrow keys to move.\nPress Y= to set the block to air\nPress window to set the block to dirt\nPress zoom to set the block to stone\nPress trace to set the block to leaves\nPress graph to set the block to Wood\nMode = glass\nDEL = Brick\nX,T,θ,n = Mushroom\nTo place blocks around the player use keys:12346789 (Ex:to place a block above the player press 8 to place one below press 2)\nPress STO to reach save menu\n\nOld:\nTrees! Mushrooms! Biomes!\nWood, Leaves, Dirt, Stone\n\nNew!:\nGlass, Brick, Mushroom(Place-able),\nSkylands, \nOre generation!\n\nUp coming:\nBaddies\nClimbing\n4 more blocks"
arcade: '0'
graphics: '0'
platform: '1'
puzzle: '0'
rpg: '0'
strategy: '0'
sports: '0'
casino: '0'
board: '0'
utility: '0'
misc: '0'
compatibility: bb
download: 'archivefile:83-craft/83-Craft.8xp'
image: 'archiveimage:83-craft-2/83_Craft_2.gif'
fileSize: '2804'
fileSizeUnit: '1'
dateMade: '1505541600'

reason: 'This is Thel Vadamee/Ti-Basic Dude'
proof: 'His username leaves little doubt of his identity. This is an alternate account of Thel Vadamee/TI-Basic Dude, which is a violation of the rules to avoid a ban by having an alternate account. '

That forum structure is really nice! I am also in approval of this layout.

Sep 13 TI-BD Contributor Battlesquid has been promoted to Moderator.
page 1 of 12123...1112next »

.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License.