akcs.tasmith@hpcvbbs.UUCP (Ted A Smith) (03/17/91)
I have a few questions which some kind souls might answer: 1) What exactly are the restrictions on $CONFIG in USRLIB? I've only found that if my $CONFIG routine takes too long the 48 turns itself back off every time I turn it on! The only way I could figure out to stop it was to ON-A-E. 2) Is there anyway to invoke the various rules in the equation writer from a program? 3) A feature which the 28C and 28S had, which I miss a lot on the 48SX was using EXGET while in FORM, then recursively FORM/EXGET'ing the extracted subexpressions. When I was all done I would just use EXSUB to wind the expression back up. On the 48SX when you use the SUB function in the Equation Writer you get no position indicator which could be used to replace the modified subexpression back into the original expression! As a substitue I use MATCH\|^ as follows but this is not near as natural or accurate. Any sugestions? Stack in: Stack out: 3: Original subexpression 1: Resultant expression 2: Mother expression 1: Modified subexpression \<< ROT SWAP 2 \->LIST MATCH\|^ DROP \>> 4) I use a menu structure like the following to organize access to my library. The only problem I have is that I can't traverse my tree of menus while entering a program like you can with the built in menus (e.g. MTH PARTS ABS.) I wonder if anyone can tell me how to achive this? { { "Phone" \<< { :HP-BB: "(503)750-4448" :Edu-Calc: "(800)677-7001" ... } TMENU \>> } { "Tools" \<< { { "Array" \<< { DELCOL ... } TMENU \>> } { "Graphics" \<< { PX+ ... } TMENU \>> } { "List" \<< { CAR ... } TMENU \>> } } TMENU \>> } { "LSq" \<< { \GSPoly \GSLog ... } TMENU \>> } { "Rat" \<< { QAdd QSub ... } TMENU \>> } { "Funs" \<< { \piF FixP ... } TMENU \>> } } MENU 5) I use the following C program to retrive the library ID from libs on my PC. I have no idea if there is a saner way to do this: #include <io.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> void cdecl main (int argc, char * argv[]) { char buff[512]; int fh = open(argv[1], O_RDONLY | O_BINARY); read(fh, buff, sizeof(buff)); close(fh); printf("%d\n", *(unsigned *)(buff + buff[13] + 15) & 0x7ff); exit(0); } 6) I've written the following kludgy program to allow me to replace objects in a program: %%HP: T(3)A(R)F(.); DIR Install \<< @ Run this first... 'Cmp\->' DUP RCL ASC\-> SWAP STO '\->LPgm' DUP RCL ASC\-> SWAP STO 'Install' PURGE \>> PRepl @ <program> <replacies list> <replacers list> => <new program> \<< \-> \GaPRepl \GbPRepl \<< DUP TYPE CASE DUP 8 SAME THEN @ for program objects DROP Cmp\-> \->LIST \<< \GaPRepl \GbPRepl PRepl \>> Each OBJ\-> \->LPgm END DUP 5 SAME THEN @ for lists DROP \<< \GaPRepl \GbPRepl PRepl \>> Each END @ else, for all others DROP \GaPRepl OVER POS IF DUP THEN SWAP DROP \GbPRepl SWAP GET ELSE DROP END END \>> \>> Each @ Apply the function in level 1 to each element of the @ list or array in level 2 \<< OVER { } IF SAME THEN DROP ELSE SWAP 1 DO DUP2 GET 4 PICK EVAL PUTI -64 UNTIL FS? END ROT DROP2 END \>> Cmp\->.ASC @ \->ASC'ed routine which unpacks programs, algebraics, ... "D9D20ECE8112040379C1F3040379C194040379C1B7040379C1B21303471" \->LPgm.ASC @ \->ASC'ed routine which repacks a program object "D9D2043C8154450B21305CEC" END This routine runs very slow, but seems to work even if there are ML or Code fragments in the program object (which couldn't be said for doing something like: \<< \->STR replacie replacer REPLACE OBJ\-> \>> Is there a saner way? If there were routines like GETI, PUTI, etc. which, besides working on lists and arrays, worked on programs, algebraic's, etc. things would be a little easier. Thanks for your kind attention and any thoughts you may have... Ted Smith