The tag used to express the part function (0xB1) has 1 required argument and 1 optional argument.
But for some reason ti placed it in the range of tags that take two required arguments.
I'll describe some more things:
Tags 0xD7 and 0xD8 (min and max functions) are hardcoded as two argument tags, but they take a variable number of arguments.
Tag 0xEA takes 1 argument: fixed so no need to worry about END_LIST.
Tag 0xEB takes 2 arguments: fixed so no need to worry about END_LIST.
Tag 0xED and 0xEE (eigVc and eigVl) take 1 argument: fixed so no need to worry about END_LIST.
Tag 0xF0 is the local tag, it takes 1 argument: the variable name: the short form for a to z, or the variable length form.
Tag 0xEF is the prime tag used for differential equations. Beneath it there can be: a) more prime tags. b) a local variable. c) a normal variable. d)a combination of more prime tags and a local variable.
PpHd Le 27/05/2004 à 13:35 Thanks a lot for your report.
I have done only a minimal implementation of next_expression_index.
Until a CAS compatible with AMS is done, I don't think it is usefull to implement it completly,
but I will fix this.
I think next_expression_index is important for more than a CAS. It is important for executing basic programs: A numeric only ti-basic interpreter is easily in sights for PEDROM.
If you look at the tags for if/else/else if/then structures used in ti-basic there is no offset used to instantly jump over code that is not executed. (Note that the ENDLOOP_ITAG does use an offset) I therefore assume that the basic interpreter uses next_expression_index to skip over RPN data that is not to be executed.
So for ti-basic programs that have lots of branches it would not suprise me if more time is spent in next_expression_index than executing code.
-Samuel
PpHd Le 28/05/2004 à 09:00 It may be a good idea to patch the original AMS "next_expression_index" of AMS by a faster but compatible version (Using TIB Receiver).