I just got a TI84+ CE for Christmas and I’ve been playing with programming on it using the different colors. One thing I’ve noticed is some of the commands aren’t quite right with color. For instance, the Pxl-Test just returns a 0 or 1 instead of 0 or a color value. Another command, Pxl-Change doesn’t work with the different colors either. The screen size is 320x240, but only 264x164 can be used. I’m just wondering how many other commands weren't corrected to handle color or the screen size. I’ve seen where there have been a lot of OS updates for the CE. Why would TI put out a color calculator with a larger screen and not update the commands to be able to use it the right way. It seems that TI Basic should at least work the right way on the model it’s running on. I’m sure coding in asm can get around everything, but I’m not into asm coding now.
I'm not sure why the graph screen only takes up part of the screen - it's probably for compatibility with the CSE, which was slower and probably had a reduced graph size so that it wouldn't take forever to graph a function. Because of how much the hardware changed, all of the graph functions would have to have been redone, so it's not possible that TI just forgot to implement a function. Presumably, the Pxl-Test and Pxl-Change were for compatibility with older versions (e.g, setting a pixel and then testing it should return a 1 on both models). That doesn't explain why there isn't an alternative option for color, though.

I should probably get around to making a thing that lets you use graphx and other C library functions from BASIC programs.
Alternately, you could use ICE Compiler, which is similar to TI-BASIC and compiles to ASM on-calc. This is less safe, however, and can clear your RAM if a command is used wrong.
I ran into a situation on my TI84+ CE that I couldn’t figure out for quite awhile. After I figured out what was wrong, (by accident), I did a search and haven’t found an answer. Using the code below, I would get ERROR:UNDEFINED Variable used is not currently defined. 1:Quit 2:Goto. If I pressed 2, it put the cursor at the end of the Pxl-On line. By accident, I pressed the Y= key at the top of the keyboard and noticed that Plot1 was white against a black background. I selected it and changed it to black against a white background like Plot2 and Plot3. After changing it, the below code worked. I couldn’t find anything that explained why Plot1 against a black background would cause an error on the Pxl-On command.

calclover2514; Thanks for the response about the ICE Compiler.


Code:

ClrDraw
Pxl-On(50,50,RED)
That's because one of more of the lists in your plot variables were undefined.

Turning the pixel on made the calculator switch to the graph screen. The first thing it had to do was to set up the screen by drawing the plots, and when it tried to draw the plot it realized that one of the lists you told it to graph was undefined, so it threw an error.
Thanks _iPhoenix_ , I understand what’s happening now. There’s a lot of things going on that I will eventually figure out. I got the calculator just for something different to play around with. I guess I’ll have to read more of the manual.
Here’s something I found that doesn’t make sense. Run the code below to draw a Blue square. It works the way I expect using variables A and B. Then change both B variables to Y and run it again. The line coming from the top shouldn’t be there. I’m assuming the Y variable is getting corrupted by Pxl-On.

PS. If I add Pxl-On(0,0) before the first For loop, it works OK.


Code:

ClrDraw
For(A,50,100)
For(B,50,100)
Pxl-On(B,A,BLUE)
End
End
me on discord wrote:
The Y variable is being corrupted by ClrDraw
In TI-Basic, you really shouldn't use the Y variable for this reason
http://tibasicdev.wikidot.com/clrdraw


This is just one of those weird quirks TI-Basic has, unfortunately they take some adjusting sometimes.
_iPhoenix_ Thanks, I probably would never have found that. Still have a lot of reading to do.
On the TI84+CE, when you’re editing a program, you can easily execute it by pressing alpha, f5, 1 (Execute Program). After the program finishes, Done shows. Is there an easy way to get back into the editor for that program instead of pressing prgm, EDIT, program number. In other words, is there an easy way to edit (change), run (test), edit (change), run (test), etc if you’re just working with 1 program.
There's no built-in functionality like that. However you can do the following which are pretty simple.
    1. You can press [enter] which runs it again then immediately press [on] to stop the program then press [2] to go to the code.
    2. You can make your program name simply A so it will always appear at the top of the edit list. Then program all of your code into prgmA. When you're finished, make a new program with whatever name you want, go to the editor of that program, then [2nd]>[rcl]>[prgm]>EXEC then select program A. This will copy all the contents of program A into the new program you just made.
    3. The top two work well for projects with no sub programs. If you have any sub programs then I'd suggest just installing Cesium so you can quickly alpha search to that specific program then press [zoom] to edit it even if it's Archived. KryptonIDE is a really good editor and it can be integrated into Cesium however, it has a few major bugs so I'd only use it if you keep regular backups of your program.
Here's a little-known fact that's incredibly useful for large program lists like mine- You can jump in the programs list by pressing [alpha], and then the letter your program starts with, and it will skip to the list starting with that letter.

When developing a TI-Basic program, I'll often put a Pause somewhere early in the code so I can use trick #1 easily.
Thanks TheLastMillennial for the response. After reading 1) above, that got me thinking that instead of letting the program come to a good end, put a pause and 1 divided by 0 at the end to cause an error so you have the option to press [2] to goto the code again. I already have my program names as A1, A2, etc to keep them upfront. I was just hoping there was an easy way to do the edit/run cycle that I didn’t find yet.
_Phoenix_ Thanks, the [alpha] letter works. I’ll have to remember that also.
I've had my TI84+CE for a week and here's a program I wrote to try it out. It's an orbit program where you try to dock with the square in the upper left of the screen. The orbits are ellipses and act like real orbits. Your speed increases as you get closer to the center star and decrease as you get farther away. Press the + key to increase your speed or the - key to decrease your speed to alter your orbit. The 7 key zooms in and the 9 key zooms out. The 2 key changes the orbit from a line to a point or a point to a line. The enter key restarts the program if you get too far out. I dont have the calculator hooked up to a PC, so I keyed this in here. If there are any keying mistakes, let me know and I'll fix them. The speed is displayed in the lower left of the screen.

PS. I like to run this showing the lines, but when there’s too many, I’ll press the 2 key to clear the display and show the line again.

This changes the graph min max values, so you can set them back to what you want.

Added a timer to show number of elapsed seconds.



Code:

"ORBIT
1→V
While 1

If V=1:Then
ClrDraw
100→A:0→B:1→C:1→D:0→W
200→E:.8→I:0→V
-150→Xmin:150→Xmax
-90→Ymin:90→Ymax
startTmr→U
End

Pt-On(0,0,3,BLACK)
Pt-On(-125,50,2,GREEN)

If abs(int(A+125))<2 and
abs(int(B-50))<2:Then
ClrHome
Disp "DOCKING COMPLETE"
Disp checkTmr(U)
Disp "PRESS ENTER"
Pause :Stop:End

getKey→K
If K=105:1→V
If K=95:1.1→I
If K=85:.9→I
If K=74:1.2→Q
If K=72:.8→Q

If Q≠0:Then
Xmin*Q→Xmin:Xmax*Q→Xmax
Ymin*Q→Ymin:Ymax*Q→Ymax
0→Q:End

C*I→C:D*I→D:1→I
E/((A^2+B^2)^1.5)→H

If W=1:Then
Pt-Change(int(A),int(B))
End

If K=93:Then
not(W)→W:ClrDraw:End

C→A*H→C:D-B*H→D
A+C→A:B+D→B

Pt-On(int(A),int(B),RED)
√((A-F)^2+(B-G)^2→J
Text(150,5,J)
A→F:B→G
Text(150,230,checkTmr(U)
End
For my TI-84 Plus CE. Here’s some code to convert a number from base 10 to another base or from another base to base 10. There’s code on another discussion that limits the base to 36, but this code will do any base. For instance 123456789 to base 137 is 48,1,95,61 or to base 88 is 2,5,14,22,5. Since some numbers are greater than 36, I can’t use numbers or letters to display the result, but display each group of numbers separated by a comma. You can use your imagination as to what symbol those numbers can represent. When going from a different base to base 10, just enter each number group separated by a comma. Don’t enter a comma after the last number. I keyed the code here since I haven’t tried TI Connect CE on a PC yet, so if there’s some errors let me know and I’ll correct them. I didn’t spend a lot of time on this code, so it’s just bare minimum.


Code:

"BASE CONVERSION
ClrHome
Lbl M
Disp "0=EXIT"
Disp "1=BASE 10 TO BASE ?"
Disp "2=BASE ? TO BASE 10"
Input V
If V=0:Then:ClrHome:Stop:End

If V=1:Then
Input "ENTER NUMBER ",N
Input "TO BASE ",B
" "→Str1
While N>0
iPart(N/B)→D
N-(B*D)→E
If E>0:Then
toString(E)+","+Str1→Str1
Else
"0,"+Str1→Str1
End:D→N:End:Disp Str1:End

If V=2:Then
Input "FROM BASE ",B
Disp  "N,N,N,N..."
Input "ENTER NUMBER ",Str1
expr("{"+Str1)→L1
0→C:0→Q:dim(L1)→L
For (A,L,1,-1
If L1(A)≥B:Then
1→Q:End
L1(A)*(B^(L-A))+C→C:End
If Q>0:Then
Disp "INPUT ERR N ≥ BASE"
Disp "PRESS ENTER"
Pause
Else:Disp C:End:End
Goto M
That will work, but technically bases like 16 and 64 have already been predefined by alpha numerals... so I guess you could CALL it base16 or base64 but what your program would output would be technically incorrect. Also since base64 is based off a binary data in an ASCII string format, it doesn't even start at 0 (Rather at A).

From (36,64)U(64, ∞) however, I suppose since these bases aren't exactly defined, it would be fine to use your system.

Also imagine doing base 123456789 in BASIC?!? it already takes my calculator practically all day to convert "KALUW" from base36 to base2. Razz

Base converters are handy tools to convert from hex to binary and such, but at a point, it becomes so entirely impractical (base123456789 - why would anyone use that, especially if it takes 2 hours to convert- or more likely, overflows?), that it loses its original appeal as a base converter.
KaluW_
Thanks for your response. My program doesn’t have a real purpose other than just giving me a reason to code something. By grouping the output as numbers separated by commas instead of trying to convert them to numbers and letters allows the program to do any base within reason (overflow). Why does it take so long for your calculator to convert KALUW from base 36 to base 2. Using my program above took less than a second to convert KALUW from base 36 to base 10 and less than a second to go from base 10 to base 2. Thats just the convert time, and not counting the time to key in the values. The display for base 2 is too large to show the full value, but I can fix that at some point. As for converting a number to base 123456789, I took the number 98765432109876 to base 123456789 and got the 2 numbers 800000, 909876 . That took less than a second and are the correct values. I guess I can modify my above code to go from any base to any other base in one shot. I would also have to fix the base 2 display so it shows the full value instead of truncating the answer.
I forgot I compiled my code on an 83+. the 84CE's processor is slightly faster. Razz
Here's my latest base converter program. I know there's a lot of these, but I'm just playing around with my new Ti-84+ CE and using TI Connect CE for the first time. This converter will do any base to any base (within reason). If the from or to base is within 2 to 36, then the input or output values will be 0 to 9 or A to Z as a single number. If the base is greater than 36, then the values will be number groupings separated by a comma. For instance, doing from base 88, enter 5,36,80,10 and a to base of 75 will display 8,56,42,44 . Plus, if an output display like base 2 takes more than one line, multiple lines will display. I have some edits in the code, but I'm sure I don't cover all the errors.


Code:

"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"→Str2
ClrHome
Lbl M
Disp " "
Disp "0 TO EXIT"
Input "FROM BASE ",A
If A=0:Then:Stop:End
0→C
If A>36:Then
Input "NBR N,N,N... ",Str1
expr("{"+Str1→L₁
For(Z,dim(L₁),1,­1
If L₁(Z)≥A:Then
Disp "NBR > BASE":Pause
Goto M:End
C+L₁(Z)*A^(dim(L₁)-Z)→C
End
Else
Input "NBR NNN... ",Str1
For(Z,length(Str1),1,­1
sub(Str1,Z,1)→Str3
inString(Str2,Str3)-1→V
If V≥A:Then
Disp "NBR > BASE":Pause
Goto M:End
C+V*A^(length(Str1)-Z)→C
End:End
Input "  TO BASE ",B
" "→Str1
While C>0
iPart(C/B)→I
remainder(C,B)→R
I→C
If B<37:Then
If R>0:Then
sub(Str2,R+1,1)+Str1→Str1
Else
"0"+Str1→Str1
End
Else
If R>0:Then
toString(R)+","+Str1→Str1
Else
"0,"+Str1→Str1
End:End:End
For(Z,1,length(Str1),26
min(length(Str1)-Z+1,26→K
Disp sub(Str1,Z,K
End
Goto M
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement