B41 http://www.hp.com/calculators/techsupport/manuals/49g/english/aug/commands-e.pdf back the {} that I started with. back the {} that I started with. For this next example, I'll use N to represent NUL (ASCII 0). returns {00}, definitely NOT what I started with. On my 48GX: gets back the { } that I started with. back the { } that I started with. Again, N represents NUL (ASCII 0). back the { N } that I started with; no problem. results. I know that the null character is tricky to work with, but why can't the 49G handle it as well as the 48GX does? I just followed your instructions on my HP49. It *is* very strange. I can't explain why this happens, but maybe this could help: Type 0 CHR to get the string with NUL. If you try to edit this you get the known error: Can't edit null char. But if you press Blue-Shift and then down-arrow the string 00 appears in the command line. As far as my understanding goes, this string consists of *two* characters. The sequence 0 is character NULL (?) and the second zero is .... ? It seems that the string N (N for NULL character) is somehow different right from the start. Could this have to do with the new string handling of the HP49 (special characters for formats etc) ? I would expect that whatever it puts in the command line *should* represent the null character, which (as far as I know), can't itself appear on the command line. My understanding is that a null character marks the end of the command line, which is why these calculators ordinarily refuse to edit any object that contains a NUL. As far as I know, the styles and fonts involve ASCII 19d (as, shall I say, delimiters, for a style/font toggle), ASCII 1d-4d for style changes, and (potentially) ASCII 11d-255d for font changes. I don't know what happens if you try using something else, or, for that matter, call for a font that isn't available on the calculator. These invisible characters can be extracted from a string by SUB, and, if you're using a font that doesn't differentiate the control characters, NUM can tell you what they are. I wouldn't expect that this would have anything to do with the handling of the null character, but who knows? I'm using ROM 1.19-5; I wonder whether this is something that was present in the early ROMs, or something that was inadverently introduced at some revision. snip Yes, that is what I expected. But why does the calc edit the string if we press blue shift and then down-arrow? It should't do that, no matter how we enter the editor, I think ..? programmatically. Me too. The difference is, if you just press DOWN, all objects are decompiled *except strings*. Strings are edited as they are. And a string containing the NULL char cannot be edited because it has a special meaning in the editor. When you press blueshift DOWN, the object is always decompiled, even strings are. Thats why you get the double quotes as well in the editor, not only the string itself. Decompilation transforms the NULL char into 00. The compiler (the program which runs when you press ENTER) should turn 00 back into a NULL character, but it does not. This is an a-symmetry between compiler and decompiler, actually a BUG. There are (or used to be) similar problems in the MASD SysRPL compiler/decompiler pair. MASD would compile 0A into a newline convert it back to 0A. Ideally compiler and decompiler should be entirely symmetric, in practice there are exceptions, and you have run into one. That is what EMU48 if for, of course! command Not if the null character remains a null character, but if it can be translated to a backslash notation and correctly translated back to a null character, that would be even better. I matter, if characters, have knows? Anyone know where I can find some documentation on programming for the 49 in a very low level using ASM or SysRPL? 49g ASM language docsThis is a FAQ. Have you even tried looking for some? Anyway: http://www.ite.mh.se/~danli97/ -or- http://www.hpcalc.org/ I have been looking around the internet for these for a while. I finally did find some on hpcalc.org. However, the docs I found were for the 48 series. I think that they might work for some beginner stuff, but I doubt that sysRPL is entirely the same on a 49. I'm a recent conversion to the 49G from a 42S. That beastie allowed really simple solve programs to be written with one button for each variable and solving for the variable of the remaining button. The user did not need to see the formula and operation is really intuitive with one soft key per variable. Unfortunately the 49G documentation is not very helpful here. Can I do the same with the 49G? Say ohms law as an example (V+I*R). Enter any two and calculate the third? UserRPL is my preference (ease of writing is more important that speed/efficiency to me). Any pointers to code/examples/documentation greatfully received. the HP49G (and also the HP48) have the built-in numeric Solver, which does exactly what you want. You don't need to programm anything, it's all there in the calc. On the HP49G you just STOre your equation in the variable 'EQ' and then type 30 MENU or press APPS and choose Numeric Solver from the pop-up menu. I just had trouble because I was editing a file on my HP49G when an alarm went off. That hanged my calculator so badly that I had to clear memory with ON+A+F. No harm done, I did have a backup (with that same alarm in there :-). But this is anoying anyway. Has anyone else seen this? The GCDHeu is for Greatest Common Divisor Heuristics. (I believe...) It is the method which the HP49 uses, when it does heavy maths. (I also believe...) I don't know however, what the rest of the messages mean. Perhaps Mr. Parisse would explain? (I do not believe :-( ) The module value is the value, which all mod operations use. ( DIVMOD, DIV2MOD tec ) I would like to know this as well :-) This is for modular arithmetic i.e. Arithmetic in Z/nZ, where n is the 'modulo value' (where Z is the set of integers) Most commands in [ARITH][MODUL] depend on this value.. Has anybody a program for WinNT which extracts the entire set of of User Data from a fairly full 49 in a single run into a single binary file (containing HOME, and the contents of all 3 ports), and, with a second option, puts it back to another empty HP49? That may also be a calculator program with the PC somehow defined as the server. XMODEM prefered. You could simply upload all your userbanks using the Download screen . Then download them back to another HP49 F3 Screen 3 C C[W] F4 Screen 4 D D[W] F5 Screen 5 E D0 F6 Screen 6 F D1 APPS Screen 7 (none) (none) MODE Set Breakpt here Set Breakpt addr HEX/DEC mode TOOL SetOpt (?) Show binary (none) Up pc -= 16 pc -= 16*N DAT0 Down pc += 16 pc += 16*N (none) Left pc -= 1 pc -= N P Right pc += 1 pc += N RSTK1 VAR Screen 8 (none) (none) NXT Skip Skip N DAT1 HIST Edit Registers EditAt (none) CAT Eval (none) (none) EQW ? SYMB ? Backsp. Exit now (LOOP) Backspace (none) Y^X ? SQRT Display D0+D1/D0/D1 (none?) (none?) SIN Save Registers Set Cycles SB COS Swap Registers Set Total ST TAN ? EEX View Pict Add to PC (none) X Exit (GETPTRLOOP) Abort (none) 1/x Reset (hit twice) (none) XM / Run Run N (none) * RunIn RunIn N (none) - Step Step N (none) + StepIn StepIn N (none) alpha Help (shows 48 keys) (none) (none) 0 Start ARG mode R0[W] . Set mark Set mark at N CRC SPC Redraw (none) (none) 1-9 (none) 1-9 R1[W]-R4[W] I still don't know the ones marked with ?, i.e. EQW, SYMB, Y^X and TAN. Maybe somebody else can help out. Maybe the Jazz developers could post this on hpcalc.org and/or include it with Jazz49? To explain a little better, you have sysRPL stack turned on. This means object show up on the stack how they would be written in sysRPL. Try recalling a sysRPL program to the stack. Instead of a bunch of external external external on the stack, there will be readable words. Don't worry, it confused me the first time i did that too :-0 == First of all, let me just say that I'm a newbie in working with SysRPL and Debug2, and would really like some assistance. I made a new project build my project and try it on an emulator. Can somebody please tell me how! I marked the checkbox for Autoload after compil (sic) in the project window, but all I can see on the emulator screen after building is the word external. Also, where can I find an error report on the project? A handful of files are generated by Debug2, but I don't know which file contains what. A description of what these files are would probably be extremely helpful. http://hpmad.zoy.org/debug2/debug2.html I tried that. It turned out, I didnt have the latest version. However, I looked through the helpfile and decided to try the tutor. It suggested I should use the YorkeEmu emulator. So I did, but when I built the project, the emulator went loco and started pressing alot of buttons itself, resulting in an access violation error in Windows. Does anybody know whats wrong? If I use the emu49 emulator, it still leaves the word external on the screen as I mentioned in my first posting. Has anybody else experienced the same problems?? I'm not a user of Debug2, but I assume that if you have 'External' on the screen, it's just because the binary object has been put on the stack. So you've just to put it into a variable ( 'MYPRG' STO ) and start it as any other program or command. Has anyone else had trouble installing UserBoot (aka L901) on their 49gs? I kept getting lists of error messages when I ran the make util. It seemed to work ok after I just hit enter on the error messages and continued compliling. But, am I missing some libraries or something to install this? You can't with the built-in CRLIB. You can only do it with Debug2 or the HPTools. Simply specify an address into your loader file. Check the RPLCOMP.DOC file found with the HPTools Do My Stuff..... TRUE ?SEMI LABEL programAtFixedAdr1 :: ..... ; LABEL programAtFixedAdr2 :: ..... ; ........... ; compile it, run CRLIB (with all your library stuff set up properly) install the library... do to get the address of the program once compiled and installed. then, in the source, replace the ABSOLUT 0 by the right address, recompile, recreate teh library, and here you are!! With Debug2, you will have to use the same trick, but I do not remember the name of the command to set the absolut address... The last sollution (hte one used in the meta kernel) is to create the library in assembly (ie: we create the library directly with the ASM rpogram using $xxxx to get the library structure generated...) didnÇt understand how to specify an address into the loader file. Probably my english is not good enough. I also tried the way Cyrille posted, but it didnÇt work or I couldnÇt figure it out properly. Maybe it helps if I try to explain what I want to do. IÇve written a library for my own purpose. ItÇs rather huge (30KB)and uses IfMain-Forms for data input. When I started writing the code I didnÇt know how to use InformEdit form the SDK and how to create the library with the SDK. So I did it for creating a lib on the 49G (the shell-programm creates a dir, creates a lib and then purges the dir). This allowed me also to use the compression utility from OT49 from Wolfgang Rautenberg so that the final lib is only half of the size of the programms the lib is made of. The lib runs fine, but I noticed, that the speed of it is twice as fast in Port0 compared to PORT1 or PORT2. So my thinking is, if I know at which adress the routines of the lib are stored in and if I know how to access these adress directly (if I understood it right, PORT1 and 2 are covered, so the OS can not directly access them), then their would be no need to copy the routine from, for example, PORT2 to TEMPOB which is the reason for being slower than in PORT0. Is there a way to make the lib run from PORT2 as fast as from PORT0 ? Can I tell the system in which bank of PORT1 or PORT2 the lib is stored and can I make this bank the active bank, so that there will be no waste of time for searching? Maybe you guys could post a detailed and well commented example how to do this, since this is totally new for me. I was wondering if is possible to open the filer directly in home directory, since most times I use it on home. I wonder if anyone has experienced this problem. My HP48GX, 128K card in slot 1, 1Mb card in slot 2, and about 59K of stuff in main memory. Using HPcom3.0 r4 if I try to archive the contents, it always aborts after about operation. Running under Windows 98 (Ugh!) on a Toshiba Satellite 2060CDS laptop. All other functions work, and if the contents of main RAM are reduced to say 40K, the archiving function seems to work. Any ideas? Many I found what seems to be a bug in the HP (New version) connectivity software. When sending a file to the pc it prompts, There is already a file named PHONE in this directory, would you like to replace it? I click YES and it does not replace it, it pretends to and then the old one is still there on the PC. I have overwrite files clicked and all. == No, I'm not working in this direction. The main reason is, I have _no_ WinCE device. The second reason is, programs that works on one device often don't work on an other one. I just hear the owners of a machine with WinCE: I have problems running Emu48 on my .... Well, I often use Emu48 CE on my Jornada 548. And it's working just fine. Approximately 3 times the speed of a real HP49. You just need to slightly modify the KML file and here you go.. It's actually very nice being able to use the touchscreen to control the calculator, feels like a real one Maybe it would be a good idea to patch the MoveDown and MoveUp routines. This will certainly speed up the RPL. -- -- I've made the tests: First nums are without patch Seconds nums are with patch //1st Test: 0x10000 MOVEDN 42.92 1.77s // 2nd test copiing file from Port 1 to Port 2 10.06s 9.43s // 3rd test copiing file from Port 1 to Port 0 8.91s 5.14s // 4th test: EVAL on a big expr No difference Seems not to have a dramatic effect to the global speed. is it possible to put in automatic line breaks in text that I transfer to my hp 49? and if so what is the string to use? The break-line character is ASCII-10. By automatic line breaks you mean line breaks so that text is readable on the HP49 without scrolling to the right or to the left? If so, then: There is no built in way to automate this. But perhaps you could use a good text editor on your PC. There you could make the line breaks and then transfer the text to the HP49. Or you can use lib Strtools from Pierre Tardy and use the InScreen command that do the trick. Avaliable on Pierre's site: http://tardyp.free.fr/hp49/ have been produced and how many of those units may be used today? Greetings from Cologne Peter -- Great HP48/49 links: http://www.engr.uvic.ca/~aschoorl/faq/ http://www.hpcalc.org to find *old* postings search: http://groups.google.com/advanced_group_search Yep. It would also be much more useful if the memory would be bigger. Only one or two larger programs fit in the memory :-( Greetings from Cologne Peter -- Great HP48/49 links: http://www.engr.uvic.ca/~aschoorl/faq/ http://www.hpcalc.org to find *old* postings search: http://groups.google.com/advanced_group_search You are right on with your asessment of the HP32SII Dave. I am on my second one in seven years, the first one died of occupational overuse syndrome I think. I use mine continually in my job as a reinforcing steel detailer for which I have written a program to sum and sort the masses of various diameter reinforcing bars, depending on their diameter, length, and number off of each bar. This calculator is absolutely brilliant for this purpose, easy to program, and extremely reliable, robust, and fast. The *only* improvement I would like to see (in the HP32SIII?) is more memory to be able to store more programs. primarly because they are the only real alternative to the HP42S, which is my calculator of choice. I've been able to pick up the HP32SII for about $40 on Ebay. The 42S, on the other hand, goes for about $150 on Ebay, so knowing that it has become somewhat of a collector's item, I only use my 42S at home, and for on-the-road or in-the-office work, I use the 32SII. In the office or at home I use the 48GX, but the 32sii goes with me on the road. I keep it in one of the Astec plastic cases. I wish I could get a couple more of the cases for the kids 32sii and 10b calculators. I've had my HP48GX now for several years, equipped with 128K and 1Mb cards. However, over the last six months or so, whenever I switch it ON the machine comes up with a circular dark area in the middle of the screen, with a diameter roughly about 80% of the screen height. This darker area fades to the normal background over a second or two, but if I adjust the contrast so that it is much darker than normal, there is this same circular extra dark area in the centre of the screen. Is my screen dying, or has anyone seen this as well? Any comments? Many thanks. I have a GX Rev R which shows the same effect. Believe me or not, the effect is there since one of those nice and heavy real-time grey-scale graphic demos got stuck a few months ago. First the screen went *very* dark, and I needed to do a hard (clip) reset to be able to restart the machine. I can't say if it's the fault of the software, it just happened when running the demos. Funny, just switched on the 48GX R floating around here -- same effect. I'm sure it didn't do that a couple of months ago, maybe the LCDs HP used approach their MTBF ? The serial no. on this one is 3517SXXXXX, BTW. value of a char in hex? maybe you already knew, but there are many communications/terminal programs for the hp48 at http://www.hpcalc.org/hp48/utils/comms/ and http://www.hpcalc.org/hp48/utils/terminal/ I don't know if any of the programs there do what you want. However you could take a program and insert the code that makes a hex value today trying to install rom 1.19.5 first of all it wasn't installaded because it says that it couldn't be installed if there was information in port 1 so i tried again to install it but it failed again and no the error says full check bar crc! and now the calc don't work!!!!!! Did you follow the altered installation procedure? This ROM needs an extra bank which was used as user RAM in prior ROMS. You must first transfer the contents of this bank to normal RAM and then attempt the installation. The program to do this is also available. Read the installation guide and do exactly what it says, then your HP will return from the dead again. You can download all software needed and the installation guide at http://www.hpcalc.org/hp49/pc/rom/beta1195.zip Does anybody where to get sysRPL tools for developing programs for my HP This is a FAQ. Have you even tried looking yourself? Google search for hptools linux hp48 gives a link to JY Avenard's home page: http://www.epita.fr/~avenar_j/hp/39.html You might also want to read section 8.8 in the FAQ. have you tried hpcalc.org ? I think there you'll find Hptools under GNU/GPL conditions. I will be learning this sucker over a few years for sure. I tried downloading the ice cube program to the calculator (Hp49G) however it comes in a .rep file which is a string.. I cannot figure out how to launch this.. Everything else I downloaded, libraries, program, directories I have figured out within a minute or two.. but this eludes me. This is a bad download. If you download it with ASC try again in Binary or vice-versa. Try to set the fraction Mark. If this fails try to download it to an version of emu48 that connects well with the calc, and download it to the HP if the download has been succefully installed. As last resort, try download again the file. I have installed the Ice cube w/o problem in my hp49g. The dot or comma between the integer and the fraction part of a number. You can change it in the 'MODE' setting (the checkmark before FM). the fraction mark is the little thingie that separates the integer from the decimal part of a number. (The period in 23.45) The HP49 can show numbers with period (american) or with comma (european) as fraction mark. You can adjust this by setting flag -51 for comma or clearing flag -51 for period. You can also toggle this setting by pressing blue-shift, PRG, NEXT, then soft-menu MODES, soft menu FMT, and soft-menu FM, For the most comprehensive statistical analysis software for ANY calculator, get Stat49Pro here: http://www.mtsac.edu/~sguth/stat49pro/Stat49Pro.htm Get Stat48Pro here: http://www.mtsac.edu/~sguth/stat48pro/Stat48Pro.htm Both include several ANOVA tests (one-way, two-way, etc.). Don't worry rcobo! I sometimes take an 8 for a 0 on the HP49. It seems that such things will always happen until we get a BORG-USER-INTERFACE. (HP directly connected to brain ;-) ) I am trying to start hacking on my hp 49g, but when I try to write my for loops like it describes in the manunal in RPN mode, I get errors. In the manual it says you are supposed to write: how do I do this in RPN? It it the same or simply: I am trying to start hacking on my hp 49g, but when I try to write my for loops like it describes in the manunal in RPN mode, I get errors. In the manual it says you are supposed to write: how do I do this in RPN? It it the same or simply: little longer. I wouldn't have ever guessed that one. I am trying to start hacking on my hp 49g, but when I try to write my for loops like it describes in the manunal in RPN mode, I get errors. In the manual it says you are supposed to write: how do I do this in RPN? It it the same or simply: So was I but I couldn't find it so I was planning on writing my own or porting EXAL but I haven't the time. -- iam programming a multiplayer game named windjammer, it's a pong like that can only be played with 2 calcs connected by wire or ir (whatever hp are at the end of the wire). but i need to now if it is a waste of time ! could every gamer there say me if it interests him, and if it is possible for him to play such a game (has he hp-users friends), and if you prefer a good multiplayer game or a good singleplayer game ? Wolfgang has listened to my suggestion to make it easier and faster to add several units to the same directory and asked me to post a short note how the new release improves the handling of the command AddU. The new version unitman 7.2001 is available at Wolfgang's homepage: ftp://ftp.math.fu-berlin.de/pub/usr/raut/hp48/tools/Unitman.zip Now it's possible to define a new units in a unit directory _and_ it's also possible to add more then one unit in one step to a directory. This is accomplished with lists. Example: Call the command AddU and choose the directory you want to add units to. Then in the unitname field you can enter ms to add one new unit or you can specify a list of units (again with the string delimiters) like in that example: { mm nm pm fm mi} Hope you'll like this new addition like I do. BTW, the size of the library is only some bytes bigger :-) Great HP48/49 links: http://www.engr.uvic.ca/~aschoorl/faq/ http://www.hpcalc.org to find *old* postings search: http://groups.google.com/advanced_group_search Sorry that I have to stop you here. What about the HP48S(X) users? the PTR 72AFA from 'AddU' isn't really a stable entry on the HP48S(X). Perhaps there more than this one inside the sources. BTW, Wolfgang is correct in his document, he's only talking about the HP48G(X). Here I definitely must say: Better a larger program with supported entries, than a smaller one that only work on few ROM versions. I like my HP48SX (with two 128KB RAM cards of course) much more than my HP48GX. My HP48GX looks like a new one, so rare I'm using it. Ah, sorry for the misunderstanding. I ment that now we know which entry points where used in a specific ROM version. As Rev. R of the GX has been the last release for so many years most 48G(X)'s are Rev. R and at least for this majority one can use all entry points. Even unsupported when that's made clear in the docs. Yes, I also meant the G(X) only when I was talking of 48 which obviously isn't really correct as you've pointed out. Mmh, if that increases the program only a little bit maybe. Otherwise if the entries just changed between SX and GX I'd prefer two versions. What I meant was that using the entry points allows to keep the program much smaller (and acting faster) then to use huge lists to build a (T)MENU. Why? Does the SX has any *real* advantage (I know some find it looks nicer) in daily use? I wonder how many HP48S(X), G(X) and 49 users are out there? At my university I see 48G(X)'s on nearly every second desk in the library. I've one time seen someone using a HP28 and have seen one person with a 32SII. I've seen some 48S(X) - maybe three or four and I've seen about eight 49's. Not too many use a graphing calc from TI/Casio. All others use either a simple scientific TI/Casio or a HP48G(X). Great HP48/49 links: http://www.engr.uvic.ca/~aschoorl/faq/ http://www.hpcalc.org to find *old* postings search: Nope, then SX maybe version 6.2001 and GX version 115.2001. But when you have it in one file you're forced to make the changes for both calculators. Same with Emu48. I have no HP49, I prefer the HP48(SX). So all bugfixes I make only for the HP48 and not for the HP49 in future, because the HP49 is now implemented in Emu49. Do you want this? For those who are worried that this might happen, definitely not, Emu48 will support the HP49 and the other calculators also in further versions. Yes, I was sitting monthes before the HP48SX keyboard, writing programs. I nearly know the place of every command in the menus. And I hate the scroll menus on the HP48G(X), they're so slooow. That's no wonder, I paiyed for my naked HP48SX (no cable, no RAM card) 760,- DM in Juni 1991. My HP48GX with cable was much cheaper. But HP has produced many many hundred thousands of HP48S(X) in the three or four years of production. Are you think that these users aren't interested in new software in general? I can't help wondering whether another ROM version will ever be released for the 48 series. to entries, Yes, I've become accustomed to it, and it never gives me those @#$% choose box style menus. What *real* advantage does the GX give me? Yes, the list processing and matrix column and row handling in the GX are nice, but not indispensible I use both the SX and the GX for real work, probably slightly more often the SX. I play with the 49G, but if I need to get something done, I'll does anybody know if the codes, that the command WSLOG returns, are the same on the HP49G as on the HP48GX? If not, then does anybody know what changed? Not exactly the right answer to your question, but you may find doc for HP49 WSLOG in advanced users guide on http://www.hp.com/calculators/techsupport/manuals/49g/english/aug/commands-e .pdf == Unluckily the Elliptic Curve Method does not work for these huge numbers when both factors are high. But the method was able to completely factor the Fermat numbers 2^1024+1 = 45592577 x 6487031809 x 4659775785220018543264560743076778192897 x P252 and 2^2048+1 = 319489 x 974849 x 167988556341760475137 x 3560841906445833920513 x P564 because all but one of its factors are relatively small numbers. Notice that P252 is a 252-digit prime and P564 is a 564-digit prime. Sorry to bother you people again, but I'm having problems with flashpointers on my hp49 with CAS 1.18. I'm trying to execute the line FPTR2 ^MATTRN but my calculator reboots. Is there something wrong with the way I'm using the flashpointer? I'm using debug2 for development, and it cries out for unexisting entry FPTR2 when I'm compiling. FPTR2 is for MASD on the HP49. With debug2 simply do something like: FEXTERNAL MATTRN Then: :: MATTRN with debug2 you have to use it this way :: FLASHPTR MATTRN ; Comompile it and transfer to the calc, put it on the stack, it appears as :: FPTR 6 33A ; if flag -85 is set and look into it with Nosy which shows :: FPTR 6 33A=^MATTRN ; So this must be your function :-) Debug2 understands FLASHPTR #hex #hex (or DEFINE) in opposite to the build in compiler of the 49G which understands FPTR #hex #hex In Debug2 you can use FLASHPTR with the supported entry points list or if it is not in there - like the FLASHPTRÇs for the new Inform-Engine - you have to put INCLUDE informbox.h at the beginning of your source code. Of course the file informbox.h which declares the DEFINE must be present. Those function in the entry points list which start with ~ (like ~Choose for example) have to be declared as EXTERNAL at the beginning of the source code. EXTERNAL Choose In your source code you use Choose which is the Function ~Choose. Happy programming. Greetings Andreas -0500) body (DO NOT SEND ATTACHMENTS) is not a valid object type for PURGE, hence the error message. Note also that :5:X PURGE on HP49 will purge a *variable* named 'X'; invalid port number on HP49 is not an error, it just ignores the tag, whereas on HP48 you get Port Not Available (which I'd prefer, because ported HP48 programs might contain such things). On the other hand, RCL and EVAL on the HP49 seem to recognize the :&: tag, but they do not seem to find the highest port number in which the object is found; it looks more like the *lowest* port number, and then user memory if not found in any port. And once again, :5:X RCL just ignores the tag (no error message). -------------- So in the HP49 (as of 1.19-5), it seems to be (summary): The idea of lowest port number may be useful, if you want to reserve flash for more permanent objects only, but the incompatibility of PURGE remains puzzling. Invalid port numbers in 49 are always ignored; tag is simply stripped (this applies also to STO). Recapping the HP48: Invalid port numbers in 48 always give Port Not Available error (this applies also to STO). ----------------------------------------------------------- -0500) body (DO NOT SEND ATTACHMENTS) The :&:name argument applies only to RCL, EVAL, and PURGE on the 48 (and apparently not even to PURGE on the 49, as of 1.19-5) :&:nnnn PURGE was very useful for removing libraries on the 48, without needing to know in which port they were stored; this will always error in the 49, however, as of 1.19-5 It is far different than multiple file name wildcard matching in a single directory; rather, the wildcard here means simply a search until the nearest location with an exact match is found, perhaps analogous to *which* directory in a %PATH% list will be the *one* from which a program will be executed (or should we execute *all* of them?) Besides the chaos which would ensue from a command which could push an unknown number of objects onto the stack, without giving any situation where a variable 'X' appears in the current directory, and again in its parent directory, and maybe even again in HOME; well, should 'X' RCL recall just one of these variables, or perhaps all of them? On the other hand, PVARS can be used to list all port objects, and VARS can be used to list all variables, and one can do whatever one wants with such lists, perhaps using DOLIST, etc. On the other other hand, however, if 'X' PURGE would obligingly delete *all* visible variables named 'X', then we'd have an immediate solution to the problem in another thread, where Purge current var? in the CAS may actually purge only one of many such variables, leaving the CAS command to ultimately fail anyway. Now, just to make sure that no one considers this seriously, this paragraph I post it here again because I wouldn't like to hear someone saying, that I talk about people behind their backs. That means, unfortunately, no easy way to purge a lib, no matter in which port it resides. :-( Well, I also would prefere the Port Not Available message. the HP49G might have the CAS and all the other powerful things, but the HP48 was more carefully thought. Its software parts were tight bound and consistent to each other. The HP49G is more like a collection of software pieces that happen to reside on the same machine. I think some of the old guys at HP should take a closer look, and organize this chaos. But, Carsten, my units *were* consistent for addition. I wanted to add 2_k and 3_k and then I tried 2_AAA and 3_AAA . The problem doesn't seem to be consisteny of units. I don't think it's the right answer, because 2_X + 3_X *is* a consistent sum, whatever the definition of X is. You cannot add apples and kids, but you can add apples and apples, and this doesn't depend on what an apple is. The + for units, in a perfect world, should behave like this (uhm... this sounds like c++): unit operator+(unit a, unit b) { if ( a.unit() != b.unit() ) { b.convert_to( a.unit() ); // this throws exception } return ( UVAL(a)+UVAL(b) ) * a.unit(); } -- The set of solutions is never empty. Two solutions together form a new problem. -- Mycroft Holmes -0500) body (DO NOT SEND ATTACHMENTS) Carsten has already explained how you can manage to multiply and divide user-defined units, even without defining them, because the units of the result is defined simply as the product or quotient of the units of the individual arguments, whereas with addition or subtraction, the result is defined to be in the same units as the second argument, so the calc must do an internal CONVERT of the other argument to those units, which requires that the relationship between both units be pre-defined, e.g.: Now, there is no AI in the calc to skip over this internal CONVERT, even when the two arguments have the same units; e.g. if the user unit 1_k has not been defined (stored), then which is what you got, and why you got it! Nope; we're already way off-topic here :) Here may be what Brian (remember him?) actually wanted: The set of solutions is never empty. Two solutions together form a new problem. -- Mycroft Holmes It's no AI, it's a single IF statement. (the whole thing looks much like a bug...;) -0500) body (DO NOT SEND ATTACHMENTS) % 1.23 k %2 um^ j %3 um^ um/ umEND ; Now, a unit object is structured the same as any list, and everything in that list, between the value 1.23 and umEND, defines the units, in a manner just like any RPL program -- so how do you, in general, compare two unit objects, to see whether their embedded RPL programs are either identical or produce the same end result unit, with a single IF statement? It seems to me that you might as well proceed with performing the internal CONVERT in all cases; why waste ROM space on another significantly non-trivial function which has no generality, could save little overall time, and which doesn't really add any useful ability to the calc? Yes, some people are bugging other people ;-) ----------------------------------------------------------- -0500) body (DO NOT SEND ATTACHMENTS) UNIT % 1.23 k %2 um^ j %3 um^ um/ umEND ; Now, a unit object is structured the same as any list, and everything in that list, between the value 1.23 and umEND, defines the units, in a manner just like any RPL program -- so how do you, in general, compare two unit objects, to see whether their embedded RPL programs are either identical or produce the same end result unit, with a single IF statement? It seems to me that you might as well proceed with performing the internal CONVERT in all cases; why waste ROM space on another significantly non-trivial function which has no generality, could save little overall time, and which doesn't really add any useful ability to the calc? -- The set of solutions is never empty. Two solutions together form a new problem. -- Mycroft Holmes I *never* said you can compare two compobs with a single line of code. I'll restate my opinion: *provided* you have a comparison operator (which IMHO is generic enough and not a waste of ROM), you can add a single IF to do the check. HP48 composite objs are contiguous in memory, so to compare 2 of them you require first their size to be ==, then you start hunting for the first difference, possibly in ML, or, if you don't want to ML too much, you can simply execute (on each) DUP CDRCOMP (to cut the numeric part) OCRC and compare the crc's. summing 1_X with 2_X is not a useful ability, it's algebra consistency ;) lots of controversy here over probabilistic primality testing (even though that's the only feasible way to test in practice), but probabilistic unit comparison testing is really stretching things to mind-blowing proportions :) [think of the infamous very low probability Pentium arithmetic bug :] One man's consistency is another's inconsistency, in that why should the sum of a pair of undefined units be valid if both undefined units have the same name, but invalid if the undefined unit names are different, or, to make another algebraic analogy, when flag -3 (numeric results) is set, is it consistent for 'X+Y' EVAL to give an Undefined Name error, but 'X+X' EVAL to demand a special trap to give '2*X' and no error? I lean toward the simple generalization that the similarity or difference of the names is irrelevant, that all cases should be treated the same, and that special extra code to grant special exemptions for special cases is not only inefficient and wasteful, but positively undemocratic :) the there), commands char when I'm in string editing. I mean I've putted on the command line the: but accessing the char table with CHARS don't let me insert the null character. Also what is the special purpose you named above? For what is used the null char? various Cna you explain with more details, pls? I'm really interested. Look at this simple sysRPL program: I have build some sysRPL program, and some of them uses this syntax to define, say, ten unnamed lams: ... NULLLAM TEN NDUPN {}N BIND ... ABND... as explained in pag. 21 of Eduardo Kalinowsky's manual. I am still learning sysRPL, so crashes are frequent things that happens to me. Well, I was playing with an error trapping structure and I got one of them, and after this I am not able to run any program which contains the structure mentioned before. All runs OK if I use the following longer code ... { NULLLAM NULLLAM NULLLAM ...} BIND ... ABND ... or if I use named local vars. When I try to run a program with the first structure mentioned, calculator pops up a window that say: XLIB 2512 45 Error: Undefined Local Name I have try do debug this error, and I have modify previous code like this: ... NULLLAM xHALT TEN NDUPN {}N BIND ... ABND... but error get out before reaching xHALT command. So I come to the conclusion that my calculator recognize no more NULLLAM command (outside braces). I have try to: -reflash my calculator -download again extable but I get no solution to my problem. The strange thing is that calculator continues to compile my programs with ... NULLLAM # NDUPN {}N BIND ... ABND... structure without errors. Try a quote before the NULLLAM, like: ' NULLLAM TEN etc etc Try quotes! ' NULLLAM TEN NDUPN {}N BIND ... ABND This should help. -- But the behaviour remains strange. I compiled & tested all my progs before having the crash, and all progs works ok (no errors, right results). I even build a library with my most used commands, and I used it a lot for at least a month, without any errors like the one I explained in thread's starting post. I mean, structure like the one reported in Kalinowsky manual alwais worked for me until now. Or am I dreaming? (well, it may not be the first time...). 7 alphaENTER and betaENTER can replace what the calc does when you press the ENTER key. You can do all these things also evaluating some previously written programs but the advantage of this method is that it just happens when you press ENTER. No extra key press and it is always active. (Think of it just as a programm that runs every time you press the ENTER key.) I give some examples here, but there are unlimited ways to use it. 1) Let's say we want to have more than the last 4 input commands. We can then adjust alphaENTER and betaENTER so that when pressing ENTER the just entered command is added to a list which is stored in a variable and then evaluated. 2) The AUR for the HP48GX containts an example that uses this method to implement trace print. That means every time you press ENTER the object (or the whole stack if you want) is printed. 3) The calculator (client) can communicate with other calculators or with a PC (servers). It can send commands that are executed by the server. But building this commands and sending them to the server for execution can be vary handy if we adjust alphaENTER and betaENTER so that the typed command is wrapped in a REMOTE COMMAND packet and transfered to the server. So when you type, say 1.23 COS and then press ENTER, the command gets immediattly executed on the remote machine. I hope this was a small explanation. i think simplification would be very useful if it could be used with LDEC. example: 'x^2' 'x^3-4*x^2-11*x+30' [LDEC] (the constans need to be simplified) but this can only be simplified by eye-ball or am i wrong? .. by replacing the constants with simpler values like K3=-(750*Co-(125*C1+125*c2+2))/3000 result: y= K1*exp(-3x)+ K2*exp(5*x)+ k3*exp(2*x)+ (450*x^2+330*x+241)/13500 (example taken from Dr. Urroz book) I have a question, if 49G has a hidden directory, how do i get there(hidden directory )? I know its not a 48 but if anyone can help out with a dilemma i'm having with my 39g. Ive downloaded a linear programming aplet into the calc and everytime i run it i get a Syntax Error. I have many other aplets and have no prob, can anyone help Well guys; I've addressed this issue before. The main usefulness of the internal serial number is for security purposes. Since it seems all Chinese HP49's have this problem, maybe someone out there might like to take on the challange to figure out a work-around for the problem. Think of it as a way to increase the market apeal of the machine and thus prolong its logevity. Hmmm, it seems to me that the installation was not complete/successful. I think, TGV tries to execute some command that should be there. This some command isn't there, so the calc says Undefined XLIB name, which means I don't know this command. (That is what I think, at least) Did you try to turn the HP 0ff then on? Was this a self attaching lib? if no, then yoou must attach it manually. Check also if this lib needs some other lib to work. Pressing 'ESC' should do the trick. I don't have Acrobat 5.0, but it works in Arcobat 4. BTW, I wonder if the author of Edit Symbolic Matrix speaks english (the would be even more useful if one could access the REWRITE-menu (and why not any other menu) directly inside the program. This would make the manipulation of the components much faster sometimes. o.netcom.net.uk comp.sys.hp48:106259 I am trying to multiple 2 matrixes 2X2 and get thg message non algebraic expression. do you know what should I do? I'm forwarding this message to this newsgroup, as Francisco does not have access to newsgroups. So please send a copy of your replies directly to him. Hmmm, isn't it that way, that the HP or whatever is thought as a *helper*? When you say you weren't ready for it, doesn't the suspicion come that you thought a little bit in the direction with the HP49G, I don't have to do anything else than pressing keys? I don't want to say, that you didn't work, only that you perhaps overestimated the abilities of the machine. The best possible advice in this case would be the advice of Mr. Parisse. I can only tell you, when your HP49G doesn't give an answer within a few minutes, then try to re-formulate your problem in an easier way, split a problem to smaller ones and the like. I am looking for a built-in command that takes a library as an Programming in sysrpl book but it is listed as unsupported and I cannot find another command that does the same thing. I am pretty sure that there is at least another unsupported pointer because if you put a library on the stack and try to EDIT it you get a text containing its title and romid. I've tried browsing around the DOWN ARROW with SA DOWN, but I was not able to find the code that works on libs... So am I but I think I this is a nice example to learn some ASM :-) You can of course take the low road and do it in User RPL but let's see how you could do it in asm Important to know is the library structure: 04B20 lib prologue 5 nibble length of lib 2 nibble length of title in bytes (N) 2N nibbles title 2 nibble length of tiltle in bytes (N) !!! omitted if length= 0 !!! 3 nibble libid 5 nibble offset to linktable ..... wait a minute lib id is what we want! and the Zint structure 41620 zint prologue 5 nibbles length XXXX0 digits with one zero after them string stucture C2A20 string prologue 5 nibbles length character bytes What we do is skip the title and then push the libid to the stack but he lib id is in hex format so we have to make it a zint first (A(M) is nibbles 3 through 14 A(X)= nibbles 0-2) CODE GOSBVL PopASavptr % get lib address D1=A D1+10 % skip prologue and length C=0 A C=DAT1 B % length of title in bytes D1+2 % skip length AD1EX A+C A % add 2*bytes=nibbles to A A+C A D1=A % points to second length field *NOTIT D1+2 % skip length field % So D0 points to the libid % now we shall convert from Hex to Dec % I strongly recommend to walk through this with DB (Jazz) % to really undestand what happens LC 0B % load 11 for Hex2Dec B=C B % couter in B C=DAT1 X % C= libid in hex A=0 W % clear A *H2D SETDEC % dec mode A+A A % double A SETHEX C+C X % double C in hex mode GONC BIT % if overflow SETDEC % then add one to A A+1 A *BIT SETHEX B-1 B % loop 3*4bits=12 times GONC H2D % now A contains the Dec number R4=A W % save A in R4 because MAKE$N uses A,C,B,D LC 5 % load 00005 in C vut to save some bytes we have only to % load 5 because C(A) was 0 after the Hex2Dec routine GOSBVL MAKE$N % make tempob D0-10 % point to prologue LC 02614 % zint prologue DAT0=C A D0+10 % point to number A=R4 W DAT0=A A % write it % and we need only one zero after the number D0+4 % shrink the number to XXX0 GOSBVL Shrink$ *FOUR GOSBVL GPPushR0Lp % push the number ENDCODE @ -- .. But the very last beta ROM, with the updated CAS, is in Mr. Parisse's ftp. I Yes, but As far as I remember this special releases of Mr Parisee (it happened the same thing with Beta ROM 1.19-4) doesn't arrive to hpcalc. == You are wrong, it is ROM 1.19-5. It's just the README-file which is wrong. The question is not at all stupid. I have also lost orientation and apetite for updates and anti-updates. The CAS and ROM developers seem to work so independently from each other, that it is really difficult differences are not very big, so I think I'll wait for the next general update. (If it's going to be) here but I did not find a solution to a simple issue. I would like to go into a directory directly with the filer application. I simply can't remember how this worked :-( In the users guide there is a way described with the HALT instruction. But then the filer stays in background. I'm reallly not sure about this, but I think you can't. I seem to said it will. I even remember the name would be CHDIR or something, so maybe it'll be possible in the next Beta ROM upgrade. The Filer is a program like the windows explorer, or better the DOSSHELL program in MSDOS5. You enter and you see the calc stucture. To enter a directory and see it's contents press the right arrow. The left arrow give you back one level or to a directory tree. The HALT is for you made a calc or executing a program and then continue your work. I think that there is no possibility to exit to the stack without leaving filer in background. The ON key put you in the directory that you was before enter the filer. I think the tutorial of CQIF was written based in an older ROM, so that is possibly the cause of this differences. No, while the commands entered is less than four the CMD starts with four commands equal then three up to all 4 commands are different unless that you repeat the command. EXIT the EQW and goto to the CAS config in MODES and disable the step by step mode. Now try again. Please, note that I'm not asking for you to change it, I just want to know if it will keep behaving the same way. This Flashpointer (FPTR2 ^MATINV) works as expected, if you are sure you're doing everything alright, then it could be a version problem, but I doubt it, I'm sure you're doing something wrong, double-check! : I've figured it out (see previous humble post). But can you explain to me what the difference is between these flashpointers and the normal entrypoints that I have used so far (%ACOS for instance). Do they differ in speed or any other way?? Not necessarily. I think flashpointers are slightly slower than entries in normal ROM, but even an entry like %ACOS might only be e reference to a flashpointer (I did not check). The difference is how they are compiled. A normal entry like %ACOS is only an address which is directly put into the final program. Calling a Flashpointer is slightly more complex since the HP first must switch to the appropriate flash bank. How come there are so few normal ROM entries for matrix calculating operations? I thought (one of) the strength of the HP49g over the TI-89 was its matrix possibilities. Should'nt there be ROM entries for such operations in the same manner as there is for other types? Does this routine leave the inverse of the matrix or just a matrix with the reciprocals of each elements in the original? Im reading Kalinowski's Programming in System RPL, which describes an entry MATINV. This routine takes the reciprocals of the element according to the description. Why don't you try yourself? ^MATINV computes the inverse of a matrix. The MATINV entry on the hp49 is an unsupported entry, and unrelated to the Flashpointer on the HP49. Another way to find this out is to decompile the INV command. Install the Nosy library, put {INV} on the stack and run the command Nosy. You will soo see that is calls ^MATINV for appropriate arguments. This is a typo. I meant: Notice that the second factor is wrong. The true factorization is: 340 282366 920938 463463 374607 431768 211457 = 59649 589127 497217 x 5704 689200 685129 054721 You can check it using my Elliptic Curve Method Java Applet located at: http://www.alpertron.com.ar/ECM.HTM (the calculation took three seconds in a Celeron 333 MHz). and if it is present purges it from any port. :1:LLLL PURGE Is there a wild card character used to search all ports for that lib. EG. :$:LLLL PURGE I thought I remember reading about such a wild card used to force the calc to search all ports for a program/lib. Also, Is there any forseable harm in purging a library that doesn't exist? Example: L1650 is installed in port 1, I do :2:1650 PURGE You remember right, there is a wild card for recalling some object from any port. It is the the ampersand character &. When you do :&:SomeObj RCL then the HP49G searches all ports (I think from higher to lower port numbers) and the current path to find the object SomeObj. The first found object is returned on the stack. But unfortunately this doesn't work with PURGE. (:&:SomeObj PURGE returns Bad argument type error.) When you PURGE an object that doesn't exist in a port, then no error is generated. But on my HP49G this takes a little bit more time to complete than other operations. (Perhaps because it is more difficult for the calc to search/purge in port memory???) If you get any different results, then it may even depend on bank organization (but I hope not). In any event, :&:PURGE has never purged any port variable in my HP49, which breaks the DPORT program (one of my old port tools for swapping out any user directory to a port, and later swapping it back in again). In any case, :&:name does not seem very useful in the current [1.19-5] HP49 Use a decompilation program to find these things out yourself Loop does: A=DAT0 A D0+5 PC=(A) and therefor calls the pointer at the address A (generally used to return to RPL) Usually you need not store the return address in RSTK with GOSBVL for Loop so you can use GOVLNG -- The integration features of the HP 49G are very powerful. But that power may be lost to users who expect a computer algebra system to integrate everything for you. Unfortunately, if this is the type of CAS that you need, the 49G may not be right for you. The beauty of the HP 49G CAS is that it allows the user to do virtually anything with a given expression. As a result, integrands not handled by the CAS right off the bat (using INTVX, RISCH, or IBP) can be handled using various simplifications and/or substitutions. The goal of this document is to provide step-by-step instructions of how to solve some interesting integrals that I have found on the Internet. I am not sure if more advanced users will be as interested in this as I am, but nevertheless I will enumerate every integrand in increasing difficulty so that the reader may jump to any in which he/she is interested. (1) sinh(x)*cos(x) (2) cos(x/2)^2/(x+sin(x)) (3) sqrt(1-cos(x)) (4) xroot(x^2*(1-x),3) *(5) sqrt(x)/sqrt(a^3-x^3) (6) 1/(x^4+1)^(1/4) (7) 1/(x^5+1) all with respect to x *NOTE: I have a question on number four (any assistance will be appreciated) (1) SINH(X)*COS(X) is obviously a product of two functions so IBP is natural. But there is another way to integrate this. If you use IBP, you must use it twice, however the alternative is to enter this expression in the EQW, apply EXPLN to the hyperbolic and then integrate the entire expression. This gives a different, yet equivalent, antiderivative. Both ways are valid, but rewriting will help us with a wider range of integrals, especially those in this document. (2) COS(X/2)^2/(X+SIN(X)) is a prime example of an integrand that needs rewriting. We have trigonometric functions with different powers and different arguments. A safe bet is to use TLIN to linearize the numerator which will convert the numerator to a linear cosine with the same argument as the denominator. This can be easily integrated by the system. However, simplifications alone are not always successful; for more complicated integrals, we may have to turn to SUBSTitutions, as well. (3) SQRT(1-COS(X)) is another trigonometric expression that needs rewriting. Notice that this integrand looks much like the sine half-angle identity. Immediately it should become apparent that (1) the use of HALFTAN on the expression may help us out. After realizing this, (2) convert all occurrences of 1+TAN(X/2)^2 to 1/COS(X/2)^2 by using TRIGCOS and simplify the SQRT term to 1/COS(X/2) if necessary. (3) Now use TAN2SC to convert the remaining TAN(X/2) such that now we have an entire expression of sines and cosines. (4) EVAL the entire expression and we get SQRT(2)*SIN(X/2). This is trivial for the CAS to integrate. Note that we can also solve this by substitution if one prefers. (4) Before I move on to the use of change of variables, I have one more rewriting example: the integral of XROOT(X^2*(1-X),3). Unfortunately, IBP does not seem to work here, but a little wit can solve this. Within the cube root, multiply by a factor of one, namely X/X which gives XROOT(X^3*((1-X)/X),3) and can be simplified to X*XROOT((1-X)/X,3). This can be integrated by the system. But how do we get from the original expression to the integrable one? You can do this simplification by hand or in your head which is probably faster in this case, but you can also do this directly on the calculator, too! It's just a little more involved, but it is good practice (or even fun for people like me :-) with using the CAS rewriting commands. In the EQW, (1) enter the original expression and (2) use EXPLN on the entire thing. Next, (3) factor the argument of LN and (4) apply TEXPAND to the LN term. (5) Apply FDISTRIB to the EXP argument and (6) TEXPAND the entire expression. We now should have EXP((2*LN(X))/3)*EXP(LN(1-X)/3). (7) Convert 2*LN(X) to LN(X)^2 using LNCOLLECT and (8) finally do EXP2POW on both EXP terms separately. Now we have XROOT(X^2,3)*XROOT(1-X,3). It is here that we multiply by our factor of one. Inside the first XROOT multiply the X^2 by X and similarly multiply the 1-X by 1/X. Simplify the first term with EVAL giving X and leave the second as it is. Notice we have arrived to the integrable expression. I know this seems like a lot of work, but it all pays off. This is a prime example of why the rewriting instructions of the 49G CAS can be so indispensible. Again, if you prefer, do the rewriting independent of the calculator and then use what you arrive at afterwards (of course, simplification on the calculator is usually faster than by hand and can be more convenient). Either way, you can get an answer, but both ways require thought. After one does a little thinking, the 49G can do the rest. So we have seen in the first four examples that rewriting can help us solve a wide array of integrals. Yet, this cannot always be relied on alone. When simplifications and the regular integration commands fail, we can try variable substittutions using the command SUBST. This adds a whole new dimension to our already rich arsenal. (5) SQRT(X)/SQRT(A^3-X^3) is a perfect example of an integrand that fails to be integrated using simplifications and RISCH, INTVX, etc. alone. The use of SUBST, however, will transform the integral into something that can be simplified and integrated. With the integral at hand, it is convenient to use redshift TAN (the integral symbol) and the EQW to build and edit the expression. This is perhaps the most appealing choice as it allows everything to be done in textbook move it to the stack. The next step is to determine what change of variable to perform. Here we have a difference of cubes. Recall that whenever we have a difference of same powers, we can use a variation of SIN(U)^2+COS(U)^2=1 to simplify the integral. In our case, let X^3=A^3*SIN(U)^2. With our integral on level 2 and the substitution on level 1, call SUBST to execute the variable substitution. When the substitution is complete, call the new integral to the EQW to simplify. (1) EVAL the lower integration bound (forget the upper one as it is adequately simplified). Now let's deal with the integrand itself. (2) Select the last two expressions of the numerator and FACTOR. (3) Now CUT out the A^3*SIN(U)^2 and replace with a dummy variable X. (4) LIN the final term to get SQRT(X) and replace the X with what we cut out. (5) EVAL the final term to get A*SQRT(A)*SIN(U). (6) Go to the term immediately to the left of the expression we just created (before A*SQRT(A)) and execute TRIGCOS. (7) Select the denominator and call TRIGCOS again. (8) EVAL the entire integrand which should simplify to 2/3. (9) Finally, EVAL the entire integral and we're done!... **NOTE** Unless I am mistaken, the answer obtained to the previous integral seems to have an extraneous negative sign multiplying the entire expression. In other words, try replacing all occurrences of T with X and DERVX. You do not get the original integrand but -1 times it. Is this a bug? Or have I made a mistake somewhere? An explanation would be greatly appreciated. In any case, on we go! (6) As the previous integral S(0,T,(X^4+1)^(1/4),X) can be solved with the use of the command SUBST. In fact, in my solution method, I use SUBST twice. (1) The first substitution used is X=SQRT(TAN(U)). When this is complete (2) EVAL the lower bound and move to the integrand. (3) Simplify the numerator to 1/COS(U)^2 using TRIGCOS. Now let's work on the denominator. (4) Move to the last term and EVAL. (5) Convert the argument of the fourth root using TRIGCOS as above. (6) CUT the COS(U) out of this term and replace it with the dummy variable X. (7) Execute EXPLN on the entire last term. (8) Apply TEXPAND to the LN term and (9) EVAL the entire EXP term to obtain 1/SQRT(X). (10) Replace X by the previously cut expression. (11) Transform the middle term of the denominator to sines and cosines using TAN2SC. (12) EVAL the entire integrand and (13) perform the substitution SIN(U)=X to get a cleaner integral. (14) Finally, EVAL the integral and you will obtain a valid antiderivative (plus a complex constant). It is interesting to note that Mathematica returns a hypergeometric function as a solution to this integral. The TI-89, however, can solve this in closed form. Of course, with a little more work, as I have briefly outlined, the 49G gives a closed form answer, too. (7) If none of the previously mentioned techniques work, we're not entirely out of luck. In the case of the integral of 1/(X^5+1), we can try a number of things; however, nothing seems to work. We need to use wit again. The problem arises in the fact that the CAS cannot factor x^5+1 into factors that are readily integrable (presumably by partial fractions). We can solve this dilemma by setting flag -109 to allow numeric factorization. The integral can thus be evaluated, but the answer will not be purely symbolic. So the question is, Can we evaluate this integral purely symbolically with the HP 49G? The answer is yes, but it involves considerably more work than any of the other integrals dealt with in this document. Nevertheless, it can be done, and I will briefly outline how. As I mentioned before, the problem with this integral seems to lie in the fact that we cannot factor the denominator such that we get an expression that we can integrate. Although we may not be able to factor the denominator automatically using FACTOR, we can obtain five complex factors by the solving the equation X^5+1=0. Doing this, we get X=-EXP((N*i*pi)/5), N={2,4,6,8} and X=-1. We now have factors that we can work with; all we have to do is to convert these complex components to equivalent real values. Since the integral of this expression is basically a problem of partial fractions, we need linear and/or irreducible quadratic factors. Our only linear factor will be X+1. The other two will be of degree two, namely the products of (X+EXP((2*i*pi)/5))*(X+EXP((8*i*pi)/5)) and (X+EXP((4*i*pi)/5))*(X+EXP((6*i*pi)/5)). The above products after simplifications (using EVAL, FDISTRIB, LIN and FACTOR as needed) become X^2+X*(EXP((2*i*pi)/5)+EXP((8*i*pi)/5))+1 and X^2+X*(EXP((4*i*pi)/5)+EXP((6*i*pi)/5))+1. Next use SINCOS on the of cosines/sines with different arguments to products. There does not seem to be a built-in function to do this, but a simple use of a program using the MATCH command and the appropriate sum to product trigonometric identities will allow for this. After all this work, we should get the expression 1/((X+1)(X^2-2*COS(pi/5)*X+1)(X^2-2*COS((3*pi)/5)*X+1)). And yes! we can integrate this to find the antiderivative of 1/(X^5+1)! In conclusion, I would like to re-emphasize that the integration power of the HP 49G goes well beyond black box answers. With the 49G CAS, we are able to solve more difficult integrals actively, that is, we choose the simplifications and substitutions and the calculator does revolutionary when it comes to calculators as we are given choices, allowing us to be the master of the 49G and not the other way around. Although I am not sure, I assume this is also an advantage for professionals, as well. As a final point, I would love to see any integrals a TI-89 can handle that the HP 49G cannot, but I am confident that the 49G CAS will more often than not have the upper hand. In any case, I would like to thank Bernard Parisse for his continued work on this CAS. Of course integration is by far not the only marvelous feature of his CAS, but I would gather that it is perhaps the crown jewel of Erable. It is my hope that this document helps other people see just a glimpse of how amazing the HP 49G CAS Perhaps so that you can see how it will be displayed and modify this should you so desire? Even though the calculator protects you from placing the null character in the command line (because it's already being used for a special purpose there), you can indeed have this character in a string, and you can use the commands in the CHARS menu to manipulate strings containing this character. If you send data to a printer, you may need the null character to set various modes or to print graphics. There was a post about something similar recently. The solution without opening the calc was: take a bath with it! :-) I've now made a program that does automatic simplification (it can be turned on or off, and when on it'll work transparently to the user). It's currently in beta and only does EVAL, since I do not know what it should do really - what's you expectations from automatic simplification? Please come with examples. Examples could be: this one) I personally don't like FACTOR too much (often too messy). I think that TRIGTAN, which seems too specialized. This is not that bad though, since if you feed a TI89 the expression 'COS(X)/SIN(X)+2', it'll return '(COS(X)+2*SIN(X))/SIN(X)', instead of the simpler '1/TAN(X)+2' or even '(2*TAN(X)+1)/TAN(X)'. Currently it doesn't take into consideration what command was just executed. This means that 'X^2+4*X+4' COLLECT will still return 'X^2+4*X+4' (EVAL) instead of '(X+2)^2' (COLLECT). This will be changed. It remembers 10 simplifications back, so it'll not do one it has just done (like when using DUP). Personally I don't like automatic simplifications, I rather choose the way to simplify something on the calc myself. But what I think is a very good idea of you, is the calc to remember what was used in the past. So it can decide what to do in ambiguous cases according to what the user did up to now. It'll look far more intelligent that way. Greetings Nick P.S. But watch out and don't make it to intelligent. Or else someone will wake up and see the message on the screen: Solved all relativity mysteria. Procceding in quantum mechanics. No user interaction possible for the time being... I think it should do simplifications on fractions, ie, I have, say, '1/4', enter '1/2' and then press +, I would expect to get '3/4' automatically. This can be done with a simple EVAL. The rest I don't think is very important, it can be done manually when necessary using the appropriate command. I'd like to try the program, can you send it to ekalin@bol.com.br ? Yes, I've found that EVAL probably is enough. Of course. It'll be one more day - it's practically finished, why I'll just write some simple docs to it. Changes since my first post: - The program keeps an eye on the last 20 simplifications (uses <400 bytes RAM in all when running). - Nothing is done if the last command was DUP, DROP, EVAL, SIMPLIFY, FACTOR, COLLECT, REORDER, EXPAND, PARTFRAC, PROPFRAC or the interactive stack was used (I may extend this list - suggestions please). - Overhead is down to 70 ms + EVAL if needed. It's actually getting quite good I think. I think a utility like this is a great addition. I don't often need simplification so would have to go looking for the commands so this utility would give me a quick stab at it. If it's not what I want you still have all the other manual methods. Since it seems to be the biggest point of comparison between the TI and HP it can only help the image. I'm interested in a copy. With Unitman, Appman, Keyman, Libman, eql49 and many specialised packages No, not at all. In RPN mode you can put a single command naked in the list. That means that the menu {{INTE INTVX}} will put the string INTE on the first menu key and will execute INTVX when you press that key. Note that INTVX does not have any brackets or something else in the list that forms the menu. Also note that the arguments to INTVX must of course be on the stack when you press its menu key. The ability to put whole programs in the list is of course one of the best features, because this way you can do anything with take an integer from the stack and return the derivative of the nth hermitian polynom. All these are valid fro RPN mode. (Which is how the HP49G was intended to work.) In ALG-Mode many things are different. For example you can't take arguments from the stack, because there is not any stack. Of course you have the history which you can use, but it is a bit more complicated. Let's have an example of a menu definition in ALG mode: This creates a menu with two menu-keys. The first shows up as INTX1. It takes answer 1 from the history area and integrates it with respect to VX. It also leaves the original expression on history level 2. The second shows up as INTX2. It stores the expression to be integrated in the local variable expr and then it integrates it. It removes the original expression from history. Note that in this case the history works like the stack. The program automatically takes the answer 1 as its argument, which is not consistent with the behavior of other functions in ALG mode. You don't need to specify ANS(1) here. Such inconsistencies may lead you to the conclusion: Set RPN mode and forget the existence of ALG mode. Also note that you can construct menus the following way: {{STR1 Obj1 Obj2 Obj3} {...} ....} The Obj1 will be executed when you simply press the key STR1. Obj2 will be executed when you press left-shift and then STR1. And Obj3 will be executed when you press right-shift and the STR1. That way you can pack even more functionality in the menu keys. Enough menus for today. Our restaurant closes and wishes a good day. ;-) Hope it helped, anyway. Nick -0500) body (DO NOT SEND ATTACHMENTS) in RPL, but is quite easy in ALG mode -- so finally we have something that ALG folks can gloat over ;-) Nobody can say that RPN is easy to use.. [JYA, 1999/05/22] http://groups.google.com/groups?as_umsgid=37468a9e%40isoit370.bbn.hp.com I and a host of others STILL say that RPN is VERY easy to use. - Gene Wright http://members.aol.com/hpgene/ http://groups.google.com/groups?as_umsgid=7i6g2f%24lcc%241%40nnrp1.deja.com Yes RPN is better for calculation; we all (hp users) know that.. [JYA, 1999/05/25] http://groups.google.com/groups?as_umsgid=374a778b%40isoit370.bbn.hp.com God I hate the algebraic mode! ;-) - Erik Pinter The algebraic interface only serves to lure first-time buyers into buying the HP49G - when the novelty wears off, http://groups.google.com/groups?as_umsgid=Bm216.6013%24gs1.123674%40news010. worldonline.dk I am myself indifferent honest You are right, John. It isn't more obvious. Both of these constructs are formulations of the same content with different words. But in RPN mode we don't have any null-tagged lines. Or did I miss something? Hmmm, at least one can say that it is easy. I learned it in about one hour and used it since then. It was a liberation from the ((()))) kind of errors, which made the input of a problem more difficult that the solution. Especially with nested functions with many arguments. The null character is used for marking the end of the command line. That's why the calc tries to protect you from editing it. It tries hard but... I've found a method to insert the null character in the command line. It works on any HP48, but not on the HP49G. I won't give more details here. Try to find it. Oh, yes: SYSEVALs or LIBEVALs are NOT allowed, of course. to the next Datafile issue (V20N4) which will be available by mid-September. I hope you can help me, well, my question is about the extable library, i unzip these and I found many files and I download the extable to my calculator, but I would like to know What for are the other files?.in especially the aplication and the table one for anyone can decompile anything in your library, actually. A small bit of hiding can be added by embedding every program in a Code object, using a program called Code (search http://www.hpcalc.org); this makes UserRPL only slightly less visible to casual browsers. If you really want something to crack try to fing out how the GDream32 program works. This one is very well protected indeed I know that it is in ML but you said that you didn't know anything about SysRPL but not ML :-) -- Take a look at http://www.hpcalc.org/hp49/programming/libs/ A lot of software for your needs there. If you mean the versions of CAS and ROM then the commands VER and VERSION might help. If you mean the serial number of the calc, then take http://www.hpcalc.org/hp49/programming/misc/rs.zip In my previous posting, the program http://www.hpcalc.org/hp49/programming/misc/rs.zip was for the HP49G. On the HP49G you can try FLASHPTR 2 C4 (gives the internal serialnumber) On the 49G, press the [APPS] key, then scroll down and start the Development Lib (if you don't see Development Lib, you will need to attach library 256, which is built-in to the 49G), then continue to press [NXT] until you see the [SERIA] softkey. Press the softkey, this will produce a string that starts with HP49 Serial Numbe... Press the [down-arrow] navigation key once (to get into edit mode), then finally use the [right-arrow] navigation key to scroll the string until the serial number appears. When finished, press [ON] to exit edit mode. The 48G series has no internal serial number. when i do this it comes up with a bunch of 'y' s as the serial number Let me take a guess that your 49G was made in China? Does the external s/n start with CN? Apparently, when production moved to from Indonesia to China, the internal serial numbers weren't being units that didn't have the internal serial number, and those are a collection item. See this thread for more info: http://groups.google.com/groups?hl=en&safe=off&ic=1&th=f1c102e012adfb5e,5&se ekm=90k5n3%244rg%241%40news.monmouth.com#p . On the other hand, (so far) I'm not aware of anyone that has reported here of ANY Chinese 49's that DO have a valid internal serial number. Maybe those are the rare ones (for the moment, that is)? Dows anybody know the stackdiagram of NUMSOLVE (SysRPL)? TIA Pieter I'd like to learn to use assamblers and disassamblers's programs like library 885: External 3.3 ZeHp, for trying to change my programs in I do not know anything about the External lib but if you wish to learn SysRPL nothing beats the Jazz packet. -- Marcel Flipse: has given us all the documentation we have asked for about a IR device for the HP49. I downloaded it today. I am not much at building electronic devices,but my brother is a hobbiest,and he might build it for me for several steak dinners. However when I try to read the file using Adobe Acrobat 5.0, I get a black background and the image of the pages, but no controls. All the Acrobat menus disappear and I have to use Control- Alt- Del to exit the program. Any idea as to what is going on? I have tried changing the resolution, but still the same problem. Is it a document problem or an Acrobat problem? by the way, where do you find them all? I'm curious if this is your first exposure to Tom Lehrer. He was such a staple in the 60s. Everybody knew of him and talked about him. I wonder if young people today know about him. You must set the HP48G to IR communications. (I think it uses the serial port per default.) I can't tell you which flag controlls this, perhaps someone else? You can also use the communications setup menu to controll this. As somebody pointed out before. Using default serial protocol such as kermit application may not work on all PC. What you can do to transfer data between your HP48 and your PC using the IR port is to use the HP48 Emulator on the PC then send the data between the two HP48 (one is an emulated one obviously), you will get better results. According to the HP48 FAQ, you *might* be able to get this working if you can disable IrDa protocol on your PC. Your 2400 baud setting is appropriate. See: http://www.engr.uvic.ca/~aschoorl/faq/48faq-6.html#ss6.9 for more details. one method is described in the manual. If you don't find it there, you could try the FAQ on hpcalc.org;-) sorry it does _not_ work on the HP48! PARTFRAC is part of the CAS of the HP49. You need ALG48 or Erable (do not know at the moment) to do this. Which calc do you _exacly_ have? HP48 S or SX or G or G+ or GX? Oh no, I missed the model again. Sorry Christian, no PARTFRAC built-in in the HP48 models. But there is software for this, as Matthias said. whether its possible controled a DC motor using RS-232 port. I know that I need a interface or adapter electronic. Please send me a example program of the use of the rs-232 port. Whether anybody alredy did something similar please thech me. Which calculator? In any case, visit http://www.hpcalc.org/, there might be something there. In particular, get http://www.hpcalc.org/hp48/docs/programming/48techni.zip, it may be helpful. But note that XON/XOFF serial flow control doesn't work on the 49G. conclusion that my flash was corrupted because my calc only reports 123Kb free of flash and then I uploaded the banks to the PC and sent cleared all the entries in the Filer and with the help of the download menu I have erased banks 8 to 15 (user banks the banks ? I don't found this option in any diagnostic menu. I tried to copy the bank to home but all i get is a string with something in binary. What i meant was, when performing a transformation between Lapalce-domain and Z-domain. The laplacian expression G(s) = 1/ S^n will end up being equal to the z-domain expression given by : G(z) = (T^N-1)/(N-1)! * (-z d/dz)^N-1* z-(z-1) The two expressions should be equal to each other, but i'am not sure if this correct. If you evaluate G(z) and do the inverse transform, then you should have the original expression if your algorithms are OK. But perhaps you should get http://www.hpcalc.org/hp49/math/symbolic/neopv8x1.zip This is a library with Laplace- and z-transforms and inverse transforms. :-)) Lars We're doing non standard (IE mean not equal to 0 and std dev. of 1) normal distributions and I'm curious if the HP has a function to do these. What I've been doing so far is to code a program that turns the data into a standard normal distribution Zscore then converting that to an probability using RPNstat and Ztab. Sample problem: In redesigning get ejection seats to better accomadate women as pilots, it is found that women's weights are normally distributed with a mean of 143lbs and a std. dev. of 29lbs. If a woman is randomly selected what is the probabiltiy that she weighs between 143 lbs and 201 lbs. Answer: 0.4772 What I've been doing is finding the standard normal dist. Zscore by making a program using the equation (value (201 in this case) - mean) / std. dev. Then punching it into the ztab to get the probability (or area). However if one value is not the mean you have to do the whole process twice and add/sub the probabilities. The Ti's have a function that takes the (value (143), value (201, mean, std. distb) and returns the probability. Does the HP have a similar function. I tried UTPN with no luck. Just curious if I'm missing a easier way to do it, or if there is a stats program out there with such a function I haven't come across yet. There is a function in both the hp48 and hp49, and may be in other hps too, which takes x and the mean and the variance (square of standard The function name is UTPN, for Upper Tail Probability, Normal. Dealing with your problem, the P[a <= x <= b], given mean m and standard deviation s is the value of the algebraic 'UTPN(a,m,s^2)-UTPN(b,m,s^2)' Using RPN: 143 143 29 SQ UTPN 143 201 29 sq UTPN - using an algebraic: 'UTPN(143,143,29^2)-UTPN(143,201,29^2)' EVAL Assuming that it works the same on the 48/49, one interesting feature of the UTPN function (which appears on the 38G, 39G and 40G also) is that it can also give lower tailed probabilities, which is often the way the normal distribution is explained in text books. The order of parameters on the 38/39/40 is UTPN(mean, variance, x_val) and this normal curve if you reverse this to UTPN(x_val, variance, mean) then you will get the probability of a value <= x_val instead. If you consider what happens in the formula z = (x_val - mean)/std.dev. when you swap the x_val and mean and the fact that the upper tail of -z is the same as the lower tail of +z then you'll see why. For more details see my web site FAQ page (question #49) at the address below. -- Colin Croft Old mathematicians never die; they just lose some of their functions. ====================================== Applications in Mathematics http://members.iinet.net.au/~ccroft/ ====================================== It's easy to put every special statistics feature from a TI into your hp using userRPL. When I did my statistics class I had them all on my calculator in a 'NCDF' in my NDIST folder. I have all the functions somewhere on my computer. If you'd like i can send it to you (if i can find it that is!). See, how it works is that TI put a whole lot of these advanced functions into TW P.S. I know that program isnt the most effecient, or smalest. I'm just going from memory here. :o) ~The enemy's gate is down. Tim, far that's what I've been doing just making small programs to do the functions I need as long as I can figure out what commands I need to use to make up the program. :) I always thought it would be nice to just punch stuff in and get answers, now I wish the class went through what was actually going on a little more....*DOH* Todd Hmmm, This is odd, when I enter 143, 201, 29^2 and hit UTPN it returns 0. It returns the same for 143, 143, 29^2 Might I have a flag set that I shouldn't? Also for some reason I got a syntax error on UTPN when trying to use it in a userRPL program as above. .. normal into a probability it is making dev if stats Wrong!! Should be: 'UTPN(b,s^2,m)-UTPN(a,s^2,m)' Wrong!! Should be: 201 29 SQ 143 UTPN 143 29 SQ 143 UTPN - Wrong!! Should be: 'UTPN(201,29^2,143)-UTPN(143,29^2,143)' EVAL BTW, great tip from Colin Croft to get the lower tail side, this tip is used here. And here answering my own question, UPTN isn't (value, mean, variance) it's (mean, variance, value) Also interesting is if you reverse them it gives the lower-tail prob. The Flag is set (I can see it in the Flags-menu). I unchecked it, and checked it again, but it didn't help. My calculator works like windows, argh... Sorry, I answered your question, before you said that flag -100 is set. Perhaps a warm start would help. (ON-C) Just discovered something that might be of interest to you. When you have a symbolic matrix and the step-by-step mode is on, then the calc shows the steps of RREF. But when the matrix isn't symbolic, that is when it contains real numbers ( for example 3. instead of 3 ) then RREF immediately gives the result, even if step-by-step is on. So perhaps the matrix that you stored in 'M' is a real martix. Convert it to a symbolic matrix by putting it on the stack and using the command XQ. If you now do a RREF with step-by-step on, then it should work. The HP49G is a powerful but also a complex machine. It takes time to understand how it does what it does. : Oops! sorry, I meant Step/Step.. the CAS/ROM update for the HP49 is an update of the software that the calc uses for operating and solving problems. (Computer Algebra System http://www.hpcalc.org/hp49/pc/rom/ The updates are named ROM 1.xx . The newest update there is the Unsupported Beta ROM 1.19-5 . Don't worry because it is a beta. It is already very very stable. (I use it with no problems at all.) But the very last beta ROM, with the updated CAS, is in Mr. Parisse's ftp. I don't remember the site, but search google to find it. You left the poor HP alone for months, you cruel person! ;-) First check if the contrast is very low. You can adjust it by pressing simoultaneously ON and + for higher contrast or ON and - for lower contrast. If this doesn't help then try a memory reset. Press at the same time the keys ON , A and F. If the HP48G asks you to recover memory, then press NO. Or you could take out the rubber foot. (Which one, I don't know exactly, but on my HP48GX it is the top right when you look the back of the calc.) Under the foot you see a small hole and the letter R beside it. Insert a paper clip in this hole. This resets the machine. It should wake up again. I'd like to try it, Wolfgang, but on all the downloads of Unitman I've made, both from hpcalc.org and this link, I've been unable to transfer it to my HP48. The file Unitman doesn't come across as a text file, and the program I use (HP's own Link 48) doesn't see it unless I can get it set up as a text file. Link 48 sees the read me file with it, but not the file itself. Unitman is the only file I've had this problem with, others come across fine. Have you had problems with downloading other libraries to your calc too? I'm not sure why this happens. As far as I know link48 only uses kermit protocoll (which is slower on the HP48). Maybe you forgot to set the transfer to binary in link48? Ah, that anwers my question above. a binary file which must be transfered in binary mode (with kermit or xmodem protocoll) I don't use the link48 program myself, but... that's how I download all libs to my calc: 1) connect the PC to the HP 2) start any terminal program (I use the old terminal.exe from win3.1, hyperterminal from Win9x will work too) 3) set the terminal program to use XMODEM protocoll and to use a baud rate of 9600. Xon/Xoff, no parity and to 8 data and 1 stop bits. 4) type a (temporary) name for the file into your HP48 5) select the file you want to download in the terminal program (send binary or something like that) and start the download on the PC 6) THEN (the temporary name you've choosen is still on level one of the stack) type XRECV and press the ENTER key on your HP48 or call the command from the LeftShifted second page of the I/O menu. 7) Voila :-) The file will be transfered 8) install the lib as usual (type 0 STO to store the lib in port 0 for exmaple). BTW, you can also transfer text files and UserRPL programs in that way, but have to decode them on your HP48. John H. Meyers has written a little, but great program to do this (I think it's called emu48asc or asc48emu -- you'll find it on hpcalc.org). That saves some time and battery :) Unitman 7.2001 on hpcalc.org defenses itself by an option Upgrd. It was a hard work to eliminiate ROM dependence, but I did it in vers. 8.2001, on my site. Independence has to be payed with an (about) 60 bytes larger assignment on the UNITS key. But as a recompensation, 8.2001 has 60 bytes less than 7.2001. Also users of Keyman should remember: mode sensitive assignments must perhaps be revised after upgrading. Although the keys do not change their functionalty, in general, pointers occurring in the standard assignments tend to change. These assignments aren't anymore stable pointers as they were in the HP48. Sorry for bother three times in a row... The last CAS from MR. Parisse comes with ROM 1.19-4 (correct me if I am wrong). I have ROM 1.1-5. Upgrading the CAS will downgrade the ROM? If yes, upgrading the ROM again will downgrade the CAS? That may be a funny (read stupid) question but it seems coherent. What you guys think about it (sorry for bother again): 1) Make the following test: press on-c, put a number on the stack (or a object) end now CMD. At my calculator the number is repeated four times!! It is a bug? 2) MINEISBETTER - up - SIMP do not open tetris 3) Using CQIF on DoNewEqw I get FPTR 1 141. According to the tutorial it should be FPTR 1 339. Do you think that my ROM may be corrupted? I use ROM 1.19-5 with CAS 4.20001013 Rafael Why complain about getting more than you asked for? ;-) This feature is carried over from the HP48G (or earlier); it will display four strings, no matter what, and if fewer than four strings have yet been saved (all were cleared out by ON+C) then the list wraps back to the beginning and continues. Well, as they say, It's only a game ;-) Have you tried offering it a bribe to do what you want? RPLMAN.DOC, page 102, chapter 20.8.1: 2. In practice, it is best to use the word XYGROBDISP to place a grob into the display grob. The word XYGROBDISP is conservative in nature - if the graphic to be placed in HARDBUFF would exceed the boundaries of HARDBUFF, the HARDBUFF grob is enlarged to accomodate the new grob. ote: because x^(-A) is evaluated to 1/exp(...). The x^a case is essentially solved using a lookup, that fails when x^-A is tranformed. Some of these pointers (^MATINV for instance) crached my hp49 (1.18). Is this a version problem, you think?? Are there any other entrypoints I can try? no i didnt, i installed it now and it works fine, thanks. there is another file called table.hp when i downloaded extable, do i need that installed aswell?? HP49, if it's possible. That's because I'd like to create my own set of fonts based on system fonts, preserving the orginal ones. I've thinked to operate on a copy of the system fonts 'cause I want only to add some extra math signs... leaving unchanged all the letters, numbers and many others signs. Use chars tool to edit the system font. You could also use FONT8, FONT7 or FONT6 to (extract and) put the corresponding system font on the stack and then edit it. (down question... Anyway I've another one! :) Why the first character of a font is not printable? I mean when selecting by chars the first caracters the soft button MODIF is available, but I cant ECHO or ECHO1. Why? I've readed HP49 Font Structure on hpcalc.org, but can't find anything useful... And if it isn't printable and not used as a control character why is it there? :) Bye and thanks again... Kickaha Can't Edit Null Character (in text); therefore, can't *insert* null character either. Well, I would suggest, to clean it up thoroughly and keep it. I think after 10 years it could be a collector's item. Then you'll one of the proud ones that have it and we'll all say You lucky guy! I'm sorry, but the HP-producers built a very strange calculator (maybe I'm to stupid). Now I tried to make a custom-menu. I took the example of the manuel, and changed it. The example was: {{m^3,'1_m^s'},{VOL,VOLUME},{TIME,'TIME()'}} I changed it to: When I press ENTER, it marks the second bracket behind INTVX. ( the ) ) when you type {{INTE,'INTVX()'},{RREF,'RREF()'}} The first part inte is the string the will appear in the menu. the second part is what the calculator will do. In your case its a command and (i am not Remember THIS EXPLANATION IS FOR RPN MODE!! Rafael The form that you typed its also wrong. It must be like { { inte { << intvx ^^ ^^ I guess you're using algebraic mode, but you should really switch to RPN if you want to be able to access the full power of the HP49. To do a differentiation on the HP48GX: Enter the equation or expression, then enter the variable to differentiate for, and press d . (d is the curly differentiation symbol) If you have something like y=sin(x) and you want to get the left side also differentiated, you should enter the equation as y(x)=sin(x). This way you tell the HP48GX: y is a function of x. the attention, and to you for replying to my post. It isn't my intention to be polemic... I apologize if I gave this impression. In fact the people on the NG is very competent and in many cases very busy... so I don't expect answers in secs or perfect answers on any topic (BTW if someone knows why we are here, where are we going and why, I encourage him to give me some hints on that ;)). I only supposed (and I was wrong) that my question is easy to answer or almost a FAQ. Actually it was exactly the opposite. I append the Christoph This for sure! I think free software, free collaboration, GNU and similar are great things and have to be encouraged in any way... Unfortunately I'm not so skilled to surf through EMU48 code modifying it... maybe a day when I have some time to master C++... Bye, Kickaha ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ posting. And he's right, your question is very difficult to answer, also for me. The interpreter and thanks goodness the code is quite stable, so that I have done only some minor fixes inside this Emu48 code part. I also append to the new releases of the KML_20.doc only the parts I added or changed, the rest is of any KML script, so there're a lot of poeple out there who have more experince writing KML scripts. I personaly also have to check the sources to explore the background of some functions or KML commands and I beg your pardon, I haven't the time to do this. So I can't give you detailed help. when you press the key, 2nd when you release the key. To distinguish these two states you can use the IfPressed command. Because of that Map 20 [Alpha Button] Map 20 [Alpha Button] couldn't work, because the key isn't released between the two MAP calls. I don't know the work of the Press and Release command. The flags are only marker. One sample is for example getting alway get the corresponding character of the key when the PC CTRL key is pressed. Because you can't ask Eey keyboard, tell me is the CTRL key is pressed?, you have to set a marker (or flag) when you're detecting a pressed CTRL key. Then when detecting a character key you can ask, Hey maker of the CRTL key, are you set? I the answer is yes, you can do a MAP a b # pressing the alpha key MAP c d # pressing the character key That's should work, but remember you have no chance to ask the state of the alpha key state or, on the HP49G if you need one or two alpha key press for alpha lock. document may be correct. I would like to know How can i do more difficult to split my libraries on hp 48 and 49?, i don't know anything about SYSRPL, i just use USERRPL. I will be so happy when you can help me and you tell me or give me a program that it helps me I tried to use some software and games from http://www.hpcalc.org, but I didn't get it started. For example the game babal has 3 entries in the file-menu. The files are commented with Xname. How can I run them? First, read the FAQ http://www.engr.uvic.ca/~aschoorl/faq/ then read the manual. I didn't find an answer. The FAQ ist mainly for the 48 And my manual doesn't say how to run this files. But I think, it can't be so difficult, that nobody can explain it to me with 3 short sentences. Greetings, Jonas i'd like to know, if it's possible internal serials of my calculators 49 and 48,. I hope you can help me to answer my question well if it was OS 9.x then the connecting would require to connect a modem to the hp49 and let the two modems communicate. I use a very old modem, connected to the HP49 and I send AT-commands to it with XMIT. On the iMac I use the communication part of ClarisWorks to setup the modem of the iMac. But on OS X, I don't know. Oh thanks, I'll do it as soon as I get back home from work. The command that you need is INFORM. Its syntax and arguments are explained in the manual, but here is also a brief explanation: The arguments are: Level 5: A string which represents the titel of the dialog. Level 4: A List with the input fields. It is made up as follows: { } } ..................................................................... } } Level 3: A list with the format (two real numbers): { NumberOfColumns SizeOfInputField } Level 2: A list with the values that should appear in the input fields if you press RESET. Level 1: A list with the initial values that should appear in the input fields. The built-in INFORM command doesn't allow to use the whole power of the inform screens. But there is the library InFormBuilder available at http://www.hpcalc.org which allowes to build an inform screen using a very nice grafical interface. (Move fields around, size them etc.) Get it, you won't regret it. And it seems to me, that a brand new HP-calc should eliminate these problems. One that is designed and constructed from the scratch, instead of making old things better. The HP49 is still a very good machine, but sometimes a new start is even better. (Of course I only consider the technological side here. I admit that I don't have a clue about marketing and such things.) Is there such a command? I only do it pressing MODES, or programmatically with something like << { HOME CASDIR } EVAL varname 'VX' STO path EVAL how can i calculate a polynom division with the HP49. e.g.: 2x^2+6xy^2 / 3y^2+x the result should be 2x Just use EXPAND. becaus he is calculating a second, but then simply nothing happens. no error no 2x-solution. I've now tried the whole ALG-menu but nothing seems to work. Yeap!! And if the division leaves a rest, you can put the two polynoms on the stack and use the command DIV2. Are you sure you are writing the expression as '2*x^2+6*x*y^2/3*y^2+x'? Implied mulitiplication does not work between variables. If you write '6xy^2', the calc reads this as the variable 'xy' squared times 6. Even EVAL works for me too. Can you please explain what you mean, by saying confirming this relationship? What exactly must be confirmed? I would be glad to help you, but I didn't understand. Another problem is, that the step-by-step-modus suddenly didn't work anymore. I used RREF to solve a matrix. The first time, it showed me every step, but now it shows instantly the result, within less than one second. Even when I type the matrix again (I've stored it in M), I only get the result. [MODE][CAS] then check (F3) Approx. Alternatively, in RPN mode, -100 SF (In ALG mode SF{-100), I guess..!) Why approx? However, Approx, Step/Step and Flag 100 is set, but nevertheless I have the problem! Flag -100 must be set for the step-by-step mode. Just type -100 SF Did it help? Go to the MODES screen and press F3 (CAS) and see if the step by step is activated. You may have changed the state of this flag or a program that you ran make this. My HP48G have been without batteries for months because I didn't need to use. But now I decided to use it again but it doesn't turn on even if I put new batteries in it. Does anybody know what the problem is and how to fix it? ==