Welcome,
Guest
. Please
login
or
register
.
Did you miss your
activation email
?
1 Hour
1 Day
1 Week
1 Month
Forever
Login with username, password and session length
Home
About
Team
Rules
Stats
Status
Sitemap
Chat
Downloads
Forum
News
Our Projects
Major Community Projects
Recent Posts
Unread Posts
Replies
Tools
SourceCoder3
Other Things...
Omnimaga Radio
TI-83 Plus ASM File Unsquisher
Z80 Conversion Tools
IES TI File Editor
Free RAM areas
Comprehensive Getkeyr table
URL Shortener
Online Axe Tilemap Editor
Help
Contact Us
Change Request
Report Issue/Bug
Team
Articles
Members
View the memberlist
Search For Members
Buddies
Login
Register
Omnimaga
»
Forum
»
Calculator Community
»
Other Calc-Related Projects and Ideas
»
TI Z80
»
TI-OS BASIC For( Bug Fixed
« previous
next »
Print
Pages: [
1
]
2
Go Down
Author
Topic: TI-OS BASIC For( Bug Fixed (Read 25560 times)
0 Members and 1 Guest are viewing this topic.
BrandonW
LV4
Regular (Next: 200)
Posts: 115
Rating: +38/-1
TI-OS BASIC For( Bug Fixed
«
on:
May 26, 2010, 05:43:54 am »
I believe I've tracked down the bug with For( loops being very slow when the first line is a lone If block with a false condition and there's no ) or newline between the For( and the If.
It's complicated and hard to explain, but basically the code that handles the For( token assumes that you've put the ) on the end of the For( line, and so when it executes the For block, instead of jumping to the start of the line containing the If, it jumps to the If token itself.
Normally this isn't a problem, but it's important for the parser to handle the start of the line because it removes a byte from the operator stack that always gets pushed when beginning parsing of the line. Because an If block with a false condition will jump over the next line (including the newline), this never gets canceled out at the beginning of the loop, and so with every iteration you lose bytes of the operator stack. This in turn causes memory leaks and confuses the parser about what temporary variables should be cleaned up, and it's forced to near-constantly "garbage collect".
Or at least that's my theory.
In any case, the For( code shouldn't be making that stupid assumption, so I patched my OS to see if I could fix it, and it appears successful. I uploaded it to
http://brandonw.net/crap/84P_OS2.41_BASICFixed.8xu
if anyone wants to try it.
So we could be happy with this, or we could write an oncalc patch that does this in an OS version-independent way, or we could just live with the fact that you need a ).
Thoughts?
Logged
calcdude84se
Needs Motivation
LV11
Super Veteran (Next: 3000)
Posts: 2272
Rating: +78/-13
Wondering where their free time went...
Re: TI-OS BASIC For( Bug Fixed
«
Reply #1 on:
May 26, 2010, 07:59:03 am »
Definitely not a full, patched OS. An oncalc, version-independent patch would be best, IMO.
Of course, if you don't feel like patching it, I think it wouldn't be
too
hard to just use )s. When I do program in BASIC, I avoid that type of For( loop anyway, or just use a ) for that reason.
But I'm not the only person here, so I wonder what others think should be done.
(Also: finally, a reason to use the OS-revalidator!)
Logged
"People think computers will keep them from making mistakes. They're wrong. With computers you make mistakes faster."
-Adam Osborne
Spoiler
For
"PartesOS links"
:
I'll put it online when it does something.
ztrumpet
The Rarely Active One
CoT Emeritus
LV13
Extreme Addict (Next: 9001)
Posts: 5712
Rating: +364/-4
If you see this, send me a PM. Just for fun.
Re: TI-OS BASIC For( Bug Fixed
«
Reply #2 on:
May 26, 2010, 08:03:39 am »
That's cool! Has TI been email and told they need to fix this glitch and how to fix it? It's cool that it's fixed. Great job!
Logged
If I'm wrong, please correct me!
Unfinished Projects:
Elmgon
14%
Basic
Movement Demo
Homescreen Game Pack
80%
Basic
Latest Release
Cube Droid Saves the Galaxy
65%
Axe
Demo
Detonate
70%
Axe
Completed Projects:
Exodus
|
Midnight
|
Drifter
|
Axe Snake
|
Jump!
|
Factory Theta
|
Spider
|
Plot Drop
|
Papi Jump
|
Numb3rs
|
Nibbler
|
Boost
|
Duel Tile Map Editor
|
Homescreen Map Editor
|
Key Group Check
|
Oasis
BrandonW
LV4
Regular (Next: 200)
Posts: 115
Rating: +38/-1
Re: TI-OS BASIC For( Bug Fixed
«
Reply #3 on:
May 26, 2010, 09:55:17 am »
No, I'm still working on how to even explain this. I managed to fix it, but I'm not 100% sure it's the right way, and if you're e-mailing TI to tell them they have a bug deep in their parser code, you want to make sure you're correct and very explicit.
Logged
TIfanx1999
ಠ_ಠ ( ͡° ͜ʖ ͡°)
CoT Emeritus
LV13
Extreme Addict (Next: 9001)
Posts: 6173
Rating: +191/-9
Re: TI-OS BASIC For( Bug Fixed
«
Reply #4 on:
May 26, 2010, 09:57:32 am »
Pretty cool that you were able to track down such an old know bug.
Nice work! I wouldn't mind a patch, because I tend to forget these oddities sometimes.
Logged
DJ Omnimaga
Clacualters are teh gr33t
CoT Emeritus
LV15
Omnimagician (Next: --)
Posts: 55943
Rating: +3154/-232
CodeWalrus founder & retired Omnimaga founder
Re: TI-OS BASIC For( Bug Fixed
«
Reply #5 on:
May 26, 2010, 12:41:29 pm »
Wow nice, I wish I could try it but I do not have a 84+. I hope an on-calc patch that works on most recent TI-83 Plus and TI-84 Plus OSes can be done. Just make sure there won't be conflicts with any other patch you have, though (such as the xLIB fix for 2.53MP and 2.54MP)
Logged
meishe91
Super Ninja
LV11
Super Veteran (Next: 3000)
Posts: 2946
Rating: +115/-11
Re: TI-OS BASIC For( Bug Fixed
«
Reply #6 on:
May 26, 2010, 02:43:24 pm »
What exactly is meant by an independent program to do it instead of a patch? Also, great work
Glad to know this can be fixed now (especially for people who need to spare every byte possible when creating a program). Good luck with figuring out how to explain this to TI.
Logged
Spoiler
For
Spoiler
:
For the 51
st
time, that is not my card! (Magic Joke)
DJ Omnimaga
Clacualters are teh gr33t
CoT Emeritus
LV15
Omnimagician (Next: --)
Posts: 55943
Rating: +3154/-232
CodeWalrus founder & retired Omnimaga founder
Re: TI-OS BASIC For( Bug Fixed
«
Reply #7 on:
May 26, 2010, 02:54:53 pm »
On the TI-Nspire, to fix xLIB issues with OS 2.54MP, you need to run a small 8xp program using the Asm() command. The fix remains until the Nspire is rebooted (keypad/battery removed or keypad swapped)
Not sure about non-Nspire, though.
Logged
Galandros
LV9
Veteran (Next: 1337)
Posts: 1140
Rating: +42/-10
Re: TI-OS BASIC For( Bug Fixed
«
Reply #8 on:
May 26, 2010, 03:23:52 pm »
Wow, I was curious to know why the heck that bug existed.
You are continuing the "fixing bugs for them".
Nowadays many experienced TI-BASIC programmers know that they should put the closing ) in loops that use If's. And it is well documented in TI|BD. So now many of us "live with it". If someone has interest to find a patch, he would almost certainly see first how to solve the bug.
I also prefer an oncalc patcher if possible. Sending a full patched OS for just one bug is a little exaggerated.
Logged
Hobbing in calculator projects.
DJ Omnimaga
Clacualters are teh gr33t
CoT Emeritus
LV15
Omnimagician (Next: --)
Posts: 55943
Rating: +3154/-232
CodeWalrus founder & retired Omnimaga founder
Re: TI-OS BASIC For( Bug Fixed
«
Reply #9 on:
May 26, 2010, 03:34:16 pm »
Yeah the issue is that a lot of BASIC coders will get told to not close parhentesises, but not about the For loop issue, meaning they'll forget that part. Such patch would help a lot
Logged
meishe91
Super Ninja
LV11
Super Veteran (Next: 3000)
Posts: 2946
Rating: +115/-11
Re: TI-OS BASIC For( Bug Fixed
«
Reply #10 on:
May 26, 2010, 03:38:25 pm »
Ah ok, I gotcha. Thanks. Ya, I think a program would be easier.
Logged
Spoiler
For
Spoiler
:
For the 51
st
time, that is not my card! (Magic Joke)
DJ Omnimaga
Clacualters are teh gr33t
CoT Emeritus
LV15
Omnimagician (Next: --)
Posts: 55943
Rating: +3154/-232
CodeWalrus founder & retired Omnimaga founder
Re: TI-OS BASIC For( Bug Fixed
«
Reply #11 on:
May 26, 2010, 04:09:35 pm »
That said, later, if BrandonW managed to find a way to make Mathprint as fast as on the 73, find a way to fix the inverted text issues some BASIC games has and the potential bugs 2.53 MP got, he could maybe provide an OS patch including every fixes he managed to apply to his OS copy.
Logged
meishe91
Super Ninja
LV11
Super Veteran (Next: 3000)
Posts: 2946
Rating: +115/-11
Re: TI-OS BASIC For( Bug Fixed
«
Reply #12 on:
May 26, 2010, 04:20:13 pm »
Ya, a patch like that would be nice. What is the inverted text issue?
Logged
Spoiler
For
Spoiler
:
For the 51
st
time, that is not my card! (Magic Joke)
DJ Omnimaga
Clacualters are teh gr33t
CoT Emeritus
LV15
Omnimagician (Next: --)
Posts: 55943
Rating: +3154/-232
CodeWalrus founder & retired Omnimaga founder
Re: TI-OS BASIC For( Bug Fixed
«
Reply #13 on:
May 26, 2010, 04:32:27 pm »
If you enable the inverted text flag with an ASM prog or APP like xLIB, which displays white text on black background, doing DispGraph:Disp inverted the entire homescreen content. However, in OS 2.53MP this fails in most cases.
Logged
meishe91
Super Ninja
LV11
Super Veteran (Next: 3000)
Posts: 2946
Rating: +115/-11
Re: TI-OS BASIC For( Bug Fixed
«
Reply #14 on:
May 26, 2010, 04:39:24 pm »
Oh ok, I thought you meant like something without assembly help haha. I get what you mean though.
Logged
Spoiler
For
Spoiler
:
For the 51
st
time, that is not my card! (Magic Joke)
Print
Pages: [
1
]
2
Go Up
« previous
next »
Omnimaga
»
Forum
»
Calculator Community
»
Other Calc-Related Projects and Ideas
»
TI Z80
»
TI-OS BASIC For( Bug Fixed