KermMartian wrote:
I think there therefore needs to be either a standard register or memory location that points to the argument list (consider it a word of argv* and a byte of argc, perhaps).

Push two words on the stack. The "standard location" will be "SP -6 when the program starts".
That seems reasonable enough; thanks, elfprince13.

So, slight setback: OpenLib( still only allows uppercase App name. "DoorsCSE"/"DoorsCS8" are not accepted, starting at the lowercase 'o'. I'm considering having all ASM programs be unlocked and have that anyway, even though it doesn't work, to indicate to users that they need to install a shell. Since Doors CS[E] has HomeRun, it won't matter that the OpenLib/ExecLib doesn't actually work and if they fix lowercase App names in a future OS version, then it will allow that feature of the polyglot header to work correctly. Thoughts?
I like the idea of actually using the OpenLib/ExecLib though. It seems much much cleaner. What about my idea of implementing a shell-manager app to transfer control to a shell of user's preference? Or just naming it DOORSCSE? Or recruiting BrandonW to produce an OS patch? Or even asking TI to issue a patch?

I guess what I'm saying is...we're starting fresh on a platform unburdened by backwards compatibility. Let's do it "right", even if that takes a little more thought and planning on our parts before forging ahead. If once you start down the dark path, forever will it dominate your destiny, consume you it will, as it did the 83+.
I would like to point out that using ExrcLib makes it harder for tokenide to have library support...
merthsoft wrote:
I would like to point out that using ExrcLib makes it harder for tokenide to have library support...
Note that we're not using ExecLib to hook into Hybrid BASIC libraries or anything, just to try to automatically launch Doors CSE if it is on the user's calculator, has never been run, and an ASM program is launched. Elfprince, it's because the situation in which the ExecLib would actually be used is so specific and limited that I'm okay with it not actually working for now. I will report the bug to my sources and hope that they'll repair it, but if ASM programs are unlocked, I think it will (1) still alert users that they need to get "DoorsCSE" (2) eventually be usable in the very limited case where a user has put Doors CSE on their calculator but not run it to install the HomeRun hooks before running a program.
Fair enough. I would still recommend at least altering the header to store a dummy value in Ans before calling ExecLib in case you ever change your mind on the Hybrid BASIC libraries score. Something like 0:ExecLib instead of just ExecLib. Doesn't need any implementation at this point on your end besides a slight change to header parsing, but it should help significantly with future-proofing.

I would like to point out that using ExrcLib makes it harder for tokenide to have library support...

Time to add some static analysis? Build a control-flow graph. Any sequence of edges leading from an OpenLib( to an ExecLib should tell you what library is active. If the ExecLib has multiple OpenLib( ancestors with differing values, you can alert the user to that potential ambiguity.
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 4 of 4
» 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