B299 How can I view a vector on several lines? > eg. when I Put the vector [15. 14.] (in rectangular mode) and change to cylindrical mode, the vector is only shown on one line. [20.5182845287 < .75... How can I view this on several lines? Set flag -98. Then all vectors are shown verical, that is, each element occupies one distinct line. Notice that flag -97 does the same for lists, that is, each element of a list is shown in a separate line when flag -97 is set. > Hope it helped. > It did, and thank you very much for that! > Hehe... You.82re welcome... it just needs an eye in (x,y) = (4,1) So let's give it an eye. Just for the case you didn'*t know, if you store a list of two or more complex expressions in EQ, then all of them will be ploted. So if EQ contains: { '2*cos(2*t)-4*cos(t)+i*(2*sin(2*t))' '4+r*cos(t)+i*r*(1+sin(t))' } then the poor creature of the sea will get its eye. The parameter r is a real number, say 0.5, that adjusts the radius of the eye, so when the fish is ready we can say that it works inside the specified parameter range... (It's name is Data ;-)) So when will we get Graphics and Plotting Marathon? :-D > Hope it helped. > It did, and thank you very much for that! > Hehe... You.82re welcome... it just needs an eye in (x,y) = (4,1) So let's give it an eye. Just for the case you didn'*t know, if you > store a list of two or more complex expressions in EQ, then all of > them will be ploted. So if EQ contains: > { '2*cos(2*t)-4*cos(t)+i*(2*sin(2*t))' '4+r*cos(t)+i*r*(1+sin(t))' } > then the poor creature of the sea will get its eye. The parameter r is > a real number, say 0.5, that adjusts the radius of the eye, so when > the fish is ready we can say that it works inside the specified > parameter range... > (It's name is Data ;-)) > In every marathon there is/will be many graphics/plotting related stuff that fits the current math topics. So each marathon is (indirectly) a graphics marathon too. For example the next part of seselima is about graphing sequences. (Also recurrences that can't be transformed to analytic closed forms. And not only by using PIXON.) He, he, there some built-in functions that Mr. Parisse didn't imagine what they could be used for. Or did he? ;-) > So when will we get Graphics and Plotting Marathon? > :-D > Hope it helped. > It did, and thank you very much for that! > Hehe... You.82re welcome... it just needs an eye in (x,y) = (4,1) So let's give it an eye. Just for the case you didn'*t know, if you > store a list of two or more complex expressions in EQ, then all of > them will be ploted. So if EQ contains: > { '2*cos(2*t)-4*cos(t)+i*(2*sin(2*t))' '4+r*cos(t)+i*r*(1+sin(t))' } > then the poor creature of the sea will get its eye. The parameter r is > a real number, say 0.5, that adjusts the radius of the eye, so when > the fish is ready we can say that it works inside the specified > parameter range... > (It's name is Data ;-)) > Oh, I thought about ral graphics & plotting, but I guess that applying them to real problems is more fruitful. PS: My educated guess is that these could be called HP 49G Synthetic programming, since I doubt that anyone of the ACO never guessed what a Man from the Greek would do. :-D You're compatible with the incompatible features of the 49G !!! In every marathon there is/will be many graphics/plotting related > stuff that fits the current math topics. So each marathon is > (indirectly) a graphics marathon too. For example the next part of > seselima is about graphing sequences. (Also recurrences that can't be > transformed to analytic closed forms. And not only by using PIXON.) > He, he, there some built-in functions that Mr. Parisse didn't imagine > what they could be used for. Or did he? ;-) Oh, I thought about ral graphics & plotting, That's not a bad idea at all. OK, I'll do that, but after all already scheduled marathons. > but I guess that applying them to real problems is more fruitful. Yes, this is exactly what I think about graphics. > PS: My educated guess is that these could be called HP 49G Synthetic > programming, since I doubt that anyone of the ACO never guessed > what a Man from the Greek would do. :-D You doubt that anyone never guessed.... Is that NOT(NOT(statement))=statement ? ;-) Anyway, logic aside, perhaps we are what we are, because we do the unexpected??? > You're compatible with the incompatible features of the 49G !!! Yeah, at least something that I am compatible to. Perhaps the ACO has created the HP49G *and* me as its defender, and I don't know that because they put the memories of my life in my ROM??? JYA what were you really doing for months at HP? ;-) Ah, and not to forget. Look at the thread STORE, UNASSIGN and recurrences to see another usage of these commands for graphing sequences/recurrences. He, he, Mr. Parisse *did* know very well why these commands were necessary. I've a HP 48G and a ActiSys IR 210L IR-Dongle in my pc. Is it possible to connect the calculator via IR with the pc? Chris I've a HP 48G and a ActiSys IR 210L IR-Dongle in my pc. Is it possible to > connect the calculator via IR with the pc? > Chris If your PC and OS allow to setup a serial connection and kermit/xmodem transfer for the IR, then yes. > HPTools and Debug2 are the best development tools available for the HP4x > series. > How about using wine? > The only problem with the Debug4x is > that the other beta testers are so quick to document a problem > that while I'm finished, there's another , new, better version available. > All I can say now that with this Xtreme rate of development > we will not have to wait until Xmas and the best thing is: > the new tool is 48G/49G aware and enormously helps releasing > applications simultaneously for both calculators. > Amazing! few more weeks to be safe and then talk to Eric R. to get it to HPCalc.org I am playing with the Kermit code and hope to add the cable connection software to Debug4x in the future. BUT I have to decide what to do about the 48 connection. Either add Kermit code for the 48 or provide a XModem download for the 48. I have not found any good SysRPL source for 48 XModem yet but am still looking! -- - - - - - - - - - - - - - - - - bgraves@ix.netcom.com In message , William Graves >I am playing with the Kermit code and hope to add the cable connection >software to Debug4x in the future. BUT I have to decide what to do >about the 48 connection. Either add Kermit code for the 48 or provide >a XModem download for the 48. I have not found any good SysRPL source >for 48 XModem yet but am still looking! I'm a bit confused by what you say because the 48G *does* have xmodem built in via the xrecv and xsend commands. What it doesn't have is a server version like the 49. Only 48S users would have a problem because the 48S has no xmodem capability of any description, but you could easily solve that by having an option to save files to the PC's disk and then the user can use an external Kermit program to do the transfer manually. -- > I'm a bit confused by what you say because the 48G *does* have xmodem > built in via the xrecv and xsend commands. What it doesn't have is a > server version like the 49. Only 48S users would have a problem because the 48S has no xmodem > capability of any description, but you could easily solve that by having > an option to save files to the PC's disk and then the user can use an > external Kermit program to do the transfer manually. Of course, the projects are saved and the user currently has to figure out how to get them to the calculator. Since Debug4x does such a nice job of handing things to the EMU48 I want to do the same with the real calculator. With a XModem server, this can be done very nicely on the 49, I could add a Kermit server for the 48 for the same purpose but since Kermit is slow, I want to try and do the same solution for both machines. It is a server that I am looking for. There is one on HPCalc that might do it, but there is no SysRPL source and, of course, the protocol details are different than the HP XModem client. -- - - - - - - - - - - - - - - - - bgraves@ix.netcom.com X > I am playing with the Kermit code and hope to add the cable connection software to Debug4x in the future. BUT I have to decide what > to do about the 48 connection. Either add Kermit code for the 48 or provide a XModem download for the 48. I have not found any > good SysRPL source for 48 XModem yet but am still looking! I have posted Professional Blackjack, version 1.1, to HPCalc, http://www.hpcalc.org/details.php?id=5316. It is a machine language program with a small amount of RPL for argument checking and memory allocation. The program and its required library object are less than 20k bytes. This program is the result of about two years of on-and-off programming and another year of learning currently accepted statistical standards of blackjack. It can be configured for all player levels and includes several pre-configured library objects for common skill levels. Please check it out. I have been playing it in its current form for about a year without any I just got my new HP 48GX with the black screen. Of course it has painted keys. But that's not really a problem. The problem is that in the paint on one arrow key is a piece of fluff. I'm really wondering whether HP has anything like quality controls. Nowadays you are very lucky if you get a calculator from HP without giving cause for complaint. Georg. HP Emulator is a HP48 GX emulator for windows. This is the first release and it is still in alpha state. But I would like some feedback. You can get it from the project homepage on sourceforge: http://sourceforge.net/projects/hpemu Features in version 0.9.0: * Saturn CPU (most instructions) * Daisy-chain * ROM * Card ports 1 & 2 (untested) * Bank-switcher (untested) * Hardware registers (some of them) * Hardware CRC * Timer1 (not complete) * Timer2 (not complete) * Interrupt system (not complete) * LCD (grayscale) * Keyboard (not complete) -- Daniel Nilsson > I just got my new HP 48GX with the black screen. Of course it has > painted keys. But that's not really a problem. The problem is that in > the paint on one arrow key is a piece of fluff. > I'm really wondering whether HP has anything like quality controls. > Nowadays you are very lucky if you get a calculator from HP without > giving cause for complaint. Luckily, my two 48, a G+ and a GX, are defect-free, altough they are both made in Indonesia. Their quality is not comparable to the feeling of real HP quality of the HP calculators made in the U.S. and Singapore in the eighties, nonetheless they are still superior to other calculators. As an example, try a Sharp graphic calculator and you won't even be able to read the display because of its poor quality (I have got two, an EL-9400 and an EL-9650). -- I have a HP49G and my school banned them becouse they do too much. I need a new calculator. I like RPN. The only other RPN calculator that I could find was a HP48gx. I am lazy and like to use the 49's CAS. I realize that the 48 has programs that will do the stuff I want, but I do not know if the 48 has enough memory to run them without $100+ dollar memory cards which I do not think are worth the money. All I want it to do is: factor expand solve symbolically do algebra like this x+x=2x or x*x=x^2 but more complicated Can the 48gx do all of those things without memory cards? > without $100+ dollar memory cards Have you seen this?: http://uuhome.de/oklotz/index_e.html If you buy some extra memory you will get almost a 49 in a 48 body > factor > expand > solve symbolically > do algebra like this x+x=2x or x*x=x^2 but more complicated You can install Ag48 for do these things. I turned on my 49G during a test today and I had left the beep and key click on. In the process of turning off the beep it beeped 6 more times. It was a little embarassing. I would like it if I could use a program to turn the beep off, so that I could turn the beep off with only 1 beep the next time that I forget. Any ideas on how to turn the beep off with a program? > I would like it if I could use a program to turn the beep off, > so that I could turn the beep off with only 1 beep the next > time that I forget. Hmm! Interesting mini-challenge! With the most recent ROM version, the most keystrokes required is four: hold [left-shift] down and press [MODE]; then press [MISC] [BEEP]. The only sure-fire SINGLE-key solution that I can think of is to assign << -56 SF >> to a primary key and leave USER mode on at all times. Then, whenever you want to turn the beeper off with a single key click, just press that key. If two clicks are acceptable, you can assign it to a shifted key (or shift-and-hold key), which wouldn't waste a primary key. Anybody know of a better solution? -Joe- http://HolyJoe.org > I would like it if I could use a program to turn the beep off, > so that I could turn the beep off with only 1 beep the next > time that I forget. Hmm! Interesting mini-challenge! With the most recent ROM version, the most keystrokes required is four: > hold [left-shift] down and press [MODE]; then press [MISC] [BEEP]. The only sure-fire SINGLE-key solution that I can think of is to assign > << -56 SF >> to a primary key and leave USER mode on at all times. Then, > whenever you want to turn the beeper off with a single key click, just > press that key. If two clicks are acceptable, you can assign it to a > shifted key (or shift-and-hold key), which wouldn't waste a primary key. Anybody know of a better solution? -Joe- > http://HolyJoe.org I assigned the <<-56 SF>> to the HIST key which I have never used, and it does exactly what I wanted. > I would like it if I could use a program to turn the beep off, > so that I could turn the beep off with only 1 beep the next > time that I forget. Hmm! Interesting mini-challenge! With the most recent ROM version, the most keystrokes required is four: > hold [left-shift] down and press [MODE]; then press [MISC] [BEEP]. The only sure-fire SINGLE-key solution that I can think of is to assign > << -56 SF >> to a primary key and leave USER mode on at all times. Then, > whenever you want to turn the beeper off with a single key click, just > press that key. If two clicks are acceptable, you can assign it to a > shifted key (or shift-and-hold key), which wouldn't waste a primary key. Anybody know of a better solution? -Joe- > http://HolyJoe.org You could write your program and store it in VAR. then at most it would only be 2 clicks if the program was sorted to the beginning of the softkeys. I am a big fan of VAR. I use it all the time. > I would like it if I could use a program to turn the beep off, > so that I could turn the beep off with only 1 beep the next > time that I forget. Hmm! Interesting mini-challenge! With the most recent ROM version, the most keystrokes required is four: > hold [left-shift] down and press [MODE]; then press [MISC] [BEEP]. The only sure-fire SINGLE-key solution that I can think of is to assign > << -56 SF >> to a primary key and leave USER mode on at all times. Then, > whenever you want to turn the beeper off with a single key click, just > press that key. If two clicks are acceptable, you can assign it to a > shifted key (or shift-and-hold key), which wouldn't waste a primary key. Anybody know of a better solution? A HW switch for the buzzer? > Anybody know of a better solution? > A HW switch for the buzzer? That's good! Turn it off, and end of story. Sometimes it can be kept simple ;-) P.S. Perhaps Rcobo could connect some switch to the HP49G and control it through his brain-user-interface or whatever the thing is called. I actually did just that on one of my HP41CX. I cut the Buzzer wire! (no switches for witches :) Anybody know of a better solution? > A HW switch for the buzzer? That's good! Turn it off, and end of story. Sometimes it can be kept simple ;-) > P.S. Perhaps Rcobo could connect some switch to the HP49G and control > it through his brain-user-interface or whatever the thing is called. I actually did just that on one of my HP41CX. > I cut the Buzzer wire! Gasp! >(no switches for witches :) But now you have additional voltage supply free for other purposes. (Electrocute the 49 when it doesn't do as you might expect ;-)) Write a program to turn the flag off (set flag -56) for it and then go to http://www.hpcalc.org and download Keyman. Then assign that program to a key. Keyman is an indespensible program for the 48/49. > I turned on my 49G during a test today and I had left the beep and key > click on. In the process of turning off the beep it beeped 6 more > times. It was a little embarassing. I would like it if I could use a program to turn the beep off, so that > I could turn the beep off with only 1 beep the next time that I > forget. Any ideas on how to turn the beep off with a program? > Found this on a website, dealmac.com. Can't seem to find the product on > PowerON's website, but they've had these before. Given that you can > apparently enable the CAS with an aplet, this is a pretty good deal, IMO. > Note, that I have no connection with these people. That's really a bargain, it costs more to HP to produce them .. > Replace all instances of y by y(x) to indicate that y is, > implicitly, a function of x. On the HP48, put x on the stack below the equation and press the > derivative operator, the right-shift SIN button. You shuld see an expression with 'dery(x,1)' representing the > derivative, for which you can solve. calculator? Or must I do this by hand? > On the HP49, you also start by replacing all y by y(x). Then do x DERIV, and then do 'd1(y(x)' SOLVE. You sould get 'd1y(x)=2*x/(3*y(x)^2+2*y(x)-5)' Your dy/dx is represented by 'd1y(x)' here. isolate 'd1y(x)' each time. --Andrew Huey Replace all instances of y by y(x) to indicate that y is, > implicitly, a function of x. On the HP48, put x on the stack below the equation and press the > derivative operator, the right-shift SIN button. You shuld see an expression with 'dery(x,1)' representing the > derivative, for which you can solve. calculator? Or must I do this by hand? If there is, I forgot it. > which reminds me of a question that i had... is it possible to mod the > 49 for more memory? Tetoies montes den problepontai apo thn HP. Warranty void if kai ta resta. remove the old chip and replace it with a bigger one. Since (again, I a, say, 4MB 49G. Try it on your father's calc . Let me know... Alexandros. ZZZ on Friday evening I successfully compiled my first ML/assembly program, which I improved on Saturday evening to be a bit cooler . Basically, it just beeps and lights the buzzer indicator of the LCD. So, here it is, to help anyone that wants to program in ML to get started: % BEEP, LIGHT THE INDICATOR !ASM GOSBVL =SAVPTR % (or SAVE) save the state of the RPL OS LA 08 % Read the Saturn Processor Reference by Mastracci to LC 80 % understand how the LCD pointers work. A=A!C.B % However, I don't quite understand the purpose of this or. % Isn't the indicator supposed to be just the 3rd bit? D0= 0010B % This is the address of the hardware register that controls % the indicators on the top of the LCD. DAT0=A.B % Writing to D0 you write the address of the pointer. To % actually write to that address you must write to DAT0. LC(5) 1000 D=C.A % The D register holds the value for the frequency of the % sound. LC(5) 500 % The C register holds the value for the duration of the % sound. GOSBVL =makebeel % or 267F3, this is the beeper routine LA 0 DAT0=A.B % Turn the indicator off. GOSBVL =GETPTRLOOP % (or LOADRPL) go back to the RPL OS. @ That's it, people. I'm a bit troubled about why A=A!C.B (in line 6) is needed. -- Al. Andreou http://nemesis.ee.teiath.gr/~ee4299/ > LA 08 % Read the Saturn Processor Reference by Mastracci to > LC 80 % understand how the LCD pointers work. > A=A!C.B % However, I don't quite understand the purpose of this or. > % Isn't the indicator supposed to be just the 3rd bit? you could do just: LC 88 and DAT0=C.B 2 lines later, or even faster: LC 8 DAT0=C.1 later (to change just the last nibble) > D0= 0010B % This is the address of the hardware register that controls > % the indicators on the top of the LCD. > DAT0=A.B % Writing to D0 you write the address of the pointer. To > % actually write to that address you must write to DAT0. > LC(5) 1000 > D=C.A % The D register holds the value for the frequency of the > % sound. > LC(5) 500 % The C register holds the value for the duration of the > % sound. > GOSBVL =makebeel % or 267F3, this is the beeper routine > LA 0 > DAT0=A.B % Turn the indicator off. > GOSBVL =GETPTRLOOP % (or LOADRPL) go back to the RPL OS. > @ I'm looking for some example graphics code in ML/assembly, preferably for the 49G. Do you have anything in mind? I'd love something simple, that won't get me in much trouble. Disassembling existing code is a bit messy (although Nosy4.0 is very helpful). I'm looking for some example graphics code in ML/assembly, preferably for > the 49G. Do you have anything in mind? I'd love something simple, that > won't get me in much trouble. Disassembling existing code is a bit messy > (although Nosy4.0 is very helpful). You could take a look at: http://www.hpcalc.org/details.php?id=5007 Has anyone tried using the HP48 for non-linear constrained optimization, if so is there source code available? Need not be any fancy stuff, just as long as it works;) BR Matti > Installed the new filer2 and I now get the error message Erreur: Type > Argument Incorrect. It also appears to have set the calculator so some > prompts and messages are now in french. I removed everything which referers to french ROM words because I do not get an answer from JYA whether these words (VOIR, ARBO etc) are already builtin in the last ROM 19-6. Thus, there is no reason why the new Filers on my site below shouldn't work in ROM 19-6. This must be present on your 49 anyway. What is new? Besides an improvement of the ZOOM option (finds now any name, also it it starts with $, for instance) and the addtion of a language toggler essentially this: The SPC key is multifunctional now. If a directory is scanned SPC invokes a HIDE/UNHIDE choose box You can hide the selected (or tagged) names, but never all files of a directory - this is dangerous be interesting that you can now unhide a subset of all hidden names, just the selected (or tagged) ones. Classical unhiders were not as comfortable. If beeing in a port, SPC sets a ARCHIVE/RESTORE choose box. And here comes the surprise: The ARCHIVE name is HOME... where the dots represent the actual date and time of when you made your HOME backup. You will normally see in the filer box, for instance HOME29.10.02 provided you use European date format. But toggling with VARS, you see for instance HOME29.10.02 13:20:56 i.e., also the precise time when your bachup was made. Thus, the new HP49 filers are as clever as modern UNIX or WINDOWS tools. I was surprised myself that this works. For notice that the HOME backup-name is but this doesn't disturbe RESTORE or PURGE in the slightest way. Now I finally understand why JYA made names treatment by the filer as tolerant as it it. Or is this a pure accident? ftp://ftp.math.fu-berlin.de/pub/usr/raut/HP49/tools/ Loaded your 29/10/02 version and it's working fin . Don't know which version I d/l'd that gave the error message in french, maybe it just got corrupted in the d/l, I never checked CRC. My appolagies, your wonderfull utilities have never given any problems in the past so I just lept in and loaded it without any sensible checking or caution. Bit like how MS expects Windows to auatically d/l every patch they issue and then your left disconnected from the network for 5 hours while the system guys try to work out what happened. Like the zoom, hide and archive features Stephen.N > Installed the new filer2 and I now get the error message Erreur: Type > Argument Incorrect. It also appears to have set the calculator so some > prompts and messages are now in french. I removed everything which referers to french ROM > words because I do not get an answer from JYA whether > these words (VOIR, ARBO etc) are already builtin > in the last ROM 19-6. Thus, there is no reason why the new Filers on my > site below shouldn't work in ROM 19-6. This must > be present on your 49 anyway. What is new? Besides > an improvement of the ZOOM option (finds now any > name, also it it starts with $, for instance) and > the addtion of a language toggler essentially this: The SPC key is multifunctional now. If a directory > is scanned SPC invokes a HIDE/UNHIDE choose box > You can hide the selected (or tagged) names, but > never all files of a directory - this is dangerous > be interesting that you can now unhide a subset > of all hidden names, just the selected (or tagged) > ones. Classical unhiders were not as comfortable. If beeing in a port, SPC sets a ARCHIVE/RESTORE > choose box. And here comes the surprise: The ARCHIVE > name is HOME... where the dots represent the actual > date and time of when you made your HOME backup. > You will normally see in the filer box, for instance > HOME29.10.02 > provided you use European date format. But toggling > with VARS, you see for instance > HOME29.10.02 13:20:56 > i.e., also the precise time when your bachup was made. > Thus, the new HP49 filers are as clever as modern > UNIX or WINDOWS tools. I was surprised myself that > this works. For notice that the HOME backup-name is > but this doesn't disturbe RESTORE or PURGE in the > slightest way. Now I finally understand why JYA made > names treatment by the filer as tolerant as it it. > Or is this a pure accident? > ftp://ftp.math.fu-berlin.de/pub/usr/raut/HP49/tools/ > Installed the new filer2 and I now get the error message Erreur: Type > Argument Incorrect. It also appears to have set the calculator so some > prompts and messages are now in french. How do I change my HP49 back to english? > 0 ->LANGUAGE > How do I change my HP49 back to english? > 0 ->LANGUAGE As is seen from the question, not everybody knows about language-switching on the HP49. Mainly Germans do not since German doesn't have the honour to be a builtin language Anyway, in ROM 19-7 even menu names (in the filer, for instance) will be language-sensitive. The new OT49 is already prepared for the future. It contains several useful togglers (for angle, coordinate systems, fonts etc) and, in particular a pretty language toggler. The names in English, French and Spain will all be in the message tables of certain builtin libs. This also concerns most messages from the CAS lib. I really like them, in particular the french ones. For instance, in my filers from next year on, when making a HOME backup and if you're tired to watch these annoying english Wait please... you may switch to French to see then Patienter... Amazing, good occasion to learn French ... PS. I wonder were you, JYA, got all those spanish names from, do you have a spanish girl-friend? > PS. I wonder were you, JYA, got all those spanish > names from, do you have a spanish girl-friend? The Corvallis team did most translation of the HP48G messages a long time ago, I just re-used them. Why Spanish and not German ? Well, the Spanish market is much bigger than the German one and the spanish speaking community is also way bigger. Unfortunately, there was no space for more than 3 languages and at least I could easily make sure that all the french messages were correct. > 0 ->LANGUAGE please answer here: Does ROM 19-6 already know the elegant french words VOIR, ARBO etc or does it not? Secondly, can the 19-6 ^FilerManager already read the apps menu names via bints from ROM (in which case they appear language-sensitive) or must they still be written by the programmer? .. > please answer here: Does ROM 19-6 already know > the elegant french words VOIR, ARBO etc or No.. this has been added in 1.19-7 > does it not? Secondly, can the 19-6 ^FilerManager > already read the apps menu names via bints from ROM No, this has been added in 1.19-7 Only error messages are language-sensitive in 1.19-6 > (in which case they appear language-sensitive) or > must they still be written by the programmer? They have to be writting by the programmer. Or better, simply change the menu display handler so it will support different language with something like this :: CK&DISPATCH0 grob Grob>Menu str Str>Menu seco Seco>Menu id Id>Menu bint :: ?GetMsg Str>Menu ; THIRTEEN DoTagMenu ; And then when your define your menu, do something like: :: NoExitAction ( So it's not saved in LastMenu ) { NullMenuKey NullMenuKey NullMenuKey { [#] CANCL_FMsg ON_Action } { [#] OK_FMsg OK_Action } } ' ' ' NewStdLabelDef ' LabelDef! FOUR ::N ; Hope it helps Was WR referring to the future ROM 1.19-7 ??? > 0 ->LANGUAGE please answer here: Does ROM 19-6 already know > the elegant french words VOIR, ARBO etc or > does it not? Secondly, can the 19-6 ^FilerManager > already read the apps menu names via bints from ROM > (in which case they appear language-sensitive) or > must they still be written by the programmer? > Okay, WR, better rewrite that ROM code for JYA to save 2.5 bytes! John, you probably wouldn't comment it this way if Mika Heiskanen were the ROM-author. But also this greatest master of RPN-programming did not always find the optiomal program. Here an example, the famous UP from his HACK-lib which returns to the correct page of the parents directory. By the way, I wonder that ACO didn't use this UPDIR version which is *obviously much better* than the ordinary UPDIR (excuse with backward compatibility doesn't count) Here Mika's program, 80.5 bytes: :: CKO CONTEXT@ UPDIR CONTEXT@ 2DUPEQ case2DROP LastNonNull (get first object in parents dir) NotcaseDROP MINUSONE UNROT BEGIN (begin search of the just left dir) ROT#1+ROT (in the vars of the parents dir) 2DUPEQ ITE DROPFALSE PrevNonNull NOT_UNTIL DROP (DROP left dir and find correct page) SIX #/ SWAPDROP UNCOERCE %1 %OF (take 1% of the real) % 2.01 %+ (correct page code computed) InitMenu% ; Now my version, 72.5 bytes, 8 bytes saved) :: CKO CONTEXT@ UPDIR CONTEXT@ 2DUPEQ case2DROP LastNonNull (get first object) DROPZERO (parents dir is not empty and I start) UNROT (counting with ZERO, not MINUSONE) BEGIN ROT#1+ROT 2DUPEQ ITE DROPFALSE PrevNonNull NOT_UNTIL DROP#1- (DROP and correct the count) SIX #/ #1+ (enlarge the result somewhat) UNCOERCE %1 %OF %2 %+ InitMenu% DROP ; In addition, I use DROP, not SWAPDROP, which saves time: DROP lasts 0.03_ms, SWAPDROP 0.06_ms, mearure on the HP48 under normal conditions. The essential difference is that I use the pointer %2 instead of the real % 2.01. It should be mentioned that invoking either these or the other makes no difference. Both need 0.05_ms according to Mika's TIM. My UPDIR-version will be a key assignment choice in the mext edition of the 49 Keyman coming out soon. I knew you could do it! Saving 8 bytes per day can mount up to 2922 bytes saved per (average) year, which will save 128K (one whole flash bank) in only 44.857 years! . BUT in a couple of weeks and everything is compressed into one bank (sans the uncompressor, which takes about 15 banks) PS: OR - we will have several different ROMs, which are all incompatible with each other, including a Greek one (which will be self-incompatible) ;-) > I knew you could do it! Saving 8 bytes per day can mount up to 2922 bytes saved > per (average) year, which will save 128K (one whole flash bank) > in only 44.857 years! BUT > in a couple of weeks and everything is compressed into one bank > (sans the uncompressor, which takes about 15 banks) > PS: OR - we will have several different ROMs, which are all incompatible > with each other, including a Greek one (which will be self-incompatible) ROTFL! Anti-ROM. The only ROM which is able to answer the question about reciprocal-exclusons. Objects that are anything else than themselves. (Has las been in Greece??;-)) > I knew you could do it! Saving 8 bytes per day can mount up to 2922 bytes saved > per (average) year, which will save 128K (one whole flash bank) > in only 44.857 years! > Okay, WR, better rewrite that ROM code for JYA to save 2.5 bytes! John, you probably wouldn't comment it this way if > Mika Heiskanen were the ROM-author. I think you misunderstand; it wasn't a stab at JYA -- > I think you misunderstand; it wasn't a stab at JYA > And I do not take offence whatsoever as the code is rated by the algebraic compiler (pure ML) and this was made by Gerald Squelart :) Sometimes, time is the most important issue, didn't have too much time to optimized UPDIR so it would save 8 bytes and save .05ms ... > Sometimes, time is the most important issue, didn't have too much time to > optimized UPDIR so it would save 8 bytes and save .05ms ... really count. What counts - besides beauty and elegance in programming - is IMHO that the user gets maximal profit from a tool. As you see, it cost only 70 bytes to reprogram UPDIR in such a way that one returns with it always to the menu page you were starting from. I really recommend this for the next ROM. OK, you introduced the new SysRPL-name very helpful for the above task. it's stack diagram: rrp -> rrp' TRUE (rrp' = parents dir of rrp) rrp -> FALSE (provided rrp is HOME) Seen: > reprogram UPDIR in such a way that it always returns to the > menu page [containing the label for the current directory] But that's not backward compatible with the HP48, which is of course the most important thing :) And Joe Horn already supplied a little UP program which anyone can use for that purpose, if they wish (and so did I offer another -- in UserRPL of course :) Other users might also possibly *not* want this change, so are we ready to supply an OLDUPDIR program for them? And lastly, look at any My Computer window in any version of that most popular computer OS in the world; when you click the updir tool button in the toolbar, does it go back to (i.e. select, or show a dashed line around) the folder that you just came from? No, of course not! -- it goes all the way back to the very first item in the parent directory, always, so that you can start all over again, scrolling all the way back down again to where you were -- so if this is the way the whole world wants its computers to function (and MS is never wrong in deciding what's good for users :) then why should a mere calculator do things any differently? Bah!, Humbug!, and a Spooky Halloween to everyone! http://www.mum.edu . > But that's not backward compatible with the HP48, > which is of course the most important thing :) to me what a good functionality of UPDIR has to do with backward compatibility? PS. IMHO simulating fast parts of the operating system in UsrRPL seems to be a kind of a useless game > what ... UPDIR has to do with backward compatibility? UPDIR is backward, DOWNDIR is forward :) I'm not quite sure which way Down Under is, however. -[30]- . WR> it's stack diagram: WR> rrp -> rrp' TRUE (rrp' = parents dir of rrp) WR> rrp -> FALSE (provided rrp is HOME) - Carsten Squelch squealing on Squelart for squandering! . > I think you misunderstand; it wasn't a stab at JYA I don't remember to have claimed that. By the way, could you sent me 1. the flashbank 0 of ROM 19-6 (has less than 128 KB), as a BZ-file please, to have a short downloading time with XMODEM. I'll save it port 2, please determmine the name for it. 2. A tool which switches two different flashbanks 0. The one presently used with the other one which should be a backup in port 2. Clearly, the tool should be for the real 49, not for an emulator. If unavoidable, the switching process may last some minutes but should be as short as possible. It may well be that in future the user will have a certain choice not only on the entire ROM but also on a particular flashbank 0. hi! (2) What companies other than HP *ever* made RPN calculators? i got an MK61 and an MK52 (their names sound like a rifle). they are russian. > http://www.rskey.org/mk61.htm http://www.rskey.org/mk52.htm -Joe- > Wow! Where did you get them? Since years and years I am looking for the MK90 or MK98 but in vain. Do you know any shop/man/women/alien/Greek that sells MK calculators? Look: MK90 -> http://www.taswegian.com/MOSCOW/mk-90.html MK98 -> http://www.taswegian.com/MOSCOW/mk-98.html PS. I'm Swedish non Schroder sucker. We do not DUB movies for television, as >Germans/French does ( no offense ). Do you watch many films which help you learn the English required for writing calculator manuals? -- PS. I'm Swedish non Schroder sucker. We do not DUB movies for television, as >Germans/French does ( no offense ). Do you watch many films which help you learn the English required for > writing calculator manuals? You can laugh about it, but it does help! When I hear a german or Frenchman speak English I have to pay quite a lot of attention to understand what they are saying. (Not as much as with Indians, Chinese or Nigerians though). When I hear the Danish speak English it is like listening to an Englishman, no problem whatsoever. Us non-dubbing countries all learn the american language very well from movies and other american TV. In the Netherlands people learn French, English and german in highschool but only the English language is really spoken by everybody. My hypothesis is that this is due to the american movies and TV -- Can anyone tell me if it possible to convert programs for the HP 48/49 from Spanish to English? There are several excellent lloking programs available on the hpcalc.org site that are in spanish and I would like to convert them if possible. What would I need to convert them? I know nothing about programing but will try. Dan > Can anyone tell me if it possible to convert programs for the HP 48/49 > from Spanish to English? Well, I'm here for translate what you want, but the programmer work is for you ;-) Me again.... I have noticed that there seems to be some dependability on the actual placement of tokens in source code as to whether rplcomp wants to work. I have read through the docs to find an explanation but do not see it yet. If it is explained, just say so. Otherwise could anyone please tell me the requirements for tab/space use in the INCLUDEs, EXTERNALs etc? Also, RPLCOMP.DOC and the associated DOCS file speak of the token 'CODEM ENDCODE' to define the start/end of MASD code. If I use CODEM instead of CODE I get all sorts of unknown instruction errors immediately after the use of the word. Is there a better explanation of how to use MASD syntax with Hptools? It does *not* appear to be compatible with the syntax used on the calculator. Next is a problem likely associated with the first question. Here is a line from my .l file (after sasm -e ) which I cannot figure out: ... 16 exALROMID EQU #4C4 5 17 *|| Resuming file exAL.src at line 3 18 * File exAL.src 4 *** ERROR: Illegal mnemonic *** 19 0000 INCLUDE exAL49ext.h 20 *|| Reading from exAL49ext.h .... It appears that there is something wrong with either my INCLUDE statement for the external declarations file or the external declarations file itself. The file exAL49ext.h merely contains a collection of the following: EXTERNAL foo EXTERNAL bar EXTERNAL blah ..... Is there something wrong with this? In the file exAL.src I have the first line as TITLE blah and a couple of lines later I have two INCLUDE statements for the romid and external declarations file. Following this is an ASSEMBLE statement for the first visible library command. Is this not the correct method? I even used the EXACT format as the GELIB example in MAKEROM.DOC. If anyone wants to see the actual code for my project to help me resolve the plethora of problems I am encountering, please let me know am having I could actually begin writing the library code and make some progress. -Al A. > [..Problems with HPTools..] > I even used the EXACT format as the GELIB example in > MAKEROM.DOC. > So did you try the GELIB example itself? If that doesn't work, you may have a installation error. If it works, maybe your code isn't exactly like the example;-) Since making a library is nearly the worst case, have you tried to compile a single SysRPL program? > I have noticed that there seems to be some dependability on the actual > placement of tokens in source code as to whether rplcomp wants to > work. for RPLCOMP placement of tokens shoud not be an issue, for SASM, it is. For example instruction must not start on the fist collumn. By default, everything after collumn 20 is comment (except if you use SASM with the -c option) > Otherwise could anyone > please tell me the requirements for tab/space use in the INCLUDEs, > EXTERNALs etc? you can put INCLUDE FileName anywhere in the line. same for EXTERNAL the SASM INCLOB function must be tabbulated > Also, RPLCOMP.DOC and the associated DOCS file speak of the token > 'CODEM ENDCODE' to define the start/end of MASD code. If I use > CODEM instead of CODE I get all sorts of unknown instruction errors > immediately after the use of the word. This should normally work provided you do not try to put SASM syntax after a CODEM token. for example: CODEM LC 01000 { OUT=C C-1.A UPNC } RPL ENDCODE should compile properly. > It does *not* appear to be > compatible with the syntax used on the calculator. It is 99% compatible. Some of the differences involve expressions and some macros. > declarations file itself. The file exAL49ext.h merely contains a > collection of the following: EXTERNAL foo > EXTERNAL bar > EXTERNAL blah can you check that the file ends with a carage return? Also, are you sure of the mode used at the end of your incliuded file? For example, if you incluide a file and that the file switch ni ASSEMBLE mode, you will still be in assemble mode after the include. This can cause lots of problems try this link http://www.hpcalc.org/details.php?id=3937 > I recently bought a used HP48G but it didn't come with the user's manual. Is it possible to find a user manual online or a downloadable manual? Is there a way to translate a hp49G program from Spanish to English? I know nothing about programing but there apprears to be several great civil programs on hpcalc.org that I would like to try but they are in Spanish. Several attempts to contact the programmer have be returned undeliverable. Dan I remember years ago Digitalis sold some hp4x that had a double speed module. I went to digitalis.de and I coulnt find anything about it. Is it still sold? Can I make one? www.cynox.de still has it, but it only gives you 4MHz => 5MHz > I remember years ago Digitalis sold some hp4x that had a double speed > module. I went to digitalis.de and I coulnt find anything about it. Is it still sold? Can I make one? > Could I change the 32KHz quartz to a 64KHz one without friying the hp? >Could I change the 32KHz quartz to a 64KHz one without friying the hp? My HP 48SX works this way now for many years. Look somewhere here: http://www.ruhr.de/home/criseis/index.html Olaf -- D.i.e.s.S. (K.) As the HP 48SX standard clock is only 2MHz, the double speed of 4MHz is possible. The HP 48G/49G uses a 4MHz clock, which can be overclocked to 5MHz. It is not possible to overclock the Saturn CPU to 8MHz (without liquid Nitrogen cooling :). Just to clarify. >Could I change the 32KHz quartz to a 64KHz one without friying the hp? My HP 48SX works this way now for many years. Look somewhere here: http://www.ruhr.de/home/criseis/index.html Olaf > -- > D.i.e.s.S. (K.) So you mean that if I change the quartz from 32KHz to 40KHz I will be able to run it to 5Mhz? What are the ICs? I dont know very much about electronics... Howcome Olaf.82s works right with the 62Khz? Because SX is half of G? By the way, Olaf, I dont know german.... :-( (except for Whiskey) > As the HP 48SX standard clock is only 2MHz, the double speed of 4MHz is > possible. > The HP 48G/49G uses a 4MHz clock, which can be overclocked to 5MHz. > It is not possible to overclock the Saturn CPU to 8MHz (without liquid > Nitrogen cooling :). > Just to clarify. > >Could I change the 32KHz quartz to a 64KHz one without friying the hp? My HP 48SX works this way now for many years. Look somewhere here: http://www.ruhr.de/home/criseis/index.html Olaf > -- > D.i.e.s.S. (K.) >So you mean that if I change the quartz from 32KHz to 40KHz I will be >able to run it to 5Mhz? What are the ICs? I dont know very much about >electronics... When you do this you can't use the clock anymore. But who needs a clock. But you also can't use the RS232. This is the reason why I can switch back to the old clock. You need it for the RS232! You can use my shematic for this because I did not use a 64khz xtal. (you can not buy this!) I use a RC-combiantion for this frequency and you can change this for 40kHz >Howcome Olaf.82s works right with the 62Khz? Because SX is half of G? By The SX works normal with 2Mhz. Mine is running now for years with 4Mhz without a problem. A SX at 40Mhz feels faster than a GX because the operating system is faster. >the way, Olaf, I dont know german.... :-( (except for Whiskey) Really? I know German, but I did not know anything about German Whiskey. :-] But the picture at this page: http://www.ruhr.de/home/criseis/hp48/hp48a.html is in english. .-) And you need irish whiskey. I would not try this with German beer. Olaf -- D.i.e.s.S. (K.) > So you mean that if I change the quartz from 32KHz to 40KHz I will be > able to run it to 5Mhz? What are the ICs? I dont know very much about > electronics... Howcome Olaf.82s works right with the 62Khz? Because SX is half of G? By > the way, Olaf, I dont know german.... :-( (except for Whiskey) As the HP 48SX standard clock is only 2MHz, the double speed of 4MHz is > possible. > The HP 48G/49G uses a 4MHz clock, which can be overclocked to 5MHz. > It is not possible to overclock the Saturn CPU to 8MHz (without liquid > Nitrogen cooling :). > Just to clarify. > >Could I change the 32KHz quartz to a 64KHz one without friying the hp? My HP 48SX works this way now for many years. Look somewhere here: http://www.ruhr.de/home/criseis/index.html Olaf > -- > D.i.e.s.S. (K.) No, it doesn't work. I tried it allready. When you change only the quartz, then the CPU will be perhaps faster. But the display ICs use the same signal from the quartz and they didn't work with a higher speed. > Could I change the 32KHz quartz to a 64KHz one without friying the hp? Seen: > [40-byte SysRPL version of VARS] > is not particularly fast for long Varset Timings here: ------------- ----- ----- 98 variables: 6.6 seconds .328 .281 191 variables: 28.2 seconds .661 .567 [~N^2 !] [~N] That was 50 times as fast as the 48G for about 200 variables, and at well under one second, it was good enough for me! And on my 48G, the small size was important; a 171-byte ML program to shave a very small amount from this timing would not, to all users, be worth the memory used, but fortunately, due to the posting of various alternative approaches to various tasks, readers who do not care to roll their own can at least have a wide range of choice, to match against their own goals. -[]- There's a current (rather long)thread on implicit differentiation, so here's yet one more program. It's simple enough and runs on the HP48 and 49. It was originally sent to me by Hunt, who doesn't seem to post here much any more. I call it IMDIF. It requires an expression in X and Y. For the HP48, replace Simplify with ASIM if you have ALG48, or use EXCO, or just omit it. %%HP: T(3)A(R)F(.); << -2 CF DUP 'X' .d SWAP 'Y' .d NEG / SIMPLIFY -2 SF >> When I try to store an object or formula writen in equation writer or command menu hp49g won't let me to store it (I do it in algebraic mode). Steps: 1. Write formula in equation writer 2. Press ENTER once or twice 3. Press STO> key 4. Enter name 5. Press ENTER After pressing ENTER error message appears ANS Error :Too few arguments If in step 2. press ENTER twice hp49 do some calculus on my formula and store it as different variable. For exampe: formula x+y=1 it stores as x-4071.545=1 and only if I set approx. mode on, if not an error message appear. What I was doing wrong? Sorry for bad english! Kruno. > When I try to store an object or formula writen in equation writer or > command menu... It seems you have something stored with the name Y. When loading programs to the HP48GX, how do know how much to store in a port and when should you selecte a different port to use? Also, does merging the slot one card always cause problems running programs stored in slot2? TIA > When loading programs to the HP48GX, > how do know how much to store in a port > and when should you select a different port to use? A famous, non-trivial problem (knapsack problem?) If all these ports are in slot 2, it makes no difference in execution, timing or efficiency which port any object is in; your arrangement only affects how fully you can pack your card. If you put one 10-byte object in each port, however, then there's no room for any 128K object anywhere :) > Also, does merging the slot one card > always cause problems running programs stored in slot2? I think only if they wouldn't have worked in slot 2 anyway; some libraries have to be stored in port 1 or port 0 to work properly (or even not to hang or crash), and hopefully their authors have so indicated (but not always, e.g. the HP stopwatch library/ies). But let's check something -- you're not plugging in any card larger than 128K into slot 1, right? Did you run out of user memory already? If you are swimming in more memory than you know what to do with, then unmerge your memory: { } FREE1 -- then store libraries there which can only work in ports 1 or 0 (uncovered ports); objects in port 1 are safer against memory wipeouts than they would be in a merged port 0; you also can not protect card contents using a read-only switch if your card is used for merged memory. Too much free (merged) memory also hits you with long pauses for garbage collection (unless you pay off the collector :) PT109 http://www.cs.umb.edu/jfklibrary/jfk-manofsea-2.html . slot 2, I sould not have a problem merging slot 01 for more active ram and run everything that's loaded in ports 2 thru 9. ( providing the neccessary libraries are also loaded in the same ports as their respective programs ). Then to keep different programs from trying to use possible libraries with a same namae, I can make diffeent directories.?..sounds like a plan. > since I'm using a 128k in slot 1 & 1 meg in slot 2, > I should not have a problem merging slot 1 for more active ram for one thing at a time in the HP48 is more wasteful than useful, and in fact it will even annoy you by freezing much longer for GC; I would wait until I first got an Insufficient Memory > and run everything that's loaded in ports 2 thru 9. > (provided the necessary libraries are also loaded > in the same ports as their respective programs) I no grok; ports are where libraries *must* be stored, and where backups *may* be stored, but other programs don't run from ports. Think of a port as a garage or off-site storage; it's where you put things that are *not* in use, which in fact must be brought back into your main living area (i.e. copied back to user memory) before you can do anything with them. > to keep different programs from trying to use possible > libraries with a same name, I can make different directories? Libraries are sets of commands which augment the built-in commands; even the built-in commands live in libraries, but those are stashed in ROM, while the libraries which you download yourself must be stashed in a port, where the calc recognizes them and adds them to its catalog of commands. It is possible to attach a library to any directory, which means that its commands are recognized only when you use that particular directory, but most libraries attach themselves to HOME, so that you can always use their commands at any time. It's rally a good idea to avoid naming any of your own programs with the same name as any built-in or library command; in fact, it will be difficult to do this accidentally (you'll get an Invalid Syntax error), unless you install and attach the library after you've already stored your own program, in which case the name will continue to invoke your own program, instead of the same-named new library command. It's also a good idea for library authors not to duplicate each other's command names in different libraries, but one is not always so lucky: A library as a whole doesn't itself have a name; it instead is stored in a port using its library *number* -- needless to say, it's also not a good idea for different libraries to have the same number, but in this world there are often cases where different people want to claim the same territory, and they just go on fighting over it until one of them gives up and leaves. > ..sounds like a plan. A man + a plan + a canal = Panama! A Dan + a clan + a canal = Canada! A man + a pain + a mania = Panama! Able was I ere I saw Elba A dum reb was I ere I saw Bermuda More palindromic mania: http://www.palindromes.org http://www.growndodo.com/wordplay/palindromes http://www.floot.demon.co.uk/palindromes.html [math!] MOM IS 51 WOW Saippuakauppias. Engage le jeu que je le gagne. Do Good's deeds live on? No, Evil's deeds do, O God. . <3DC0D469.D82D1E42@miu.edu> In message <3DC0D469.D82D1E42@miu.edu>, John H Meyers ..sounds like a plan. A man + a plan + a canal = Panama! > A Dan + a clan + a canal = Canada! > A man + a pain + a mania = Panama! Able was I ere I saw Elba > A dum reb was I ere I saw Bermuda More palindromic mania: > http://www.palindromes.org > http://www.growndodo.com/wordplay/palindromes > http://www.floot.demon.co.uk/palindromes.html [math!] MOM IS 51 WOW Saippuakauppias. Engage le jeu que je le gagne. Do Good's deeds live on? No, Evil's deeds do, O God. . > When loading programs to the HP48GX, > how do know how much to store in a port > and when should you select a different port to use? A famous, non-trivial problem (knapsack problem?) If all these ports are in slot 2, it makes no difference in execution, timing or efficiency which port any object is in; your arrangement only affects how fully you can pack your card. If you put one 10-byte object in each port, however, then there's no room for any 128K object anywhere :) > Also, does merging the slot one card > always cause problems running programs stored in slot2? I think only if they wouldn't have worked in slot 2 anyway; some libraries have to be stored in port 1 or port 0 to work properly (or even not to hang or crash), and hopefully their authors have so indicated (but not always, e.g. the HP stopwatch library/ies). But let's check something -- you're not plugging in any card larger than 128K into slot 1, right? Did you run out of user memory already? If you are swimming in more memory than you know what to do with, then unmerge your memory: { } FREE1 -- then store libraries there which can only work in ports 1 or 0 (uncovered ports); objects in port 1 are safer against memory wipeouts than they would be in a merged port 0; you also can not protect card contents using a read-only switch if your card is used for merged memory. Too much free (merged) memory also hits you with long pauses for garbage collection (unless you pay off the collector :) PT109 http://www.cs.umb.edu/jfklibrary/jfk-manofsea-2.html . > When loading programs to the HP48GX, how do know how much to store in > a port and when should you selecte a different port to use? Also, does > merging the slot one card always cause problems running programs > stored in slot2? TIA You might want to use the command PVARS which takes the number of the port from the stack and returns the variables stored in that port and the available memory of the port in bytes. I am using the INFORM command. The solution to my problem comes out to be 1.3456...E-2. INFORM shows the solution on the screen to be 1.3456, it's necessary to press EDIT to see the scientific part How can I get INFORM to output the result in fixed notation ? > I am using the INFORM command. > The solution to my problem comes out to be 1.3456...E-2. > INFORM shows the solution on the screen to be 1.3456, > it's necessary to press EDIT to see the scientific part > How can I get INFORM to output the result in fixed notation ? First let's just try a longer field: You can make all screen fields long (1 column, max. 4 fields per page), or you can make selected fields long, e.g.: My INFORM { Long: { } Fld1: Fld2: } { 2 1 } { 1.23456789012E-2 1.234567 2.3456789 } DUP INFORM To get fixed notation, you could convert output to a string (and allow string input as well) -- more programming, however. An output-only screen could also be formatted using the DISP[XY] command(s), graphics and SCROLL commands, or maybe to a printer :) . > I am using the INFORM command. > The solution to my problem comes out to be 1.3456...E-2. > INFORM shows the solution on the screen to be 1.3456, it's necessary > to press EDIT to see the scientific part No, you can dicrease the number of columns in the format list of INFORM. For example, if the format list is {1. 2.}, the INFORM screen will show two columns of input fields, making the available pixels for every field less. But if you use {1. 1.} then there will be one column and so the fields will be wider. Unfortunately even if you have fix mode on, the numbers in the fields of INFORM are always shown in standard format. > How can I get INFORM to output the result in fixed notation ? Just set fixed mode on. For example if you do 4. FIX prior to INFORM, then the numbers in the fields will be shown in standard format but nonetheless returned in the specified fixed format. > Does the 49 have a rectangular to polar conversion command? > Or do you convert to polar by going to [the mode menu] > and setting it to polar? In your case, what you are asking for is a way to simply input rectangular coordinates and see the result in polar form. You've already seen how to do that, by simply doing one CYLIN or SPHERE command to instruct the screen painter to show all complex numbers in polar format, then every time you enter a complex number in (x y) form, it auaticaly appears in polar form on the display, voila! Other people ask why there are no P<->R conversion commands in the HP48/49 calculator series, thinking that HP somehow goofed by leaving out commands that used to be found in old calculators. The answer to this latter gripe is that all such conversions are auatically built-in; whenever you enter a related pair of input values which are polar coordinates to begin with, you just type an angle symbol <) between them, and the calculator auatically converts to an internal object having the proper internal coordinates. Conversely, whenever an internal object is displayed, there is an auatic conversion, if necessary, to the display format in which you want to see it, which you can choose via a command (RECT, CYLIN, or SPHERE); when you type a new display command, everything shown in the display changes to the desired display format (and keeps displaying that same way), although the internal object itself never changes at all. Note that input conversion, if any, is determined solely by syntax (the presence or absence of an angle symbol before each value which represents an angle), while output display conversion is determined independently by commands which set a persistent choice of display style. Therefore, to convert coordinates, as you requested, you merely enter data in the syntax appropriate to its type (with or without angle symbols), and let the same data be redisplayed auatically in the desired output style. If you don't very often use the infinity function above the zero key on the 49G, you can make it a more convenient angle symbol key instead, by performing 128 CHR 102.2 ASN just once to set it up (be sure also to turn on USER mode); the HP48, of course, already had this character on its keyboard, right next to pi. The older calculators had P<->R conversion commands, each requiring two separate input values and returning two separate output values, because in the first place their registers (including stack registers) each held only one fixed-size kind of object (real number), and in addition, because there was no parser/compiler to read typed text and auatically build composite internal objects, nor was there any decompiler/displayer to interpret composite internal objects and auatically display them in various formats. If you really want pairs of separate input and output values to be converted, however, exactly like the old P<->R commands, these HP48/49 commands are of use: V-> splits an object (complex, 2D vector, or 3D vector) into the separate component values which would be displayed in the current display mode (RECT, CYLIN, or SPHERE); for the latter two modes, this is just like an R->P command. Conversely, ->V2 and ->V3 take two or three separate stack values and build from them a single internal object (set flag -19 for ->V2 to create complex numbers, otherwise it creates vectors), interpreting the coordinates according to those same display modes; for the latter modes, again, this is just like a P->R command. To make the good old original P<->R commands out of these, where each command takes two separate input values and returns two separate output values to the stack: P->R: << -16. SF ->V2 -16. CF V->> R->P: << -16. CF ->V2 -16. SF V->> To preserve the original flag state, if desired, insert RCLF UNROT at the beginning and ROT STOF at end (on the HP48 use ROT ROT in place of UNROT). Other commonly requested simple functions: RAD angle mode toggle (already provided on 48G keyboards): << -17. DUP IF FS? THEN CF ELSE SF END >> POLAR display mode toggle (already provided on 48G keyboards): << -16. DUP IF FS? THEN CF ELSE SF END >> You can name these whatever you'd like (except RAD and POLAR, which are already built-in command names for something else :) and then assign those quoted names to any keyboard locations, or just type their names to invoke them. Oh dear, it looks as if this isn't the first time that this same topic has come up; maybe next time I'll remember, and stop answering this same question again :) . Does the 49 have a rectangular to polar conversion command? Or do you > convert to polar by going to mode and setting it to polar? Is there a > shortcut to do this? This newsgroup is great - it sure makes up for the terrible 49 Chris The absence of this conversion haunted me because the process was two quick keystrokes on the 48S. complex display. Because it was short and easy to write, 'tRP' became it's name. << -16 IF FS? THEN -16 CF ELSE -16 SF END >> This single softkey 'tRP' toggles the display between Rectangular and Polar representation. Easy enough to create........and remember. X > complex display. Because it was short and easy to write, 'tRP' became > it's name. << -16 IF FS? THEN -16 CF ELSE -16 SF END This single softkey 'tRP' toggles the display between Rectangular and > Polar representation. Easy enough to create........and remember. If you have not set the angle mode to spherical it will work. This is shorter: << -16 DUP FS? :: CF :: SF IFTE >> Seen: under numerous domain names); then Google evidently decided to shed the bother and expense However, can't anyone use similar free web accounts for Google setup, to end up with pretty much the same thing? me mycorp com however, and deleting some spam is no big deal for me; I find it much harder, in fact, to delete spam One of the curious sources of spam keeps sending empty-content messages signed by people who have in the past posted to this newsgroup -- since it all comes from Earthlink, and I know only one person who uses Earthlink, one filter now tosses all of that directly into my trash, without even passing go ;) -[]- . > However, can't anyone use similar free web accounts for Google setup, > to end up with pretty much the same thing? me mycorp com That's a good idea. The problem is that most of the time people simply hit the reply button and don't bother to read the post entirely. So at the end you end-up never reading the message. who either wants to increase the size of my reproductive appendice, or wants me to loose weight (so only bones will remain).. Very annoying the last paragraph! Funny stuff. Hehehe.... -Al > ... > That's a good idea. The problem is that most of the time people simply hit > the reply button and don't bother to read the post entirely. So at the end > you end-up never reading the message. who either wants to increase the size of my reproductive appendice, or wants > me to loose weight (so only bones will remain).. Very annoying > -- It aint what ya don't know but what ya know that aint so that can get you in trouble. - P. Thomas > On a positive note, I will soon be rich, as I gave someone in Nigeria all my > bank account information, and there will be millions of dollars in it in no > time... > You too ? Does that mean we will have to share the millions ? I sold the deal to the Russian Mafia and they are not going to share it and they are definitely going to get that money from the poor Nigerians. ;-) On a positive note, I will soon be rich, as I gave someone in Nigeria all > my > bank account information, and there will be millions of dollars in it in > no > time... > You too ? Does that mean we will have to share the millions ? > The query was: > when I Put the vector [15. 14.] (in rectangular mode) > and change to cylindrical mode, > the vector is only shown on one line. > [20.5182845287 < .75... > How can I view this on several lines? Note that flags -98 and -97 take effect only after pressing TOOL and then the VIEW menu key (which in turn performs DUP SCROLL); the normal stack display doesn't change. On the other hand, assuming flag -52 is clear (the default): Try OBJ-> DROP R->C Or -19 SF V-> ->V2 Or get an HP48! This is the much nicer display on 48 (on screen or in edit line): [ 20.5182845287 <)46.9749340109 ] . Titus Barik asked how to do what the subject says. One non-destructive way: << 0. DEPTH 1. SWAP FOR i i PICK + NEXT Total ->TAG >> If you negate each sum, however, you can then keep several sums on the stack at the same time, like one of those old paperless printers (or HP17B/19B/18C) But perhaps you'd rather keep lists or matrices instead; these are somewhat easier to deal with and to sum. In fact, here's a beginner's spreadsheet: (the checksum will differ on HP49) . > For subraction use > << WHILE DEPTH 1 > REPEAT - END >> And also: If you recall a library on the stack and try to BZ49 it the screen goes blank and the indicators start blinking in what seems to be Morse code for 'you suck'. -- Al. Andreou http://nemesis.ee.teiath.gr/~ee4299/ > If you recall a library on the stack and try to BZ49 it the > screen goes blank and the indicators start blinking in what > seems to be Morse code for 'you suck'. that's perfectly normal, that's what happen when you're compressing a library with BZ49. Just wait for the screen to turn on again and show the compressed object > By the way, it may also be noted that SigmaLIST and PiLIST > (sum and product of list elements) won't even accept > a list of *one* element! (Error: Invalid Dimension!) Easy. 0 + SigmaLIST 1 + PiLIST > sum and product of list elements) won't even accept > a list of *one* element! (Error: Invalid Dimension!) > Easy. > 0 + SigmaLIST > 1 + PiLIST What a mathematician! You completely neglect the rality of SigmaLIST. Since this has already been discussed in detail by JHM, I add only some comments. IMHO, the simplest way to treat at least 1-element lists is a reprogramming of SigmaL as follows: << PTR 19443 (CheckList on the 48, PTR 3F3C1 on the 49) IFFERR xSigmaList THEN xHEAD >> Yes, without the xEND, it's not required. And in the present case, the UsrRPL IFFERR is better then the SysRPL command ERRSET. Mathematicians go up the wall if seeing that Sigmalist does not treat 1-element lists at least. Precisely speaking, SigmaLIST is an operator defined on the set of finite sequences of elements of an arbitrary additive semigroup (need not be commutative). And { x } Sigmalist always equals x, where x denotes any member of the semigroup. Whether SigmaLIST can reasonably be defined on the empty sequence depends on whether the semigroup has a Zero (a neutral element) or not. If it has, {} SigmalLIST should equal Zero. E.g., in the semigroups of character strings, the Zero is the empty string, in the semigroup of real or complex numbers, the Zero is the number 0. In the semigroup of reals with respect to multiplication, it is the real 1. Sometimes it may be useful to let {} SigmaLIST undefined, like 0^0, for instance. NK: [re summing 1-element lists] > 0 + SigmaLIST > 1 + PiLIST Valid only if you know in advance that you are restricting input only to lists of *numbers* (see below). In that case, how about these, for possible empty lists as well: 0 + 0 + SigmaLIST 1 + 1 + PiLIST But let's take a closer look: { 1 2 3 } SigmaLIST = 6 { 1 2 } SigmaLIST = 3 { 1 } SigmaLIST = 1 But this errors! { } SigmaLIST = 0 ? Also errors. { [1] [2] [3] } SigmaLIST = [6] { [1] [2] } SigmaLIST = [3] { [1] } SigmaLIST = [1] But this errors! { } SigmaLIST = [0] ? Also errors. { 1 2 3 } SigmaLIST = 123 { 1 2 } SigmaLIST = 12 { 1 } SigmaLIST = 1 But this errors! { } SigmaLIST = ? Also errors. Note that to handle more ral one-element lists, the simplest, more ral work-around might be: << IF DUP SIZE 1. == THEN 1. GET ELSE SigmaLIST END >> However, note that this doesn't trap { << program >> } as invalid input, which might have been the original 48G rationale for the slightly lazy rejection by ROM coding of summing (or taking the product of) any 1-element lists at all; in fact, these are implemented essentially identically to the There is *no* way to properly handle the ral case of summing an empty list, as can be seen by the fact that each of the above three examples of { } SigmaLIST seems to suggest a different answer! In other words, with an empty list, the unanswerable question remains: an empty list of what null-value object ? Or, what is the sound of nothing clapping? ;-) . > NK: [re summing 1-element lists] 0 + SigmaLIST > 1 + PiLIST Valid only if you know in advance that you are restricting input > only to lists of *numbers* (see below). In that case, how about these, for possible empty lists as well: 0 + 0 + SigmaLIST > 1 + 1 + PiLIST > Indeed, even better. But.... > But let's take a closer look: { 1 2 3 } SigmaLIST = 6 > { 1 2 } SigmaLIST = 3 > { 1 } SigmaLIST = 1 But this errors! > { } SigmaLIST = 0 ? Also errors. { [1] [2] [3] } SigmaLIST = [6] > { [1] [2] } SigmaLIST = [3] > { [1] } SigmaLIST = [1] But this errors! > { } SigmaLIST = [0] ? Also errors. { 1 2 3 } SigmaLIST = 123 > { 1 2 } SigmaLIST = 12 > { 1 } SigmaLIST = 1 But this errors! > { } SigmaLIST = ? Also errors. Note that to handle more ral one-element lists, > the simplest, more ral work-around might be: << IF DUP SIZE 1. == THEN 1. GET ELSE SigmaLIST END >> HEAD would also do in case of 1 element. > However, note that this doesn't trap { << program >> } > as invalid input, which might have been the original 48G > rationale for the slightly lazy rejection by ROM coding > of summing (or taking the product of) any 1-element lists at all; > in fact, these are implemented essentially identically to the There is *no* way to properly handle the ral case of > summing an empty list, as can be seen by the fact that > each of the above three examples of { } SigmaLIST > seems to suggest a different answer! Notion: { set / operation } for algebraic. { element } for set There is no ral way to extend the algebraic structure {{elements}/operation} for the case of the operation acting upon zero elements. In case of one element one can assume that the missing element is the neutral element of the structure. This by deducing that it can't be any different thing because the operation itself is defined over the special kind of elements of the structure itself. When there are no elements at all, this assumption is not very reasonable as there is no way to predict what kind of objects the elements will be that the operation acts upon. So for the example {{numbers}/addition} 0 0 + can be done only when it is already known that gSLIST will operate with a list of numbers. This can be checked if there is at least one element in the list. But if there is nada, then go figure out what the list would/should contain. In the special case of the HP49G, the structure {elements/addition has some additional properties resulting out of overloading the operation + for handling different object types. The kind of object whose type survives any addition with any other object kind is the list itself. Add anything with a list to get a list again. This additional property might suggest to widen the definition to If nada elements -> assume lists as elements to add with each other. So { {}/addition} could be set equivalent to { {{ }}/addition } which then can use the predicting procedure to assume that {{}} gSLIST means {{}{}} gSLIST and return an empty list. But this is also not very ral. What about the algebraic structure {{numbers,vectors} multiplication}? What is the neutral emement of this structure? Is it 1.? If the missing element is the vector there is no way of guessing its absence out of { 1 } gPLIST which according to the above would be widened to { 1 1 } gPLIST. Which spits out a number instead of a vector. Possible exit: Cripple gPLIST to accept only lists with a single type of objects. It is *then* that the assumption of survival of the strongest element types can be made without the above problem. But then the engineering population starts complaining again, singing the boring song why can't this be done, the good old days of HP, why did they change that, blah blah, blah blah, blah blah. > In other words, with an empty list, the unanswerable question > remains: an empty list of what null-value object ? > An empty list of nothing. Null set, nema, nada, nix. (Only if the above assumptions are made.) BTW. MAP has also its usefulness. Try it with nested lists in comparison to DOSUBS. >Or, what is the sound of nothing clapping? ;-) If silence is in the set of sounds, then silence. After reading WR and NK, I *think* that we all agree that the sum (or product) of the elements in an empty HP 48/49 list has to remain undefined, but with so much legal-speak and math-speak, it's hard to tell Summarizing in my dumb Merkinese: The sum (or product) of an empty list of I don't know what object type(s) has to be I don't know (Error: Invalid Dimension is close enough :) Like [as] I've been trying to say for six years :) . X > There is *no* way to properly handle the ral case of > summing an empty list, as can be seen by the fact that > each of the above three examples of { } SigmaLIST > seems to suggest a different answer! In other words, with an empty list, the unanswerable question > remains: an empty list of what null-value object ? X NOVAL ? Example: The welknown recurrence of type a(n)=r*a(n-1)+p with a(0)=a0 (example of the TI manuals - don't shoot, I try to make that plottable on the HP49G ;-)). This sequence can be converted to an analytic closed form, but let's follow the example for r=0.667 , p=50 , a0=100 . What about the algebraic object: 'IFTE(n<=0,STORE(100.,a0),STORE(0.667*a0+50.,a0))' If we store that in EQ, and set H-View from 0 to 10, V-View from 0 to 300, independend variable to n, step to 1 (user unit) and try to plot, then it doesn't plot correctly :-( *But* if we QUOTE the ELSE-part: 'IFTE(n<=0,STORE(100.,a0),QUOTE(STORE(0.667*a0+50.,a0)))' then...it gets plotted just fine! So here you are a plottable algebraic for the Fibonacci sequence: 'IFTE(n<1,STORE(0.,F0),IFTE(n<2.,STORE(1.,F1),QUOTE(STORE(F0+STORE(F1,F0),F1 ))))' Is the port done? How is it going? It would be great news to hear such thing! I've just installed the meta kernel on my HP48GX. I works great! Though I prefer a 4-line stack. Is there an option to change it from 5 lines to 4? Georg. I've just installed the meta kernel on my HP48GX. I works great! Glad you like it... > Though I prefer a 4-line stack. Is there an option to change it from 5 > lines to 4? No, you can't. The maximum size of a font is 8 pixels hight, not 10 like the standard stack. But you'll get used to the new stack pretty quickly I've just installed the meta kernel on my HP48GX. I works great! > Though I prefer a 4-line stack. Is there an option to change it from 5 > lines to 4? > I think is no possible and I prefrer the 6 line stack using font 7. I have a Word document and its PDF equivalent that were produced by someone else and sent to me. Parts of the document use the HP48GOS3.TTF font from hpcalc.org. We both have the same font installed, but when I print to Distiller[1] and view the resulting PDF, all spaces come out as hollow rectangles. When I view the PDF that was sent to me with the original, spaces come out as spaces. Can anyone suggest a reason why and what do I do to fix it? What really puzzles me is that if the font can't be embedded then Acrobat has to be using the version installed on my machine both times, so why the difference? If it helps, the spaces as rectangles behaviour also appears in Windows. For example, if I double-click the font in the Fonts control panel, then the sample text has rectangles instead of spaces. Finally, this strange behaviour only happens with the HP48GOS3 font. The others all display fine so I don't believe it is a specific problem with the font - it has to be something that's screwed-up on my machine but I've run out of places to look and things to try. This message has been posted to comp.fonts as well - I thought that I'd try here in case someone else has had the same problem trying to document their code. Help! [1] Acrobat Distiller 5.05 on Win2K Professional -- I thought about doing the garbaging collection in the STARTOFF var, and setting the TOFF var to something like 15 seconds (somebody said in a previous post that it's better/faster if the GC is done often). Despite the fact that my calc won't auto-off again, is there anything wrong about doing this? I mean, could a GC inside a program mess with something? my STARTOFF var: :: GARBAGE ; @ Andr.8e Pinto > I thought about doing the garbaging collection in the STARTOFF var, > and setting the TOFF var to something like 15 seconds (somebody said > in a previous post that it's better/faster if the GC is done often). Nothing wrong about that, it will work just fine. However, you may want to put a longer delay. For example, if you're browsing the CATALOG, where normally no garbage will occur, with your system it will. And as you have over 1000 elements on the stack at that time, it will be awfully slow I thought about doing the garbaging collection in the STARTOFF var, > and setting the TOFF var to something like 15 seconds (somebody said > in a previous post that it's better/faster if the GC is done often). Nothing wrong about that, it will work just fine. > However, you may want to put a longer delay. > For example, if you're browsing the CATALOG, where normally no garbage will > occur, with your system it will. And as you have over 1000 elements on the > stack at that time, it will be awfully slow > I guess i'll put the command to turn off the calc after the GC and set TOFF to 1~3 min, so i get both features. Andr.8e Pinto BUT - with the new 1.19-7 GC ala JYA, it's fast - right? I thought about doing the garbaging collection in the STARTOFF var, > and setting the TOFF var to something like 15 seconds (somebody said > in a previous post that it's better/faster if the GC is done often). Nothing wrong about that, it will work just fine. > However, you may want to put a longer delay. > For example, if you're browsing the CATALOG, where normally no garbage will > occur, with your system it will. And as you have over 1000 elements on the > stack at that time, it will be awfully slow > To all those who prefer UserRPL: << MEM DROP > I thought about doing the garbaging collection in the STARTOFF var, > and setting the TOFF var to something like 15 seconds (somebody said > in a previous post that it's better/faster if the GC is done often). > Despite the fact that my calc won't auto-off again, is there anything > wrong about doing this? I mean, could a GC inside a program mess with > something? my STARTOFF var: > :: > GARBAGE > ; > @ Andr.8e Pinto I always use the usr mode on my hp49g. The problem is that when the usr mode is on I can't use the HIST key to get i.e something from the stack when I am editing an equation im EQW(Equation writer). But as soon as a set the usr mode off I can use the key HIST. I have the same problem when I am in PRG mode(i.e I edit a list) and I want to use the key HIST to call the echo command. I don't no what this problem depend on. Dima. 41. DELKEYS > I always use the usr mode on my hp49g. The problem is that when the > usr mode is on I can't use the HIST key to get i.e something from the > stack when I am editing an equation im EQW(Equation writer). > But as soon as a set the usr mode off I can use the key HIST. I have the same problem when I am in PRG mode(i.e I edit a list) and I > want to use the key HIST to call the echo command. I don't no what this problem depend on. > Dima. > 41. DELKEYS > I always use the usr mode on my hp49g. The problem is that when the > usr mode is on I can't use the HIST key to get i.e something from the > stack when I am editing an equation im EQW(Equation writer). > But as soon as a set the usr mode off I can use the key HIST. I have the same problem when I am in PRG mode(i.e I edit a list) and I > want to use the key HIST to call the echo command. I don't no what this problem depend on. > Dima. Salut VNP, It's working perfect now. I have propabily forgot that a set this key. I was looking for a solution since more than 4 weeks. english) Can anyone tell me the command that I can use to decompose a two dimensional array into its individual columns. I have been using the ->COL in user RPL but I need the System RPL command also. Jeff --- Checked by AVG anti-virus system (http://www.grisoft.com). FPTR 3 67 > Can anyone tell me the command that I can use to decompose a two dimensional > array into its individual columns. I have been using the ->COL in user RPL > but I need the System RPL command also. > Jeff > --- > Checked by AVG anti-virus system (http://www.grisoft.com). With Nick posting his marathons, I decided that I could be educational as well. So I will be a copy cat and post Calculus teaching aids with the 49 and TI89, with the focus primarily on the 49. I hope this may be of some use to students in Calculus who may be stuck or need help with its complicated areas of understanding. Aaron Math: It's all relative. > With Nick posting his marathons, I decided that I could be educational as > well. So I will be a copy cat and post Calculus teaching aids with the 49 > and TI89, with the focus primarily on the 49. I hope this may be of some > use to students in Calculus who may be stuck or need help with its > complicated areas of understanding. Aaron Math: It's all relative. teaching aids. Is there any way to turn off the softkey menu so that the editor can have the full screen? Flag -96 is supposed to do this, but the flag docs from hpcalc warn of *dire* consequences if you use it. In the interest of science and the members of comp.sys.hp48, I made out my will, sent all the children out of the house (funny, I don't Nothing happened. > Is there any way to turn off the softkey menu so that the editor can > have the full screen? Flag -96 is supposed to do this, but the flag > docs from hpcalc warn of *dire* consequences if you use it. In the interest of science and the members of comp.sys.hp48, I made > out my will, sent all the children out of the house (funny, I don't Nothing happened. > Was that experimentally implemented feature perhaps fully removed from the current ROM? Anyway, congratulations on your survival. But don't take that too far in future..;-) The first of teaching aids for Calculus with the HP-49G and the TI-89. This topic will cover the Newton-Raphson recursive algorithm, commonly known as Newton's Method. Given the fact that we alredy know how to calculate derivatives and find the equations of tangent lines to curves at a given point, we will move on. To set the stage for a problem, suppose a used car dealer offers to sell you a car for $18,000 or for payments of $375 per month for five years. You would like to know what monthly interest rate the dealer is, in effect, charging you. To find the answer, you have to solve the equation (for our time here we will not discuss how we come up with the equation. Accept it right now for no better reason than authority): 48x(1+x)^60 - (1+x)^60 + 1 = 0 How would you approach solving it? (Note for a quadratic ax^2 + bx +c = 0, there is a well known formula to find the roots called the quadratic equation, 3rd and 4th degree equations get much more complicated and there are formulas to find the roots there, but if f(x) is a polynomial of degree 5 or higher, there is no such formula to find exact roots.) We could graph the function in our HP-49 or TI-89, set the viewing rectangle to x->{0,.012} y->{-.05,.15}, and then use the trace function to approximate the root between .007 and .008. Zooming in repeatedly, we could find correct to nine decimal places that the root is .007628603. But this is tiresome, redundant, and takes a great deal of time. We could use the Solve( ) command in our calculators to find the approx solution as well. But how does the calulator find the root? They use a variety of methods, but the most commonly used method is Newton's Method. Now what is Newton's Method? Lets discuss it detail: Suppose you have a curve that has a root R and suppose R is not known. To find R, we take a known value close to R and call it x1. Then we locate the y-value on the curve so that we have a point (x1, f(x1)). Then calculate the tangent line at that point and sketch it such that the tangent line crosses the x axis. That root where the tangent line crossed we will call x2. Then find the y-value of x2 and repeat the process. What you will find is in effect x2, x3, etc will get closer and closer to your R root (there are cases where this will fail, we will discuss these later). In fact, you only need to find about x5 or x6 to be correct to 6-8 decimal places! To find a formula for x2 in terms of x1, we use the fact that the slope of L is f'9x10, so its equation is: y - f(x1) = f'(x1)*(x-x1); where f'(x1) is the derivative of f(x1). Since the x-intercept of L is x2, we set y=0 and obtain; 0 - f(x1) = f'(x1)*(x2-x1). If f'(x1) != (does not equal) 0, we can solve this equation for x2: x2 = x1 - f(x1) / f'(x1) We use x2 as a second approximation to R: x3 = x2 - f(x2) / f'(x2) If we keep repeating this process, we obtain a sequence of approximations x1,x2,x3,x4,....... In ral, if the nth approximation is xn and f'(xn) != 0, then the next approximation is given by: xn+1 = xn - f(xn) / f'(xn). If the numbers xn become closer and closer to R as n becomes large, then we say that the sequence converges to R and we write: lim xn = R n->oo Although the sequence fo successive approximations converges to the desired root for some functions, in other circumstances the sequence may not converge. This is likely to be the case when f'(x1) is close to 0. It might even happen that an approximation falls outside the domain of f. THEN NEWTONS METHOD FAILS AND A BETTER INITIAL APPROXIMATION X1 SHOULD BE CHOSEN. Now how would you use this with the HP-49 or the TI-89? Well, each calculator goes about it differently but the idea is the same. Suppose we want to find the root of x^3 + x + 1 = 0. Let's make our first guess (x1) be -1. f'(x) = 3x^2 + 1, so our equation would be: (-1) - ((-1)^3 + (-1) + 1) / (3(-1)^2 + 1). Which yields -.75. Putting .75 in for x2 and re-evaluating gives us-.686046511628. Put our answer now in for x3 and evaluate again, and we get -.682339582597. One more time yields -.682327803947, and a last evaluation gives us -.682327803828. (Note: Notice how on our 2nd and 3rd evaluations .68 is repeated, and on our 3rd and 4th .6823 is repeated and on our 4th and 5th .682327803 is repeated? Newton brought to light something interesting when coming up with his recursive formula. For each evaluation after x2, your accuracy will double. Notice we have two decimal places of accuracy by our 3rd evaluation, 4 by our fourth, and 9 by our fifth. Newton's Method is a GREAT way to get accurate in a hurry. Chances are by our 6th evaluation, we would be accurate to 18 decimal places!) Now those of you with the HP-49, you can program it so each time you hit enter, your answer will be displayed. To program the algorithm, do the follwing (assuming you are in RPN mode): Place your first equation ( f(x) ) on the stack. Press alpha Y, then STO. Now put the derivative of your first equation ( f'(x) ) on the stack. Press alpha Z then STO. Press your first initial guess on the stack (in our previous example, it would be -1), press alpha X then STO. Now for the program. Key in the following, then press enter to place it on the stack: << X Y Z / - ->NUM { X } PURGE X STO X >> Now that it is on the stack, press alpha twice, type NEWT, the STO. If you press the VAR button you will notice your variables X, Y, Z, and NEWT above their respective soft keys. Now every time your press NEWT, you will get a numerical value closer and closer to your root. On the TI-89, the idea is the same. Press the gree diamond then f1. This brings you to the y= screen. Type your first equation in y1, and your second equation in y2. Then press the home button. For your program here, press your first inital guess (ours was -1) the press STO-> , press X, then ENTER. Here you assigned a value to x, Then in this sequence, press the following: X - Y1(X) / Y2(X) STO-> X ENTER Each time you press ENTER, you will get closer and closer to the root you are seeking. I know this was a lengthy post, so your comments are appreciated. Any -Aaron > command in our calculators to find the approx solution as well. But how > does the calulator find the root? They use a variety of methods, but the > most commonly used method is Newton's Method. PowerPlot uses this method to find roots. It can be done reasonably fast with a relatively high degree of accuracy, so I thought it was an optimal choice, especially since the cursor could be used for the initial guess. If you download the docs for powerplot, you'll find a graphical illustration of Newton's method. Aaron > PowerPlot uses this method to find roots. How do you bracket the root? This is a much more interesting question - this'll usually use up 80% of the total root finding execution time. Then 18% is used on deciding if to stop or continue searching inside the (probably might-be) bracket. I guess 2% is used for actually finding the root - the easy part. :: CK1 ID CONV X TrueTrue 3PICK DUP % .01 %+SWAP 6ROLL 6ROLL $ ERROR: BAD GUESS 7UNROLL 0 8UNROLL 9 UNROLL TRUE 9 NDUPN DOBIND PX EQU ERRSET COMPEVAL ERRTRAP :: xCLEAR BG DISPROW1 RSKIP ; :: CX BEGIN CX EQU ERRSET COMPEVAL ERRTRAP :: xCLEAR BG DISPROW1 TRUE RSKIP ; :: DUP PY %- DUP %ABS % .00000000001 %> ITE :: CX PX %- %/ CY SWAP %/ CX SWAP %- CX CY FALSE ; DROPTRUE ; I #1+ I 50 #= ITE :: IX TRUE ; FALSE OR UNTIL ; ABND ; PowerPlot uses this method to find roots. How do you bracket the root? This is a much more interesting question - > this'll usually use up 80% of the total root finding execution time. Then > 18% is used on deciding if to stop or continue searching inside the > (probably might-be) bracket. I guess 2% is used for actually finding the > root - the easy part. > rien compris Mille gracie for this. Keep it up! The club is growing. ---snipped rest--- I don't know if you care, since your post was concerned with the graphically the process of iterating to find the root. You give it a starting value and it draws the tangent down to the x axis then back up to the fn, then... etc. It shows clearly how N-R method can be unstable for some starting points where f'(x) is near zero. Look on the Maths Aplets page -> Functions & Calculus section of http://www.hphomeview.com > The first of teaching aids for Calculus with the HP-49G and the TI-89. This > topic will cover the Newton-Raphson recursive algorithm, commonly known as > Newton's Method. Given the fact that we alredy know how to calculate > derivatives and find the equations of tangent lines to curves at a given > point, we will move on. To set the stage for a problem, suppose a used car > dealer offers to sell you a car for $18,000 or for payments of $375 per > month for five years. You would like to know what monthly interest rate the > dealer is, in effect, charging you. To find the answer, you have to solve > the equation (for our time here we will not discuss how we come up with the > equation. Accept it right now for no better reason than authority): 48x(1+x)^60 - (1+x)^60 + 1 = 0 How would you approach solving it? (Note for a quadratic ax^2 + bx +c = 0, > there is a well known formula to find the roots called the quadratic > equation, 3rd and 4th degree equations get much more complicated and there > are formulas to find the roots there, but if f(x) is a polynomial of degree > 5 or higher, there is no such formula to find exact roots.) We could graph > the function in our HP-49 or TI-89, set the viewing rectangle to x->{0,.012} > y->{-.05,.15}, and then use the trace function to approximate the root > between .007 and .008. Zooming in repeatedly, we could find correct to nine > decimal places that the root is .007628603. But this is tiresome, > redundant, and takes a great deal of time. We could use the Solve( ) > command in our calculators to find the approx solution as well. But how > does the calulator find the root? They use a variety of methods, but the > most commonly used method is Newton's Method. Now what is Newton's Method? > Lets discuss it detail: Suppose you have a curve that has a root R and suppose R is not known. To > find R, we take a known value close to R and call it x1. Then we locate the > y-value on the curve so that we have a point (x1, f(x1)). Then calculate > the tangent line at that point and sketch it such that the tangent line > crosses the x axis. That root where the tangent line crossed we will call > x2. Then find the y-value of x2 and repeat the process. What you will find > is in effect x2, x3, etc will get closer and closer to your R root (there > are cases where this will fail, we will discuss these later). In fact, you > only need to find about x5 or x6 to be correct to 6-8 decimal places! To > find a formula for x2 in terms of x1, we use the fact that the slope of L is > f'9x10, so its equation is: y - f(x1) = f'(x1)*(x-x1); where f'(x1) is the derivative of f(x1). Since the x-intercept of L is x2, we set y=0 and obtain; 0 - f(x1) = f'(x1)*(x2-x1). If f'(x1) != (does not equal) 0, we can solve this equation for x2: x2 = x1 - f(x1) / f'(x1) We use x2 as a second approximation to R: x3 = x2 - f(x2) / f'(x2) If we keep repeating this process, we obtain a sequence of approximations > x1,x2,x3,x4,....... In ral, if the nth approximation is xn and f'(xn) > != 0, then the next approximation is given by: xn+1 = xn - f(xn) / f'(xn). If the numbers xn become closer and closer to R as n becomes large, then we > say that the sequence converges to R and we write: lim xn = R > n->oo Although the sequence fo successive approximations converges to the desired > root for some functions, in other circumstances the sequence may not > converge. This is likely to be the case when f'(x1) is close to 0. It > might even happen that an approximation falls outside the domain of f. THEN > NEWTONS METHOD FAILS AND A BETTER INITIAL APPROXIMATION X1 SHOULD BE CHOSEN. Now how would you use this with the HP-49 or the TI-89? Well, each > calculator goes about it differently but the idea is the same. Suppose we > want to find the root of x^3 + x + 1 = 0. Let's make our first guess (x1) > be -1. f'(x) = 3x^2 + 1, so our equation would be: (-1) - ((-1)^3 + (-1) + 1) / (3(-1)^2 + 1). Which yields -.75. Putting .75 in for x2 and re-evaluating gives > us-.686046511628. Put our answer now in for x3 and evaluate again, and we > get -.682339582597. One more time yields -.682327803947, and a last > evaluation gives us -.682327803828. (Note: Notice how on our 2nd and 3rd > evaluations .68 is repeated, and on our 3rd and 4th .6823 is repeated and on > our 4th and 5th .682327803 is repeated? Newton brought to light something > interesting when coming up with his recursive formula. For each evaluation > after x2, your accuracy will double. Notice we have two decimal places of > accuracy by our 3rd evaluation, 4 by our fourth, and 9 by our fifth. > Newton's Method is a GREAT way to get accurate in a hurry. Chances are by > our 6th evaluation, we would be accurate to 18 decimal places!) Now those of you with the HP-49, you can program it so each time you hit > enter, your answer will be displayed. To program the algorithm, do the > follwing (assuming you are in RPN mode): Place your first equation ( f(x) ) > on the stack. Press alpha Y, then STO. Now put the derivative of your > first equation ( f'(x) ) on the stack. Press alpha Z then STO. Press your > first initial guess on the stack (in our previous example, it would be -1), > press alpha X then STO. Now for the program. Key in the following, then > press enter to place it on the stack: << X Y Z / - ->NUM { X } PURGE X STO X Now that it is on the stack, press alpha twice, type NEWT, the STO. If you > press the VAR button you will notice your variables X, Y, Z, and NEWT above > their respective soft keys. Now every time your press NEWT, you will get a > numerical value closer and closer to your root. On the TI-89, the idea is > the same. Press the gree diamond then f1. This brings you to the y= > screen. Type your first equation in y1, and your second equation in y2. > Then press the home button. For your program here, press your first inital > guess (ours was -1) the press STO-> , press X, then ENTER. Here you > assigned a value to x, Then in this sequence, press the following: X - Y1(X) / Y2(X) STO-> X ENTER Each time you press ENTER, you will get closer and closer to the root you > are seeking. I know this was a lengthy post, so your comments are appreciated. Any > -Aaron > Is someone actually archiving these Marathons and teachings aids? I can see that as beeing of huge value to market HP calculators against TI. > I don't know if you care, since your post was concerned with the > graphically the process of iterating to find the root. You give it a > starting value and it draws the tangent down to the x axis then back up > to the fn, then... etc. It shows clearly how N-R method can be unstable > for some starting points where f'(x) is near zero. Look on the Maths > Aplets page -> Functions & Calculus section of http://www.hphomeview.com The first of teaching aids for Calculus with the HP-49G and the TI-89. This > topic will cover the Newton-Raphson recursive algorithm, commonly known as > Newton's Method. Given the fact that we alredy know how to calculate > derivatives and find the equations of tangent lines to curves at a given > point, we will move on. To set the stage for a problem, suppose a used car > dealer offers to sell you a car for $18,000 or for payments of $375 per > month for five years. You would like to know what monthly interest rate the > dealer is, in effect, charging you. To find the answer, you have to solve > the equation (for our time here we will not discuss how we come up with the > equation. Accept it right now for no better reason than authority): 48x(1+x)^60 - (1+x)^60 + 1 = 0 How would you approach solving it? (Note for a quadratic ax^2 + bx +c = 0, > there is a well known formula to find the roots called the quadratic > equation, 3rd and 4th degree equations get much more complicated and there > are formulas to find the roots there, but if f(x) is a polynomial of degree > 5 or higher, there is no such formula to find exact roots.) We could gr aph > the function in our HP-49 or TI-89, set the viewing rectangle to x->{0,.012} > y->{-.05,.15}, and then use the trace function to approximate the root > between .007 and .008. Zooming in repeatedly, we could find correct to nine > decimal places that the root is .007628603. But this is tiresome, > redundant, and takes a great deal of time. We could use the Solve( ) > command in our calculators to find the approx solution as well. But how > does the calulator find the root? They use a variety of methods, but the > most commonly used method is Newton's Method. Now what is Newton's Method? > Lets discuss it detail: Suppose you have a curve that has a root R and suppose R is not known. To > find R, we take a known value close to R and call it x1. Then we locate the > y-value on the curve so that we have a point (x1, f(x1)). Then calculate > the tangent line at that point and sketch it such that the tangent line > crosses the x axis. That root where the tangent line crossed we will call > x2. Then find the y-value of x2 and repeat the process. What you will find > is in effect x2, x3, etc will get closer and closer to your R root (there > are cases where this will fail, we will discuss these later). In fact, you > only need to find about x5 or x6 to be correct to 6-8 decimal places! To > find a formula for x2 in terms of x1, we use the fact that the slope of L is > f'9x10, so its equation is: y - f(x1) = f'(x1)*(x-x1); where f'(x1) is the derivative of f(x1). Since the x-intercept of L is x2, we set y=0 and obtain; 0 - f(x1) = f'(x1)*(x2-x1). If f'(x1) != (does not equal) 0, we can solve this equation for x2: x2 = x1 - f(x1) / f'(x1) We use x2 as a second approximation to R: x3 = x2 - f(x2) / f'(x2) If we keep repeating this process, we obtain a sequence of approximations > x1,x2,x3,x4,....... In ral, if the nth approximation is xn and f'(xn) > != 0, then the next approximation is given by: xn+1 = xn - f(xn) / f'(xn). If the numbers xn become closer and closer to R as n becomes large, then we > say that the sequence converges to R and we write: lim xn = R > n->oo Although the sequence fo successive approximations converges to the desired > root for some functions, in other circumstances the sequence may not > converge. This is likely to be the case when f'(x1) is close to 0. It > might even happen that an approximation falls outside the domain of f. THEN > NEWTONS METHOD FAILS AND A BETTER INITIAL APPROXIMATION X1 SHOULD BE CHOSEN. Now how would you use this with the HP-49 or the TI-89? Well, each > calculator goes about it differently but the idea is the same. Suppose we > want to find the root of x^3 + x + 1 = 0. Let's make our first guess (x1) > be -1. f'(x) = 3x^2 + 1, so our equation would be: (-1) - ((-1)^3 + (-1) + 1) / (3(-1)^2 + 1). Which yields -.75. Putting .75 in for x2 and re-evaluating gives > us-.686046511628. Put our answer now in for x3 and evaluate again, and we > get -.682339582597. One more time yields -.682327803947, and a last > evaluation gives us -.682327803828. (Note: Notice how on our 2nd and 3rd > evaluations .68 is repeated, and on our 3rd and 4th .6823 is repeated and on > our 4th and 5th .682327803 is repeated? Newton brought to light something > interesting when coming up with his recursive formula. For each evaluation > after x2, your accuracy will double. Notice we have two decimal places of > accuracy by our 3rd evaluation, 4 by our fourth, and 9 by our fifth. > Newton's Method is a GREAT way to get accurate in a hurry. Chances are by > our 6th evaluation, we would be accurate to 18 decimal places!) Now those of you with the HP-49, you can program it so each time you hit > enter, your answer will be displayed. To program the algorithm, do the > follwing (assuming you are in RPN mode): Place your first equation f(x) ) > on the stack. Press alpha Y, then STO. Now put the derivative of your > first equation ( f'(x) ) on the stack. Press alpha Z then STO. Press your > first initial guess on the stack (in our previous example, it would be -1), > press alpha X then STO. Now for the program. Key in the following, then > press enter to place it on the stack: << X Y Z / - ->NUM { X } PURGE X STO X Now that it is on the stack, press alpha twice, type NEWT, the STO. If you > press the VAR button you will notice your variables X, Y, Z, and NEWT above > their respective soft keys. Now every time your press NEWT, you will get a > numerical value closer and closer to your root. On the TI-89, the idea is > the same. Press the gree diamond then f1. This brings you to the y= > screen. Type your first equation in y1, and your second equation in y2. > Then press the home button. For your program here, press your first inital > guess (ours was -1) the press STO-> , press X, then ENTER. Here you > assigned a value to x, Then in this sequence, press the following: X - Y1(X) / Y2(X) STO-> X ENTER Each time you press ENTER, you will get closer and closer to the root you > are seeking. I know this was a lengthy post, so your comments are appreciated. Any > -Aaron > Is someone actually archiving these Marathons and teaching aids? > I can see these as beeing of huge value > to market HP calculators against TI. Is HP any longer producing calculators which can use these Marathons and teaching aids? Well, that's good news! . > I'll have to look for OT48 - OT49 is great. I'd like to take some > bytes to thank Wolfgang for his wonderful programs. They really bring > the HP49 to life. STARTUP of OT48 - called WARMUP - interfers with the that Metakernel has a STARTUP already. Hence I'll revise the $CONFIG program of OT48 so that OT48 can be used by everybody, those who have got Metakernel and those who don't. To this end, I need a small (at most 10 bytes) TRUE/FALSE test on the 48 telling whether the operation system is the I ask the HP48-fans to tell me about such a test. PS. OT48 is not a HACK-lib but written for normal user. It is small but has very fast Order, Purge and Rename commands which are huge programs in the 48 HACK libs. But it has many other tools as well, in particular the LMN command which allows recusization of the builtin menus. I repeat a request from yesterday on which I didn't get an answer. > Hence I'll revise the $CONFIG program of OT48 so that > OT48 can be used by everybody, those who have got > Metakernel and those who don't. > To this end, I need a small (at most 10 bytes) TRUE/FALSE > test on the 48 telling whether the operation system is the > original one or whether it is (any version of) Metakernel. > Since I never loaded Metakernel ... I ask the HP48-fans > to tell me about such a test. > need a small TRUE/FALSE test on whether Metakernel [is loaded in 48] How about a ROMPTR@ on any command from an MK library? . > How about a ROMPTR@ on any command from an MK library? 20.5 bytes, a bit much, but ... So, is there any Metakernel rompointer which doesn't affect the stack, please tell me. salut je recherche des programme de genie civil > salut je recherche des programme de genie civil Salut ami francophone, Si tu cherches des programmes vas fouiner du c.99t.8e de www.hpcalc.org Et la prochaine fois pose ta question en anglais (meme mauvais), c'est mieux vu sur ce newsgroup, et pr.8ecise la calculatrice que tu utilises :) A+ M.L. I have an old hp-48g and it's been a good friend for a while. It was made in Singapore. I'm a hp fan and I have a few items of old hp test equipment and always admired their build quality (some of their old oscilloscopes are works of art!) I have been thinking about buying a hp-49g... but, I've been reading (horrified) the posts about the build quality of the latest hp-49g's. It seems that hp are going down the Sinclair route: make it as cheap as poss, and hope they dont notice! That guy had some great product concepts, but the realisation was always a disaster. Where is he now? (rhetorical question) Anyhow, what do I need to look for to get a good hp-49g? (e.g. serial number ranges / place of manufacture) John hi while playing with the <-LIB->, the LIBSp command returns a list of %LID with the instaled libraries, I see those in my 48 GX rev R. So anybody knows WHAT are they for? apart of lib 2, 171 and 1792 0, 1, 2(aka 48S CMD set), 3, 5, 6, 10, 11, 12, 13, 25, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171(aka 48G CMD set),176, 177, 178, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 224, 225, 226, 227, 228, 230, 231, 232, 234, 240, 241 and 1792(aka Prog Struct CMD) It's not only calculators that are going out of production: http://story.news.yahoo.com/news?tmpl=story&u=/nm/20021101/wl_nm/science_pla nts_dc . i have dedicated hours towards finding this ram so i can put more games on my 48g but to no avail.. is there anywhere i can get 128k smd for a reasonable price? im in the process of trying to get a sample from marshall but i doubt it will work! ps i have looked at every upgrade website and the ram they use isn't available anywhere anymore :( any help is appreciated -nate For some reason, my calculator is beeping at me whenever I play either hapaman or android (the oonly 2 games on the calc). If I play a game, everything works OF for maybe a minute or 2. Then, it beeps with each keypress. Whilst beeping the calc stops. It's kinda like when your PC crashes and the keyboard buffer is full. Both games were living in port 2. I moved them with the filer to port 0 and the problem persists. So far, no irratiating beeping occurs anywhere else... On another note, my first HP49 died (never turned on). The replacement was a crappy indonesion one. The keys and mirror effect I can live with, the serial port buffer problem isn't effecting me so far (yes, it is that old), but the dust under the screen cover is driving me nuts... Does anyone know how to get the stuff out from under the screen cover? If I ever win 10 million bucks, I'm gonna hire the ACO people to rewrite the ROM of a TI calc - or maybe shrink the saturn CPU to .13 micron then pump the clock speed up - My only other pet hate is how slow the thing is at times. Otherwise it's a great calc. Al www.alborowski.tk > it is that old), but the dust under the screen cover is driving me > nuts... Does anyone know how to get the stuff out from under the > screen cover? OK, this is not going to be very difficult. First, you can get rid of the plastic screen cover. Just shove in the RS232 port a straightened paper clip in an oblique direction that passes it by and pushes the plastic screen cover up. The cover is held firm by glue at two points. Just be steady with the force and it should give in. I had mine taken out like this and I use it on and off (yes, it slides back in and stays there) depending on the circumstance. Second, you can try blow in from the RS232 with a relatively high pressure pump. Just blowing with your mouth won't do. I can quarantee you the first case though. > micron then pump the clock speed up - My only other pet hate is how > slow the thing is at times. Otherwise it's a great calc. Change the ROM to 1.19.6, use only RPN mode with RRN notation (not algebraics), don't use the EVAL command unless you have to, use floating point numbers not integers (for example 3.0 not 3) and in graphing select a wise resolution or ploing step. take care !Demeter! There are several examples in the 49 operating system being not or not completely backward compatible with some 48 applications. Mostly, this has little effect on UsrRPL prgrams. One should clearly distuingish non-compatibility from improvement. E.g., revising UPDIR or the speed and functionality of some browsers cannot be classified as backward incompatibility. I'll restrict the discussion to certain problems with the SysRPL command REPEATER, mainly used for scrolling the cursor inside edit mode or in various applications, e.g., in the CHARS browser. Since this command is not treated in Progr. in SysRPL by CD & EK, I'll analyse it a bit closer. The 48-REPEATER program looks as follows (47.5 bytes): :: 'R'R (Take next 2 objects from runstream) DUP (and eval the second one; the first) EVAL (one must be the bint code of a key.) OVER (After doing so ask whether the key REPKEY? (is still pressed. If not,) NOTcase2DROP (rearrange he stack.) VERYSLOW (But if, then run slowly into) BEGIN (a loop which will end only if) 2DUPSWAP (the key is released) REPKEY? WHILE :: EVAL (Eval the 2nd object) SLOW ; REPEAT 3DROP ; This has been completely reprogrammed for the 49. It is much faster (and much longer) which is very useful for a fast scrolling of the cursor in an edited text or in the interactive stack. But it is not at all helpful in the CHARS browser or for cursor movement in the PICTURE environment when drawing something by hand. It seems to be fairly obvious that the HP48/49 need both, a slow and a fast REPEATER. Everybody who draws a complex animation picture by hand will quickly realize that slowyness is more adequate than speed here. IMHO, the 49-REPEATER should have been give a new name. By the way, the above program is an example of a certain lazyness of the Corvallis team regarding full-power use of SysRPL. Here a reprogrammation: :: 'R'R 2DUP EVAL REPKEY? NOTcase2DROP VERYSLOW BEGIN SLOW 2DUP REPEATKEY? NOT_UNTIL 2DROP ; 37.5 bytes, 10 bytes saved. Call the last program REP (do not run it by itself!!!). Then store the following program in 'Hallo', say, on F1. It should have the first position in VARS. :: ID REP ONE :: HALLO DISPROW1 ; ; Precisely as long you press on Hallo, the HALLO is displayed. Hallo first calls the runstream objects ONE and the progam :: HALLO DISPROW1 ; to the stack and then repeats its evaluation as long as the key F1 is pressed. This kind of using REPEATER outside a closed environement is perhaps of interest to some of you. WR> :: WR> 'R'R (Take next 2 objects from runstream) WR> DUP (and eval the second one; the first) WR> EVAL (one must be the bint code of a key.) WR> OVER (After doing so ask whether the key WR> REPKEY? (is still pressed. If not,) WR> NOTcase2DROP (rearrange he stack.) WR> VERYSLOW (But if, then run slowly into) WR> BEGIN (a loop which will end only if) WR> 2DUPSWAP (the key is released) WR> REPKEY? WR> WHILE WR> :: WR> EVAL (Eval the 2nd object) WR> SLOW WR> ; WR> REPEAT WR> 3DROP WR> ; The above program seems to be still available on the HP49G under the name REPEATERCH. - Carsten