Hi, Hugh:
Math ROM's keywords FNROOT and INTEGRAL are what HP-71B's original developing team call "funny functions", i.e.: they're functions with non-standard parsing rules, unlike regular functions.
For regular functions, the built-in parser simply evaluates the function's arguments (if passed by value) before pasing them in to the function. That's why you can simply give the number and type of the parameters when coding a new function in Assembler to be included in a LEX file. You don't have to do the parsing yourself, the standard parser will do it on your behalf.
On the other hand, "funny functions" need non-standard parsing, and if coding one in Assembler, you must do it yourself, the standard parser won't do. In the case of FNROOT and INTEGRAL, both accept a function which ultimately uses FVAR or IVAR as the main variable, and the Math ROM's non-standard "funny function" parser can check that FVAR/IVAR are indeed present in the function's definition, allocate space for them, allocate a buffer for the function passed as parameter, and call the expression evaluator upon the contents of this buffer as many times as needed.
Further, as both FNROOT and INTEGRAL can be nested with previous invocations up to 5 levels deep, as many buffers need be created and maintained (they can move around in RAM while FNROOT and INTEGRAL are executing), plus allow for user interruptions while the evaluation is in process, with the possibility of resuming afterwards.
All of this isn't particularly easy, and as stated, needs a very clever, special "funny function" parser, completely ad-hoc for the particular function at hand.
So no help from the mainframe in this respect, and writing one yourself (in Assembler) can get pretty tricky, to say the least.
Best regards from V.