Create an over-complicated equation that has…

- At least 4 different commands
- Length of equation must be 28 or longer (Check by using the length( command by placing it in a string)
- Must equal two
- Must be different than other participants

Example:

` ``.14+.1int((10fPart(π)))+.5+.2(.6²)+.008(2(10fPart(.3abs(-9))))+.86+(10fPart(.216))-1.944+0fPart(π)+imag(e`

Best equation gets a code for $5 Jamba Juice gift card!

Bonus points if coded in z80 assembly.

**Rules:**

- NO COPY AND PASTING
- MAKE YOUR OWN CODE/PROGRAM
- MUST BE ON ONE LINE
- CREATE YOUR OWN ALGORITHMS AND METHODS

Any rules that are broken is an automatic disqualification.

]]>Some years ago, I watch a tutorial about ti basic, then it asks me to make a snake (so I made one). Then I thought I could make a 3d maze (so I made one). However the tutorial I followed was very basic, so my programs works… and aren't optimized at all (the maze one is so big), and then I remembered this site, I saw there was tutorials and here I am.

Languages:French (native), English (not that much though), and ti-basic (that's all, even if I want to try Python) ]]>

I have problems with the connection of my TI 84 plus to a PC.

I use TI connect 5.4.0.1181 and a PC with Windows 7.

When I connect the TI 84 Plus to the computer after some seconds/minutes the TI appears as "Unknown device 7CC0 OS 2.22.0" in the TI Connect.

After I pull the new OS (TI84Plus_OS255.8Xu) on the "Unknown device 7CC0 OS 2.22.0" appears a new menu with "Calculator select". However, at this time, the connection is usually already interrupted. Sometimes it does not abort, but then I get the message: Hello, it seems that the connection between the Unknown Device 7CC0 and TI Connect is interrupted "

I have tried several different computers, also with Windows 10. Also I have tried different cables and delete the RAM without success.

Thanks for help ]]>

` ``ClrHome 0->A .3->B .7->F Lbl 6 Disp "BUZZ FOR?-(0 NOT" Input "T0 BUZZ):",C Disp "FIZZ FOR?-(0 NOT" Input "TO FIZZ):",D If (C<0)+(C>9)+(D<0)+(D>9)>0 Goto 6 ClrHome If C!=0 Disp "B FOR BUZZ" If D!=0 Disp "F FOR FIZZ" Disp "START COUNTING","GO!" Lbl 1 A+1->A Input E 0->G If C=0 Goto 3 If A/C=int((A/C) B->G A/10->H Lbl 2 If fPart(H=C/10 B->G iPart(H->I If I=0 Goto 3 I/10->H Goto 2 Lbl 3 0->H If D=0 Goto 5 If A/D=int((A/D) F->H A/10->I Lbl 4 If fPart(I=D/10 F->H iPart(I->J If J=0 Goto 5 J/10->I Goto 4 Lbl 5 A->I If G=B G->I If H=F H->I If GH=BF GH->I If I=E Goto 1 Disp "WRONG!","YOU LOSE!" Stop`

What I would add to the language:

`getBattery`- Gets the battery level of the calculator (0-4)`getOS`- Reads the current OS version and puts the string in Ans`readLine(`- Reads any line or multiple lines from a program`chngLine(`- Replaces a line in an unarchived program`delLine(`- Deletes a line or multiple lines from a program`sprite(`- Displays a sprite with a hex string, given the x and y coords`lockPrgm(`- Toggles lock status of program`hidePrgm(`- Toggles lock status of program`getCalc(`- An existing command, but takes 1-3 seconds in receiving a variable, would be better if receive time was instant`shiftScreen(`- Shifts the graph screen in a certain direction and a certain amount of steps`TextInvOn``TextInvOff`- Toggles text inversion on the home screen`Token(`- Outputs a token in a string in Ans based on the input hex value`toString(`- Wish for 84+`Wait`- Wish for 84+ ass well`PrgmToAppv`- Converts program to an app var`AppVtoPrgm`- Opposite of previous command`sound(`- Plays sound through the I/O port`CopyEntry(`- Copies a saved entry from the home screen and pastes it to Ans`getRAM`- Reads current RAM storage`getROM`- Reads current Archive storage

If you have any other commands, post them here!

]]>"S"→A

If A="S"

"A"→A

If A="A"

"S"→A

But, I got an error saying invalid data type. Is there a way to use strings in conditions in if commands? ]]>

https://pasteboard.co/IDuzeHH.png ]]>

rmd(i:9)=rmd(i:9)-qd(1:10-i); % this is the syntax I need an equivalent for

polynomial fraction

0.2/(z^4-0.4z^3+0.646z^2-0.243z+0.024)

this is the code for the power series up to 9 terms.

rmd= [0.2 0 0 0 0 0 0 0 0]; %numerator coefficient

q= [0 0 0 0 0 0 0 0 0 0]; %quotient

qd=[0 0 0 0 0 0 0 0 0 0]; % product of quotient term with denominator

d=[1 -0.4 0.6465 -0.2426 .02426 0 0 0 0];%denominator

rmd(i:9)=rmd(i:9)-qd(1:10-i);

r= [0.2 0 0 0 0 0 0 0 0];

q= [0 0 0 0 0 0 0 0 0 0];

qd=[0 0 0 0 0 0 0 0 0 0];

d=[1 -0.4 0.6465 -0.2426 .02426 0 0 0 0];

rmd=r;

i=1;

for i=1:9

q(i)=rmd(i)/d(1);

qd=q(i)*d;

rmd(i:9)=rmd(i:9)-qd(1:10-i);

end

` ``:ClrDraw :DelVar A15→B :Text(1,82," :Text(0,82," LET :" →Str1 :Repeat max(M={45,105,21 :‾5→C :Repeat M=23 or max(Ans={21,45,105}) or (not(A)M>40 and not(A)M<95 and M≠44) or max(AAns={92,93,94,102,82,83,84,72,73,74 :C+1-10(C>4→C :Text(29,B,sub(" [",1+(Ans>0),1 :Text(29,B+1," :If M=31 :Then :not(A→A :Text(0,83,sub("LETNUM",3A+1,3 :End :getKey→M :End :If min(M≠{21,105,45,23 :Then :If A :Then :sub("0123456789",27-3int(.1M)+10fPart(.1M)+2(M=102),1 :Text(29,B,Ans :Str1+Ans→Str1 :B+4→B :Else :sub("ABC DEFGHIJKLMNOPQRSTUVWXYZθ",M-5int(.1M)-20,1 :Text(29,B,Ans :Str1+Ans→Str1 :B+4→B :End :Else :If M=23 and 1<length(Str1 :Then :B-4→B :Text(29,Ans," :sub(Str1,1,length(Str1)-1→Str1 :End :End :End`

works very well but doesn't support decimals and requires you to switch to numlock if you want to input numbers. This other routine:

` ``DelVar A" →Str1 Repeat K=55 Output(1,16,sub("A1",A+1,1 Output(2,16,Str1+"^ //one space afterwards Repeat Ans getKey End Ans-5int(.1Ans→K "* If K-20>16A sub("789**456**123**0.‾**ABC**DEFGHIJKLMNOPQRSTUVWXYZθ'* :?*",K-36A,1 If Ans≠"* Str1+Ans→Str1 A xor K=16→A length(Str1 If Ans≠1 sub(Str1,(K=55)+1,1+(K≠25)(Ans-1-(21=abs(K-34→Str1 If K=25 ClrHome End ClrHome Str1`

supports decimals but is very ugly, brings me to the home screen (which I want to avoid) and also requires numlock. Is there any way to simplify the first routine so that it doesnt require numlock (only number input is possible) but also supports decimals? I don't have coding experience so any help would be much appreciated thank you :)

ps. I tried to provide links to the respective code but im too new to the forum for that. the first routine is off the techniques page and the second is from an old thread I found.

]]>` ``DelVar [A]{6,7→dim([A] //sets [A] to 6x7 all 0's Disp" Disp"+-+-+-+-+-+-+-+ For(A,1,5 Disp"] End Output(8,1,"] For(A,3,8 Output(A,15,"[ End For(A,1,8 Output(A,16,sub("PLAYER_ _",A,1 //"_" is a space End DelVar θ2→P 7→dim(L₂ Fill(6,L₂ For(Z,1,42 If θ Goto 1 (P=1)2+(P=2)→P Output(8,16,P 2→V Repeat K=105 and L₂(.5V Output(1,V,"v Repeat K getKey→K End Output(1,V,"_ V+2(K=26 and V≤12)-2(K=24 and V≥4→V End .5V→V P(P=1)+(P-3)(P=2→[A](L₂(V),V) If P=1 Output(2+L₂(V),2V,"0 //zero If P=2 Output(2+L₂(V),2V,"O //letter O 0→θ If L₂(V)≤3 Then For(A,7,5,-1 cumSum(seq([A](A-I,V),I,1,4 If Ans(4)=4 1→θ If Ans(4)=-4 -1→θ End End For(A,0,3 cumSum(seq([A](L₂(V),A+I),I,1,4 If Ans(4)=4 1→θ If Ans(4)=-4 -1→θ End V+L₂(V->B If B≥5 and B≤10 Then seq([A](1,B-I),I,(B≤7)(B-1)+6(B≥8),(B≤7)+(B≥8)(B-7),-1→L₁ For(A,1,dim(L₁)-3 cumSum(seq(L₁(M),M,A,A+3 If Ans(4)=4 1→θ If Ans(4)=-4 -1→θ End End L2(V)-V→B If B≤2 and B≥-3 Then seq([A](I,I-B),I,(B≤-1)+(B+1)(B≥0),6(B≥0)+(B+7)(B≤-1→L₁ For(A,1,dim(L₁)-3 cumSum(seq(L1(M),M,A,A+3 If Ans(4)=4 1→θ If Ans(4)=-4 -1→θ End End L₂(V)-1→L₂(V End Lbl 1 ClrHome "PLAYER_ If θ=1 Ans+"1 If θ≠1 Ans+"2 Ans+" WINS! If Z=42 "CAT GOT THE GAME Ans I had some problems with the code especially`

L2(V)-V→B

[[/code]]

I was Just wondering if there were some things wrong with this code because I don't know much about coding

also, this was brought from http://tibasicdev.wikidot.com/connect-4-2-player

]]>Has anyone else knew about this before I did, or is this new find?

]]>The competition ends on November 1, 2019

The objective is simple: Create a program that can someone can quickly create on another person's TI-84+ CE calculator that overloads the memory when run. The program must result in the calculator resetting. (Specifically, removing all programs, settings, etc.) The easiest program to make that also does the job in the shortest amount of time wins!

**And the prize:** A warm fuzzy feeling!

Rules:

1. No use of assembly

2. The program must be able to be built on any TI-84+CE calculator, regardless of any special features that the calculator has.

**Good Luck!**

Also, first thread of the section :D

]]>` ``:0→A:0identity(3→[A] :1-2int(2rand→B :"+++ :ClrHome :Disp Ans,Ans,Ans :Repeat 0 :Repeat Ans :.1getKey→K :End :If 2Ans=9:Goto Q :iPart(Ans)-6→C :10fPart(K)-1 :If max(2≤abs({C,Ans}-2:End :If [A](C,Ans:End :Output(C,Ans,sub("X O",B+2,1 :B→[A](C,Ans :For(C,0,1 :[A]T→[A] :For(D,1,3 :Matr►list([A],D,T :If min(∟T=B:Goto Q :End :If min(B=seq([A](abs(4C-X),X),X,1,3 :Goto Q :End :-B→B:IS>(A,9 :End :Lbl Q :"TIE! :If A≠9 :sub("X O",B+2,1)+" WINS! :If 2K≠9 :Pause Ans :ClrHome:"`

So for say 7^-1 mod 192

It needs to be simple code i can just type into the ti nspire program's by hand. ]]>

Basically, I think it's pretty cool that a popular YouTuber programmed on a calculator. Since he has 2.15M subs, I'd say that could be good for the TI-Basic community. What do you guys think?

]]>- How many deletion operations can the flash chip support before wearing out?
- What specifically counts as a deletion operation (Deleting flash apps, archived programs, groups, etc.)?
- What is the 5 digit number that displays when running self-tests that decreases by 4 every time a self-test is performed?
- What happens and what do you do when it wears out?
- What do you know how many deletion operations you have already done?
- Does using the GarbageCollect count as (a) deletion operation(s)?

These Q's and A's can be added to the FAQ's for future reference for other programmers.

]]>Along with this, some other things have been cleaned up around the forums. Threads in the announcements category which were not truly announcements were moved to their appropriate forum, and most of the outdated or irrelevant announcements have been hidden. The politics category has also been removed due to it not being used, and the tendency of politics to become disrespectful. These sorts of threads can still be created in General Discussion, so long as everyone remains respectful and follows the rules. The names and descriptions of some categories were also updated to be more clear, but remained otherwise unchanged.

]]>Here's the code at the beginning asking for A, B, and the equation. I want the equation to output to 2 strings because it needs to be substituted twice. I'm kind of a TI-Basic noob so if there's a better way to do this, please let me know.

` ``Prompt A Prompt B Input "Eqn:",Str1 Str1→Str0`

Str1 and Str0 are the same equation. Later on in the code I replace any instances of X with A:

` ``"X"→Str2 toString(A)→Str3 length(Str2→D 1→C While inString(Str1,Str2,C inString(Str1,Str2,C→C Str3 If C>1 sub(Str1,1,C-1)+Ans If C+D<1+length(Str1 Ans+sub(Str1,C+D,1+length(Str1)-(C+D Ans→Str1 C+length(Str3→C End`

And then with B. It's the same as the one above except I replaced Str1 with Str0 and A with B.

` ``"X"→Str2 toString(A)→Str3 length(Str2→D 1→C While inString(Str0,Str2,C inString(Str0,Str2,C→C Str3 If C>1 sub(Str0,1,C-1)+Ans If C+D<1+length(Str0 Ans+sub(Str0,C+D,1+length(Str0)-(C+D Ans→Str0 C+length(Str3→C End`

Then I displayed Str1 (the A string) and Str0 (B), but then it does this:

If A=2, B=3, and my equation is 3(x)-6, then Str1 should be 3(2)-6 and Str0 should be 3(3)-6, but it's saying that they're both 3(2)-6. Any help would be appreciated.

I want to create a program where a code is input by the user such as "HR400" which corresponds to another number such as 12.5, that number will then be stored in a string. I have around 200 short codes which correspond with other numbers. What would be the best way to go about doing this? You could just write 200 lines of if statements but that doesnt feel right, and I will be relating 6 short codes to numbers which will then be stored in 6 seperate strings to be displayed later.

]]>` ``ClrHome Input "(",A ClrHome Input "("+toString(A)+", ",B ClrHome Disp "("+toString(A)+", "+toString(B)+")" Input "(",C ClrHome Disp "("+toString(A)+", "+toString(B)+")" Input "("+toString(C)+", ",D ClrHome Disp "("+toString(A)+", "+toString(B)+")" Disp "("+toString(C)+", "+toString(D)+")" If A=C Then Disp "ILLEGAL INPUT" Disp "RESTARTING..." Input "",Z DelVar Z prgmLINEEQU End {A,C→L₁ {B,D→L₂ LinReg(ax+b) Disp "Y="+Y₁`

So basically, I have assigned an input into A, B, C, and D. I put 1 into A and B, and 2 into C and D, and on the lines

{A,C→L₁

{B,D→L₂

It gives me a data type error (storing matrix to list) on the variables. After trying different ideas for 30 minutes with the people on my discord server, including:

- Close curly bracket (no change)
- Using expr() incase they were strings (data type there, so it is a value)
- A[1] instead of A (syntax error on the brackets)
- [A](1,1) (same thing)
- A(1,1→A (again, syntax)

We're out of ideas so I'm turning here for help. Any ideas?

]]>https://pasteboard.co/Ixfwf2P.png ]]>

EDIT: The only way to boot it normally is by using the [CLEAR]+[ON] trick. Resetting anything crashes the calculator.

EDIT 2: Am I able to use TI-Connect or TiLP to back up the files without completely resetting the flash chip?

EDIT 3: You can still see that half the archive is taken, but there must be some file that is corrupted that it is preventing the parsing.

https://pasteboard.co/IwX7s3r.png

In Daleks you're The Doctor, you move with the numpad as Daleks chase you. The Store key acts as a repeatable dangerous teleport using the "Tardis," and the Ln key is the "Sonic Screwdriver," killing enemy Daleks.

Game code:

https://pastebin.com/TMu6pyiB

I've also TASed programming the game and then playing it as an experimental project, I have a newer version not yet on YouTube that's closer to the pastebin code and saves 50 seconds. I discovered the 1.02 OS bug due to the OS used for TASing in BizHawk.

https://youtu.be/JH9E_SoiYQs

Ok im out

]]>` ``If min(∟T=B:Goto Q`

https://pasteboard.co/IupqfgD.jpg

How can I find this file?

]]>` ``If sub(Str1,D,1)!="0" and sub(Str1,D,1!".`

I have similar errors each pointing towards the radial sign as the problem. The code I get from the plaintext shows a radial sign, yet it doesn't work on the calculator. Is my plaintext code referring to a different symbol on the calculator, or are there different underlying issues? I've had issues with the radial sign on previous projects in the past, to a similar extent. (By plaintext I mean a .txt file I have on my laptop that I print.)

I could really use some help with this, thank you.

]]>Jeffitus (from over at Cemetech) is working on cataloging TI-BASIC routines on **GitHub**. These are routines that are useful or optimized and might be a good fit with this community. If you spy an optimization, definitely provide it. If you think a routine belongs there, add it! And if you think a routine belongs here, add it to the routines page!

kg583, from TI|BD and Cemetech, put up their **TI Number Theory** (TINT) project. It includes code for a whole bunch of primality tests, integer factoring, and a bunch of other number theory related functions. Looks like calculators aren't *just* for games anymore :P

**EDIT:** Ah, look a that glorious typo in the title.

EDIT: Did you also know that if you were to type `{0,0,0:Fill(0,Ans` gives you a RESERVED error?

Did you know that by typing in a single : on the homescreen and pressing enter gives you a "Done" message?

` ``ClrHome 1→X:Ans→Y 16→A:8→B Repeat K=45 or max({X=A}{Y=B Output(Y,X,"X Repeat Ans randInt(0,1 A+(Ans)-(not(Ans))+16(not(A))-16(A=16→A randInt(0,1 B+(Ans)-(not(Ans))+8(notB))-8(B=9→B Output(Ans,A,"* getKey End:Ans→K Output(Y,X," ;1 space max(1,min(16,X+(Ans=26)-(Ans=24→X max(1,min(8,Y+(K=34)-(K=25→Y End:ClrHome "You "+sub("LoseWin!"1+4((X=A)(Y=B)),4`

This Code has not been tested for errors/bugs. ]]>

I am totally new to IT, I know that the possibilities are great, but I also know that the basic documentation is really not detailed enough.

English is not my native language, I hope I will still be able to understand and contribute when I am able to.

Cheers, TroOops.

]]>First, how do we shuffle L1 in BASIC?

` ``rand(dim(L1->L2 SortA(L2,L1`

This is a super clever algorithm, but slow as heck as the lists get bigger. Plus, it uses an extra list of the same size, wasting precious RAM. So how does the Fisher-Yates algorithm work? You start at the last element. Randomly choose an element up to and including the current element and swap them. Now move down one element and repeat (so now the last element is off limits, then the last two, et cetera). Repeat this until there is one element left.

This is easy to perform in-place, and it performs n-1 swaps, making it significantly faster than the BASIC algorithm above. In fact, let's implement it in BASIC:

` ``dim(L1->N For(K,N,2,-1 randInt(1,K->A L1(K->B L1(A->L1(K B->L1(A End`

This takes approximately 37.5 seconds to sort a 999 element list. I don't even have the RAM needed to test the regular method, but extrapolating, it would take the "normal" method approximately 73 seconds for 999 elements. So basically, the Fisher-Yates algorithm is actually faster even in TI-BASIC (after about 400 elements, though).

So without further ado, the assembly code!

` ``;Randomizes a TI-list in Ans _RclAns= 4AD7h seed1 = $80F8 seed2 = $80FC seed1_0=seed1 seed1_1=seed1+2 seed2_0=seed2 seed2_1=seed2+2 #define bcall(x) rst 28h \ .dw x .db $BB,$6D .org $9D95 ; Put it into 15MHz mode if possible! in a,(2) add a,a sbc a,a out (20h),a ; Initialize the random seed ld hl,seed1 ld b,7 ld a,r _: xor (hl) ld (hl),a inc hl djnz -_ or 99 or (hl) ld (hl),a ; Locate Ans, verify that it is a list or complex list bcall(_RclAns) ex de,hl ld c,(hl) inc hl ld b,(hl) inc hl ld (list_base),hl dec a jr z,+_ sub 12 ret nz dec a _: ;A is 0 if a real list, -1 if complex ;HL points to the first element ;BC is the number of elements and $29 ;make it either NOP or ADD HL,HL ld (get_complex_element),a sub 29h sbc a,a ;FF if real, 00 if complex cpl and 9 add a,9 ld (element_size),a shuffle_loop: push bc push bc call rand pop bc ex de,hl call mul16 dec bc ;swap elements DE and BC call get_element push hl ld d,b ld e,c call get_element pop de call swap_elements pop bc dec bc ld a,c dec a jr nz,shuffle_loop inc b dec b jr nz,shuffle_loop ret swap_elements: ;HL and DE point to the elements element_size = $+2 ld bc,255 _: ld a,(de) ldi dec hl ld (hl),a inc hl djnz -_ ret get_element: ;Input: ; DE is the element to locate ;Output: ; HL points to the element ld l,e ld h,d add hl,hl add hl,hl add hl,hl add hl,de get_complex_element: nop list_base = $+1 ld de,0 add hl,de ret rand: ;Tested and passes all CAcert tests ;Uses a very simple 32-bit LCG and 32-bit LFSR ;it has a period of 18,446,744,069,414,584,320 ;roughly 18.4 quintillion. ;LFSR taps: 0,2,6,7 = 11000101 ;291cc ;Thanks to Runer112 for his help on optimizing the LCG and suggesting to try the much simpler LCG. On their own, the two are terrible, but together they are great. ld hl,(seed1) ld de,(seed1+2) ld b,h ld c,l add hl,hl \ rl e \ rl d add hl,hl \ rl e \ rl d inc l add hl,bc ld (seed1_0),hl ld hl,(seed1_1) adc hl,de ld (seed1_1),hl ex de,hl ;;lfsr ld hl,(seed2) ld bc,(seed2+2) add hl,hl \ rl c \ rl b ld (seed2_1),bc sbc a,a and %11000101 xor l ld l,a ld (seed2_0),hl ex de,hl add hl,bc ret mul16: ;BC*DE ld hl,0 ld a,16 mul16_loop: add hl,hl rl e rl d jr nc,+_ add hl,bc jr nc,+_ inc de _: dec a jr nz,mul16_loop ret`

It isn't perfect, but it is pretty good and importantly, it is fast! The biggest problem is in the random number generator, but even that is still pretty good for this application. ]]>