B27 When I buyed my calculator, I wondered about the polnic notation. This is really uncomfortable. There seem to be only 3 possibilities to get away from this shit: 1. Using the equation writer. This cost A LOT OF time and I always have to manually say go into algebraic mode and finally press the EVAL-Button. 2. Using the algebraic mode by pressing the '-Key. This ist fast, but not more comfortable then the equation-writer: First I have to press the '-Key, than type in my math. expression, press ENTER and EVAL. Not comfortable, too. 3. Using a algebraic-simulator. I've found 2 programme: algebraic calculator and calc III. the algebraic calculator is much to slow, and with calc III, I can not use ( or the equation-writer. Calc III has some bugs, too. So, anyone has a good suggestion how to use the HP48G as a calculator? My Ti30X (simple, cheap calculator) is easier to use. Joachim Get a HP49. There you've all possibilities to get rid of the shit. - Wolfgang PS. I wonder what level has the Technical 1A. Use the HP for a week, and you'll never go back to algebraic You don't need to type ENTER, just EVAL. That would be a bit like buying a top-of-the-line aircraft and installing a set of WWI-era controls to fly it. I'm affraid HP49 would be much more beyond his capabilities. First, he should try to learn how to use an abacus. I can guess: Business & Management faculty is pretty strong... ;-) Sorry I couldn't help myself :-) Once I learned RPN I forgot about using algebraic notation for entering data. I will never do it again - slow, ineficient, error-prone relic of stone era. (I love HP48G which I own for 4 years; I saw HP49G in store twice but couldn't decide to buy it - I still have mixed feelings about it...) Polish Notation (PN) was developed at the begin of the 20th century in Lw227w (Lemberg). At that time a famous Polish center of mathematics and logic. PN was not invented by Lukasiewicz alone but was a teamwork of several logicians, to handle axiomatic investigations in formal calculi of two- or many-valued logic. RPN, used in several programming languages (not only by HP) is simply the reversed or mirrored notation. It is totally simple and natural, easily understood by a 7 year old child not yet spoiled by the medievian bracket notation of arithmetical terms. Why then the bracket notation is still in use? The ansnwer is simple: Our brain, if not specially trained, doesn't like reading condensed information - in contrast to computers. It likes it to be thinned, similarly to our preference of thinned alcohol over some 98%-alcohol drinks, say :-) The bracket notation also goes slightly more conform with the way of speaking in most natural languages, although one can imagin other civilizations which use a bracket-free notation throughout. .. Pretty good! Where did you learn Polish? I've been thinking about extending RAM in my HP48G. But having 'flash' ROM would also be nice - that why I still cannot decide whether to stay with 48 or switch to 49. 49 seems to be more powerfull and much more featured/sophisticated. It is very frustrating that 49's built quality is so poor. [...] I think you are partailly right. I like 'algebraic' display. But, despite I'm a human, I much stronger prefer RPN for entering data. (However, I still prefer beer to 98% alcohol...) Well, my brain melted when I tried to use more than 5 levels of parenthesis. ;-) 'Algebraic' notation only looks 'cool' but for extensive number crunching is 'a pain in the ass'. 4. Learn to use Polish notation! It really is quite easy and natural once you get the hang of it - I always make mistakes and strugle when using a non RPN calculator now. The great thin about RPN on the 48 is you actually see the stack making it even easier to learn. I think the build quality of the HP49G is at least as good as the HP48. I have dropped my HP49G twice on the floor, without it even stopping to calculate. Mine has probably been on for about 1600-2000 hours (got it when it was released), all keys are still pristine, the screen has no scratches, the serial port works fine, and nothing is wrong with it. Appears to work OK on my 48G. Why anyone would want to do it is another matter entirely! the size should be 109 and the checksum should be #C58Eh When you use the program, the two single-quote characters should already appear, and what you then type gets inserted *between* these two characters, automatically creating an algebraic expression like this: '5+8' If you left out the quote characters from the program string (or the number 2 in the list, which initially positions the cursor during INPUT), then this might not have worked for you. Does anyone in the HP world know, or can give any indication on how long the HP48 models are going to be still made? I currently have both a HP48GX and HP49G with many programs for them. I find the HP48GX a more practical calculator for my line of work and am happy that this model is now stable although I will admit that the HP49G is a far superior calculator. Why am I asking do you say? Well I'm a bit concerned that HP decided to discontinue the HP42 models a year or so ago and would hope the HP48 doesn't suffer the same outcome as well in the short term. I hope the HP48 models still continues for at least the next 10 years. the quality, RPN & named variables. I dislike the screen contrast & speed. I had to use a TI83+ for a statistics class and I am comfortable with it but every time I use it I feel like I am using a toy. Every time I use the HP48 I feel like I am using a ten-year-old computer. Is there light at the end of the tunnel? Are there faster ways to plot other than going through multiple menus? By the way, I currently use the TI83+ for class and the HP32SII for work. with the HP, you need to disable IRDA support in the OS, and then use the IRDA port as a non-standard serial port, set the speed to 4800, and that should work to send and recieve, using any protocol. I have not tried this yet, but perhaps it is worth a try. Another alternative is to build/buy a serial to IR converter, I have the schematics for a rather complicated one that I found by searching GOOGLE with the search IR RS-232 Transceiver. I plan to build it, not for this application though, for another controll project. Jon : I'm a newbie in 48G, so if anyone can explain me how to connect HP48G with : PC via IR? : I have IRDA adapter. I heard a rumor that the 48 is being discontinued. Can anyone in this group tell me if this is correct. If correct, when will this happen. Sorry if this is old news, I read old posts to try and get current. is it possible that my HP48G-calculator is untypical slow? For example, if I start programs like plot or time, it costs always about 1 second until the screen is completely drawed. Plotting the following function: - Type: function - metrics: Radiant - Equation:'1/X' - H-view -2 to 2 - V-View -10 to 10 - Autoscale: off in an empty picture (after pressing the erase-Button) takes about 12 seconds from the moment I press Draw until the busy-sign has gone. pressing Draw til the busy annunciator disappear btw, this takes 12.03 seconds (for 'sin(x)' stored in EQ) for me, according to TIM. Maybe you are using #2 RES ? Using this method takes 7.4 seconds. http://c51100-e.rchdsn1.tx.home.com/hp48/ppl134.zip or if you are feeling ambitious: http://c51100-e.rchdsn1.tx.home.com/hp48/ppf_03_beta.zip I don't know how the HP48's graphing utility works, but I'm guessing the reason for it being so slow is due to copious amounts of argument, error, and sanity checking. If you can spare the space in memory and you use graphing from time to time, you might want to check out one of the programs above. The second one is (as the filename suggests) a beta. -- the links are the zipped files of Power Plot Light and Power Plot for individual acknowledgement. I will try a software solution. I have not yet got a connection lead and have no idea what a userRPL is, so I have a lot to learn about the 48GX. I have been happy with my 41CV for the last 15 years, and had no idea that HP had made such advances in calculator technology. If anyone would like an HP41 printer (batteries completely u/s) and wand I will ship them to the first person who prepays carriage. I still occasionally use the card reader , although I had to make a new rubber wheel inside this as the original had become sticky through old age! Flash ROM is incomparably more convenient than any RAM card. Backup HOME is trivial on the HP49, but needs a lot of manipulation on a HP48G with RAM cards (mechanical write protection etc). I cannot confirm your claim on poor quality. My 1 year old 49 has been buisy over 1200 (!) hours which would have cost more then 100 expensive batteries (I use Rayovac rechargeables instead). Keys operate smooth and relyable. The only traces of an intensive use are that the coloured imprints on the DonwArrow and Backspace keys are gone. If I would have reclaimed warranty in time, CYNOX might have given me another one. But then I had to separate from my baby at least 15 days. That's too much, so I kept it and I love it more than ever. My backups are identical on my 48 or 49 (using simple programs); a port is a port is a port ... The Filer is nice, however (and is available for 48GX too!) Updating the ROM is actually the flashiest benefit (sayeth an owner of an HP48G, version M, forever condemned to remain frozen in its early 1993 infantile state :) I mean a s a f e backup, protected against crashes (clearly a necessity for a SysRPL programmer). Maybe you've got a Ramcard delux whose write protection can be controlled via program. I've only a cheap Ramcard from CYNOX whose write protection can be activated or deactivated only by opening the HP48GX card box :-) IMHO, a Filer is not needed on the HP48. Or do you have a 48-Filer which not only reads the contents of a write- protected RAM card but outwits its write protection for but erroneous purging and storing ;) I imagine that some people have managed to wipe out a high port, but does everyone remember Dave or Jim explaining how hard that would be to do on a 48? Of course, if you keep a port-to-port card copier program around, and accidentally execute it yourself... BTW, in Emu49, if you accidentally cause writing to port 2, then you can't undo it -- it's written into file rom.e49 -- but you can make that read-only on the computer, as opposed to being unable to make it read-only in the actual calculator. Wasn't there an MK (with a filer) for HP48? Why do we need it on a 49 but less so on a 48? Aside from the all-important CAS (with its EQW), and added details like hold/long/double... key assignments, what's the great difference between a 48 and a 49, and how does that impact needing/not needing a filer? I don't understand the argument; somehow I manage to treat my HP48 and 49 exactly the same (with virtually identical programs on them), including for making backups into high ports, and I have not heard exactly why it was any more impossible to unintentionally write into flash than to write into covered HP48 ports (but both impossibilities are reported by some people). I'd be happy to hear why the previously posted experiences of others were unrepresentative of reality, if they were. It even seems to me that flipping a card switch was extremely easy on a 48, and afforded a more absolute level of write protection there than a 49 can offer, since even UserRPL PURGE and STO can not be prevented from acting on port 2 in a 49, but can be prevented (by a proper RAM card) from acting on ports in a 48. Somehow I think that you have a different perspective, however, as we always seem to be on opposite sides of some kind of wall or curtain -- or maybe it's just the astrological difference between our time zones The things I love most about MK (apart from the stack replacement) are the Filer and the Matrixwriter (hate that it doesn't have a VEC toggle). Being a structural engineer I do not care a lot about the Equation Writer, nor about a CAS. To me it looks like all these people who are into the CAS are mathematics students? (or is structural engineering so easy compared to other fields? hmmm.....) In a way, yes, since flash chips need a special pin to be activated with the appropriate voltage to allow write operations. The fact that erasing/reorganizing a bank is a slow process allows the user to find out when something goes wrong. I had such unexplained losses, but they weren't (in my case) subsequent to SysRPL crashes. I think they were caused by the bug that came with an early version of the HP49's system. With the latest ROM (at least), I never lost anything from any port other than port zero, despite a few crashes (provoked by me, needless to say, although I have some doubts about EDITG). It happened to me *several times* to lose the contents of a protected RAM card in port 1 of a HP48GX. hard, because it required a reboot. In my experience, the HP49's port 2 has been more reliable than a write-protected RAM card in port 0. Looking for 128 ram card and/or 512 or 1meg for my hp48gx. (1-2Mb) cheeper than hp manifactured ones, they are really good product?!? And the double speed module whot is it? Can someone suggest a business contact,plz. I have bought RAM cards from http://www.dynatech.de/start.htm ,they are cheap, very good quality and the company is trustworthy IMHO. If you like the HP48 then stick with it - the changes made to turn it into the HP49 (squishy buttons, odd display, relocated enter key, no manuals) may drive you nuts. I was under the impression that if one were to install Erable and alg48, then the hp48gx would do the same symbolic CAS functionality as the 49G. What would be missing? I am in the process of deciding between the two. Unfortunately, the few you're talking about are probably the only who can run on a DOS based machine. And it will be REALLY slow. All the emulator I've seen running on DOS, require at least a Pentium 90. On a 80186 CPU running at 10Mhz, you're dreaming :) More straight-forward, better glare-free display, IR interface, plug-in cards, and if you don't need the CAS or long integers, you can save quite a few pennies when choosing for HP48GX I was under the impression that if one were to install Erable and alg48, then the hp48gx would do the same symbolic CAS functionality as the 49G. Is this not true? That way, you would have the hp48gx with CAS and symbolic or textbook screen display. Someone please correct this if it's wrong. I have no problem with the display, it seemed fine to me. The ir interface is useless, I haven't used it for a couple of years. It's only good if you have two HP48's (I did for awhile). Why do you need plug in cards? All the software you'll ever need is downloadable for free! The HP49 will be cheaper if you want a HP48 with the same amount of memory. Main reasons for buying a HP49: It is faster, and upgradeable! And if you want JAZZ on the 48, the next RAM card is due. Not only that each RAM card slows down the operations on the 48, you have also to watch several different batteries :-) No question, the 49 is not only cheaper but (I hope that my friend Raymond Hellstern doesn't I was going to get a 512KB memory card so I only have one installed. I find the 49g very difficult to read (my eyes don't work as well as when I was young). Also, I really hate the layout and the color of the 49g (I've used HP for years and love the way it was) so I guess I'm trying to make a 48GX (with extra 512KB) become a 49g. I may have to bite the bullet and just get the 49g and learn to live with it. I will feel like I have a TI with the 49g, though and I've been loyal to HP for 25 years. choice. (Many might say the 49G would always be the right choice, but this is just my opinion). Although the ACO team is very talented and they have really done a good job, the 49G is not the breakthrough the 48 was by the time it was introduced. If only there was a version with HP's traditional color and keyboard layout... But I think they are not worried about us old timers... The 48S and 48SX were soon followed by the 48G, GX, and recently by the 48G+. When will there be a successor for the 49G? I don't think so. If you dream of higher speed, then have a look at one of 'em German pages. They have something called SpeedUp MAX, which will double the speed of the HP48 ... I'm satisfied with my HP48GX (no need for speed or extra RAM, yet). When I heard that the HP49 has rubber buttons I felt disgusted. The feel of a HP48 is the way a top-class calculator should feel. Yeah, well couldn't you have said that at the start? Up to that last sentence I was under the impression I DID have to read and be subjected to your rant. -- All models with letter x are expandable, that's to say that you can add memory cards... HP48s(x) are 2MHz CPUs and not so user friendly interface, but very fast to use if youknow it well (it takes a little bit of time to learn, but it's fast to use...) HP48g(x) are 4MHz CPUs so they're supposed to be faster... sure they are faster to execute any program or to draw graphics, but the interface, much more user friendly is very slow... So, even if it's faster than the HP48s(x) models, it's not so much faster to use... (stack display that is slow in both cases is faster on HP48g(x)...) memory: HP48gx and HP48g+ are 128KB ram, while HP48s(x) and HP48g are 32KB... the advantage is very important... expecially if you want to install a stacker (accelerates stack display...) RPN vs algebraic: All HP48 models works on RPN notation, but as you can type an equation in algrbraic mode and then execute it, you can also use algebraic mode... (but it's not a non HP calculator algebraic mode... it's not direct...) HP48s HP48g(+) vs HP48sx and HP48gx Cards are very expansive (especially those from HP...) so most of the users doesn't own some... and vs HP49? HP49 is faster (because every slow parts of the operating system had been re-developped), has more memory, is easier to use, and most of the new softwares are now developped on 49... HP49 doesn't have a bi-directionnar IR interface, but you need a cable (included in the box I heard...) HP49 is not faster than the HP48 for RPL and Assembly programs as the CPU is not faster... i try to use my HP48G as a display on my caldera linux system. my problem is, when i conncect my hp to my pc its not possible to see date on my pc-monitor. i made xmit test on my hp and saw nothing my pc where i made cat /dev/ttyS0 on my hp i have iopar {9600 0 0 1 3 0} and on my linux i have called stty -F /dev/ttyS0 -evenp -cstopb cread clocal -crtscts -inpck -inlcr -icrnl igncr ixon ixoff -iuclc -ocrnl -onlcr -onocr -onlret 9600 when i connect the hp48 to a windows-pc and hyperteminal 9600 8N0 everething works fine. with mldisp.lib and some programmig on hp48 i want to display information, which i want do grep over the serial-interface. so it must be possible to use the hp48 as a display for an linux-mp3-player. (i want use mp3-stereo) some parts of circuits in which they are living; I can't be positive that this is why my microwave oven went on strike recently, but it was the strangest thing -- although the wall power was on and the device clock and display were working fine, the darned thing just suddenly refused to turn on and cook (not even at zero power, which is really just a kitchen timer function), not even after unplugging from the wall for a while and then plugging back in. But suddenly, as if some evil in-dwelling spirit just decided to pack up and leave, it recovered spontaneously, and has ever since been giving faithful service! If you're desperate enough to try some more daring treatments, you might even go so far as to wash it out with dry-cleaning fluid (e.g. perchloroethylene), which is actually used to clean PC boards, at least where I used to work -- or ask Joe Horn for his famous shampoo recipe, and let us know whether any miracles take place, even this long after Easter :) Not kidding about Joe's recipe: http://groups.google.com/groups?ic=1&selm=713n41%24bcu%241%40nnrp1.dejanews. com Joe never did reveal the secret of what brand of shampoo he used, however (is he negotiating for TV sales of his miracle restorer?) Whoever told you that must have had a memory lapse. The 48 series, so we've been told, has some sort of internal circutry built in that prevents shorting out the battery terminals. This works great for the financial and scientific calcs, but on the graphing calculators it does no good. The only reason you would short the terminals on a calculator would be to discharge will accomplish this just fine. (Doing it with the batteries in cab cycle the bad energy through batteries and back into the unit.) Also, are you _SURE_ you said it was 48GX. Those can be sent into the service center no problem. As mentioned in another post, this doesn't work on a 48. I have to agree with the previous person that this is not a good recommendation. Had a guy call in last month who inserted the batteries into his 17BII backwards and it was causing the unit to drain batteries within three days or less. I mean, if you're going to throw the unit out anyway I suppose there is no harm in giving it a try, but this falls into one of those last ditch effort ONLY fixes. normal use. I have seen other models of HP calculators fail the same way. The ON key tends to be the first feature of an HP calculator to fail. I assume the contacts either wear out or corrode. I have seen other keys fail as well. Definitely a 48GX, unless HP have taken to mislabelling their calculators 8-). I am in Australia so maybe they don't repair them here - I'll given them another call to be sure. That may be the issue and I should have qualified the statement appropriately. Here in the states we can swap them out through the repair center. The fact that we have different repair policies in different countries tends to be a bit annoying for us, and I'm sure more so for you. My turn to qualify my answer. We do have a 'swap over' policy here in Australia as well, though not a repair your original unit and hand it back type of repair. Unfortunately the swap over option is just $6 short of the price of a new calculator, so its probably not a well patronised option. I have invested in the Reference manual as well for this unit, which has been very useful. If the swap over price was less than 50% of the original purchase price I might consider it, but as it stands, other alternatives are looking more attractive. Many years ago I purchased a HP150 deskjet, one of the earlier inkjet models. Three years later it died. We called HP and they sent someone out to fix it, which basically involved replacing the internals - no charge. Now that is service! I guess I am still not convinced that new features and whizz bang marketing are more important than reliability and service. Espically when you consider that it will probably cost you $6 to ship it to them. Our swap out fees tend to be slightly over 1/3rd the cost of a new one, so generally speaking its worth the cost. Sorry to hear its not as good of a deal for you in OZ. Abour four years ago when I was on Pavilion they did this for the PCs (but not the printers) and it was a really nice service. As I was leaving the Pavilion group about 2 1/2 years ago they were beginning to shy away from this, although I don't know what the policy is now. What ends up happening is that service like this ends up being built into the cost of the unit and, with the computer sales being so comptetive, often services like this get cut so that overhead can be reduced and cut down the end user purchase price. Really, its a double edged sword. On the one hand, the pampering services are nice to have but on the other hand, nobody wants to pay for them up front. But I digress..... very provides Thanx for your reply... However I wonder if it's possible to buy another screen as a part from HP in the case I broke it (that's, in my mind, the more important question). That's only if it's possible to relocate it in its place, sure. [...] I've never heard about anybody complaning about this but if changes have been made it is in the right direction... I submit you another one: instead of displaying a lot of uneeded parenthesis with negative numbers like -(2*x) could the display be changed to -2*x. It seems it's in the way EQW understands the object (cf tree representation as said in the manual) What do you think about this ? When try to update to Rom 1.19-5, got this messge: Error Invalid Bank, i go to download menu and try to format bank # 3 why this say invalid bank, and then got this error erase fail locked block, i format other bank's without problem,but bank # 3 got error Locked Block, the calculator is now without system, i can`t execute any command, calculator serial is CN10100115. I can format any Bank, but Bank # 3 not. I was thinking of recoursive functions on the HP49G and the following came into my mind: The definition 'f(x)=not f(x)' is possible on the HP49. But once the function 'f' is defined, it contradicts itself. If something is put on the stack and the soft key for 'f' is pressed then it will take an oo umount of time for the HP49G to give a result, because it tries to find not(f(x)), which is not(not(f(x))), which is not(not(not(f(x))))...... Now the question is: is this a hint that the HP49 reached such a complexity that the incompleteness theorem holds? Pr. Parisse? Your post refer me to recursive programs. The function 'f(x)=not f(x)' is clearly recursive ('f(x)=f(x)+1' is also recursive). But I didn't manage to reach an infinite loop state in the 49 following your way. eval, you get 'x+3=not x+3'. If x=5 another eval return '8=0'. Can you be more specific? Recursivity is an elegant (but slow in the hp4x) way to solve some problems. Luckily we have it on hp4x, for experiment at least. I was thinking of recoursive functions on the HP49G and the following came into my mind: Your post refer me to recursive programs. The function 'f(x)=not f(x)' is clearly recursive I'm sorry for the brilliant deduction and explanation. I miss the reading of your first phrase. By the way... Any recursivity implies a question to stop it. Then recursive functions MUST include some ift or ifte. If not you must make a program for them. The definition f(x)=not f(x) is indeed recursive. But: Recursive definitions don't have to be programmed with a real world that in f. Just put the algebraic 'f(x)=not f(x)' on the stack and in variable f. Type now 2 ENTER and then the menu key for f, or something else and then the menu key for f. Your HP is not going to get out of the dilema. It is not important if f does calculations like the one you talked about. We just consider a generic function which gives the negation of itself. We use the recursive definition to construct a mathematical expression that says something about itself. It says I am NOT myself which is related to the incompletness theorem, if I did not completely forget my math lessons a couple of years ago Definetely not. It needs a condition to stop only if it is intented to stop at some point. (To calculate Fibonacci numbers and the like.) But what this definition says is: I am NOT myself. We define it as 'f(x)=NOT f(x)' DEF. There is no mathematical reason for defining more than this, if we only consider something that says something about itself. So we could also do 'f(x)=f(x)^2-1' DEF or anything else. It is not a value of a function that we care for in this case, but the mathematical sentence 'f(x)=something' itself. Perhaps someone can explain it better ?? Didn't saw yor point in the previous message. What you get after the DEF is a self-referencing PROGRAM (we call it recursive ;) It's not a Mathematical statement, it's just a PROGRAM Aren't you having unrealistic expectations of what this electronic system should be able to do? ;) If yes, then it isn't a defect (or bug) I understand your point well enough. But it mixes two very different things. The calc can't undertand a mathematical concept definition in this way. It just get your definition, translate it and create a program that you can run. Then if your definition of the generic function is indeed recursive, the resulting program will be recursive also. A recursive program NEED the stop condition! It's critical. Without this, it never know when to stop and you have the result you saw in the 49. In the old HP28s you can even store 'x' in 'x' and get the same result. In the new models you have the Circular Reference error and can avoid this obvious mistake. But if we want to go further and eliminate the 'F(x)=not F(x)' problem we can end up with no recursive capabilities at all. The main point is: Mathematical sentences (definitions or else) and programs are different things and HP49 only understand the seconds. Of course may be you can make the 49 understand some mathematical sentences, but in that case you need to translate the sentence to the calculator language and not pre-suppose that it will understand yours. So, you mean that mathematical statements and programs don't have anything to do with each other? Should we run out of our homes, screaming: Turing was a cheater? I don't think so. But I will try to explain. First of all: All things that the HP49 returns, are returned because some programs run. Does this mean, that you can't do maths on the HP49? No! In fact you can do much more than the boring things like solving polynomials and the like. Maths is not only that. Second: A mathematical operation has by no means to only eat a value and return a value. Third: Let us consider a problem, that has to do with the incompleteness theorem. Consider a barber that only shaves those men of the village who don't shave themselves. The question is: Does he shave himself? If you think that this is not maths, then don't read further. But if you do, let's think about it. Let us first examine this in our language. If the barber shaves himself then he belongs to the set of men, who the barber doesn't shave. That means he doesn't shave himself. If he doesn't shave himself, then he belongs to the set of men, who the barber shaves. That means he shaves himself. This can be continued ad infinitum, without deciding if the sentence Barber shaves himself is TRUE or FALSE. We clearly see, that the system of a set: the men of the village and of axioms: Barber shaves only those who don't shave themselves contains a sentence: Barber shaves himself for which no decision can be made, if it is TRUE or FALSE. Now, G232del has proven (strictly mathematicaly), that this incompleteness applies to all mathematics!!! This is the incompleteness theorem. Let us try to translate our thoughts in the language of the HP49. That means *code* them in words that the HP49 understands. We can construct a function, which tells us if some man of the village shaves himself. This can be done considering the mapping: which simply tells: if someone shaves himself (argument 1), then he shaves himself (result 1) if someone doesn't shave himself (argument 0), then he doesn't shaves himself (result 0) The operation shaves himself can be DEFined as 'G(X)=X'. A very trivial definition, but it helps to understand. Type 'G(X)=X' DEF. The HP49 stores to do anything with functions? ;-) ) Now let us try to code the operation Barber shaves someone. Consider the mapping: which tells: if someone shaves himself (argument 1), then the barber does not shave him(result 0) if someone doesn't shave himself (argument 0), then the barber shaves him(result 1). This operation can be DEFined as: 'F(X)=NOT G(X)' (We could also DEFine it as 'F(X)=NOT X', but this DEFinition does not allow us to see, that the defined operation negates G.) Type 'F(X)=NOT G(X)' DEF The HP49 stores which is equivalent to: And now comes the twist. Is the defined function F perfect? No! Why! Because it does not consider the barber to be a special case. It handles him just like any other man. This is not the case, as we previously have shown. But consider now G(X), where X is the argument for the barber. Then G(X) tells us if someone shaves himself, that is if the barber shaves himself. Consider also F(X), where X is the argument for the barber. F then tells us if the barber shaves someone, that is if the barber shaves the barber. We see, that the two operations F and G in the case of the barber-argument tell us the same. (if the barber shaves himself case of the barber) That is why we must change 'F(X)=NOT G(X)' to 'F(X)=NOT F(X)' in the case, where we consider the barber himself. The evaluation of this F(X) is impossible, like it should be. (The HP49 repeats calling F ad infinitum, with the given argument X.) We could also constract a function F that takes two arguments: 1 or 0 on level 2 (1 if we consider the barber, 0 if we consider any other man) 1 or 0 on level 2 (1 if someone shaves himself, 0 if not) and the function would be: << from level 1, and returns if the barber shaves the coded who (1) or not (0) , or in the case of who=1 (the barber) continues ad infinitum trying to find if the barber shaves himself. As you see, the system HP49 allows more investigations than those that we talk about most of the time. Consider for example some definition like: 'F(a,b)=F(a,b)=(a*X^2-b)/(a*b)' definition of a...metamathematics ;-) ) No, I don't. I do not expect anything a priori. I study maths, try to code the HP49 and observe what it does. And in this case, it is a surprise to me, that such an easy definition leads to such consequences. Keep your eyes open, the wonders are in front of you :-) I am not going to explain it again, since this is done in my last message. (So we save some space and band width ;-) ) But I tell you again: Math statements, can be *coded* as programs and if we are careful enough then we have a 1 to 1 relation between maths and coded programs. The programs can be thought as one kind of representation of the mathematical statements. The representation itself is not the important thing, but the logic behind it. Math is *not* x^2 and the like. This is only its representation, the language that we use in order to make it understandable with few words. Why are you so convinced that a recursive definition needs a break condition? Is it because the lack of this, would lead to something that never stops? So what? Who told you that some operation has to return something? Take the time, and think about it. A break condition is a condition to allow a correct coherent answer (then to let the programm stops and then have a valid algorithm -said for finite states machines- according to A. Turing). Lets's consider again the problem of the barber who only shaves men who don't shave themselves and the question of saying if he does shave himself But every body know the question can be answer only when you don't consider the instance of the barber himself. So when we say only shaves men who... we mean and understand only shaves those men -exept him- who... Then, the under said words 'exept him' are our 'stop condition'. :-p Otherwhise, in this case, that is a program that never stops because about ending, no decision can be made, if it is TRUE or FALSE... But, I agree with you, no one ever say that some operation has to return something (Sorry for jumping into this thread so late, I've been away from the ng for a while. But computability and computational complexity is one of my pet topics, so I couldn't resist. ;-) The answer depends on how you look at the computational device. In reality, all computers we can build right now can only be in a finite (albeit very large) number of memory states, and thus you can think of them as finite state machines. However, in theoretical computer science we usually look at abstract mathematical models of different classes of computational devices, some of which have no limit on the amount of memory they can use. In this theoretical sense, many if not most contemporary programmable calcs (yes, even TIs ;-) can be considered as universal computational devices, since, if they were allowed to use an arbitrary amount of memory (a la http://www.hpcalc.org/hp48/docs/humor/calcman.txt), they could emulate any Turing machine. Thus, in particular, you cannot decide the halting problem for those machines. The usefulness of such a theoretical point of view depends on how capable the real device actually is. With modern computers and programmable calcs, the machine can be in so many different states and computations can get so complex, that it's reasonable to look at them as if they were universal devices. (NB: It can be quite surprising how simple the design of a universal computer can get. Just look for single instruction computer with your favourite search engine.) As for the usefulness of recursive definitions, or programs in general, which do not always terminate: Some will say that such programs are no algorithms at all; but that depends on how you define the term algorithm. In fact there are some pretty useful algorithms which do *not* always terminate (and it's also undecidable whether they will terminate on a given input). One classical procedure which comes to my mind is Knuth-Bendix completion (yes, it's D.E. Knuth again :). This procedure can be used, e.g., to semi-decide whether a given equation holds in a given equational theory. It will *always* return true in a finite amount of time if the equation holds, but *may* run forever otherwise. (Of course, when using such an algorithm in practice, you will have to kill it before your computer turns to dust, and let it return failure.) I admit that this is a rather obscure example coming from computational logic, which is not the kind of stuff you will normally do on a programmable calc. :) Maybe someone else knows a more practical problem of this type? Albert -- I will try to answer both messages in one. Please, if you want to keep the coherence of this dialogue don't put words in my mouth that I didn't said. What make you think that I mean that mathematical statements and programs don't have anything to do with each other? NOTHING TO DO??!! I own HP calculators since 1987. May I said that? No, and I didn't. I can see that you answer almost every post in the newsgroup, then you must have only a little time for each one, but please read them before answer. But mainly, before explain, try to understand. !!! ( original work? ;) ;) I didn't said that, never. ;) Long reading. Did you take my answer as an excuse for your explanation? It's clear that your enthusiasm with the idea blinds you. The HP will NOT repeat calling F ad infinitum. The insufficient memory error will pop up (the time elapsed depends on free mem). Is that the end of your fantasy? The 49' rpl just give you a little more time before the overflow that , say, CASIO's basic. That Nick is what I tried to explain to you in the main post. If you was surprised with the consequences was because you miss the fact that you will get the *SAME* result coding it in ANY program language and computer. You said: Now the question is: is this a hint that the HP49 reached such a complexity that the incompleteness theorem holds? Pr. Parisse? Of course the HP49 is very complex, but your example isn't. The error that you get is consequence of the recursive nature (please read this carefully! recursive or self-referencing) of the function you coded and the lack of care in it's coding (somebody said stop condition? ;). (then to finite And you answer: stop OK, OK but not HP49 (at least not at the level you try,may be a little more work? ;) Keep in mind finite states machines The other post said: Oh! what a coincidence! ;) It seems that you wasn't careful enough because your function ends in an error. I thought there goes his 1 to 1 relation ;) Not they hasn't, (I didn't said that neither), but they must not end in error conditions (lucky us that you don't code it in sys rpl) I never generalized my answer (as you pretend) to every operation. I was talking about your 'F(x)=not F(x)' example and in HP49. And that was what you ask. I always try to avoid plagiarism, but sometimes I feel the temptation ;) Saludos I wish, more people would find this stuff irresistable :-( Yes, it is the theoretical possibility that arises in one's mind. This, taken together with the ease of the defining procedure for the HP49, leads me to the conclusion, that the designers/developers did an amazing job. It has its flaws here and there, but after all nothing human made is perfect. I think we should consider the knowledge gain. Such recursive defined programs may or may never end. But the most useful thing is, that we think about them. Sometimes we can then recognize the reason for some behavior. Even Gedanken-Experiments with absolutely no practical use, can be a real treasure for learning and exploring. (And blaiming each other, but that's part of the game ;-) ) Obscure examples may be the best examples for obscure matters. ;-) I did not mean the comment about Turing as an accusation, but as an example for argueing against the wide spread opinion, that maths is only x^2=2. I am glad that this was not also your opinion. The following comment, made me think, you mean it. If you don't mean this then: 1) I apologize 2) What else do you mean? Don't be that glad, I am older ;-) Oh, come on Jorge! there is at least a remaining 5% of all postings, that I did not answer. ;-) them before I certainly never read a question before I answer. This is the reason for giving programs and hints to people that need them. You know, in reality I guess from the title of the thread what people want, and through the influence of the holy ghost and the taste of my fingers, I come to an answer. ;-) So, much of our math knowledge is representable by programs. Now, you have something that eats anything and returns nothing. How poetical. ;-) No, he has stollen it from my grand pa, Nikolaos Mathematicosides ;-) What was then the the meaning of: This little word just is a little limiting, in my ears. No, I took my not so good knowlede in english as reason. I wanted to make something clear, which is very difficult to talk about, if one only talks without examples. Also I thought that I had to show, why this definition on the HP is related to the incompleteness theorem. May be. But I *have* enthousiasm. I reject any non entousiastical working. Yeap, it will. But this is not what I find interesting. The theoretical possibility and the simple definition is what I find interesting. (See also posting of Dr. Albert Graef in this thead. ) And this from you. Your previous comment: was a bit in the direction: Nick, the fantast. Now I am a person with limited fantasy. Taken together: I am a person with unrealistic expectations (which implies to much fantasy) at the end of his fantasy. Another G232del-weirdness? ;-) So let the darn thing overflow. This also shows that the HP correctly can't decide if the statement is true or not, because the statement can't be decided if it is true or not. So it fights until death... brave litle thing ;-) Hmmm, to tell you the truth I did't expect that on the HP49. I thought it was about to say What kind of definition is that, man?. So I was amazed to see that it simply ate it up without any comments. In other programming languages (at least the ones that I know of), it is also easy but not so simple to say something recoursively. Most of them evaluate the right side and assign some value to the left side. Would this work the same way as in the HP in, say, C? f(x)=not f(x) The only language that I know for sure, it does the same is Mathematica. Is there any other language that does the same out there? The carefully designed complexity allows some weird thinks to be easily coded on the HP. It doesn't always have to be a complex definition. I don't need a stopping condition, because the system that I wanted to translate (e.g. the barber and so on) does not have any stopping condition. Give us a better mathematical description of the system (barber etc.) that the HP understands. Take a look at the posting of Dr. Alfred Graef in this thread. Yes, isn't it? The logical/mathematical analysis of this examples also ends with a non deciding result. This is not an error. It is the correct result. The result is that no result can ever be achieved. That is what also the HP does. It achieves no result and dies (No free memory), asking you to stop the reason for dying. Again... brave thing ;-) Oh yes, you did: Didn't you mean it that way? The error condition must be achieved in this case, If the HP would return an answer for this problem, then I would rather believe that the thing is possessed. You said: Now you say you mean only this special example. Can both statements be true? I always try to avoid temptation, but sometimes I feel the plagiarism. ;-) problem with the internal serial number. It displays as a bunch of [CapitalOSlash][AHat]s. Supposedly the number of calculators manufactured with this defect is small, however I just came across three that are this way (and none that are normal). If you are curious, two of them were bought at Office Depot in Houston and one was bought in Venezuela. Problem is, I distribute a program that uses the internal serial number as protection from fraudulent copying. My knowledge of HP49 programming does not go far beyond simple system RPL but I[AHat]m sure there could be a way to poke some sort of a code somewhere in the flash ROM and then have my program peek for the existence of this code in the calculator in which it is running. Certainly poking at random can only lead to disaster. Can someone please give me some help on doing this. Has anyone out there bought an HP49 with a CH external serial number that also has a proper internal serial number? If that happens to you, that are tryinog to protect software from being used by all users free of charge it isn't so bad. I think all software should be free. Have you paid for all the tools? I don't think so. When a software of your creation will be used on an offshore oil rig that costs $4/sec to operate, and it can save them a couple of hours a day, then secure area for personal use. As some of you probably know, the newer HP49's which are made in China have a problem with the internal serial number. It displays as a bunch of [CapitalOSlash]'s. Supposedly the number of calculators manufactured with this defect is small, however I just came across three that are this way (and none that are normal). If you are curious, two of them were bought at Office Depot in Houston and one was bought in Venezuela. Problem is, I distribute a program that uses the internal serial number as protection from fraudulent copying. My knowledge of HP49 programming does not go far beyond simple system RPL but I'm sure there could be a way to poke some sort of a code somewhere in the flash ROM and then have my program peek for the existence of this code in the calculator in which it is running. Certainly poking at random can only lead to disaster. Can someone please give me some help on doing this. P.S. Has anyone out there bought an HP49 with a CH external serial number that also has a proper internal serial number? I thought I read someplace that somewhere in the operating system area there are names and even pictures of the development team, would it not be possible to overwrite some of that (one byte would probably suffice) with the understanding that if the operating system is ever upgraded it would be lost. Jim Donnelly's program is doing the same thing as the SERIAL command, except that SERIAL was not available on early ROM release... Can someone please tell me if they've come accross an HP49g with a CH external serial number which has a valid internal number. I don't think you'll find one; last I checked HP didn't make calculators in Switzerland. ;-) Perhaps you meant CN? http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html -- code (without the quotes) at the Level 1 of the stack. but I cannot link it to make an executable, how can I do that? thanx -- if their size is above 256 kilobytes. I may consider taking further actions if this is not respected. and on page 10-3 (introductory to programming) of the user's guide paragraph 4 it shows, when you press the STO key in this example you get a sort of right pointing solid arrow, however I am not getting this but rather STO on the line which causes an error and I cant save it to a variable, how do I over come this? You can use the command FIX Before FIX __________________ 4: 3: 2: 123 1: 23345378 AFTER 2 FIX __________________ 4: 3: 2: 123.00 1: 23,345,378.00 Maybe you have the calc in RPN mode, and the paragraph is for ALGEBRAIC mode. P.S. I use NiMH in mine and charge them externallly. All the built in apps are considerably upgraded from the 95lx. Lotus is 2.4 instead of 2.2. Dos is 5.0 instead of 3.2. They got real serious about making this a dos machine and it's basically compatible with everything that doesn't need vga or a 386. There's a LOT of good old software that's gone public domain (or not) and people are using it regularly. Word Perfect and dBase and Paradox are used on it by a lot of people, for example. This is exactly like the 95lx on the outside. Same size and weight. Slightly bluer color. None of the Pocket PC or the Palm things will even come close to the power of this thing. It has better software for accessing the internet than any of the newer models. You can use powerful relational databases on it. In fact there's even a pretty nice SQL package for it called pbase. Unlike the PocketPC ones, it won't do multimedia stuff so it's not a machine that you can show off. Except to someone who has a Pocket PC machine or a Palm and is aware of it's limitations. Those guys are impressed when they see one of these. I was just on www.hpcalc.org and he now has alot of new updates etc.... Welcome back hpcalc ;-) -- I trace the route to HPCALC.org from my computer and it reached a server in Delf, in the Nederlands. Using www.tracert.com as tool I am unable to find the site. I have experienced a similar problem with my site. It was a problem of DNS propagation. It took two days to my site be acessible from my provider, however it was acesssible from other providers. This is the site I'm getting connected to. I based in switzerland. Yes. I was surprised about that. But if I do a tracert I get: Tracing route to www.hpcalc.org [130.161.43.47] over a maximum of 30 hops: 15 75 ms 50 ms 49 ms BR3.Amsterdam.surf.net [193.148.15.34] 16 74 ms 46 ms 48 ms BR6.Amsterdam.surf.net [145.41.7.53] 17 71 ms 49 ms 44 ms BR7.Amsterdam.surf.net [145.41.7.46] 18 53 ms 59 ms 50 ms BR1.Delft.surf.net [145.41.7.38] 19 75 ms 52 ms 45 ms tudelft-router.Customer.surf.net [145.41.17.22] 20 73 ms 48 ms 47 ms dunet3.router.tudelft.nl [130.161.1.51] 21 77 ms 53 ms 50 ms www.hpcalc.org [130.161.43.47] Trace complete. hpcalc has not been updated since April 22. I was wondering if this is only at the dutch mirror, or if this is also the case for the main server? you can read on the 1st page : Unfortunately, due to the failure of the CPU fan, my primary hpcalc server went down on Saturday. I don't expect to have it up in the near future, so There are some tools. Concerning compilers, there are the GNU Tools (get the source from http://www.hpcalc.org ) -- however, they do not support all features of the HP49, and my kasm (http://k-asm.sourceforge.net ). There is also an emulator: look for Saturn on http://www.hpcalc.org . -- In the HP pages I have found a development kit for Windows, nothing for Unix :-( However, I have found kasm by Eduardo Kalinowski, and it compiles cleanly in FreeBSD. Hptalx also compiles with a pair of trivial hacks... Is there a sort of FAQ for Unix/HP calculator users? Borja. under FreeBSD. It compiles without problems. And, BTW, thank you very much for your work. Your tutorials are excellent indeed!!! Borja. I have found that the best tools you can use are (X)Emacs and GNU tools (the ones ported by JYA). Get yer hands on a RPL mode for emacs and voilla! Instant tool set! There is one caveat, however. I understand (beware, I am yet a complete novice, bought my HP49 last friday) that the GNU tools don't support all the features in the new RPL for the HP49, for example the arbitrary precision integers. Out of the box, wire transfer is faster. To get more information, go to www.hpcalc.com. (I mean visit it with your browser, not yourself ;-) ) There is a huge amount of information there, collected from all the users around the world over the years. Nick. that doesn't really mean anything with the HP48 because it can't handle a continuous stream at 9600 baud. Both kermit and xmodem protocols use packets that have to be acknowledged so there's quite a time gap between packets. the communications program i use displays the throughput while up or downloading when when downloading to the hp48 with kermit it starts off fast then keeps getting slower. In the two digit characters per second range (20 or 30). that's a far cry from the speed capability of either 9600 or 2400 baud. I'd be quite happy if the HP48 could download at a constant 2400 baud. -- envoronment for the HP49. The idea is, that when you want to execute a program that takes to long, and you don't have an armada of HP49s, then you could explode the code to pieces, store them in a list and let the calc execute the commands of the program one by one *and* check to see, if you press keys etc. In a schematic representation: SAVE_USERS_STACK LOOP TAKE_COMMAND_FROM_LIST EXECUTE IT SAVE_PROGRAMS_STACK IF USER_DID_SOMETHING THEN RESTORE_USERS_STACK EXECUTE_SOMETHING SAVE_USERS_STACK RESTORE_PROGRAMS_STACK END ENDLOOP But the problem is that the commands themselves can't be interrupted and continued later, i.e. if a command in the program, say an integration, takes to long, then you will be able to use the calc *after* the command finished. So does anybody know, if there is a way to tell the commands in the middle of their execution to stop doing something and resume later? Nick P.S. The induced craziness of this group takes new unexpected forms. %-& I think it's gonna be very interesting to study how the background __ Well, a difficult task it is indeed, but it is nice to know that even with user RPL it is possible. It is the possibility that gots me fascinated, not the implementation of the possibility. The HP49G had, I believe, multitasking capabilitites in ROM v1.05. This was taken out because of lack of room. Do you know how those multitasking capabilities could be used? Where they accesible for a user without any knowledge of programming in ML or SysRPL? Greetings No. I don't think so. Oh well, I should have guessed this myself, but thanks anyway. how can i plot (or how do i get around): Y^2 + sinY = 2x^3 thanks You must either solve for one of the variables or represent the curve parametrically in order to graph it (except for conics). For your example, you can solve for x in terms of y, for all y satisfying except for a small open interval of y values just left of zero, fom y=0 down to about y = -0.8767. You could also use 'Truth' plot type: Try 'ABS(Y^2 + SIN(Y) - 2X^3 ) < 0.1' but will speed things up. This way, you'll go 4 times faster!) I know this does not give a very good result but in many cases this proves very helpful when you can't solve for either X or Y.. If you need better quality use resolution 1 PIXEL. Also, try to play around with the value 0.1 .. You haven't sought hard enough. I've got the latest beta rom. I seem to remember being able to do indefinite integrals before I upgraded but now all I can do is definite (it makes me enter the end points). If anyone can explain how to do this I'd really appreciate it. I'm supposing that you're in RPN mode and that your function is in the current variable (VX): Put the function you want to integrate on the stack (level 1) Execute the command INTVX e.g. 'X^2-SIN(X)' (VX is X) INTVX To use another variable, you can use RISCH: e.g. 'T^2-SIN(T)' (VX doesn't matter in this case) T RISCH It's as simple as that! I tried it on HP49G and it fails, because the 2 in the list is interpreted as integer, while a real number is required. It would be nice, if INPUT (and may be some other commands) would exept both: integer and real on HP49G? (Compatibility and ease of use) with arbitrary-type number objects (e.g. consider the TYPE command itself, or VTYPE, POS, SAME, math operators, etc., and of course very different speed results with START, FOR, etc.) On the HP48, if this is how the program looks when displayed, the 1 and 4 can only be real numbers, and the answer can only be the real number 0.25 On the HP49, if this is how the program looks when displayed, the 1 and 4 are not real numbers, but are integers, and the result of the program (if flag -3 is clear) must be '1/4' (symbolic expression), not 0.25 (real number). an HP48 program or an HP49 program, and interpret it accordingly, so that it acts the way it was meant to act on its original source? The answer is: It can't. It's up to *you* to tell the HP49, in advance, which calculator model this program was written for or generated by, so that the HP49 can make the proper interpretation of decimal digit strings into the appropriate object type. Due to the fact that the ascii header line used for automatic program transfers in text form was not augmented to be completely automatic at the HP49 end, you must *manually* set the proper mode in the *receiving* calc *before* receiving any text program, unless that text program is completely free of any digit strings without decimal points attached. This chart attempts to concisely explain (view in constant-width font, not pretty font :) HP48 HP49 Sending realX realN realX realN integer (examples) 1.23 45 1.23 45. 67 Receive on 48 real real real real real (or 49 Approx) Receive on 49 real integer real real integer (Exact only) an HP48 program, sent as text to an HP49, without risk of changing the type of some originally real-valued numbers to exact integer type, the HP49 must be in Approximate mode. Likewise, to faithfully interpret an HP49 program, sent as text to another HP49, without risk of changing the type of some original exact integers to approximate real-type, the HP49 must be in Exact mode. Ay, there's the rub (Hamlet 3:1) http://web.uvic.ca/shakespeare/Library/SLTnoframes/literature/texts+1.html [speaking of alteration during translation :} When sending an HP49 program as text to an HP48, any exact integers will inevitably revert to real object type; other incompatible commands and syntax may also not be understood. The general automatic conversion of exact integer arguments to approximate real is localized to very particular argument dispatching functions, and occurs only when no distinction need ever be made between the types (also not when the arg is only a component of an expected list arg). If you're lucky, maybe INPUT is amenable to an easy adjustment, but in general you must know a user program's true origin, and tell the HP49 accordingly *before* transfer, to assure proper compilation and subsequent proper function. Sometimes you can get away with sloppy translation, perhaps paying only in additional execution time, but other times you can't, so watch your step! That's the whole issue; the extra new object types and their different *display* conventions on the HP49 vs. the HP48 generate the need to set the interpretation mode *before* compilation, since correction *after* compilation is inevitably less possible in many cases. The original HP48 program transfer system used a very complete special header line to tell the receiving calculator's text compiler *all* of the interpretation modes it had to use to properly interpret any programs that were conveyed in text form (so that the receiving calc never needed to be manually set). E.g. %%HP: T(3)A(D)F(.); The Translation mode specifies whether to output and then to display and then re-interpret angles in cylindrical/spherical coordinates, and the Fraction mark specifies what character represents the decimal point (which also determines the argument separator in algebraics). The HP49 added one more mode (Exact/Approximate), which it is very necessary for the compiler to know to make its proper interpretation, but there is *no* corresponding addition to the header line to specify it, which leaves you having to worry about setting it yourself, in the receiving HP49 (or before you manually type the program, which is equivalent). If any more letter options had been inserted *after* %%HP in this header line, then when the HP49 transmitted programs, any HP48 would have detected it as an error. Assuming that HP may not have wanted to make it impossible to transfer compatible HP49 user programs back to the HP48, that wouldn't have been a good idea. However, try copying this to a file and transferring it to your HP48 *or* HP49 using Kermit: Greetings! %%HP: T(3)A(D)F(.); Does the file transfer correctly to your calc, 48 or 49, without being at all disturbed by the word *before* %%HP ? If so, then that's where an HP49 could insert something special, to say automatically set yourself to Exact mode, which is what it should by default say for every file which it sends in ascii text form, since that is the mode which the receiving HP49 needs, to guarantee correct interpretation, as we saw above. A person editing manually, however, could then specify to use Approximate mode instead, if posting an HP48 program; alternatively, the mere presence of the %%HP header *without* any prefix could also be presumed to be a signal to interpret the text in Approximate mode, That would have been okay if done before the first units were commercially released, but now that your HP49 (and mine) still don't generate any prefix, this would make it difficult to adopt the above convention, which would then make direct transfers from *our* unupdated HP49s be treated just like output from an HP48, and thus be inappropriately compiled (stick a Microsoft label on it, however, and call the text language Java, and it would become okay :) Assuming that the above inserted word before %%HP did not affect the ability to download the file, we could still always take the liberty ourselves of inserting Exact or Approximate into our manually edited files, just to give folks a hint of what mode they need to set manually, and then this question need not come up again :) a very large text snipped. Sorry, John The above two conventions are clearly incompatible, so if any user program, when shown as text, contains numbers without decimal points, and if you are going to send or type the program into an HP49, you have to decide in advance which way to interpret it: The HP48 way (Approximate mode): All numbers, with or without decimal points, are interpreted as real number objects (type 0). The HP49 way (Exact mode): Numbers with decimal points are all approximate real (type 0); numbers without decimal points are all exact integers (type 28). Sometimes a program interpreted the wrong way works anyway, e.g. 2 MENU and 2. MENU both display the VAR menu. Other times, a program interpreted the wrong way won't work, e.g. { xx 2 } INPUT won't work unless 2 is changed to 2. If you set the HP49 to Approximate mode before sending it this program text, then the compiler interprets 2 as 2. anyway, which is what you should do in general before loading or typing HP48 user programs in text (ascii) form. If a numeric original command or function argument is *required* to be a real number, but an exact integer is supplied instead, saving you from worrying about the object type in many cases (or sparing you from needing to press the decimal point key). However, this service is offered only at the point where the *original* stack arguments are being checked for their types -- note here that a list { ... } is a valid type of argument for the INPUT command; therefore that's the end of argument type checking, and that's also the end of the amnesty, where some commands might tolerate a wrong original type of number as an individual argument. Therefore, nothing was wrong with the INPUT command; what was wrong was that a program displayed on (or for) an HP48, where some real numbers were shown without decimal points, was loaded into an HP49 in Exact mode, where numbers without decimal points were compiled into new object type 28, which is not valid inside the list supplied to the INPUT command. The needed correction is to set the proper HP49 mode before transfering ascii programs (or typing them): For HP48 program text: set Approximate mode before transfer. For HP49 program text: set Exact mode before transfer. If you forgot to set approximate mode (HP48 mode), you can correct the mistake after the fact: just set approximate mode now, then EDIT the program again -- even though you make no changes, numbers are re-interpreted when you press ENTER, and all the numbers become real (type 0) this time. If you forgot to set Exact mode (HP49 mode) and had typed the text in by hand, you may be able to change to Exact mode now and recover the saved original text from the shifted CMD function; otherwise you'll need to transmit the original text again. Hmm.. maybe this was not shorter -- but was it any clearer? hank you for the detailed work through. A lot of important hints. I understand, that if I need to type in a HP48G-program on the HP49G, it is recommanded to switch to approx-mode. Yes, but I expected that the INPUT command would accept the integer in the list, like + and - accept complex numbers. In the AUG it is clearly stated that a real is required. Great job, they have thougt about the problem. I tried it with my HP49G, it nice experience to see what happens, and to have the knowledge to avoid typing it (if posted correctly in the NG). Up to now I did not take care about the ascii convention when I have posted here (e.g. << instead of more correct <<). Ok, let us keep in mind that there is a new object in the HP49G, the integer and misuse could become a trap ;-) You can use the numeric solver and enter A but not x and then solve for u but there are also a few nice probability functions in menu 13.02 [math prob] and the one you want is UTPN store this in EQ and start the numeric solver mean: mean of normal distribution var: variance X: eps: precision UTPN gives you the integral of the gaussian distribution from -infinity to X EG after solving gives you x=1.95 the value of the 95% interval (0.95=1-2*eps) -- Have you tried an EVAL before solving? That is, integrate (is that the word?) and then, when you have the expression and not INT(...), solve for u. Doesn't help. The integrate (?) is EVALuated to (2*u^2*LN(u)-u^2+1)/4 As you can see, there's an LN(u), which seems to prevent the 49 from solving :( There are two to do it, one is to use the command MSLV the other is to solve the integral first then use MSLV to find u. Either way will work, but the latter is the quickest. The ln(x) makes the integral nonlinear and you can not use the SOLVE command for nonlinear functions. MSVL command will solve for all linear and nonlinear functions. You must first EXPAND the integral. In RPL-Mode: 'integrate(1,u,x*ln(x),x)' EXPAND 5 = 'u' SOLVE I think the algebraic Syntax would be something like: as a function of 'u': (2*u^2*LN(u)-(u^2-1))/4 SOLVE(ANS(1)=5,u) The last operation returns an error because the found form can't be solved with an analytical closed form. Only numerical solutions are possible. You can store (2*u^2*LN(u)-(u^2-1))/4 = 5 in variable EQ and use the numeric solver, or use the command ROOT. ROOT((2*u^2*LN(u)-(u^2-1))/4=5,u,1) The third argument is your initial guess for u Did that help? That did help, thanks (to all replys) I tried it (nearly) this way before, but when trying to solve the EQ in the numeric solver always got an underflow (1.E-499), cause I missed the initial guess. The lithium cells are in the 48's extensioncards. the extensioncards need an independent power supply to preserve the memory when they are not in the calc this is what i read from hpcalc.org, in the HPedia CR2016 This is the 3-volt lithium button cell battery used by the HP48's RAM cards to keep the memory powered when the calculator is switched off. Hewlett Packard says to replace the battery every year, but I know of some people who have gone for five years or more without replacing the battery. but I do have it written down). DisableInt or some such. Is there any reason that I need to use that? Or is there any reason why I shouldn't use that? Question 3: I need those levels for just a few instructions while I'm setting up and then I'll be done with them. Is there any reason that this whole thing isn't a good idea? If anybody has any ideas about this I'd love to hear about them. I'd particularly love knowing that it's perfectly fine to do this. But if it's not I guess I want to know that, and why. And if it's ok, what do I have to be careful of? Yes the interrupt system simply uses 2 lower levels of return stack effectively pushing the top 2 levels off so if interupts are on your program would go haywire if you used more than 6 levels, but it would be quite alright if you turn them off. INTOFF only turns the keyboard interrupts off, you need to run a ST=0 15 to turn them all off, Or you can use the =DisableIntr rom entry. Sounds like an ok idea, but what do you need so many levels for? I realize now that Jazz is here this probably isn't that useful but I started it before Jazz was available on the 49 and it's a good learning experience so I thought I'd keep going. Also, I'm kind of enjoying doing it. When try to update to Rom 1.19-5, got this messge: Error Invalid Bank, i go to download menu and try to format bank # 3 why this say invalid bank, and then got this error erase fail locked block, i format other bank's without problem,but bank # 3 got error Locked Block, the calculator is now without system, i can`t execute any command, calculator serial is CN10100115. I am writing a program in SysRPL where I need a division of two variables to return a remainder. IDIV2 and IREMAINDER do this perfectly in UserRPL however when I try to use them in sysrpl via xIREMAINDER or ~xIREMAINDER (I found these commands via RPLCPL) MASD cannot recompile them. I have heard about bugs in masd, but I haven't heard about fixes being made to it. Is masd updated with a new ROM release? To the point: I am looking for either a compileable SysRPL command that can give me the remainder of a division, or a more size concious workaround than: :: ... @work here IREMAINDER ... @work here ; This is much larger than the single command is supposed to be. Any help would be appreciated. (I To use IREMAINDER in MASD, you should only put xIREMAINDER, but this doesn't work to every command, so you have to call the command by it's ROMPTR. Instead of xIREMAINDER you have to write ROMPTR 314 2B. You can get this number by using Nosy. Why shouldn't xCOMMAND work with every UserRPL structure? this Why not decompile IREMAINDER, to get: :: CK2&Dispatch SYMSYM :: FPTR2 ^STEPIDIV2 SWAPDROP ; BINT17 :: FPTR 7 19C FPTR2 ^STEPIDIV2 SWAPDROP ; ; @ I would opt for the FPTR2 ^STEPIDIV2 command (how it works should be obvious, as should its connection with the UserRPL words IREMAINDER & IDIV2). It works! However I am still at a loss as to how you got this romptr because on my calc if I use EDOB on xIREMAINDER I get ERROR ??? I am trying this from within Emacs. Just for comparison purposes my MASD version is 5.10 I get the same error when I try to decompile xIDIV2.... :( However thanks for your help. It worked. Since FPTR2 ^STEPIDIV2 appears to take only integers as arguments, when using this command I have to run FPTR 7 19C which appears to check if two numbers are integers and convert them to integers if they are not I'm not sure about this. Then after running FPTR2 ^STEPIDIV2 I must do SWAPDROP to get the same result as xIREMAINDER would have given me. It sure would be nice if I could just run xIREMAINDER. Anyway your method also worked so I thank you. BTW how did you decompile xIREMAINDER? I tried it from within emacs but got ERROR ??? be careful with unsupported ROM pointers. When you use FPTR2 ^STEPIDIV2 in a program, you're probably sure already, that the arguments are two zints. Yes, that's the way IREMAINDER does it too. You can - xIREMAINDER compiles fine on my calc. got My own Dis program looks like this: (it takes either a command, or a list containing a command as argument) :: CK1&Dispatch BINT0 :: DUP TYPELIST? IT CARCOMP DUP ROMPTR@ IT SWAPDROP ; ; @ I'm sorry to keep bothering you, but I hate to just give up on something when I can't get it working. I trust you are talking about compiling a sys program. So I try this: :: %10 %3 xIREMAINDER ; @ then do ASM and I get asm ERROR: invalid file so I do ER and get can't find and the cursor is at the beginning of xIREMAINDER. During assembly MASD tells me its version is 5.10 I am using rom 1.19-5 I have given you all then info I can think of that might help... This compiles fine on my calc. You are sure to have remembered the first I in xIREMAINDER? Does it help if you use this header in the file?: !NO CODE !RPL .hp48:104545 I Yes I have xIREMAINDER No. Because I only program in Sys right now, I have set flag -92 (Masd in SysRPL mode) I don't know what that first number is... If you're talking about CRC then when I put L258 (not L258 but that library) on the stack and type CRC I get # D32Fh However, my copy of extable is 89998 bytes. there is some guidelines for avoid the crash of the calculator 48GX. http://www.area48.com/ http://members.tripod.com/~ekalin There was an operating system for the hp48 with the name shellOS. It was fantastic to see the HP48 behave like a unix system. It had also a windowing system with menus etc. (Windows only full screen, but none the less...) The authors said that they would develop a programming library but since then I did not hear anything about it. The draw back was, that you could not use the hp48-functions while this OS was running. They were completely disabled. The OS itself worked very good. I remember transfering files to the hp48 and at the same time issuing commands on the command line and getting the responces of the system, it was fun :-) There was also another project for the hp48, named BSHELL or something similar. This was co-operative multitasking, but allowed to use all the functions of the hp48. Both of the operatimg systems are still on www.hpcalc.org I wish they would develop something similar for the hp49, but I am afraid that this is going to take a looooooooong time. run on these machines: -Address space. The HP calculators are limited to 512KB -Lack of MMU. There is a MMU-less alternative for linux called uClinux, but it's still requires a quite powerful CPU (like a motorola 68K) I think there are two possibilities but only for the truly adventurous souls ;-) armed with a C compiler for the Saturn processor. 1 - You can download ancient Unix source code for free. This includes Editions 5, 6 and 7. These systems were much smaller than our current Unix systems. The kernel of an edition 7 took about 64 KB. 2 - The old versions of Minix were able to run from 360 KB diskettes. The kernel was really small. Have a look at http://www.minix.org I think there is no point in porting one of these OSs to an HP calculator, but could be funny to see it ;-) although I think it is not worth the effort. I have recently bought my first HP calc (a 49G) instead of a PDA for some clear reasons, being one of them the software it includes ;-) diskettes. The That link is not valid. You certainly mean http://www.cs.vu.nl/~ast/minix.html (or http://www.disi.unige.it/person/DoderoG/minix/minix.htm) Well, www.minix.org links to the official website ;-) Sorry, the link is good but I was access denied when first try. F BTW, I think Andy Tanenbaum would laugh a lot if he saw Minix ported to the HP49 ;-) not porting Minix or some Unix like OS on the HP49? Nick Just to prove that we are not completely sane... ;-) I believe the watch had more memory and a faster CPU than the HP49. First UNIX versions (70s) ran on computers which were slowlier and had less memory than HP4X But would it be useful to have a Unix from 1970s in HP49?? I don't think so, but this doesn't mean that is impossible to have a Unix version (linux is just GNU Unix...) in HP..... Of course, but the original posting (and the posting concerning the No (IMO). -- http://www.linux-community.de A CSMA/CD network with the IR ports pointing to an area in the ceiling? ;-) Yes, yes! With a CRAY machine running mathematica server over the ceiling. reasonable in size due to HP's famous industrial design tricks. It's bigger than it looks). Packing *lots* more than an HP-49G into a watch would be easy for IBM: no keyboard to speak of, a *tiny* display, and chip level mounting technology (like the '01 used!) would let modern parts cram megabytes of Flash, RAM, and CPU into a few square cm or less. But it would cost more than the HP-49G (US$179?), the HP-01 (US$695 in 1979 or US$2500+ in today's dollars) unless they made many of them (also unlike the HP-49, HP-01, or almost any other HP device). Sigh. Jim Horn At 4+ ounces, you *know* when you're wearing an HP-01! hi, I'm a new 48gx user, though a long HP user. I've been experimenting with a number of different programs, mainly java, meta kernel etc. What I'm trying to find something that speeds up the display, give the extra lines etc. I quite like meta kernel but don't know if it is worth dedicating a whole 128 ram card to it? I like the filer option though I know that variations of it are available separately. I suppose I asking for recommendations on java, meta kernel or any other suggestions. Also do any of these programs speed up programs or screen display speeds or do these have to be written those specific codes. I think it is (but I also own a second card :) PCT is the best freestanding one I think I'd go for Metakernel, otherwise Java 3.7b4 (more stable than 3.6, but MLdecomp is still buggy with arrays) Yes (download Metakernel docs from www.hpcalc.org and read them) ok, extra there are several stack replacements available. You could even try STK6 (Six Level Stack 1.1), the fastest 6 line stack display with enhanced status area;-) Please try Filer48. It's very fast and nice, and is only about 10K. It's display is similar to that of the MK filer. Programs aren't sped up by either of them. For the MK, yes. For Java, I don't know. There exists an independent little program on hpcalc, which can be called to switch off display refresh. If you want a faster GUI, you could try the GUI Tools (UISTUFF 1.0 & SpeedBrowser 5.0) by R. Hellstern;-))) These replace the built-in form engine and the equation library browser by fast-as-possible-while-still-compatible versions. Also, they can be plugged into the system. If you want to make your own (fast) programs, try Jazz. It's simply the best;-) If you want to build your own (advanced) input forms, try the 'Input Form Builder' for the HP-48. For some applications mentioned above, there exist alternatives. My suggestions are based on my preferences only. Nothing to do with java, download QPI and use that to convert to fractions By the way java37b4 is stable too and has a few features more Mainly speed, and speed costs bytes so if you want the ML decomp, you'll have to pay about 10kB but it is worth it; the speed increase is very large. -- But the MLdecomp versions are also less stable (with displaying matrices, as is Metakernel 2.29) Caspar -- in fraction mode (i.e. 1/4 instead of 0.25) I have Oval Menus On and Java Active flags switched on, and all others off. I think it must be a general flag, but I don't know if it's true, or which flag it is. Can anybody tell me how to get fractions? My second question is which are the differences between the flavours? I've read the documentation but I don't get anything in clear. -- 2nd question how do I run a rom command from sys rpl such as RREF? I have surprised myself; I have found 89 (!) unsupported entries on the HP49 and now SDB works fine and ED works somewhat ok. ED behaves a little strange due to the new keyboard layout. Be sure you read README49.txt. Jazz49 beta can soon be found at http://www.engr.uvic.ca/~aschoorl/ -- D http://www.ite.mh.se/~danli97/ begin 666 Daniel Lidstr232m.vcf HP49 strange sysrpl and ml debugger but you can go freely between these as needed. Just everywhere you look you find this kind of integration. It's a beautifully designed development system. The most elegant I've ever seen. And it has a powerful symbolic debugger. There's nothing wrong with MASD and it's associated tools. They're a good design and they work well. MASD has a lot of features to make assembly look like a high level language. This is just a matter of personal taste but I don't use those features much. I like to see the code. Of course it's easy not to use those features. They aren't forced on me but I'd rather have seen that energy and code used for a good debugger. I suspect I'll get a lot of disagreement here. :) I do like the abbreviated mnemonics in MASD. Although there are already too many sets of Saturn mnemonics. Still, I like these and I use them. They're both shorter and clearer than the HP mnemonics. I'm not the one who should judge this. I'm talking about what I like. I just play around with programming on the 48 and 49 and I haven't used a lot of the features in either development system. When it's all said and done, I might find myself still using MASD if there's a good debugger just because it's built in and most of the discussion will be about it and it's syntax. But maybe not. Jazz might become the tool of choice on the 49. Barry Not necessarily better, but when you are used to something. And Jazz49 now has SDB which MASD does not have *Jazz compiler* is not better than *MASD compiler*. MASD has a lot of great feature that Jazz will never have: The best exemple are blocks.. But, Jazz has powerfull debugger, entry extractor, and disassembler, all integrated into one lib. All of these tool are available on the 49, with MASD syntax, in different libs: Emacs Nosy, CQIF DEBUG49 This combinaison is not at the same point of developement, but it is likely to be better. It s a question of time.. Note that all these tools are almost programmed directly on the 49, with MASD and previous versions. I think this is a clue of power :-) -- -- there's no common philosophy. Kind of like unix. Different parts from different people with different ideas. It works well but it's not entirely coherent. Jazz seem more like a carefully designed development system. Like something one person with one overall idea put together. More like a top down design. I realize it wasn't all one person but it gives that impression. As far as their stages of development, MASD is way ahead of Jazz on the 49 and it shows. I guess we'll have to see what the future brings. Barry disassembler, all is 49, with QDTetris,... http://tardyp.free.fr/hp49/indexe.htm It seems that we'll finally be able to debug our programs on the HP49 itself... thank you very much Pierre :-) __ Kamel It is a bit complicated to install, but then, you should have a simple to use asm debugger. -- -- What's the difference between the one in the picture and the one listed below? One is (if i remember ok) DEBUGSRC.ZIP and the other Debug49.zip. Bye! -- EC keyrepeat is buggy however. Also, when exiting EC you need to press < [ON]. This is because [ON] and [3] generate the same keycode in EC. Doesn't this work? Will Jazz49 be adapted to compile flashpointers (like ^MDIMS) ? Or is it already bale to? Caspar (maybe I'll buy me an HP49 then) I have a couple of questions about jazz 49, I copied a couple of programs I had on my 48 to my 49 and they would not compile or else compiled wrong example CHK&DISPATCH0 #2 compiles to an error code, I do not have my calculator with me right now so I am going my memory, also if I have #2 or TWO the code is different when it compiles. Second problem when dealing with arrays there is no entry point for DIMLIMITS So how do I find the dimensions of an array? Third a rather foolish question but how do I disassemble a command such as RREF or call such a command from sys rpl? [start] [1] Instead of outputting an object, the system binary is searched from stable ROM areas, and if found then the pointer to that object is output instead. (RPLCOMP does not do this) [end] So #2 is searched in a so called stable area of the HP48, not the HP49 so that output is not correct in the HP49. Use TWO or # 2 instead (for now, might be working on a fix :). If you disassemble TEN and get EXT that only means you have EXT before TEN in your hptabs.lib (they have the same values). Either delete EXT from your hptabs or create a new hptabs with exchanged order. If RREF is a flashpointer you can't use jazz unfortunately. I'm sorry, I'm not working continually on jazz and ED will likely take awhile, if it ever gets implemented. Some help on this issue would be very appreciated, you know the source *is* available. No improvements (zint support etc) are planned (atleast not by me). Jazz will always have to be run from port 0 because there are a lot of calls between code objects which makes it impossible to run from tempob. A great way to help on this project is to look in the file gentries.a ROM entries section. All entries in there should be found in the HP49. I agree with you that ED would be very nice so if all the entries ED needs are found, maybe I'll give ED a serious shot. Another thing that makes ED difficult to port is the new keyboard layout. Some new keys don't even generate keycodes that ED recognizes! Remember the same problem with EC? I think the entries we are looking for can be found with Nosy or CQIF, it's just that I don't have very much time to do it. /Daniel -- take would be very (zint have to be objects which gentries.a ROM HP49. I agree needs are makes ED even with EC? CQIF, it's you ===== Have you tried erasing it from within the filer? I think it is smart enough. Try also: 2049 DETACH :0: 1 PURGE (substitute :0: for the actual port number). That should work. -- I tried everything on the emulator, and I can't delete it... it seems to be a real problem! Bye! -- These are a few questions that I have been wanting to ask for a while.... As a 40-something engineering student, and at the advice of several friends, I think I have made the transition from the TI to an HP calculator. Even with the struggle caused by the lack of documentation for the 49, it was a wise choice and I glad to have made the change. Now that I have fallen in love with this calculator, one of my biggest fears is the demise of the HP calculator. Also, after purchasing an HP32s, I too understand the disappointment from many over the change in the keyboard on the 49. There is nothing like that old HP feel is there? I too think I would love to see a 49 in a 48 case(a slight variation there of). Now to my questions.... What is this community going to do if HP goes out of the calculator business? Why doesn't this community start an open consortium and develop their own calculator. The knowledge base is here. I know that this may seem a monumental task, but is it really? Personally I don't think so. We don't know, but there's one thing sure, we're not going to use a TI :o) Yes, I agree with you that base knowledge is here (in part because some of the people involved in 49G are here JYA, Bernard Parisse,...). But it would be really difficult to start a new project on the internet, although it's true that th biggest projects are made like this (e.g. Also a big company should be after all this users, because I think most of them are good programers, but I can't imagine the manufacturing a calc. xD. So somebody has to build calculators. I agree with you, but it requires all users to cope with themselves...... If only it became real................. I suggest a pair of ideas: No more rainbow effect, no more rubber keys, a double enter placed where it used to be.... -- L This was actually proposed before at the Handheld User's conference in 1991. prize at last years conference. The proposal at the time related to trying to fill the gap between the HP-41 and the recently (at the time) released HP-48S, both in cost and ability. The proposed HP-44T - the T was for technical as opposed to business or scientific - would have been an HP-41 with serial port, a faster processor, more memory, and a larger display. All very doable without a great deal of redesign. Of course, designing a calculator is much simpler than plunking down the money to build a few thousand units! What features would the new calculator have today? Of course, for years we have been crying for a $10 RPN calculator with just basic arithmetic functions. The HP-38 is about $80, the HP-32S is $60. The HP-48G+ is now available for around $100, the GX for about $150, and the 49G about $180. Jornada 420 series (out of production) starting around $350. So would you want something more expensive than the 49G? Probably not much market there, at least until technology brings current processors down in price that present machines could be sold in the $250 dollar range while speedier models fill up the $400-$500 models. That pretty much leaves the $35-$50 price range as the only one open. What would you build for that amount of money? Or would you just tweak a model in one of the existing price ranges? Hmmm... A calculator with the physical size of the 32SII, but the built in power (hardware and software) of the 48. So, what about a downsize-redesign of the 48/49? HP did the same thing with the 42S, wich they recommended as a successor for the 41! The proposition could be: Using a Saturn processor at 4Mhz, 256k ROM*, 256k RAM*, LCD with 131x64 dots, serial connectivity (but no expandability) and reusing code from 48S/G and 49. * The combination of 256k ROM/256k RAM would have the advantage of using the full adress range of the Saturn processor without bank switching. But the built in functionality is limited to the one of the 48S. So the challenge is: Wich functions should be integrated in ROM and wich ones are shipped as loadable librarys? An other tricky problem would be the keyboard layout... Just another thought... ... every time I have, when I read a discussion about designing a new HP calculator ... I can suggest three alternatives... 1) How about HP offer to build a calculator that is physically the same as a 42S but with i/o and flash ram in it. And release the h/w specs so that we, the user community, can open source development of the OS for it. Or HP can release a core operating system with basic support for i/o, screen update, keypress detection etc. while the rest is open sourced. (They have done something similar before with the release of the HP1000CX which was an HP200LX but without the built-in ssoftware applications.) Then it would be easy to produce a scientific version, a business version and a technical version (whatever that might be). If the keyboard were left more or less plain and soft menus used for accessing functions then there would be no problem with inappropriate key labels. 2) An easier solution that does not need so much in the way of software and hardware engineering skills would be to produce a detachable keyboard for Jornadas or WinCE machines. We then simply run the emulator - which already exists and works - but in combination with a physical keyboard that plugs in. Total cost is higher, of course, since you have to pay for a Jornada and a separate keyboard. The advantage of this option is that it needs little or no official support from HP. 3) Finally, if HP get out of the calculator business altogether then we simply port RPL and the best features of the HPs onto TI hardware :-) -- I'm working in my own software to connect the hp48g+ calculator to pc using kermit protocol. I've made half a program which can send files from hp to pc, but I couldn't find any information about what kind of frames hp48 expects to receive when it's in server mode. Please do not tell me about http://www.columbia.edu/kermit/hp48.html and so on... thanks again Transfer Protocol by Frank da Cruz, and of course the 48G Series UG and AUR, so I won't mention them. I guess I'm a bit naive, but I'm surprised that the PC to HP48 half of the program would be any more difficult than the HP48 to PC half. For that matter, with so many communication programs already available, I can only suppose that this is being undertaken as an educational exercise. You can always try experimentation. Besides trial and error, note that two HP48's can communicate by Kermit protocol over a cable, and it seems reasonable to expect that a client 48 would send exactly what a server 48 would expect to receive. You could send something from your 48 to your PC and see what arrives at the serial port. If you have a serial printer that can be set to a data dump mode, you could use that to see what the 48 sends. Although I haven't tried the following, I suppose that a Tee adapter cable could be made to eavesdrop on one or the other side of a conversation between a 48 and a PC. I'm a boy, the name Andrea came to us from Latin Andreas, derivate from Greek Andros (man), and finally Andrea in Italian. I have alredy tryed with flag -85 set,as you say in the manual, but the results, pressing Ifd and having the required object on the stack,are: :: PTR 275C6 ROMPTR4B0 C:: PTR 275C6 FPTR 2 8B :PTR 06E97 ID xxxx PTR 25EC5; Perhaps a pitty. I'm still waiting on a post from a girl in this NG. Maybe JYA as well (to get the chance to answer particularly polite :-) Never mind. If you'd the library extable on your baby, your assignment would have shown up as follows where I altered only the linebreaks to make it more easily readable. :: TakeOver ROMPTR 4B0 C :: TakeOver FPTR 2 8B ; ' ID xxxx DoKeyOb ; This give a complete information in SysRPL. I guess I know what is wrong. It's not your fault but that of certain decisions made by Keyman. The standard assignment of the HIST-key is :: TakeOver FPTR 2 8B ; The only purpose of the mysterious TakeOver is to assure that the key works also in edit- mode, i.e. if you see a blinking cursor. In edit mode, the HIST key is even particularly important because it enables you to visit the interactive stack while working in the editor. E.g., one may do an ECHO from the interactive stack into the actual edit line. Rompointer 4B0 C simply tells to the key: << If you are normally clicked then execute the program immediately after the rompointer, i.e., the standard assignment of HIST, but if you're double-clicked then jump over this program and Here ' is the internal single *quoter*, i.e., the name xxxx (or ID xxxx in SysRPL) is quoted only, not executed. Execution is made by the DoKeyOb command. And this may be the wrong way of executing in this case. That depends on what you have stored in xxxx (or ID xxxx). Shorten your program as follows: :: PTR 275C6 ROMPTR 4B0 C ; ID xxxx ; and it should work. How to do this? The assignment is a SysRPL-program, hence it cannot simply be editited, revised and then recompiled with ENTER. That can be done only with UsrRPL- programs. For SysRPL you need additional tools, either the very large library Emacs, or the small library Ot49 (or both). With Emacs, you can make all changes inside the editor. With OT49 - because it is so small - you must work on the interactive stack with the OT49-command 3tog. So load first OT49, best from my site because hpcalc.org is not updated lately. Start with a stack which only contains your assignment in level 1. 3tog scatters your program on the stack (making a so-called metaobject from it). Purge the real in Level 1, it's only a count. It counts the number of components of your assignment. Then enter the interactive stack and purge PTR 06E97 (which is the quoter) and PTR 25EC5 which is DoKeyOb. Next go the highest possible level, press NXT to get the second page of the interactive stack menu which stack is now collected in a list. Finally, press 3tog again which transforms this list a SysRPL-program. That's exactly the last program below and the assignment you are looking for. You would not have run into all these problems if, instead of taking the name xxxx as the Ob1 argument of IfD, you would have taken the *content* of xxxx as Ob1 instead. Why didn't you do that? Do you need the content of xxxx somewhere else? If you give me good reason I may modify Keyman in such a way that the If-options first test whether the arguments are names. What's the opinion of other experienced Keyman users??? PS. Anyway, load extable as fast as possible. It is very large, I know, but it pays! Even if you do not know any SysRPL at present, you can at least take a look at your key-assignments to get an impression how the ingenious operating systems of the 48/49 really work. I am not one of the experienced, but... What would you think about specification it in the documentation? Is a name an arbitrary object, like requirred? Nevertheless, even beginners tend to recall the content, so keep it like it is. I have loaded extable and ot49(from your site), and followed your instructions. Now suppose that I want to assign at the dbl-click hist key your accprogram (stored in home), the procedure sould be: :: Take Over FPTR 2 8B; IfD ::ROMPTR 4B0 C :: TakeOver FPTR 2 8B ; ; and here I don't know if I must process the program with 3tog from ot29,etc or what to do. In my case I can't get working not just the dbl.cliked hist but any key deon't work.... By the way: I don't understand what is pointer PTR 275C6? It's a good idea to have ACC on the HIST-key. Clearly, this can be done only in such a way that the standard-functionality of HIST is kept at least in edit-mode. ACC is an american style calendar, only the analog-clock is the same. You should rather choose an european version, e.g. ACCde or an italian version of it. First of all, I just updated OT49 to version 8.2001. It contains the additional command Sys~ which toggles decompilation/recompilation of SysRPL-objects, e.g. key-assignments. Sys~ depends on the builtin libraries 256 and 257. Both these libs are automatically attached by OT49. With Sys~, it's easier to modify a key assignment than doing it in the interactive stack with 3tog. As you know, with 'ACC' and the standard assignment of HIST in levels 2 and 1 the command IfD generates << If double-clicked ececute ACC else do what HIST and assigning to HIST everything runs perfect. With extable and flag -85 set you see that the assignments is :: TakeOver ROMPTR 4B0 C :: TakeOver FPTR 2 8B ; ' ID ACC DoKeyOb ; There are several redundancies in this program, unavoidable because Keyman's If-commands must handle many different assignments. In our case, the HIST key program part :: TakeOver FPTR 2 8B ; can be replaced by the naked FPTR 2 8B. This saves 7.5 bytes. Also, the evaluation of ACC via DoKeyOb can be replaced by ID ACC itself - or do you want to write the name ACC in programming mode?. Thus, the whole assignment could be shortened to :: TakeOber ROMPTR 4B0 C FPTR 2 8B ID ACC ; An alternative would also be to use longhold for running ACC on the HIST key. That has the advantage that a normal key press on HIST, i.e. visiting the interactive stack, is executed without delay. I also suggest after ending your project of translating ACC into Italian, to replace the name ACC by the ACC- program itself and to purge the global variable ACC. Ok, now that the key assignment is complete we can start with with the acc-it project... thanks for helping me with this very detailed instructions key with ID ACC works good for me Thus, the whole assignment programmed a few suggested/example key assignments which I think is really great! I especially like the AutoComplete catalog example found in the Emacs documentation. Here is my issue/questions (this should be easy for Wolfgang to answer): Sometimes I forget some of the less-frequently used assignments I've made, so I would like to get a list of the keys assignments (instead of individually querying with Keyman's KC&Sa (KeyCode & Standard Assignment function)). I've tried the built-in RPL RCLKEYS command which does provide a {list} on stack level 1, but only shows one or two keys, with more info out of view to the right side of the display. To see the whole list, I've tried to enter the edit environment by pressing the down navigation arrow, at which time the hourglass comes on and after a minute or so, an Insufficient Memory error message is displayed. I've even saved the list to a variable, then tried to View the variable with the Filer (which results in the same everlasting hourglass). Finally, I tried to transfer the variable to my PC (with HPComm 3.04) for viewing purposes with a text editor. This causes a communication lock-up between the 49 and PC which eventually ends with a error message from HPComm. I know I've probably missed an easy way of doing this (is there a function in Keyman?), but can anybody recommend an elegant (OK, it doesn't have to be elegant .. I'll take anything I can get) way to see a list of assigned keys? Have you tried turning your list into a string and then viewing it? (See the mini-challenge for putting in linefeeds) the list returned by RCLKEYS contains non-UserRPL program and cannot directly be edited. You must decompile the list and look at the resulting source code. Type this to get to the menu: 256 ATTACH 256 MENU In order to get command names instead of pointers in the decompiled list you must have the huge library extable installed, available for example from HP or hpcalc.org. You can also use the Emacs library. When Emacs is installed, put the list ok key assignments on the stack and execute the RPLED command. edit the list, pressing enter should recompile it, so that you can store the changed list with STOKEYS. First of all, the RCLKEYS command is practically useless if more than 20 keys are assigned, even if all assignments are pure UsrRPL. RCLKEYS is then *too slow*. But if you've already lost your time and if it contains any SysRPL object, applying DownArrow-key hangs up the 49. In the worst case you may also wipe out your RAM. The reason is that JYA eliminiated the interrupting with CANCEL from the command ViewLevel1. In the opinion of several experts like J. Busby, this decision was'nt well-wightened. You will have the same problem if trying to view a single standard assignment. If you're lucky, you just edit something like External External... This will certainly arose JHM which will tell us that SysRPL object have no right to be on the Stack for a normal user. But if I cautiously say that UsrRPL is a bit limited than he answers What do you complain about, you've got what you need in lib 256. So here is some inconsistency in John's philosophy :-) This is not necessary if you've the small OT49 (newest verstion) on your 49. Not only does it automatically attach lib 256 but it contains also a command Sys~, which toggles the decompiled view of a SysRPL-object, and tries to recompile the source string with the more convenient ASM2 from lib 257, attached by OT49 as well. There is a small chance only that this procedure works. Not because of Emacs but because of recompilation problems of MASD. Again: avoid to edit the whole list produced by RCLKEYS for viewing purpose. Hope this helps. - Wolfgang PS. You do not use the newest version of Keyman: version 8.2001, on hpcalc.org since yesterday. Has one nice assignment more :-) also resulted in an insufficient memory error. Carsten and Wolfgang's explanations indicate why some USR RPL commands don't look favorably on compiled lists. To Carsten: the list decompiled beautifully with Emacs' RPLED command. To Wolfgang: the list also decompiled nicely with OT49's Sys~ command. edit the whole list produced by RCLKEYS for viewing purpose., leads me to think there is a better way/command to list key assignments. Am your response. In my original message, I referred to the Keyman's K&SA command for reviewing assigned keys. Instead of K&SA, I meant to write the RclK command. Sorry for any confusion. I now have my answer, Unfortunately, there is no better way at present. Therefore, RclK long hold recalls only the user- keycodes of all assigned keys, including shift-holds (not possible with UsrRPL means). The builtin RCLKEYS-program is slow for two reasons: 1. For backward compatibilty, it first checks whether have still the old format before 19-3, or the new format after 19-3 which allows also to assign shift-hold keys. That could have been avoided only by demanding to save the key-assigments extra and to reassign them after upgrading from a ROM below 19-3 to any higher version. 2. It is written in SysRPL (not asm), using the relatively Maybe JYA didn't have time enough to make it really fast. aren't actual anymore. Actual version available on ftp://ftp.math.fu-berlin.de/pub/usr/raut/HP49/tools/ Keyman has been modified to make mode-sensitive user assignments stable against future ROM upgrades. It is not the functionality of keys which changes from ROM to ROM, but the various pointers occurring in the standard assignments. This difficulty has been overcome by a simple trick. Also, Keyman.txt has thoroughly been revised. I tried my best to make everything as clear as possible. A new addition is a choice of key assignments which I consider to be the best possibles on the HP49. Of course, RAD/DEG, coordinate system, and BASE togglings are included. The most useful is perhaps the possibility of quoting of all kind of names including from ports with the rightshift-hold menu keys. I think this is a big enhancement of the user interface on the 49. Of course, these assignments are all optional. Let me just underline that both, Keyman and OT49, are not at all made for advanced users only. They are in some sense even more useful for those who never program on and for the 49. Keyman seems to lost the assignaments every time I make a warmstart(ON-C), but after making RclK on a key the assignament work again. I don't know but this seems to be a very frustrating bug or maybe I have a particular configuration on the calc, but I can't imagine what... my answer has fortunately nothing to do with SysRPL which, according Caspar L., I may not know. Perhaps Caspar knows SysRPL to some extend, so ask better him for this type of questions. Nothing is wrong with Keyman as far as I see. And the double-click works even on an emulator in version the 49 doesn't respect all Sys-flags, in particular not flag -62 for the USR-mode in which one must be when using key assignments. Thus, to be shure about your basic flag setting, save your flags and all other wishes in a backup file in port 1 oder 2 (to be safe against crashes), variable STARTUP in HOME. STARTUP is run each time a warmstart occurs. Also some libraries are detached after warmstarts, e.g. the builtin libs 256 and 257. I know you're using OT49. This library automatically attaches the libs 256 and 257 after each warmstart. So you need not writing 256 ATTACH in :1: WS. There are several other reserved variables of which the most interesting are STARTOFF and STARTERR. Also tools like Emacs or Appsman provide reserved variables. To avoid that your HOME directory is filled with all kinds of reserved variables, hide them. They change seldom. I have only 12 visibles under VARS, mostly directories, but more than 30 hiddens. The ones that change weekly - the exchange rate of US$ and EURO, say - are also listed in a special CST menu. thanks for the startup hints and thanks too for create hide a magnificent tool warmstart(ON-C), Please no, Wolfgang R. As I recollect I merely stated in a previous message that: It may be that you have written some very nice programs but I see no need to tell us every time you post here that you are an experienced SysRPL programmer..... Your programming skills should (at least a little bit) be obvious to those who use your programs. Or as John H Meyers reacted to your post (in the same thread): So to wrap up another version of the same suggestion I have repeatedly been making, why not just offer what you want to offer, and not accompany it every time by a statement bearing some negativity towards other offerings? This is exactly the way I feel when I read some of you posts........ It may be that you mean it well but it sure doesn't sound that way all the time. revers trasform a Laplace function? I saw at hpcalc site but the only really big Try to recover memory? So my advise is, if you're gonna work with long difficult functions, use the 100kb library (Erable is really great). If you don't have so much space, or your functions are not complicated, LaplaceG should not give problems. Together with Pivo (Peter Geelhoed) we created a new library manager, Libman. A one-page library which does not only create and split a library, but allows to extract extra information from a library, in particular $EXTPRG if such a file is present. Note that $EXTPRG may initiate some unwanted manipulation on your mashine, so it's good ro have control on what it really contains. You may also extract the list of all rompointers from internal and external libraries, e.g., the huge list of rompointers of the internal lib 2270 whose source directory has 78 (!) pages and whose first entry is the command ADDTOREAL. These lists may be used to create own application menus. The splitter is based on the not yet published version 3.0 of Libex and is very powerful. It even splits unsplittable libraries like extable and Nosy, though not totally correct :-) Pivo did the necessary asm programming, I did the SysRPL-programming, an ideal teamwork. Libman is only 1.5 KB. Presently only on my site ftp://ftp.math.fu-berlin.de/pub/usr/raut/HP49 under tools. Have fun! Libman has completely been rewriten (coauthor Pivo). It is the most powerful library manager on the 49. Small library, only one page. Main commands: |D~L| toggles library creation and splitting, with a dialog box for creating the $variables $ROMID etc. If $ROMID is present, the dialog box is skipped in a very fast run. The splitter is a not yet published improvement of the present Libex on hpcalc.org. |LofRP| recalls list of rompointers of external and internal libraries, for making own application menus. |CsLIB| customizes the LIB key so that you see those lib titles on the LIB key which are wanted and needed in a given context (i.e., the current directory). And *you* determine the order in which the lib titles appear in the menu, not the operating system which does it in ascending order of the external romids. - Wolfgang PS. The stand-alone LIB key customizer CstLIB will be modified to make it compatible with Libman. Carsten's analysis of the expanded choose engine on the HP49, though not yet complete, is a break-through. The now documented tool will enormously improve the means to write high-quality applications and interface enhancements for the 49. An example is Libman v.10.2001, presently only on ftp://ftp.math.fu-berlin.de/pub/usr/raut/HP49/tools/ The new command LIBs sets a choose box on all external libs together with its own application menu. The standard CHOOSE has a simple menu, containing CANCL and OK only. The expanded menu includes, e.g., the command T&R to extract title and romid of any chosen lib to be pushed to the stack, or C&E, extracting $CONFIF and $EXTPRG. And a command to append any chosen title to the LIB-parameter LPAR (with this the LIB-key menu can completely be customized). The expanded 49-choose engine is something I was dreaming on and hoping for since long :-) The lib menu on righshift 2 (LIB) shows library titles in accending order or their Rom IDs. The first entry on page 1 is extable. Actually, I don't anymore use its commands - these are now integrated in Emacs. Hence, I would like to remove the title extable from the menu (clearly not the lib itself), and to reorder other library titles, to get a sort of subject classification via pages, one page for game libraries etc. Clearly, this all has nothing to do with reorderings in the ports. Perhaps somebody created already such a tool. Pivo suggested that it should perhaps be part of APPSman. time for this pleasant game anymore :-) I don't know whether you'd like this but I thought one may split a library, put an empty (i.e. ) string in the variable $TITLE then create the library again then use the newly created UNNAMED library instead of the 'old' one.. and that's it!! I hope this is not what you *didn't* want to read :-) P.S. This is another silly idea, but here it is: Since you're always in USR mode (aren't you!?) you could write a very small program to show the menu you want to see and assign it to the LIB key ;-) __ this doesn't work for extable, by shure. For this library and several other special libraries aren't splittable, or if they split they do not recomile correctly. Then show me your very small program if you have, say, 20 libs and you just want reorder, omit extable, etc. This is basically possible (though not in UsrRPL). But remember, such a tool should work for everybody, not just on a single mashine :-) But of course this is only an interim beta at Google; wait for the real thing to come (and how will advertising fit into it, as all this development investment must start mustn't it?) Google's advertising seems to be exceptionally low key I hope that it proves to be a successful and lasting business, for otherwise the history of the world will someday be one two-week window of information at Newsguy (or equivalent), and you'll have to wade through porn ads (the only remaining successful world business) to even get to that. Writing this brings to mind the scene from Capra's film It's a Wonderful Life, where the angel shows how different the world would be if it were left solely to the money-oriented banker, rather than the influence of the small-town home guy, whose motives are centered around personal values and relationships to the whole community. http://www.suntimes.com/ebert/greatmovies/wonderful_life.html http://www.filmsite.org/itsa.html http://www.geocities.com/Hollywood/Makeup/8156/Baileys.jpg There's more to the picture than I put in it. There's more to the picture than was written in it. There are more values in the picture than we knew we were playing with, that we didn't even expect. There's more to it than we thought we had. It's the picture I waited all my life to make. ~Frank Capra Well, it is somewhat related to my question. Therefore, I installed your program LIBSM just to see it and to have an example of a UsrRPL program Still several seconds until the reordered lib-menu finally shows up - there are about 20 libs on my 49. At least, extable was put at the very end because it's the only library I know which doesn't start with a capital letter :-) John, it's touching to see that you always exploite UsrRPL to its outermost limits. But we have to accept that this language is'nt the right one to handle user interface on the 48/49, isn't it? At least not in its present shape. It would gain much more power if only a few basic SysRPL commands would be added to UsrRPL, e.g. the quoter x', the commands INNERCOMP and ::N. Don't you think so? Although the inventors of RPL and the operating system of the HP4x deserve the Nobel price, they somewhat underestimated the abilities of a normal user to manage things like metaobjects. for some people, these examples are even useful learning tools. somewhat technically, for a written report about the Challenger space shuttle disaster, but when he testified before the US Congress on broadcast television, he just dunked a piece of Morton Thiokol rubber sealing material into a glass of ice water and showed how it then broke into pieces. Everyone understood immediately. But for you: get a great speedup of the alphabetic library menu program by a more direct construction via SysRPL, which I know that you know how to do ;-) For those who are satisfied storing the result in a more permanent place, rather than rebuilding the menu every time, the speed of the program is of no significance, since it would be so rarely executed. This is similar to the trade-off between indexing a server overnight to be able to do quick index lookups, vs. slowly re-examining the whole filesystem in real time for every new find request; one gives you more speed, the other gives you more current information. for you (in case any other readers were wondering). Why always seemingly argue against the provision of many alternate ways to do things, each having their own special values for certain purposes? The whole idea of a pot luck dinner is to have so much variety that everyone will find a dish perfect for him, whereas to have only one dish will suit only those who have exactly the same desires and tastes as that one chef. If someone seems to keep saying no need for your dish, take it away, mine's all you need, that approach leads to a narrow and limited range of fare (e.g. Microsoft :) As for me, I'd rather have a cornucopia, even if I don't consume it all myself. Ok, I had on my 48 a very useful tool called fastlib This created a menulist and stored it in the hidden dir when the calc warmstarted so that it could display the libmenu really fast(when assigned to the lib key). Perhaps you (me?) should pliagerise this and make a tool that can edit the list so that you can reorder or remove libs On warmstart it should check for new libs and append them to the libmenu. but leave the order intact -- In order to avoid the impression that we (JHM and me) have problems with each-other let me add some words. John is posting since much longer in this NG than I. For me he is and was always a kind of auhority, very competent in every respect. Although I'm not a newbee anymore, I keep reading all all his postings, not only for their polished and rich language but also for their substance. When starting learning SysRPL, I systematically looked through the Goodies disks to find his hints for all the benefits the HP-community got from you while you probably got nothing, not a penny... claim it is a bad program. In the contrary, it it the best what can be done in UsrRPL, as with all your programs. But as a matter of fact, not much can be done in UsrRPL for a real user-interface enhancement. And a newbee may not know about this... I'm sure this is not the thing you'd like to have in your calculator, but here we go: Put a list of the libs (I think you need their pointers..) you want to see in a list, say LIBPAR, and save it in the HOME (or in any other directory for a custom LIB menu ;-) just like your APAR in APPSman, I really like it!!) Assign the following program to the right-shifted [2]: You see! It's very short :) I'm still in the stage of learning SysRPL, so I don't feel very confident writing programs in SysRPL at the moment. How would you write such a program in SysRPL? I don't know how to check for the existence of APAR, how do you do that? Hope you like this.. __ since you're very polite I'll answer. Did you try yourself what you propose? It's not at all that easy. The main problem is the creation of a small but valid argument for TMENU. In addition, you didn't at all consider the necessity that at the end of the lib listing in the 49, the 3 port entries must be listed, not mentioning that each menu key has directory-like keys. Thus, save your and my time. First test and then post. LIBPAR say, that is the easiest problem. This can also be done in UsrRPL. Just write << 'LPAR' IFERR RCL THEN NO LIBPAR DOERR ELSE Note that this test is still uncomplete. You must be shure that LIBPAR's content is really a list and, finally, that it is a valued list for our aim. For instance, the 48/49 operating systems first tests the presense of PPAR. If not present, it is quickly generated. If already present, it must be shure that it is a list all entries of which are on the right place. Thus, a huge test program is run in the operating system before PPAR is actually used for drawing a function graph, say. A SysRPL-programmer is fully responsable for all error checking by himself. This checking is a delicate matter and often underestimated by less experienced programmers. If the author of a program would be fully responsable for a program - and he *should*, at least if programming is the job he is payed for - the quality of our software industry would be much higher. Although perhaps Kamel didn't think it completely through, I must say this: It seems to me that you have a very high opinion of SysRPL-programmers (perhaps you are one yourself ? ;) and can not resist the urge to complain about less experienced programmers (posting here). It may be that you have written some very nice programs but I see no need to tell us every time you post here that you are an experience SysRPL programmer..... Your programming skills should (at least a little bit) be obvious to those who use your programs. http://home.hccnet.nl/c.lugtmeier/ -- the user programming language, and they also supplied SYSEVAL, LIBEVAL, etc. (plus built-in library 256 in the 49, so that there is no ROM function which can not be employed as needed. They also designed the HP48/49 as a mathematical scratch pad, so that programs could be created easily, quickly and safely to get desired tasks accomplished. Just like the post only in English threads, any other use this approach only suggestion seems to me unlikely to be beneficial -- or even welcome. activity, especially when applied to education, where much imagination and creativity is stifled by teachers in this way. I have myself had the experience of answering an is there a way... request in this newsgroup with a no you can't... answer, and then seeing someone else come up with a way the next day, which helped to remind me of this very point :) There are even those who tell would-be purchasers of calculators that since many teachers only know and teach the TI calcs, and since TI is so easy and fast to use and HP is so hard and slow, you would not be able to get through school with an HP calc, but some number of people have defied the impossibility and have succeeded in any event; some of these may even feel that they have made the most suitable choice for themselves, even though there are others who would be better off with the other choice. So to wrap up another version of the same suggestion I have repeatedly been making, why not just offer what you want to offer, and not accompany it every time by a statement bearing some negativity towards other offerings? (or even towards hpcalc.org, who is too busy to try everything himself) Surely we are all better enriched by appreciating the different values which many different approaches offer, from which we can each pick that which we prefer for ourselves. This principle has an even wider range of application than to mere calculator programs -- but that would of course be off-topic ;-) Now boys, don't make me turn the hose on you two! - MOM See John you are not the only one to quote the Great Ones :-) The alternative is being beta tested presently I expect to release it next week -- Do you or anybody want the 49-port entries on an extra key, e.g. rightshift-hold LIB? No problem. - Wolfgang PS. These tools cannot be programmed in UsrRPL. Note that this statement is not at all a critics on the language. In the contrary, I like it and programmed several years only in UsrRPL. The fact that it isn't the right language for a comprehensive userface enhancement doesn't say anything on its quality. It can rigorously be proven that UsrRPL is algorithmic complete, i.e. *every computable function can also be be computed with a program in UsRRPL*. But don't ask how long such a program had to be :-) developing in SysRPL/ML, but many small things are very easily programmed in UserRPL, by anyone who has any inclination to quickly develop a result, depending on no outside aids at all, without even risking a crash, so don't be discouraged by claims that it can't be done. Here is a simple task (adjustable for various similar objectives): Put an alphabetically ordered library menu into the CST (Custom) menu (once this is done, you can just press CST [or CUSTOM] to re-display it, instantly, at any time thereafter). Here is one simple pure UserRPL solution: << PATH HOME LIBS SWAP EVAL 1. << NSUB 3. MOD NOT If you are a bit impatient about getting your custom menu built, and want it finished faster, you can modify this slightly, invoking one internal function to avoid using the (slow) compiler: << PATH HOME LIBS SWAP EVAL 1. << NSUB 3. MOD NOT If you feel that tabbed menu labels are essential to your feeling right about this menu, you can slow the program down again a bit to create the alternative menu labels: << PATH HOME LIBS SWAP EVAL 1. << NSUB 3. MOD NOT Relative timings for the three program versions, with my one dozen installed libraries, on an emulated authentic speed HP48GX [real calc times may differ, YMMV]: 4.901_s 2.178_s 2.772_s without sorting, takes 0.420_s by comparison, and sorting the resulting menu with the SORT command takes 0.815_s, so adding these two benchmark times gives 1.235_s for what might have be expected if the built-in ROM library menu had already included sorting (perhaps a guess at the best that could be achieved by any SysRPL/ML program). Once you have built the menu, of course (say at STARTUP), re-using it takes negligible time, so even these times are relatively unimportant, but this experiment shows anyway that you do not have to spend exponential time (or even polynomial time) to do a simple task, even with UserRPL, if the designers of the HP48/49 system gave you access to sufficient resources to do the task, which in many cases they did! If you factor in your own personal development time, and account for any crashes and restores that you might encounter along the way, then you can determine your own break even point for venturing into SysRPL/ML for your own small-function development (if you are even interested, which some are, and some aren't). You could also start with a UserRPL program as a breadboard for making a subsequent SysRPL version, if the useful approaches to the task happen to be similar in each case. To run some of the above programs, you need to replace the ROM entry point names by their actual addresses (different on 48 vs. 49); I use the SYSTR program to do this automatically on my calcs, or you can look them up manually in an entry point list (e.g. this one from Joe Horn, with both HP48 and HP49 *hex* addresses): http://www.hpcalc.org/hp49/programming/entries/xref4849.zip HP48G HP49G ENTRY POINT NAME ----- ----- ---------------- 3A3EC 2E1EB MakeDirLabel Syseval program builder and translator (two sources, same program): http://www.hpcalc.org/hp49/programming/misc/systrans.zip http://groups.google.com/groups?ic=1&selm=8618et%24p7v%241%40nnrp1.deja.com ---------------- About Admiral Leahy and the A-bomb: http://www.doug-long.com/leahy.htm Other historical notes: http://www.invent.org/book/book-text/30.html http://www.arlingtoncemetery.com/wdleahy.htm Leahy and DeForest were both born in this great state of Iowa, USA (which shows that more grows here than just corn :) And finally (thanks for the reminder, Lester): Imagination is more important than knowledge - Albert Einstein ----------------------------------------------------------- And many thank's. For those who are interested by an automatic assignment to the lib key, there is a modified version of John program: Carreful , i use hp 49 entries, i don't know th 48 adress. I have supressed the MENU command and add a TMENU instead. For that i use the sysrpl ::N command to make only one object ( ob1..obn The #3311B SYSEVAL is TWO and #5445 SYSEVAL is ::N finaly 93.3 ASN assign this to the lib key (LS LIB). This one is my favorite! Now to make this post valid for comp.sys.hp48, here is a prime checking (Compile it with jazz49). Bytes: # A946h 198.5 * Prime.s * Author: Daniel Lidstr232m * Checks for primality. (2<=range<1E12) :: CK1NOLASTWD CKREAL %2 OVER %< OVER %2 %MOD AND OVER % 1000000000000 %< AND ITE :: DUP %SQRT COERCE SWAP CODE GOSBVL =SAVPTR CD1EX A=C A CD1EX C=DAT1 A D1=C D1=D1+ 10 C=0 W C=DAT1 W R0=C C=A A D1=C D1=D1+ 5 C=DAT1 A D1=C D1=D1+ 5 C=DAT1 A R1=C.F A LC(5) 1 R2=C.F A -- C=R2.F A C=C+1 A C=C+1 A A=R1.F A GOYES TLoop A=R0 R2=C.F A GOSUB LongDiv C=0 W ?A=0 A GOYES FLoop GOTO -- FLoop GOVLNG =GPPushFLoop TLoop GOVLNG =GPPushTLoop LongDiv B=C W C=0 W D=0 W D=D+1 A P= 9 - ?B#0 P GOYES divLp BSL WP DSL WP GONC - divLp A=A-B WP GOC + C=C+D WP GOTO divLp + A=A+B WP BSR WP DSR WP ?D#0 WP GOYES divLp P= 0 RTN ENDCODE ROTROT2DROP ITE %1 %0 ; :: DUP %2 %= ITE %1 %0 ; ; -- Daniel Lidstr232m danli97(at)ite.mh.se http://www.ite.mh.se/~danli97/ 62 23' 25 N 17 15' 31 E Put it on the stack and apply BYTES. Use the port menu to put your library on the stack, it should something like 1: Library 1234.... The number on level 1 will be the size in bytes, the hex number on level 2 will be its CRC (sometimes used to ensure that download was successful). David Haguenauer http://zap.to/hsimpson learn the ropes. i am trying to write a small program using a promp with an imput string. when i try to write the character for the line feed (symbol on . key) it will not print, it just goes to the next line. it must be something stupid, but i can not find out how to print the symbol in order to use it in a program. what am i doing wrong? thanks much (i also tried the chars menu with same result) That is how you insert the linefeed character. Remember objects on the calculator are compiled for display, so if you type it will always be displayed as LMenu is a library menu customization program It alows you to determine which libraries appear in the LIB menu, and in which order. This is similar to CsLib of Libman by Wolfgang Rautenberg and myself. Wolfgangs unsurpassed strive for compactness has resulted in a CsLib of only 130 bytes whereas LMenu has 640 bytes. CsLib is also more flexible as it rebuilds the libmenu everytime it is called upon. LMenu stores the menu in the hidden directory for fast access to the libmenu. This lets LMenu display the LIB menu (22 titles) in only 0.15_s, CsMenu requires 1.16_s and the build-in LIB menu 0.53_s So for speed get LMenu, for flexibility and compactness get CsLib I have uploaded version 1.0 of LMenu to http://www.sv-kats.nl/hp49.html since the hpcalc upload is not working yet -- As you might aleady know, in RPN Mode you can: The values are taken from the stack. In the example above, stack level 3 goes to local variable a, level 2 in b, and level 1 in c. But in algebraic mode there is no stack. So the function LOCAL is provided to assign values to local variables, even if they are not explicitely provided as arguments to a user defined function. Did that help? is it possible to use the input comand to store a value into a local varible or does the values have to come from the stack before i run the program?? example, this doesnt work It works for me. However in your program you don't check the value of A. Try modifying your program as follows: If you want to see how this works do this: Put the program on the stack. If it's in a variable you can do that by pressing Right-shift then the program's softkey found under the VAR menu. Now with the program on the stack. Left-shift CAT (PRG) choose option 14: Run & Debug Press F1 (DBUG). Now, press F2 (SST) your program puts a on the stack press F2 again your program puts on the stack Press F2 again your program executes INPUT enter a value for A say 25 the program puts 25 on the stack Press F2 again press F2 again 25 is stored to the local variable A Press F2 twice your program puts the contents of local variable A on the stack Thats it! press F6 to stop the program and exit the DeBUG enviroment. I used to have trouble programming in userRPL at first as well but knowing how to use this DBUG tool helped me out tremendously. I hope this helps you. You will find the answer to this question and to many other UserRPL questions in Eduardo's book, Programming in UserRPL Get it here: http://www.hpcalc.org/hp48/docs/programming/usrtutpd.zip varible To use local variables you must have either a program or an algebraic right after the creation of your local variables: Also, always use small letters for your local variables. Capital letters are for global variables. This is not required but used by many. How/can I get the 49 to reduce following logic expression: M=(NOT(A+B) + NOT(C*D))*(A+C) = C*((NOT(A+B))+D) 'NOT(A+B) + NOT(C*D))*(A+C)' is not equal to 'C*((NOT(A+B))+D)' Use the Bool49 library to handle Boolean expressions http://www.hpcalc.org/hp49/math/symbolic/boolv20.zip Hey There, I'm looking for a HP48 G manual. I cant't find mine and I would like to now how to calculate an inverse matrix. does anyone know if you can download the manual somewhere because i can't find it on the net. Please Help me out. I would give the voltage over the bridge and the value of 5 Resistors, and I[LeftGuillemet]d like to receivege the voltage over each resistor espacially num. 5 (brigde resistor) Nowhere I founded so a program in the net. thank you for your help Yes, I am using both, an original Epson/HP 128 Mb card (ca. 50,- DM in 1998) and a 2 Mb memory card (ca. 170,- DM in fall 1999), manufactured by Mike[LeftGuillemet]s EDV, Aachen, in my HP48GX. Both are very reliable, and I[LeftGuillemet]m astonished that the 128 Mb card is still working on its first 2016 battery. Since there would be enough space for it, I only wished the battery clip of the 2 Mb card would have been designed to hold a larger cell - the tiny 1216 battery in there was drained out after only half a year. I am now using a 1220 cell, but I still have to wait and see if this will at least last for the promised 1,5 year period... On the other hand, the battery clip blade on that card gives a very tight electrical and mechanical contact - I have heard that on some other 3rd party cards the clip may easily loose contact when the calc is exposed to vibrations or shocks. BTW. The space between the two cards is large enough to hold a set of replacement cells in a small plastic bag - just in case... A remarkable cheap source for batteries in Germany is http://www.reichelt.de. Speaking of batteries, after bad experiences with rechargeable NiMH batteries from GP (very different measured capacities ranging from 380.. 495 mAh even within the same production charge of nominal 500 mAh cells), I[LeftGuillemet]m now using Varta AccuPlus Ultra 600 mAh NiMH cells for the calculator itself (measured capacities 595..610 mAh). The only backdraw with using NiMH cells is that you always need to carry a replacement set along with the calc, because, if you continue to use it after the battery alarm goes on, you will not have more than 30 minutes before the calculator dies... Well, anyway, Joachim seems to have a HP48G instead of a GX or a G+ and he may easily run into memory shortage problems with just 32 Kb onboard memory. On the other hand, internal memory expansions are much cheaper than memory cards, but personally I like to ability to physically remove the static memory from the calculator. Greetings, Matthias (FWIF, I just saw a typo in my other post: I have a TI-85, not a TI-82.) How many mAh should the batteries give in order to be used with an HP49G? I'm think of buying a set for my personal use. Do you who question you who are using 48GXs have the memory extended? Of which size is the memory extended again? It teaches. -- is object to a string in SysRPL syntax which, when compiled with ASM, reproduces that object (most of the time). But note that you don't need to convert between Usr- and SysRPL, because UsrRPL is nothing but a subset of switch the stack display between UsrRPL and SysRPL syntax by toggling system flag -85. Hope this helps, Albert -- !NO CODE !RPL :: x<< xROOT ; @ This program is in fact readable by MASD (which is the on board compiler) but hardly a true conversion to system RPL. To program in a language you must understand it yourself in order to take full advantage of it's greater speed and functionality. II or any other chip (i.e. motorola 68h11, etc). I just got the calculator and i wouldn't mind spending some time playing around. i saw a program for the hp48 for a temperature sensor for the(using BS) in hpcalc.org. Does anybody know where can i obtain info on the web to create interfaces to any chip? it would be a lot of fun to program the LEGO MINDSTORM too using the calculator(this could be too much to ask, but i like the idea of learning and playing) my knowledge of these chips and programing is minimum at this time, but i am willing to learn. Can anybody send me to the right direction? another question: when i try to put an algebraic object using ' in the plot setup, the calculator freezes (it won't take any characters)and all i can do is to key on cancel. is this normal? Whenever I try to access Mika's Heiskanen's web page to see what he's got for HP calcs I just find a page full of links and stuff for the HP!!? Do I have the wrong address: http://www.hut.fi/~mheiskan/ ? Could you please tell me the correct URL, or confirm that I've got the right one! | Well, it's been a while since we had one! | challenge: | write a UserRPL (strictly!) program that inserts linefeed chars | into a given string, every n chars (eg so that it displays correctly with DISP) | In : 2: string | 1: n | Out: 1: string' | Please note that the result string should not end with a linefeed! | (unless the original string already contained one) | Example: | ABCDE12345FGHIJ678 5 SPLIT | results in | ABCDE+12345+FGHIJ+678 with + the linefeed character << OVER 4 ROLLD ROT DO DUP 1 5 PICK 1 - SUB 3 PICK ROT 5 PICK OVER SIZE SUB | rules: no SYSEVALs, LIBEVALs Ok for this. | smallest size wins, timing unimportant Sorry, it's certainly not the smallest size : 105 bytes (I'm sure this programm can be made around 90 bytes). But it's fast. | bonus points if it works on a 48S as well. It works on 48S. Special Bonus : it may deal with lists (insted of strings) also... | ... The following has just been written to arouse JHM :-) << REPEAT PICK3 1. 4. PICK SUB + + ROT PICK3 1. + OVER SIZE SUB UNROT END ROT + SWAP DROP 91 bytes, CRC 7181h. On the 49, the SWAP DROP at the end can be replaced by NIP (French?). This gets it down to 88.5 bytes. Got mine down to 80 bytes (checksum #D21h) which should work on a 48S. Depending on how dishonest I wanted to be, I could drop that to as low as 77 bytes (checksum #FA9Bh). NIP isn't French; it's English, meaning a small bite. The command has a long and distinguished history in Forth. I am, however, a bit displeased that the HP49 omits TUCK. (In Forth, this acted like a reverse OVER. You might define it by << DUP ROT -- Like you, I used WHILE...REPEAT. Solutions with DO...UNTIL probably put extra linefeed at end of short strings against Werner's rules. My solution is: << 1. + DUP WHILE ROT DUP2 SIZE <= REPEAT DUP2 DUP2 SIZE SUB lf SWAP + REPL ROT ROT OVER + END ROT ROT DROP2 where <= is less-than-or-equal symbol and lf is linefeed character. Bytes: 81, checksum: #3E4Bh on hp48s/g. For hp49g replace the two ROT ROT sequences with UNROT commands to get a 76 byte solution. Tom I forgot that UNROT wasn't a UsrRPL word from the very to me about 3 years ago: ...having done SysRPL and assembly language programming for such a long time, I have found out that my understanding of User RPL has become rather limited. By this I mean that I simply do not know how to approach programming problems best in User RPL. Well, although I haven't done more than 3% of what Mika did, I've the same feeling, seeing that your program is 10 bytes shorter than mine :-) - Wolfgang PS. A little comfort for me: my program is faster because it avoids the slow REPL. Also you use PICK3 4 times which isn't in 48 series UsrRPL, though like UNROT was included in the 49g (thank you, former ACO members). Add 10 bytes to your 48 version :-) True, and more so as the string size grows, though mine can be faster for strings under 100 bytes or so if the number of added linefeeds is low. Fortunately (for me) the challenge this time didn't involve speed. Still waiting to see shorter versions. (I hope my newreader hasn't missed any.) Werner, do you have a version? Donald?? with DISP) those words come with 49G (thanks ACO)... Just testing out the MIO51 utilities for ALG48. Most of the functions are pretty straightforward but the symbolic matrix functions seem to be very choosy in their diet! I'm pretty new to matrix algebra so if anyone has any experience with this program, some tips on what type of matrices it can handle would be appreciated. The doc's are in spanish and while you can get the general idea I think I am missing out some important details. MASD, A good starting point could be the original HP documentation. RPLMAN.DOC, SASM.DOC, and maybe the JAZZ manual. The principles are the same on the 48 nad 49 series. There should be a 'supported ROM entries list', maybe along with the SDK. All items mentioned can be found on hpcalc.org I have a notebook without a serial port (Toshiba 2800-100) but i want transfer data from my notebook to my hp48, it' possible with modem? What kind of cable and software i need? Excuse me for my bad english!! -- Minervini Corrado Danilo - danilo@minervini.org _____________________________________ Che mondo sarebbe senza Montella - Italy Too bad; coordinate modes work just fine with symbolic vectors in various Sparcom cards on the 48 series... Correct. I always had the feeling that coordinate modes are mainly of interest for symbolic vectors hence it was not a priority. But it would be nice to add these capabilities of course. How to use MSLV? Put vector of equations on the stack, e.g. ['SIN(X)+Y=0' 'X+SIN(Y)=1']. Put vector of variables to solve for on the stack, e.g. ['X' 'Y']. Put vector of start guesses for the variables on the stack, e.g. [0,0] Now press MSLV and watch how the numeric solution is approximated. You could also use the Multiple Equation Solver or even the numeric solver for this purpose. Hope it helped, I'm trying to write a program which uses Euler's Gamma function, which is: G(n)=(n-1)! If n is an integer G(p)=(p-1)G(p-1) for all other values of p (multiples of 0.5), G(0.5)=sqrt(Pi) The problem is that I don't know how the hp distinguishes between reals and integers, since the TYPE function returns 0 for both of them. Does anyone know how to do this, or if there already exists such a program (or similar)? You can use the ! function of the hp48/49 series directly. It's in the Math Probability menu. For non-integers it returns Gamma(x+1). To answer your question, you could use FP (fractional part) on a value and check whether it is equal to zero. That's a good question, I don't know either. However... The HP49 has the GAMMA command built in, and as an added bonus can handle any real argument (including those that are not multiples of 0.5.) Both 48 and 49 came with a gamma function for real number. Type your number and ! (MTHPROB menu) or FACT cmd (from 48S/SX). If you're using a 49G, there's a real GAMMA cmd that may deal with complex numbers (with positive real part). I use a LNGAMMA subprogram to prevent some overflowing... And LNGAMMA is << DUP RE 0 <= { DROP '-oo } { {76.1800917295 -865053203294 24.0140982408 -1.23173957245 1.20865097387E-3 -5.39523938495E-6 } OVER { 0 1 2 3 4 5 } ADD / SLIST 1 + 19E-11 + pi * SQ * LN OVER - 4.5 - OVER 4.5 + I actually did look up the AUG for the gamma function, which isn't documented. Perhaps it was included in later roms, or perhaps it's just another glitch in hp's documentation? A ROM 1.18 (if I still a good memory) and higher... For syntax and result, see the inline HELP. i took it apart again (after i posted the previous posts) and when i put it back together, some keys didn't work (just like yours!). the problem is in the keyboard connection. it must be cleaned with a cotton swap very good (use alcohol). I opened back again and cleaned them and now everything works. to open it it only takes 3 minutes or less. drill the four blue rivets out of the battery comparment. pry it apart in half (easy) (be careful with the batery terminals,they may get stuck in the black cover) twist the four metal straps so that you can take the main board out. clean the connections put it together AND TRY IT . :-) (clean the display connections at the same time) Try to press firmly between the first row of keys and the bottom of the screen. That's where the keyboard connector is. Hopefully, everything should be fine. Maybe something got stuck underneath the keyboard, you could use these pressured air bottle and try to remove any dust that may be stuck there. If everything fails, contact me directly, I will see what I can do for you. I was testing the debug49 and I found a bug in the Debuggin process (The gonc instruction is buggy) so I left the program normally and when I started the Filer, the calc stuck. I have tryed the reset button, the DROP , the Enter +, but nothing happens, sometimes I can use the ON, F1, F4 and the Try to recover memory screen apears, I took the battery off for 30 minutes but nothing! the calc still locked! Something apears on the screen 3 lines with some points and the Busy Indicator Flashes, then the calc reset, this don't stop! The Guarantee has expired a long time ago... what I do now?!?!!?!?1 Try again with the reset button at the back.. the screen will get cleared then use ON make sure that you use a long enough paper-clip (or something like it).. hope this will help you :-) __ I have solved the problem, putting a paper-clip and holding ENTER + . the problem: The Bank 2 had Bad CRC. The Solution: Erase the bad bank and re-download it. I think that the flash area isn't that safe like we thought. I dont know what size paper clips they have elsewhere but here in Australia the paper clips are too big for the reset button so I use a sewing needle. WINCE pda (emulatorCE)? i have a philips nino-510. i have tried one for a jornada in hpcalc.org (http://www.hpcalc.org/hp49/pc/emulators/)but it doesn't come out right in the nino-510 (it cuts the top of the image). it needs to be for a standard pda. thanks much says... DISREGARD THIS MESSAGE. I GOT ONE :) Where? the image for the hp49.bpm sucks try viewing them before installing them use the one you like most :o) --------------------------------------------------------------------- I'm trying to make a program wich takes an equation an returns a list containing the variables used in that equation. The built-in solver do that, but i can't find a comand that makes only this. I did a program, but it's too slow << Tope SWAP WHILE DUP Tope =/ REPEAT DUP TYPE CASE DUP 9. == THEN DROP END 6. == THEN DUP VARS SWAP IF POS THEN DROP ELSE VARS + 'VARS' STO END END DROP END END VARS Any suggestions? Suggest you have a look at LNAME it may be what your looking for. Also have a look at Clear Solver on hpcalc.org for an example of its use. [CapitalCCedilla] -105. SF LNAME AXL { { CLR [CapitalCCedilla] RCEQ EVAL DROP LNAME AXL PURGE 0. MENU DROP -105. CF [CapitalEGrave] } } + 2. [CapitalUGrave]LIST STEQ 30. MENU [CapitalEGrave] I'm trying to make a program wich takes an equation an returns a list containing the variables used in that equation. The built-in solver do that, but i can't find a comand that makes only this. I did a program, but it's too slow << Tope SWAP WHILE DUP Tope =/ REPEAT DUP TYPE CASE DUP 9. == THEN DROP END 6. == THEN DUP VARS SWAP IF POS THEN DROP ELSE VARS + 'VARS' STO END END DROP END END VARS Any suggestions? Excuse my english, it's not my native language the solver menu (30 MENU) or the Solve Equation application, either of which creates variables A, B, and C while solving it, just as it would for the equivalent expression 'A+B=C' into 'EQ' then the numeric solvers still act exactly the same, still creating and solving for variables A, B, and C. However, LNAME [as of rom version 1.19-5] says stored into 'X' and LNAME is given instead the argument 'X' then LNAME AXL returns { X } rather than { A B C }, so it does not in either case correspond to the solver itself. This brings up the question: Is LNAME called by other functions within the ROM itself, or is it just there for UserRPL programming? If the latter, would it be appropriate to change it instead to a call to the original HP48 function (which is still in the ROM)? The above LIBEVAL program has also been adjusted to account for the possibility of *no* variables existing (e.g. with arg '2+3' an empty list will be returned, rather than no result at all). Menu 30 (in ROM) is actually nothing but the LIBEVAL function found in the program above (identical in HP48G and HP49G). Mini-challenge: What's the point of RCLMENU TMENU ? (which introduces a very minor quirk, rarely noticeable) If you anticipate using as an argument any fancier lists that are valid for the menu solver but not for Solve Equation (such as menu ordering or extra commands in the menu, etc.), then the following longer program will be needed: << STEQ #A901Eh LIBEVAL 'X' SWAP + 1. For HP48 *only*, the following is of course easier and faster: (thanks to Joe Horn, GD#10, findvars.doc) The only problem with the HP49 is that this old HP48 entry point was not supported (although stable), so even if we knew what its current address was in the HP49, it might not be safe to use. If there were any similarly stable HP49 entry point (or if it were available via an HP49 romptr or flashptr), then there could be an equivalently easy HP49 solution, but as of this moment I don't know of any closer equivalent than the longer first program above (note that it also flashes the equation on the display!) As always, memory backups are still recommended before use! ----------------------------------------------------------- If you'd rather pay attention to the equation, however, ignoring the user menu, then use this instead as the (hopefully) final version of what I have been developing here: << { } + 1. GET STEQ #A901Eh LIBEVAL If there happen to be multiple equations in a list, then it's another story again (for another rainy day :) The last program above would analyze the first equation only; LNAME by itself would make a list of both the separate equations and their variables, ignoring programs as always, and AXL following LNAME would give an error. The posted clean solver prog also assumes that only one expression or a program is given as an argument; a list arg could be a problem. I'm trying to make a program wich takes an equation an returns a list containing the variables used in that equation. The built-in solver do that, but i can't find a comand that makes only this. I did a program, but it's too slow << Tope SWAP WHILE DUP Tope =/ REPEAT DUP TYPE CASE DUP 9. == THEN DROP END 6. == THEN DUP VARS SWAP IF POS THEN DROP ELSE VARS + 'VARS' STO END END DROP END END VARS (old but relevant...) Of course, whee's first line produces an error. 6. is not a valid argument. - jrc Why do you think this is relevant? It's just an old topic from a confused user. Solve command give you the rigth answer as stated in an (also) old reply. I checked on my HP49 calculator and I get 1 as expected (after a respectable amount of time). If I use my standard flags I get 1, if I use the flags you provided earlier, I get (1.;0.). that's of course what I did. Maybe try 1/ outside EQW 2/ with my latest CAS version. But since I can't reproduce this, maybe some other people could try it too and we'll see if I should take time to try your specific flag configuration, I just tried with the usual configuration. version 1.19-5 CAS 4.20001013 on EMU48. Enter: 1: '(1-i)/2-r35' where r is square root on HP49 DUP set approx mode SQRT exact mode EVAL: 2: '(1-i)/2-r35 My interpretation is, that if this is a normal form (and in the problematic example we have two equivalent normal forms) may be easy for the 49g to handle it. Then the example shouldn't be an artificially complicated expression, but a normal (and huge) intermediate result. You can try on your calc, but before it, make a backup copy of your user memory and port 0 (you can do it in port 1 or 2). Saludos Jorge M. Valenzani -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= *** Usenet.com - The #1 Usenet Newsgroup Service on The Planet! *** http://www.usenet.com I believe that the bug you mentionned has been probably fixed. On my calc where I tested your flag configuration, VER returns 20010111. And I've tested the default flag config with the latest CAS, no bug. My advice is that you upgrade to my vger.flash or wait for 1.19-6. upgrading the ROM but because JYA is threaten with the release of 1.19-6 perhaps I will wait for a while '(1-i)/2-SQRT(35)' DUP I know switch to approx mode and press R, I get: 2: '(1-i)/2-SQRT(35)' 1: 'SQRT((1-i)/2-SQRT(35))' I switch to exact mode again. I then press EVAL, after a while I get an expression. I'm now in Complex/Exact mode SWAP [R] Now I press [Z] to perform the division. After a while I get another expression: '(-(2*i*f35*ff35*f((-(377-69*f29)+(754+140*f29)*f35)/377+2*f(71+13*f29))*f(( 280*f29+(1508+284*f29)*f35)/377/((10082+1846*f29+(284+52*f29)*f35)/4901)))+( -(140-2*f35)+(-(71-13*f29)+2*f35)*f(71+13*f29))*f(((-(377-69*f29)+(754+140*f 29)*f35)/377+2*f(71+13*f29))*((52780+9940*f29+280*f1015)/377/((10082+1846*f2 9+(284+52*f29)*f35)/4901))))/280' Now, I press DownArrow to start the Equation Writer and press F6. After a while, I either get a result (often different), or a TTRM Not this is a confirmed bug.. mode. Since Parisse Bernard can't reproduce the bug, we thought that it was solved in the last (1.19-5 CAS modified) version of ROM but need a confirmation because I can't upgrade the ROM for a while. But you have THE ROM then have the last word. You perform the right procedure but (I think was a typo) your result after the division isn't correct. This is just the denominator of the expression: As said in other post, you will get TTRM just from the stack, applying EXPAND to the final expression. I can't understand your conclusion after the test: ... I always get TTRM. This is with 1.19-5? 1.19-6 returns 1? This look a little confused to me. What I understand is that you aren't confirming the bug but maybe I missing something... I got my new hp49g and I love it but I can't find anywhere that tells me what I need to do with the software I have uploaded to it. For instance, I uploaded the hp48g library called ECLIB 1.00.zip but the instructions don't tell me how to install in once it is on the 49g. You can also get the FAQ at: http://www.engr.uvic.ca/~aschoorl/faq First of all you must unzip in your computer and just transfer the lib...... Put the library in first level of the stack Put the port number where you want to install the lib (0,1,2) Press [STO] Delete the lib (optional, just to free memory) Reboot the calc [ON]+F3 -- While program source code can generally be transferred from the 48g to the 49g (receive as ascii with 49g in Approx mode), binary code like libraries are not compatable and will likely cause memory loss. Many 48 libraries have been ported to the 49g, but many have not. After write several sysRPL/machine code programs, here's a user RPL program for the HP49G and HP48G(X). (Minor adapatations are needed for the HP48S(X): left as an exercise for the reader.) The program plays a four tone melody, repeating every 30 seconds. The calculator is off in the mean time. To stop the beeping, just press ON. It all started out as a simple whish, until I realized how tricky it was: then I just had to write it. me. << CASE OVER TYPE 10. =/ THEN DELALARM THEN DELALARM END Typed by hand. checksum: #3D11h It is made to be used in an alarm function, for example like: Store the program in :2:NiceAlarm If you set an alarm, use for the alarm function << DELALARM :2:NiceAlarm How it works: the program leaves the time on stack when it turns on. When the alarm gets processed, it checks how much time has passed. If this is less than .8 second, the alarm was probably the reason that the calc switched on, and the alarm is repeated. If the time is more, or something else is on stack, the user probably turned the calc on, and the alarm is removed. I have no shorter/faster program yet that does the same - perhaps in 345627 years... Just wanted to say that your program is one proof for the versatility of this machine. (And also for your programming skills, of course - fantastic combination of alarm and programmed on/off) I have the problem below... In a factory there are two machines that produce 80dB (decibel) of noise. What is the intensity of the noise in decible, noticed by a man equidistant of the two machines? The answer is 83,01 dB. Machine A (80dB) MAN MAchine B (80dB) (83.01 dB) Because 10LOG(2) = 3.01.. and summing it to 80 then we get 83,01...dB. The formula my teacher give me just work for two values NIa,b - NIa = 10log(IA/Io) + 10log (Ib/Io) - 10log(Ia/Io), if Ia=Ib NIa,b - NIa = 10log(IA/Io) + 10log (IA/Io) - 10log(Ia/Io) Using Log proprieties, NIa,b - NIa = 10log(2IA/Io) - 10log(Ia/Io) NIa,b - NIa = 10log(2IA/Io/Ia/Io), that results NIa,b - NIa = 10log(2) NIa,b - NIa = 3,01 (value of the noise to be added to the initial value) This mean that if we have a source of noice working and making a noise of 80db and if we turn on a second source of 80 dB, both sources will produce together 83.01 dB. The problem is to find a formula to calculate the result that work also with more than 2 sources. If you know this formula or/and know how to make a program to HP48/49 to do it please reply this post. CMarangon There are some roumors about a modified/optimized ROM but I don't know who/where/when. I am afraid that this was the end of the HP-calculators-story. No new calcs, no updates, only some crazy people that dare play with calcs, while everyone else is crying out loud, how nice the journada-crap is. I wish, I could give you better news. No more official versions but unofficial (call them beta). They said the same when the 38G became a failure, so we expect this time happens the same :o) and how expensive I wish too -- http://xie121.infovia.xtec.es/~rblasco Un222os, hermanos linuxeros And how long do you thing that the unofficial updates are going to be developed? I'm afraid that this is the second step in the process: Official-unofficial-forget it for ever. Could it be that the smiley has optimistic character? I don't know exactly Eric, I just got frustrated with all these contradictory news and anti-news. Anyway, it seems to me that the good guys - Avenard, Parisse and all the genious crew - are still fascinated with their work, and try to convince the bad guys (HP) not to burry the issue calulator for ever. Perhaps knows better? P.S. Still dreaming of the HPWhoKnowsWhatGX with multi tasking, and multi threading and multi everything though.... but the calc can afford the time, because it is otherwise just waiting for you to type something. There is a keyboard buffer, so if you go ahead and keep typing, the calc will not lose your keystrokes; once there are any keystrokes in the buffer, the calc will not divert itself any longer rewriting the screen contents, until it has once again exhausted every task you had set it to do. Simple arithmetic actually takes something like half a millisecond, so if you can manually type complete numbers fast enough to keep the calc busy, you are nimble enough to have played one of the bullet-dodging agents in The Matrix :) Setting flag -52 will prevent the lowest stack object from occupying as many as four lines when displayed, as is the default; this may help to lessen the illusion that the calc is slow, and thus make you feel less reluctant to keep typing, but it remains the case that when you load down the CPU with real work to do (e.g. running a program), it takes off at high speed. Taking an airplane is believed to be faster than walking, but for a distance of, say, just crossing the street, the time to board, fasten seat belt, take off and land might at first seem discouraging; for longer trips, however, the power of a jet speed HP48 calc begins to become more apparent. I tried the -52 flag off. Display update speed still slow as hell. It seems to me that the calculator does not give a high enough priority to refreshing the display. It makes the calculator a pain to use, as you often have to wait for a result to appear when making simple arithmetic calculations. at about the same speed, when you press ENTER after editing). The HP48 is not as fast at decompiling (creating display text from an object) as the HP49. Now I suppose you meant priority in the sense of not making the decompiler faster, but in the sense of what the calc devotes itself to while running, refreshing the display is actually the lowest priority thing of all; as long as there is some other calculating to do, the calc does absolutely nothing about the display until it's ready to wait for more user input from the keyboard, and only then does it turn its attention to displaying the entire screen, which it then completely re-draws, even if some parts did not change. This still has nothing to do with number *entry*, however; it is *displaying*the*stack* etc. which may take time, particularly if some of the on-screen contents are algebraic formulas or programs, rather than just numbers. Since keyboard input takes priority over displaying, the calc is always ready to accept input from you, however. Then this doesn't seem to be a good calc for you; a simple arithmetic calculator (with numeric-only display) may be more optimized than a complex graphical calculator (of 1993 era) for doing only simple arithmetic. Even an HP17B[II], HP32S[II] etc. might be the thing for you. If you offer that 48GX for sale (at reasonable price), I bet it will be snatched quickly! ----------------------------------------------------------- this stuff... but, for sure, my opnion is the opposite. :-) I write to ask for the behavior of the Polynomial Solver in the Numeric Solver menu. with zeros on the imaginary axe results often in zeros with small real negative part O(10^-14) but correct imaginary part. Now that I had some lessons on the Numerical Methods of math at my courses, I now that's quite difficult to determine very small values when producing numerical answers. BTW I think it could be fantastic to improve a method/alghoritm in the next ROM to find if the solutions with very small real parts are solutions on the imaginary axe or not. (if such exists). E.G. I'm now studying systems stability... so I know of the Routh criteria for estabilishing if a polynomial has only negative solutions or positive/null ones (and how much) without performing the effective calculation. Does exist something similar to know if a solution has 'Re' part = 0? I might be stupid but i don't know how to convert: 14 degrees 31 minuts into degrees ( solution is 14,516 degrees). I can convert 21 hours 45 minuts into 21,75 hours but it takes few steps to do that with CONVERT Maybe there is some simple program which can do that in one step like old calculators did. But they had special key for it like my old HP 67. Matja262 Which calc are you using????? tell us a bit more please!!! r named for connversion between decimal hours and hours-minutes=seconds formats. They do equally well in converting between decimal degrees and degree-minute-second formats. Yes, and with the key assignment capabilities of the 48/49 it can really be very convenient. [a green key that looks very much like a right arrow but clearly has no 'r' on it] [another key which is marked ON, unless you look very closely above it, it has a couple of other marks, but you know what I mean by ON anyway...] You should continue to rebuild them. The pack for the 25 is quite rare because the back is built in. You may want to post this question at www.hpmuseum.org There is a daily forum that is read by all collectors. Great site for all HPer's to see. -- Tom Lianza Technical Director Sequel Imaging Inc. tlianza@sequelimaging.com find either Recently, I had a very competent programmer mention an interest in porting PowerPlot to the HP49. Before time is spent on a porting project, I thought I would first ask you all for your input. Since I don't own an HP49, I really don't know how much use this could be or not... so... -is PowerPlot a program you'd use on the HP49? -if so, what version would you like to see ported? (there are actually 3: light, light + table, full (beta); for a description of each, see: http://leviathan.orblivion.com/hp48/ ) -would you be willing to wait (if this is possible for the person doing the port) until I am more confident that the full version that is currently beta is better tested or would you rather have one of the better tested light versions ported [perhaps] sooner? -if the full version is ported, would anyone be interested in being a beta tester to quickly try to identify problems before it's ported? -After the port is completed, would anyone be interested in maintaining the HP49 version and maybe even improve upon it (completely separate for the HP48 version I maintain)? Again, these are just some ideas... nothing is committed yet by myself or the person who has offered to do this. I thought I'd just see how interested people would be before time is invested in such a project. The plotting capabilities on the HP49 are almost the same as on the HP48 (except that we now have (the really cool) Fast3D and Table options). So, I would go for the full (beta) version.. this way we'll have two beta versions that would develop parallel to each other on both calculators :-) If this is not gonna take too long then I can wait, otherwise go for 'full'!! I'll do my best, wish me luck! Currently I'm still in the stage of learning SysRPL and ASM, I'll be very happy to contribute to this program once I feel confident enough..(Jurjen N.E. Bos. may be very helpful here: his program HLDRAW is really very good for 3D surface plotting with hidden faces) me too (*_*) I just wanted to thank everyone who added their input both here and in about this. I write to ask for the behavior of the Polynomial Solver in the Numeric Solver menu. with zeros on the imaginary axe results often in zeros with small real negative part O(10^-14) but correct imaginary part. Now that I had some lessons on the Numerical Methods of math at my courses, I now that's quite difficult to determine very small values when producing numerical answers. BTW I think it could be fantastic to improve a method/alghoritm in the next ROM to find if the solutions with very small real parts are solutions on the imaginary axe or not. (if such exists). E.G. I'm now studying systems stability... so I know of the Routh criteria for estabilishing if a polynomial has only negative solutions or positive/null ones (and how much) without performing the effective calculation. Does exist something similar to know if a solution is Re=0? I have had no trouble installing libraries on my 49 for quite a while now, but all of the sudden I tried to install BABAL49 on my calc and I got the Invalid Card Data error message. I tried a PINIT but that didn't work. So I tried to install it on port 1 and it worked perfectly. Port 2 will not take any new files or libraries, and I have tried everything I know to fix it. I deleted all the libraries in it and reset the calc multiple times. I have encountered it seems like a big bug in ROM 1.19-5. If I graph: ABS(X+2) / (X+2) it just yeilds a stright line at 1. Now, if I plug in something like -8 into the equation, as you can see, it doesn't yeild +1. Also, the table shows a Y value of 1 for every X value. Even the one that isn't in the domain at -2. Now, obviously the limit doesn't work with this equation either. If I try to take the limit at -2 it yeilds 1. Any ideas? -- Clear flag -119 (You need Rigorous on, you can do it from MODE/CAS as well) When rigorous is off it omits the absolute value Use 'x=-2+0' for limit from the right, and 'x=-2-0' for the limit from the left.. and don't forget to have Rigorous on!! __ when it's INFINITE RESULT. I think this is a REALLY important error. When you try SEC(90) (Deg mode) it gives the correct result, and the same with 100 Grads. It also happens in CAS when working on approx. mode.... I think this should have been checked................ In 49G it doesn't happen..... -- http://xie121.infovia.xtec.es/~rblasco The HP49G doesn't have SEC. 40G, but error with SIN(100). No problem with SIN(100) in 49G Regs http://xie121.infovia.xtec.es/~rblasco Un222os, hermanos linuxeros I don't see any error here. When you evaluate sec(2*pi/4) in approx mode, you first replace pi by an approximation, therefore 2*pi/4 becomes a little bit different from the exact value pi/2 hence you get a large value (positive or negative depending on the approximation of pi you make) but not infinity. Well that's a precission error, isn't it? I think a pi/2 ang could be checked before replacing pi........ That wouldn't cost so much.... I much prefer to have no interference in the approximation process. This could lead in other situation to worse situations. Here the answer is sufficiently explicit for everyone to guess there is a singularity anyway. Look at the HP48 FAQ for more details about approximation. If you prefer calculators that cheat, I don't. . I've a problem. I've found programs to manipulate symbolic matrix but none calculates (symbolic) autovalors or autovectors. Can you say me if exist any program that can do it? PS: My calculator is a 48G (only 32k, sigh!), thank you again! You can have a CLUE about it reading the informations at the page: http://www.area48.com/syntax/miscellaneous.html By the way, in English, we say EIGENVALUES and EIGENVECTORS Just type CRLIB and the lib will be created, but remember that this Debug is in beta stages, I have tested it and found some bugs, eg: CODE SAVE LA 03 { A-1 B UPNC } LOADRPL ENDCODE Try to debug it and you will see a very curious fact when the GONC instruction is Evaluated. I've not had the keyboard problem, but my HP-48SX, years ago, (1991 ?) developed the football pattern in the center of the screen that was pretty much what you're describing. It got worse and worse, finally it became permanent and made the screen useless. Hewlett-Packard exchanged it for me and I've not had the problem since. I was not aware of it happening on the G series as well, I thought they fixed that problem. Seems like it was common, then. Don't know if HP will do the same now, and I don't recall either if my SX was in/out of warranty period. I don't know about the keys - sounds pretty bad. Good luck, jrc ----------------------------------------- what i want the program to do is to solve pythogoras theroem. i want it to ask for the side lenghts of 'a' and 'b' calculate side 'c' and display all of the sides when finished, at the moment the only way i can get it to display the three lenghts is to store it in a list, because i cant find an output command to print each value out. this is the code i used << INPUT(Enter a value for a,)sto a; INPUT(Enter a value for b,)sto b; sqrt(a^2 +b^2)sto c; {a,b,c}sto answer You can try this: << DUP2 @ save a and b SQ SWAP SQ + V @ compute c (V is square root) CLLCD @ clear display c= SWAP + 3 DISP @ display c b= SWAP + 2 DISP @ display b a= SWAP + 1 DISP @ display a 7 FREEZE @ freeze the entire display Here is the address for a document that explains all the CAS commands, but in addition has some chapters at the end devoted to algebraic programming if you But, if you want to learn a real programming language (much more effiecient, quicker, more powerful, etc.) download this to learn UserRPL. Trust me, you By the way, most of your questions can be answered by documents at www.hpcalc.org. I don't know anything about algebraic mode. I suggest you ditch algebraic mode and start using rpn mode. Rpn isn't that hard, just put everything on the stack before executing the commands: 1 2 + or Enter a a: INPUT Read one of the tutorial documents on hpcalc.org. Keep asking questions on comp.sys.hp48. Just don't give up! /Daniel do a [INTVX] [EVAL] again. isn't the result questionable? for a no brainer, it could be interpreted as the original funtion! (i just came back from my differential equ test. heeww--) ..looks okay!! I got: EXP(-3*X)/3/3 which is exp(-3x)/9. Now if you differentiate this twice you get (exp(-3x)/9)''=(-exp(-3x)/3)'=exp(-3x) If you're expecting to get int(int(exp(-3x),x),x)=int(-exp(-3x)/3+c0,x)=exp(-3x)/9+c0x+c1, where c0 and c1 are constants, then shall I remind you that the CAS does not add integration constants by default: You have to add them yourself if you want them!! __ .. Yes, I think that it can be not clear for many users specially that ones like me, absent minded users. If someone is working with an HP and integrate that function and need exit for five minuts to call someone on the telephone, for example , when he get back probably will not remember if the function on the stack is the original function or any other function or a number generated because someone is playing a joke on him.. I am of opinion that comments, as you said, are indeed needed for ellegance or to agree with some standard. publications, symbols, units and constants you use. Other example, in sites, it is not good to use abbreviatios, because many people dont know what they mean. The story is similar for the function you presented here Many people can forgot if the function is already proccessed or not. In my opinion, it seems it should be good to have comments and a symbol of derivative or integral or functions, but it is not extremely needed, in the graeatest part of the cases. For example: Integrate the function f(x)= x^2 for the variable x, from A to B The result presented by HP is 'B^3-A^3/3' but indeed it should be, always INTEGRAL (A,B) x^2 dx = 'B^3-A^3/3' as appear in the equation writer of HP49. CM CM i'm sorry i wasn't clear enought. the expresion 'exp(-3x)/-3/-3' can have two different meanings. one is '(exp(-3x)/-3)/-3' and the other is 'exp(-3x)/(-3/-3)'. Since the 'division line' lenght is equal and there are no parenthesis, the mathematical expression has two meanings, and thus, there are two possible interpretations. the way to put 'order' in divisions is through the use of parenthesis an the use of the longest 'division line' which the calculator omited both. Athough one can press EVA and obtain the intended answer, one could rightfully choose the other choice. how about a more complex expression where you don't want to simplify the result-how would you tell the order? i.e. what is the answer of this? 48/24/4/2 i don't know well, if you look carefully to the number of pixels used in the division line, you will fine that the bottom division line has more pixels(it is longer), thus giving the wrong answer!(by order of precedence) ha ha ha. It also happens in the stack. and nobody saw this before? enjoy your body, drink pepsi says... Well, on my HP49 the division line nearest to the bottom of the result is a slight amount longer. (Very slight amount, admidedly) Does yours return a result with both lines with the same length? Or perhaps you don't have it in textbook mode? (Clear Flag -79) Nick How is it wrong? The longer line means the entire expression (EXP(-3*X))/3) is divided by 3, which simplifies to the correct answer, EXP(-3*X)/9. I don't understand why you are convinced this is wrong. my own wishfull thinking made me blind. have you had the situation when you can not find your keys, but they were all the time in your pocket? what can i learn from all this? for psycological reasons the answer i perceived as right had settle in my mind, ruling out any other option. in other words, i am a nuckle-head. ha ha ha On HP's and in standard algebra notation, divisions must be performed from left to right unless parenthesized otherwise. 48/ 24 = 2 2/4 = (1/2) or 0.5 (1/2)/ 2 = (1/4) or 0.25 without the context of the messages you are right. but i meant in EQW where it is in a vertical position (which i know of no order). i missed seeing the two dots that make the line longer. but hey, i can blame that to the reflective screen cover he he he. by taking the thought of others, reality appears ready made In EQW on my hp49, the horizontal fraction bars are of slightly different lengths. It requires good eyes and a good light to see the differences, but they are there. Really? Sounds incredible... Im studying informatics and have never heard about base 11... Press Strg+Alt+Entf and have a look which prozesses are running! Check your registry (HKEY_LOCAL_MACHINESoftwaremicrosoftwindowscurrentversion run) which programs are started on windows-boot, see how many Icons you have displayed on the left side of the clock in your taskbar... I've read about the DETACH-command, it works fine ;-) Joachim They sure are. If I remember right the TI-89, with 256KB RAM only shows 188KB as available to the user. I think it's partly the result of questionable practices, and partly the price to pay to get very high apparent speed (the menus take up loads of memory, but they pop up instantly in all circumstances). Not that I'm trying to defend Windows either... Doing { 3 3 } 0 CON RANK (i.e. find the rank of an 3x3 matrix with all 0 entries) yields 2. 0 on HP 48 ROM revision R. Why the system binary on level 1? I tried with matrices of other sizes, and the system binary's value matched the sizes of the matrices. The following is not homework! I wish to calculate and display results on 42S so that display and calculation both reflect actual time or elapsed time. For example: set t = t0 Top of Loop y = f(t) display t, y set t to t + delta possible fixed delay goto Top of Loop [Break or exit test for loop not shown but will be present] Q1. What is best way to determine delta? There is the elapsed time between the y=f(t) and display t, y. Q2. Is that the only consideration? Q3. Do I need in next to last step a fixed delay before looping? If so, what should it be? Is any of this easier or more accurate on 49G? Does people ask for their homework to be done here? -- Actually even if delta is going to be a century there's an real easy way to do it on the hp48 and I expect it's the same on the hp49. Use the TICKS command to get the current value of the real time tick counter. << TICKS << EVAL TICKS start - I keep something like the above stored as 'T'. It'll EVAL whatever is on the top of the stack and tell you how long it took. If you want to run some other programs then supply the correct arguments then leave that programs names, in tick marks, on the stack: 'SECOND' T will tell you how long it takes to run SECOND. Converting the resulting tick count into a real time can be done in many ways: would be one way to do it. It converts it to a real then from ticks into seconds, then minutes then hours then into an hh.mmss format. -- Normally the command is 'newname' 'oldname' RENAME But if the names themselves are stored in variables, then try 'newnamevar' RCL 'oldnamevar' RCL RENAME The RENAME command itself is more like an internal ROM entry point, rather than a safe for kids user function; see more at: http://groups.google.com/groups?ic=1&selm=3ACA8088.42C0FD37%40miu.edu http://groups.google.com/groups?ic=1&selm=3ACAC8D7.F1766C02%40miu.edu For the HP48: http://groups.google.com/groups?ic=1&selm=6s8q5e%24cuh%241%40news.iastate.ed u condition? To only reset the CAS, execute the CASCFG command. The whole calc, press and hold ON, A & F - release at the same time and answer no to the TTRM. If the calc is somehow locked up, gently push i thin pin (paper clip) into the small hole on the back of the calc. This will reset like ON+A+F, but with no TTRM message. But this will still not erase the flash. I'm not sure how to do that, except manually. -- first of all resets the calc like ON-C without erasing memory when doing a paperclip reset. ON-A-F resets the user RAM - but what is about port 0, 1 and 2? I guess that port 0 will be erased as well, but the others are not. I think one has to delete them by hand - port 2 with FROM and port 1 by deleting all libraries stored in there. Perhaps PINIT may do the job? Hope this helped, I have an hp 48gx and the lasted connectivity software form my computer. I have been dragging and dropping to back up my programs and data on my HP 48gx and when a crash finally happened I find that trying to restore the calculator to its former state is impossible from the saved backup. What is up? FOr example I use ORG11 and SCRIB 101 to save my phone # and personal data like an organizer and it is a great program, but now I had over 200 entries in it and when I drag and drop the back up files contents into the now cleared memory of the HP it does not work I get errors and the stuff that does transfer does not work I really want toe be able to restore my lost data that is now on my computer to the HP 48gx but am lost as to what to do P=7 C=B.P P=C.0 LC .... P=8 CBEX.P P=C.8 LC ..... P=8 B=C.P RTN I never really liked unrolled loops, they are kind of 'not honorable', or 'not classy', but well, this solution is twice faster:-) Anyway, the last solution was also kind of unrolled (4 times)... This solution, also have the advantage of using less registers.. I would like to try Cyrille's assembly code solutions. So I entered D=0.S { P=C.0 LA 84C2A6E195D37BF0 P=0 B=A.P BSL.W CSR.W D+1.S UPNC } RTN @ and saved it on the stack, ATTACHed library 256, and invoked ASM which left a (Code) on the stack. Storing that in FLIP put it on the VARS key labels. However, invoking it hung the machine. I must be missing a step here. Sorry to ask such a elementary question, but the files at hpcalc.org seem to leave me at this level of information. What you can do is install jazz49 (http://www.engr.uvic.ca/~aschoorl/ you need ufl.lib and lib on your calc, lib must be in port 0) and put your code object on the stack and run DB on it. This will start a ml-debugger where you can single step the instructions. Press A-F to select view and single step with [+]. Exit with [ON]-[C] since this code object doesn't return to rpl in the correct way. One that returns correctly would have GOSBVL =SAVPTR in the beginning and replace RTN with GOVLNG =GETPTRLOOP. P.S. Come see http://www.ite.mh.se/~danli97/ I will answer your questions, as I guess your brother will as well. I wish there was a way to revive the whole HP Calculator business. Remember saving up close to 900 dollars (Canada) back in the eighties just to get hold of a HP41. Very nice machine. Then got myself an HP48, another fine instrument. Felt good just to look at it. Used to tell everyone that it was the most advanced pocket calculator on the face of the earth, and that I had one. Any chance HP might actually produce a really memorable calculator sometime in the future? After putting in a new set of batteries, try your contrast control. It is either on key and + key held down to darken, or on key and - key held down to lighten. If the contrast is very faint your calc may be on but will look like it is dead, since no pixals are dark. Worth a try. Good Luck. I don't know. The processor is the same for both calculators. have any tools and are just hacking and is really more about machine language than assembly language. It provides some simple tools to work with. If you don't need your hand held and you really like digging, this is probably a good choice. I don't know where to get either book now. Maybe someone on the list will know. There's also the documentation that comes with the HP development tools for the 48. Sasm.doc covers the Saturn pretty completely. It doesn't attempt to be a tutorial but it's more than a reference. There are also a lot of smaller tutorials on hpcalc.org. There is also HP48S/SX Machine Language by Paul Courbis and Sebastien Lalande. This is translated from French and it's not the best of translations. Also the book is pretty disorganinized. But it's full of information. It also assumes that you don't really have any tools and are just hacking and is really more about machine language than assembly language. It provides some simple tools to work with. If you don't need your hand held and you really like digging, this is probably a good choice. I don't know where to get either book now. Maybe someone on the list will know. There's also the documentation that comes with the HP development tools for the 48. Sasm.doc covers the Saturn pretty completely. It doesn't attempt to be a tutorial but it's more than a reference. There are also a lot of smaller tutorials on hpcalc.org. Barry In the 48 it's used for IR, in the 49 it's used for flash memory, in the 39 it's used (i believe) for IR too. What is it used for in 40G? Isn't it used at all? I think we sholud start thinking about pluging a FLASH memory card to the 40G :o) nonlinter equations. I've encountered serveral problem when i am using the nurmic solve. For example if i solve for variables x,y,z and the equation (x-3)^2-2y=z, (x-6)^2-7y=5z, 5y = 7z. Hence I should get a solution of more than one possible answers, but every time it tired i only get one answer this becomes a problem because in my EE class some values cannot be used, so i need ALL the solution to the eqation. Also i wanted to know how to simply experession and do partial fractions if you can direct me on some website for help because i read the menu over and over and could not get much, if you could also shed some light to this issue. The second question that i had is regarding the screen, since i got this calc new i am experienece some flickering on the screen. During very white light condition i can see the screen flicker, it is very noticable under any light condition when i tried out the easter egg that shows the pictures of the creater. the This is not a nonlinear set of equations. The numeric solver only returns one result - the one near the guess. Your manual tells you that too. this Use SOLVE. for The menu? What about the manual! See PARTFRAC, PROPFRAC, SIMPLIFY, EXPAND, FACTOR aso... calc under pictures of You are studying to become an EE, and you don't know what causes this? The greyscale pictures will flicker - they are drawn very fast to make it seem grey. Actually we didn't learn that in eng school, but thanks for clearify this for me, because i used to have a TI-83 and my friend's TI-89 and does not have this probelm, so i thought there is something wrong with the refresh rate of the calculator since they both HP and TI uses a similar looking LCD screen, actually in my 49G even on the regular screen it shows some flickering, so i just want to make sure no prob with my calc since i got this two weeks ago so i can exchange it if this calc does have a problem. About the Solve function i was wondering how you do it. I used the RPN entry mode i used (X + 3Y = 6, Y + 6X = 9) ENTER, then {X, Y} ENTER, then SOLVE, and i got some imag number as solution but does not give me the numeric values, is there reason for this, becuse if i can even get one solution how can i can multiple soultions, please guide me on how to do this. If you use it in the US, the 60Hz light-switching may cause screen flickering by interference (the display on the HP49G refreshes with 64 Hz I believe). This is not so much of a concern in Europe, since we have 50Hz flickering lights. try to solve such simple equations the way it was (and still is) done on the HP-15C (back in the early 80'es)...:-) First rewrite your equations so you have X+3Y=6 and 6X+Y=9, then enter a vector containing the numbers on the right side of the equal-signs [6 9], then enter a matrix containing the numbers on the left side of the equal-signs [[1 3][6 1]], at last, press the [CapitalODoubleDot] buttom and you now have a vector containg the values of X and Y; [21/17 27/17]. I have translated the following from the danish HP-15C User's Manual so please correct me if some of the descriptions are wrong: Solving the equation AX=B [CapitalODoubleDot] is convienient by solving systems of linear equations on the form AX=B where A is the matrix of coefficients, B is the matrix of constants and X is the matrix of solutions. The matrix of constants (B) must be in the Y-register (on the HP28/48/49 on stack level 2) and the matrix of coefficients (A) must be in the X-register (on the HP28/48/49 on stack level 1). When you press [CapitalODoubleDot], X=(A^(-1))B is calculated. I can only notice a flickering effect when I adjust the brightness to darker than I find comfortable. It doesn't seem to make much difference whether I view it under florescent light, incandescent light, or sunlight, so the effect that I've seen isn't related to our 60Hz power. Has anybody thought about self modifying code only with USER RPL? The example the program: << IF nl n POS THEN fl nl n POS GET ELSE n ! fl OVER + nl n + DROP 19 ROLL 18 ROLLD 17 ROLL 'MFACT' STO END in the variable 'MFACT'. Give it a big number (say 300) and it will give you the factorial of this number in about 4.2 secondes. But if you need factorial of 300 again, and you feed the program again with 300, it will answer in 0.081 seconds. That because it modifies its own code in a way, that it knows the results once it calculated them. Imagine now, what else is possible. Nick. P.S. The crazyness of this community swept over out of my screen and got me. To late for a cure now, but I enjoy it :-) Hmm.. if you calculate many (different) factorials using this program then the quicker result is not guaranteed!! That's because you're saving all your results in two lists then you use POS to check whether the factorial has been calculated before, in which case you just GET the result from 'fl'. If nl and fl become very big (say nl contains all numbers from 0 to 1000 :-) ) then the execution time becomes very long for the very last element in nl (still may be faster then '!') and MFACT become VERY BIG!! Although this a caveat in this program, this has (I think) opened a new domain for programers to create all sorts of interesting polymorphic creatures that may one day inhabit our HP49s..(very cool games that change their behaviour and become very unpredictable) __ Well, indeed this is not the ultimate algorithm for speeding up factorial calculation of big numbers. But the possible use of this behavior is exciting. You can construct programs with a very complicated behavior, starting with some easy rules of modifying their own code. And this doesn't only cover the area of games. Think for example of programs that learn more and more every time they run. What if they also have the code to combine the units of knowledge? Nick That is only because the library code must stay static, because port memory isn't allowed to be changed (?). (Though a lib could construct its new code, detach its old version and reattach itself in its new incarnation) May be it is not so interesting for programs for standard tasks. But it is interesting to watch the behavior changing over time. My personal gusto goes in the direction of programs that don't need any additional config or anything else, but build themselves closed units that are still capable of evolving in dependance of what they experience through their lives. Nick P.S. Sounds like SciFi but this is a good thing to say, when someone asks, what the HP can do, that the TI can't. ;-) We should think about the following: The processor speed, the RAM, the disk memory and everything else goes higher at fantastic speeds. The performance of software doesn't. Could it be that we missed something, talking always about maintainable code? This is *not* an attack to any person out there. It is only what I have experienced, that make me wonder if we are really doing the right thing, when we supress creativity in the name of slogans. Nick Type this: << CLLCD @ clear screen OFF @ turn off calculator Name 1 DISP @ display name on first row 0 WAIT @ wait for key DROP Turn on user mode. Now, every time you manually turn off your calculator, this program will run, displaying name and phone number. them. on my Write a little program like: << OFF name 1 DISP phone 2 DISP 1 WAIT or: << OFF name 1 DISP phone 2 DISP 1 FREEZE and with either on level 1 of the stack, enter: 91.3 ASN and turn the user keys on, voila.... Does anyone know of a site wher copies of the HP journal are kept,. preferably in PDF format. Also is there any site that has copies of the HP41 and/or other HP calulator newslette I don't know about a site that has them online. However, Jake Schwartz from HP Journal, plus all the issues of HP65 Key Note and HP Key Notes (the newsletter you mentioned that Joe's uncle edited), plus the PPC Journal, CHHU Chronicle, and HPX Exchange. (It also has some Chicago and Philadelphia club newsletters and the complete PPC ROM manual, pocket guide, and pocket hex table.) Everything is in PDF files. I've had the set for about a year and have used it a lot, even though I have paper copies of a lot of the material on it. (The electronic format is much easier to carry around than a few boxes full of papers!) Jake's Web site is at http://alaska.magpage.com/~jakes. -- W I need a small but superfast program SUBLIST? for the 49 as follows: Input: List2 and List1, both lists of non-negative reals (though some members of List 2 may also be zints, these should be considered as reals). List2 may assumed to be non-empty and the reals of List1 appear w.l.o.g. in ascending order. Output: TRUE/FALSE as to whether List1 is a sublist of List2 or not, more precisely a subset. Disregard the orderings of the lists itself. - Wolfgang PS. It is easy to test this with - from OT49. Although this command is fast (it uses all Werner-like trickery) it is not in asm and too slow for my purpose. Solving equations section 6-3 (49g) into the 48gx and found an erroneous response for solving for variable X from th 48gx. The equation reads 4*COS(X/Y)+3*SIN(X)=square root of 2 With given variable y = 2 and solving for X the answer on page 6-3 of the 49g was 2.89952940302. Plugging this equation in the 48gx we get a value of -18.3529311385. So my two part question is: Is the 49g much better at solving the equation than the 48gx? Is my answer messed up due to the way the equation is evaluated? You're solving 4*sin(x/y)+3*sin(y)=sqrt(2), how come that you got a numerical solution? It should be a function of 'y' !! Definitely!! The 48 can only solve linear and quadratic equations, and any * analytically solvable * equation where you can ISOLATE the variable solved for. (i.e. the variable solved for appears only once in the equation) Make sure you're in the same angle mode in both calculators (RAD I guess..) __ You missed the Pi from the second term in the example. It reads: 4cos(X/Y)+3sin(pi*X)=sqrt(2) And you were in degree mode when you did this. Sin(pi*X) where X is measured in degrees doesn't make a lot of sense to me... use radians. You might want to plot out the curve between, say, X= -10 and +10 radians and notice roughly where the multiple solutions occur. The numerical solvers in the 48gx and 49g give identical results for this equation. Actually, I would think that the code is (more or less) unchanged. get multiple solutions. Say if I have three equations (X - 6)^2 + 5Y = Z, (Y-3)^2 + 7Z = 8, (X-1)^2 + 6 = Z I am not sure if these equations has multiple numeric solution but just used as an example. I undesrtand that I can use SOLVE to find the multiple solutions, but I've tried it input to the cacl it shows either too few argument error or it gives me some wired result. Can anyone show me step by step in RPN or Algberic mode on how to do this. 2: [ 'SQ(X-6)+5*Y=Z' 'SQ(Y-3)+7*Z=8' 'SQ(X-1)+6=Z' ] 1: [ 'X' 'Y' 'Z' ] SOLVE 1: { } That is, no solution. I hope this is correct. To solve your system of equations for some variables do the following: In RPN Mode (yes I am an RPN-fan) Put the vector of the three equations on the stack. Your stack should now have [(X-6)^2+5Y=Z (Y-3)^2+7Z=8 (X-1)^2+6=Z] on stack level 1. Put the vector of the variables that you want to solve for on the stack. Your stack should now have [(X-6)^2+5Y=Z (Y-3)^2+7Z=8 (X-1)^2+6=Z] on stack level 2 and [X Y Z] on stack level 1. Now press SOLVE. After a few seconds you get a list of two vectors. These vectors contain the solutions of the equation system for the specified variables. (And they are in this particular case complex solutions.) You can use the command line to build the vector with the equations, or use the MATRIX WRITER and the EQUATION WRITER. To do it the second way, press blue shift MTRW, then EQW, build your equation and press ENTER. After you entered the first equation, you can press EQW again and ENTER the second equation and so on. Note that if you use the command line to build the vector with the variables to solve for, then you must enter it as: ['X' 'Y' 'Z'] (delimiters for the variables) or you get an Invalid Syntax Error. This is correct in real mode, but I understand that there are complex solutions which can be found by using SOLVE while in complex mode. I've got a strange problem with SOLVE that has me looking for any hints that might point to something I've missed. I have an equation that uses IFTE to select a different formulae depending on a var. (This variable is used only to select the formula to be used and is not one of the variables to be solved for.) Everything works fine when one formula is selected but aborts with a bad guess(es) error if the other formula is selected. Whats got me stumped is if I manually evaluate the problem formula it is giving correct answers and I cant see why the Menu 30 solve command has problems. do you mean the minimum value of a list of equations for a given value of the independend variable? E.g. for x=2 and {y1=x y2=x^2 y3=x^3} as the list of your equations, you want to get as result the value 2 because y1=2 y2=4 and y3=8 (?). If this is what you want then one possible way to do it would be: Put the list of equations on the stack, then put 'x=2' on the stack and then run the programm << SUBST 1 DOSUBS STREAM I am sure that this is not the quickest way, but it does what I think you want to do. it can be shorter than this: With the list of numbers on the stack, run the programm: << STREAM stack and press STREAM. since it is an argument for the command STREAM.) Does this help? could you please be a little more specific? (Equation, variables an the like) Ok, was looking for a quick way to find a minimum of a list of equations when all variables have defined values. eg. {'pi*(Dc+dom)' 'pi/2*(Dc+dom)+2*e1' 'pi/2*(Dc+dom)+2*e2' 'pi/4*(Dc+dom)+e1+e2'} Just curious what is the fastest way. My original problem still has me stumped. 'u' is a << IF 'Dg==0' THEN {'pi*(Dc+dom)' 'pi/2*(Dc+dom)+2*e1' 'pi/2*(Dc+dom)+2*e2' 'pi/4*(Dc+dom)+e1+e2'} ELSE {'2*(Dc+Dg+dom)' '2*(Dc+dom)+Dg+2*e1' '2*(Dg+dom)+Dc+2*e2' 'Dc+Dg+dom+e2'}) And you try to solve and eqation like 'V=A+B*u'. A solution is found for say V if Dg has a value other than 0 but bombs if Dg is assigned 0. If u is changed to {'pi*(Dc+dom)' 'pi/2*(Dc+dom)+2*e1' 'pi/2*(Dc+dom)+2*e2' solution is found. I typed the above code in so there may be some typo's in the code given. like) that depending and when other has Suspect your right since my solution involved 2 operations on the list. For still << MIN commands all bytes numbers minimum very nearby guess. Again, if the variable requires units, you must supply guesses containing the correct units; otherwise the internally trapped Inconsistent Units errors that will inevitably occur will in turn cause Bad Guesses. As a convenience, when you store pure real numbers into variables in Menu 30, any units already present in the stored variable are re-attached to the new number for you, so you do not need to keep re-entering units once the variables are properly initialized (wasn't that very thoughtful?) In rare circumstances, of course, this very feature can cause a problem, if some left-over old variable of the same name contains units which shouldn't be re-used at all. An exception: I never noticed this before, but both the HP48 and HP49 permit the addition of inconsistent units if one argument is the real number zero (without units); this in turn may allow the numeric solver to get a result having no units or inconsistent units, or allow some variables to be initialized to zero without attaching proper units to them. No doubt this was also a handy convenience, for something. I typed exactly your code for 'u' and your equation 'V=A+B*u'. I gave some values for the varsiables and tried to solve the equation in zhe numeric solver. It always worked, even when Dg=0. Then I tried to solve 'V=A+B*u', say for 'A' with the command SOLVE. It gives 'A=V-B*u', which can be further evaluated to 'A=V-number*u'. (Where number is the result of evaluating the code in 'u' for the given values in the variables.) So what's going on here? Perhaps you have an older ROM? (They had their troubles when solving equations that contained program code.) Sorry, but I can't help you more for now. But I'll stay on this and tell you if I find something more helpful. Nick P.S The code for 'u' can be shortened a little bit: << IF 'Dg==0' THEN {'pi*(Dc+dom)' 'pi/2*(Dc+dom)+2*e1' 'pi/2*(Dc+dom)+2*e2' 'pi/4*(Dc+dom)+e1+e2'} ELSE {'2*(Dc+Dg+dom)' '2*(Dc+dom)+Dg+2*e1' '2*(Dg+dom)+Dc+2*e2' 'Dc+Dg+dom+e2'} END The procedure to find the minimum can be writen only once outside the if-then-else clause. you are right. My thing was shorter only in text. (Such a lazy person I am) I also don't know exactly, but I think all list processing commands are slower compared to other techniques. Nick and to make things even stranger! As I said, I typed in Stephen's code and STOred it in variable 'u' and his equation 'V=A+B*u' which I STOred in 'EQ'. I could solve for anything that appears in the menu 30, also for the case Dg=0. Now, in menu 30 the names of all variables should appear, each one on a soft key. That means I expected to see V, A, B, and then all names that appear in the program that is stored in 'u'. But I see only V, A, B and Dg. If I replace the lists in the if-then-else clauses of the program 'u' of the expressions 'alg1' to 'alg4' on the menu keys. ('alg1' to 'alg4' are the expressions in the lists in Stephen's code, I was to lazy to type them again...) Does this mean that variables should not be in lists in programs, in order to appear in the menu of the numeric solver? Is it why Dg appears on menu 30? (It is not in a list in the program 'u') I am solving the ?pshear equation in the directory I created below. I'm using ROM 1.19-5 and have avoided using units, but some of the undocumented features/shortcuts just mentioned may convince me that they are more convienent to use than I thought. PS: This is weird. When I checked to see if same error occured using the following directory it worked correctly on the PC. So I copied the variables back to the original directory and it now works correctly on the HP49. Since I created the temporary directory by cutting and pasting on the PC all I can assume is that the ASC transfer corrected some kind of weird typo in the original directory as nothing else was changed. serial cable prior to use. PSS: I've had the weekend (got becalmed on a boat) to find that unit persistence of variables is very useful and simple(a variable retains its units if assigned a value without units), its make use of formula with units a lot easier and practical. Any idea if the EQW will be updated to support units as this detracts from the use of units. %%HP: T(3)A(R)F(.); DIR Dc 450. Dg 0. Off1 2000. Off2 2000. dom 475. fc 32. Gscp 1.6 248Vuo 2322.18461324 ?pShear '248Vuo=.7*u* dom*(fcv+.3*Gscp)*.001 ' u 'IFTE(Dg=/0.,MIN( MIN(MIN(2.*(Dc+Dg+dom ),2.*(Dg+Off1+dom)+Dc ),2.*(Dc+Off2+dom)+Dg ),Dg+Dc+Off1+Off2+dom ),MIN(MIN(MIN(pi*(Dc+ dom),pi/2.*(Dc+dom)+2. *Off1+Dc),pi/2.*(Dc+ dom)+2.*Off2+Dc),pi/4. *(Dc+dom)+Off1+Off2+ Dc))' fcv '.17*MIN(2.,1.+ IFTE(Dg==0.,2.,2.*Dc/ Dg))*v/fc' END I am having some trouble with the solving function. When i try to plug in a equation to solve. I am 100% sure that I input the right way using RPN because I did it before and it works but somehow it stop working. I used the martix writer to enter my equations and my variables then used SOLVE, then it shows Solving Error: Not Exact System. I tried to reset and other stuff and it doesn't work. I am guessing there are some flags that needs to be adjusted but I tried that also. Am i missing something, i am very frustrated how come this calc is so hard to use. you are trying to solve. When this error happened to me is because I have a system that has real numbers like that: ['2*X+0.2654*Y=1' '3.098*X-Y=5']. It's curious, but this example works with the last rom 1.19-5 from B. Parisse error not exact system tried to use integer number like 1, 2, 3's. Use X and Y to solve and it still doesn't work. Then I check the menu and found a flag 105 which you can choose between exact or approx moe and I checked the flag between two modes and still no luck. Then I check some of the previous post, which suggested XQ the equations on the stack to make it exact and for some how it works. But this is not good enought because I don't have to do this before and it worked, I am having a very hard time in understand how this calcutor works. A lot of stuff is no consistant, which sometimes work and sometimes doesn't, I am guessing that there are many settings that would cause this inconsistancy. Also I tried to purge some variables like A then purge the stack, then it shows me an error message, then if I press 'A' (with quotation) then purege and it would work, but the variable X would purge with out the quotation ''. Please assist me on how the whole hp49g system work i am really confused. get latest rom 1.19.5 withe Bernard Parisse's modifications - Will updating the ROM solve the problem that I had, because the current ROM version works sometimes before then it stop working. Also where can I get Bernard Parisse's modifications. I have been trying to solve the following but I get a solve error that states it can't be reduced to a rational function. 2x(x + 1)^(1/3) + (1/3)*(x + 1)^(-2/3) * (x^2 + 1) = 0 neither seems to give me the answers I need. Also, is there an easy way to factor that on the calc without introducing ln? 'X=-((3-sqrt(2))/7)'} I do not get any LN terms, when I use FACTOR? You may be using an old ROM, but you can convert EXP/LN terms to powers with the EXP2POW command. 49 and the only one I found -espresso- seems to be a spreadsheet without functions. Have I missed something about espresso or is there another program for this . . . ? of previous functions and commands, which get stashed in temporary memory until they are no longer referenced by any pointers, after which the next Garbage Collection (GC) of temporary memory space sends them into a parallel universe. creating a stack containing 23457 levels; upon pressing the up-arrow to browse this stack, however, I get Error: No Room to Save Stack (there is no room to copy all 23457 pointers to save the last stack for a potential subsequent UNDO, so the Last Stack feature turns itself off). Another press of up-arrow, however, and the stack browser starts up; right-shift up-arrow then shows stack levels up to 23457; every single level actually contains a pointer to the same number, which is actually still inside the space occupied by the program which generated the large stack -- it did not even require allocating any temporary memory at all. You have to go to the PRG MODES MISC menu (69 MENU) to turn the Last Stack [UNDO] feature back on (STK menu key). Although a huge number of stack levels can be created, GC takes much longer when there are many stack levels, especially when there are many different objects in temporary memory still referenced by pointers. Perhaps this was already in the group, but I didn't find anything... Of course everybody out there knows that there are at list 2 ways to make a step function on the HP49. inequation. But there is also a third way. Not very efficient, but it is interesting to see, how we can use a built-in function in a way that it wasn't intended. Kind of a small quiz - what can this function be? ;-) Hope, this will be a little fun, especially for beginners. Sorry again if I waisted your time / band width. What? Nobody has an idea yet? OK, here is another hint: The first letter of the function is U. considering the flud of postings ;-) I now reveal the secret. The function that can be used as a step function is UTPN. It takes three arguments from the stack: Level 3: The mean of a normal distribution Level 2: The variance of a normal distribution Level 1: The value of x and returns the propability that a normal random variable is greater than x. Now if the variance is 0 then UTPN returns 1 for all x