- Change the signature of obp_fortheval_v2() from:
static void obp_fortheval_v2(char *str)
to:
static void obp_fortheval_v2(char *str, int arg0, int arg1, int arg2, int arg3, int arg4)
- Add code to obp_fortheval_v2 that starting from arg4 and working down to
arg0, finds the first non-zero value and then pushes all remaining values argN down to arg0 onto the Forth stack before executing the Forth string.
Does this sound reasonable? I'm surprised that one else has realised that the obp_fortheval_v2 function signature was wrong, but I guess it probably hardly gets used for anything these days.
Ops. Forgot to submit this patch back then. :(. Sorry. The reason was not getting too far with the patch, because of the broken memory management.
As a separate hack, the equivalent of the OpenBOOT current-device word in OpenBIOS is active-package. So we should probably create an OpenBIOS variable called current-device too, and set its value to -1 when the function is entered. Then after all Forth has been evaluated, if it's value has changed from before the Forth call was made then set active-package to the new value before exit.
ATB,
Mark.
-- Mark Cave-Ayland - Senior Technical Architect PostgreSQL - PostGIS Sirius Corporation plc - control through freedom http://www.siriusit.co.uk t: +44 870 608 0063
Sirius Labs: http://www.siriusit.co.uk/labs