I am working on a math program which I want to introduce at the 2nd grade level. I can not expect the kids to do much but press the "on" button and follow the directions on the graph screen. I have downloaded the Start up App from Ti, which solves the problem of starting with the first program module. I am a newbie by your standards but was 79 years old this month so I want to develop small modules of code so that I can test them, one module at a time. I estimate there will about 300 modules and each module will be about the size of my first uncompleted module of 2759. I do not know the units of this size i.e. bytes whatever. You can see that all that will not fit in the Ram space. I have experimented with connecting my first module with the second module by ending the first module with the "prgmMODULE#" statement which seems to work.

I have read about an assembly program somewhere on the web which will store all things as archived. If true, that would solve the size problem, right?
So the first question "does anyone know if such a program exists and is bug free"

second question is "what do you think of my integration plan? Like is it just the brain fart of a newbie or does it have a chance to work?

The third problem has to do with what happens when the calculator shuts down. That is, where does it go when you press "on". Obviously, it will go to the first module unless there is a way to go to the beginning of the module which it was running prior to calculator shutdown. The completion of a module is controlled by criteria in the module like number correct out of total problems in a module. So I will never want to go back to a once completed module.

So my last question is "is there a way to mark a module as completed once it is completed so that the kid starts off at the start of the module he / she was working on prior to shut down"?

Sorry to be so long!

AND STILL I AM LEARNING

john
I would recommend having a small control program that flips through the modules, archiving+unarchiving as necessary. The Celtic III library would be very useful for this. You could save the current module-in-progress in an appvar using the same library.
john massey wrote:
So my last question is "is there a way to mark a module as completed once it is completed so that the kid starts off at the start of the module he / she was working on prior to shut down"?

That should be workable, but it'll require a bit of custom assembly code (which would be my solution anyway).

For example, say we have program CHNLOAD, which takes a module number as input in Ans. When called, CHNLOAD gets this module number as a string, and finds the appropriate program to unarchive.
Taking the module number previous to that, it sets the VAT bit for the program that's just ending (there are a couple reserved bits in the VAT we can hijack) to flag it's been completed, then archives that program.
Now comes the nasty hack: rather than just return normally, we take the new, now unarchived module, and set BasicPC to point to its data, which I hope will cause the parser to continue normally, but in the new program.

To go to the first uncompleted module at startup, you can load another assembly program, which will just scan through the modules until it finds the first one without the 'completed' flag set.

If you like that idea, maybe someone will hack that up for you (like me, depending on whether I have time to do that).
Tari, you could do what he's asking in TiBASIC with the help of xLib/runprog/flashgordon.

pseudocode:

Code:
:Create List of dim 1
:if List(1) = 0: 1->List(1)
:For(N,List(1), last module #
:whatever the xlib/flashgordon code is to copy a program or runprog
:prgmXTEMP0001
:End
:clrList List


this way, no need to add "prgmMODULE#" at the end of each module, letting you run each one independantly. plus, all the modules could be kept archived.
If he really wanted it to be modular he could use xlib/Celtic III's Ion Compatible search functions and then use a header to identify a module.
Very Happy

Thanks a bunch for all your suggestions.

I guess my preference is the suggestion by rthprog because it is something that I can, run, work with him to debug and then modify as I complete modules over the next year. The sooner I get it running, the sooner I can put the problem in the win column.

rthprog would you you care to give me a ruff estimate of how long before you be able to send me your first code for testing. Please add lots of comments as I am a 79 year old newbie. While I accept this designation I have found that using the "while 0:comment goes here:end" mythology works fine. That way your comments will stay with the code. A long time ago a comedian said that there were three sign of old age, the first one was loss of memory and he forgot the other two. Laughing

For you other respondents I would appreciate your further thoughts on the subject. If would find it intellectually stimulating or just fun or whatever, to send me code I would be like the firefly that backed into the fan "Delighted no end" Rolling Eyes

It would be easier for me if you would send me your code as an attachment to an email. my email address is: 1johnmassey@gmail.com

AND STILL I AM LEARNING

John
k, got something working. however, I had to name modules as "mod#" because you cant have "prgmMODULE300" (too long). will try to upload asap...
well, I am ready for you. I have two programs called MOD001 & MOD002 and they are archived.

Wink Are we cooking or what?

john
http://rthprog.googlepages.com/MOD.zip

Celtic3 and MOD0 need to be in RAM. Everything else can be archived, though it really doesn't matter.
Running prgmMOD0 will run prgmMOD1, MOD2, MOD3, ... MOD99998, MOD99999. Make sure there is no break in the program names; if you are missing "prgmMOD4", then the program will stop at MOD3. Hope this helps.

Could you post up your project? Seeing what each module is like would help me optimize this.
If you need to, you can always pop them into SourceCoder and share the projects. Alternatively, you can zip them up and drop them in the archive's Beta directory.
Very Happy
It is big. There is a problem discussion at the end


Code:
ClrHome:ClrDraw:CoordOff:GridOff:AxesOff:ZStandard:Full:While 0:setup graph screen:End
Text(0,0,"HI MARY THIS IS A DEMO"
Text(7,0,"PROGRAM TO SHOW YOU SOME"
Text(14,0,"PROGRESS I HAVE MADE."
Text(21,0,("SOME THINGS NOT WORKING "
Text(28,0,("YET.I CAN'T GET ANSWERS"
Text(35,0,("FROM THE KIDS. THEY WILL"
Text(42,0,("BE TRAINED. WHEN KID SEE"
Text(49,0,"? IN A PROBLEM TO PRESS"
Text(56,0,"WHITE KEY THEN ENTER"
:Pause:ClrDraw
Text(14,0,"PRAISE HERE FOR OK ANSWERS"
For(I,1,30
If I=1 or I=15 or I=29
Then
Line(–10,3.39,7.2,3.39
Line(–10,–3.3,7.2,–3.3
Line(–10,–10,7.2,–10
Line(–8,3.39,–8,–10
Line(–5.5,3.39,–5.5,–10
Line(–2.9,3.39,–2.9,–10
Line(–.2,3.39,–.2,–10
Line(2.2,3.39,2.2,–10
Line(4.6,3.39,4.6,–10
Line(7.2,3.39,7.2,–10
End
{2,2,3,3,4,4,5,6,7,8,2,2,3,3,4,4,5,6,7,8,8,8,6,6,8,4,2,1,7,3}→⌊FN001:While 0:FIRST NUMBER IN MATH PROBLEM → found char>keypad ⌊ found catalog> 1st L:End
{21,21,21,21,21,21,21,42,42,42,42,42,42,42,21,21,21,21,21,21,21,42,42,42,42,42,42,42,21,21}→⌊FY001:While 0:Y VALUE FOR STARTING POINT OF PROBLEM & LOCATION OF FIRST NUMBER:End
{4,16,28,40,52,64,76,4,16,28,40,52,64,76,4,16,28,40,52,64,76,4,16,28,40,52,64,76,4,16}→⌊FX001:While 0:X VALUE FOR STARTING POINT OF PROBLEM & LOCATION OF FIRST NUMBER:End
Text(⌊FY001(I),⌊FX001(I),⌊FN001(I))
{2,3,3,4,4,5,6,7,8,9,4,5,6,7,8,9,11,13,15,17,16,17,6,7,9,9,5,2,15,7}→⌊SN001:While 0:SECOND NUMBER IN MATH PROBLEM:End
{27,27,27,27,27,27,27,48,48,48,55,55,55,55,34,34,34,34,34,34,34,55,48,48,48,55,55,55,34,34}→⌊SY001:While 0:VERTICAL VALUES FOR SECOND NUMBERS:End
{4,16,28,40,52,64,76,4,16,28,40,52,64,76,4,16,25,37,49,61,73,1,16,28,40,52,64,76,1,16}→⌊SX001:While 0:OFFSET FOR SECOND NUMBERS:End
Text(⌊SY001(I),⌊SX001(I),⌊SN001(I)):While 0:PRINT SECOND NUMBER:End
Text(⌊FY001(I)+6,⌊FX001(I)-4,"+"):While 0:PRINT +:End
{–10,–7.5,–5,–2.3,.2,2.7,5.3,–10,–7.5,–5,–2.3,.2,2.7,5.3,–10,–7.5,–5,–2.3,.2,2.7,5.3,–10,–7.5,–5,–2.3,.2,2.7,5.3,–10,–7.5}→⌊X1001:While 0:THESE ARE THE START VALUES FOR LINE VARIABLES IN SCREEN COORDINATES:End
{–.7,–.7,–.7,–.7,–.7,–.7,–.7,–7.5,–7.5,–7.5,–7.6,–7.6,–7.6,–7.6,–.82,–.82,–.82,–.82,–.82,–.82,–.82,–7.59,–7.58,–7.58,–7.58,–7.59,–7.59,–7.59,–.82,–.82}→⌊Y1001:While 0:VERTICAL VALUES FOR LINE STATEMENT:End
{–8.5,–6,–3.5,–.6,1.7,4.2,6.8,–8.5,–6,–3.5,–.6,1.7,4.2,6.8,–8.5,–6,–3.5,–.6,1.7,4.2,6.8,–8.5,–6,–3.5,–.6,1.7,4.2,6.8,–8.5,–6}→⌊X2001:While 0:THESE ARE THE STOP VALUES FOR LINE STATEMENTS IN SCREEN COORDENATES:End
Line(⌊X1001(I),⌊Y1001(I),⌊X2001(I),⌊Y1001(I))
{4,5,6,7,8,9,11,13,15,17,2,3,3,4,4,5,6,7,8,9,8,9,12,13,17,5,3,1,8,4}→⌊AN001:While 0:THE ANSWERS ARE STORED HERE:End
{34,34,34,34,34,34,34,55,55,55,48,48,48,48,27,27,27,27,27,27,27,48,55,55,55,48,48,48,27,27}→⌊UD001
Text(⌊UD001(I),⌊FX001(I),"?"):Pause
{4,16,28,40,52,64,73,1,13,25,40,52,64,76,4,16,28,40,52,64,76,4,13,25,37,52,64,76,4,16}→⌊AX001
While 0:HORIZONTAL LOCATION OF ANSWER IN X DEPENDING IF ONE OR TWO DIGITS:End
Text(⌊UD001(I),⌊AX001(I),⌊AN001(I)):While 0:PRINT ANSWER:End
Pause
If I=14 or I=28 or I=30
ClrDraw
End


I do not have my "getkey to number" converter running correctly, it is only recovering one digit and I need three digits, yet so I am just putting the correct answers where the ? marks are.

I would appreciate any comments you may have. While this program is running fine, I am having problems incorporating other programs within this program. For example is the case of the getkey to number" converter. When I run it by itself I have to compare the returned value L1(1) with the correct values stored in the program. With code like:

If L1(1) = AN001(i)
then
send good message
put correct answer in place of ? mark
else
send bad child message like "oh-ow dude correct answer is An001(i) not L1(1)
put correct answer in place of ? mark
end

When I run the converter by itself in a for next loop it runs fine, except for only recovering one digit, but when I put the converter code in this program does it not recognize the if-then-else loop.

Rolling Eyes
I have studied everything and I have two additional questions.

When The calculator is shut off or shuts itself off will it return to the program it was running prior to to shut off?

Where do I find the site for downloading Celtic3?

Sorry

john
The program running will have already quit when you shut down the calculator. You should choose a variable to hold which program number you're up to, and then when the calculator turns on, the program that you told startup app to run can check the variable and run the particular program it was on last.
Celtic III can be found on UnitedTI.org, it's developed by one of the members there. I got your PM, and will respond when I have a little more time to put some thought into it.
magicdanw wrote:
The program running will have already quit when you shut down the calculator. You should choose a variable to hold which program number you're up to, and then when the calculator turns on, the program that you told startup app to run can check the variable and run the particular program it was on last.


thats exactly what I did Very Happy

@John
http://iambianet.freewebpage.org/project0.html
download link is on the right hand pane

and yes, it will run the last incomplete run. For example, if MOD1 is stopped prematurely, it will resume from MOD1. If stopped between the transition from MOD1 to MOD2, it will resume from MOD2, etc...
  
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 1
» 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