A45 Don't understand what all of this is. Part of it is in another file and says it is the helponly macro, but I'm not sure what it means or what the other stuff is. I know that does. I've seen it work fine many times. . . ;-) I've tried replacing that code with new code, compiling a whole new one completely separate, and even tried talking to it really nice in hopes it ==== work. real is a constant. it's BINT1 if you prefer. It just tells CK&Dispatch to run your program :: %2 %* ; only if the argument is a real. With the bad things. I entered how You get a bad argument type because your function doesn't get a real as an argument. So I don't know what you're doing wrongly here. The best way would be if you sent me your source code. But I'm leaving for one month, and won't have access to a PC during that time, you will have to wait says it stuff If you have a close look, all the bits are zero: so this is equivalent of doing: ASSEMBLE CON(3) 0 RPL hasFORM means I don't know hasINTG means that the function specifies its own procedure for symbolic integration hasWHERE means that the function has its own handler when called by the command WHERE hasVUNS means that depending if you're using the function in an algebraic on have very little function like this: XROOT is one, DER is another (they don't take the same kind of argument, depending if they are called within a symbolic or from the stack hasDER means the function has it's own derivative handler hasINV means the function as a special handler when inverted hasCOLCT means the function as its special handler when called with COLCT hasEXPND same as above but with EXPAND hasHELP means the functions define its own rules when used withing the HP48 Equation Writer hasPDATA means the function will be compiled following some new rules. If you define any of these bits, you will have to declare some extra fields which are extremely complicated and in fact, we removed most of these functions when we did the HP49. Everything related to symbolic manipulations have been removed as the CAS use a different mechanism now. As of today, only PDATA and VUNS are in used in the HP49 and HP39/49 Actually, I've never seen anything using these fields even on the HP48SX or the HP48GX. It was very powerful, but has never been used either at HP or outside. ==== would less I I really don't know what you've done. I've just created a new aplet (based on my empty skeleton) with the following function: ASSEMBLE CON(3) 0 RPL xNAME MYFUNCTION :: CK1&Dispatch ONE :: %2 %* ; ; RPL If I do: MYFUNCTION(2) it works just fine and I get 2. The only thing you have to do from my original skeleton is to attach it to a different library which will contain the code above. Very simple. I will put the example there in a few minutes: http://www.epita.fr/~avenar_j/hp/hp39/FuncAplet.zip that you've installed the HP Tools v3 and that they are available in $PATH) ==== Just played with the updated version, I can tell you that it's great, ==== I revised CHOOSEXT and CHOOSEXT.txt again because it must work perfectly in all UsrRPL programs. The library has been enriched by the command CANCL which can directly put into the additional argument. It may be used by those who like the traditional CANCL/OK at the end. Anyway, the famous CANCL has now become a rompointer. In the standard operating system it's only a flashpointer :-) ==== The routine assumes youhave some expression in X on stack level one. When you execute it it simply makes an equation out of the expression you had on the stack and F(X) eg 'F(X)=blah*X*blah' then it executes the statement DEFINE. DEFINE makes a user rpl function named F out of the equation eg is stored in the variable F located now in your variable menu. If you now place a value for X to be equal to on the stack and press the key ==== ==== Perhaps one should also add, that 'F(X)=blah*X*blah' DEFINE is not the only way to make a user defined function. Programs that are structured in the following way: can be stored in some variable, say F, and used as 'F(arg1,arg2...)'. They are also a kind of user derined functions. Using a program and not an algebraic as the defining procedure has the advantages of being able to use *any* command that the HP knows and not only functions that are allowed in algebraics. (And the disadvantage of not being always perfectly suitable in algebraic expressions.) One problem that arises with such functions is that you cannot use 2: 'F(X)' for pressing = and the DEFINE, because you will get an error when you press = because programs are not allowed in algebraics, and pressing = with these arguments would try to build 'F(X)=<< programm that uses X One way of working around, when you have these arguments on the stack << OVER 2 + ROLLD << 1 argList SIZE FOR I 2 OVER SIZE 1 - SUB + + NEXT 1 OVER SIZE 2 - SUB Store it in DEF2 or something, then put the function name with its arguments on stack level 2 ( something like F(X,Y,Z) ), the defining program on stack level 1 (program that uses X, Y, Z) and let it run. It creates variable F which contains: ==== I'm trying out the new BASIS-function implemented in CAS 1.19-5. Great idea to implement this, I must say. But I want to comment on the result you get from using this function on a mxn matrix with range r. ==== ==== I would suggest, as someone else did, that maybe you have a flag to enable to individual user to select either xroot or exponential display. personally, I don't much care for radicals but some really do and also some teachers want to see the radical, might make things eaiser. BTW: When are we going to see sybl toolz 2? Perhaps with the previous ==== It will be somewhat possible, in the new version of AutoSimp49, to choose ROM v1.19.6, so that won't be necessary to change. some You can keep radicals somewhat, by just doing EVAL. Your suggestions were good, and I'll include such functionality in SymbToolz ==== ==== ==== first, thank you very much for ROM 1.19-6. I«ve a question regarding the language of the calc. I«d like to customize my calc to speak my native (german) language. Browsing through the ROM (1.19-5) I«ve noticed that there are still all strings in $MESSAGE back from the 48SX, like # 1549d (Empty Catalog) or the strings for 'Calculator Modes' of the 48GX in Lib # 185d. The strings for the new masks using IfMain2 of the 49G are in Lib # 7d. I assume the old strings were left for compatibility with the error-numbers even if they are not used by removed aplications anymore or there was no reason/time to remove them or to replace them with nullstrings. So I kindly ask: if I want to translate the strings, can I leave the old strings out as a nullstring (for saving RAM) and only translate the new strings and can you tell me, which strings from $MESSAGE are used by the operating system (which are the old ones, which of the old ones are still used and which are the new ones)? ==== (snip) If aLineB is an address to a subroutine that draws a line using information you have somewhere, you most probably want to use ==== Greetings, ==== Nick Karagiaouroglou a 216crit : First did you that with the new rom version 1.19-6 you can transfert at 19200 baud ??? Very easy simply put #3 at location #40023 and 19200 appear now in the transfert menu!!! Well, this is an example of troll. A non -founded rhumor, or desinformation, ==== ==== ==== and look at the thread 2^2^7+1...) on Google Groups and came up with this post by Bernard Parisse (the author of the CAS; note, Mika [begin quote] Since it seems ISPRIME? returns 0, it should not cause any illusion. And even if ISPRIME? returned 1 it would not be a proof of primality, isprime does only pseudo-primality testing. * Algorithm: * Brent-Pollard, with the assumption that trial * division has been done already. When a small * factor is found SFactor is called to get full * short factorization. Since the factorization can * potentially take a very long time, an execution * time test is used to abort factoring very long * integers (limit is 60s for each composite). * * The factors are sorted at exit. [end quote] I'm not sure if any of this means anything to you, but it seems like a good start. Note that the ALG48 version of ISPRIME? is probably unchanged in the 49G. In any case, if you know SysRPL, you can actually take a look at the source code of ALG48 (available at hpcalc.org) and see exactly what Mika did. Good luck with your research! Hope this helps. --Rahul Hore ==== ==== Well, PTR 1945C is valid for any HP48. And on an HP49G? PTR 3F3DA (version 1.19-5!!) Easily found by nosing into the user command RDM. On the HP49G the system word TYPE detects two more object types: Integer .......................... #2614h Symbolic matrix................... #2686h Therefore, PTR 3F3DA also accepts these bints, in addition to those accepted on the 48. For any other type, the '49 TYPE returns #0 (PTR 4067). Bye. ==== Try these short programs (they point to old 48G softkey menus): and You can make a USER key assignment of any of these. For example, I assigned 74 menu to key 72.2 and 30 menu to 72.3 along with the command STEQ to key 32.1. It's very easy this way to STO an EQ from the stack and start the solver. Also, also recommend Sune Bredahl's SOLVESYS program. GS PS -- soft keys rule! (and so does RPN) ... build EQ's on the stack and ==== Thanx for the tip... This is what I was looking for! -- ==== This message put me back in the mood. Actually, ==== I bought my 49 just about a year ago, but it's manufactured later than yours. ==== Does anyone have an HP-42s for sale? ==== I have only tried the update in the EMU emulation and it gives an Xlib error for some keys reassigned with keyman. eg I had UPDIR assigned to long press of VAR and now this gives error in the EMU after swapping the Rom files. Before I commit to u/g the Rom on the HP49g is there any way of saving the keyboard assignments into the new Rom. Prefer not to have to much grief u/g ==== ==== 1. IMHO, such a device doesn't make much sense. Simply because the builtin RCLKEYS is not very well programmed and extremely slow if more than 25 keys are assigned (I have over 70 keys assigned without disturbing the standard functionality of any key!) It is easier to have a nice program in Port 2 which makes a backup of HOME. This always includes user key assignments. 2. All my tools had been prepared for a ROM update and should run. A problem may arise only with assignments when Keyman.txt wasn't carefully read. As a matter of fact, some standard assignments contain pointers which may change from ROM to ROM (in distinction to the 48). Therefore, I proposed in Keyman.txt since long to replace in user-assignments the SysRPL standard parts by the user keycode, a real rc.pq (r=row, c=column, p=plane, q= 1 or 0 as to whether shift is hold or not). ==== ==== ==== Does anyone know which command to invoke in order to convert an algebraic object into a grob using the minifont and the EQW way of displaying ? ==== Try Flash Pointer ^EQW3GROBmini. ==== ==== ==== Retro-moderation won't work and is unnecessary: Firstly, posts can be cancelled but there's no obligation on other news servers to accept the cancellation. Since, believe it or not, nearly 40% of messages on usenet are actually cancellations (mostly because of multiple cancel bots cancelling the same messages from different servers) some news server operators don't bother to propagate cancellations at all. So there is no guarantee that a message cancelled by a retro-moderator will be cancelled anywhere, let alone everywhere. Secondly, the message will show up and start a flame-war before it can be cancelled. Then before the cancel message can propagate around the news servers (if it does at all) then people will respond and perpetuate the thread. Then, before these can be cancelled in turn, other people will respond and so on ad nauseam. It would be better to moderate in the first place, something that I am against. Joe, in his post, suggests nuking the flame wars, well moderation is indeed the nuclear option. My suggestions would be to: a) be nicer b) use the kill-file capability of your news reader (without succumbing to the urge to tell the rest of the world about it). c) alternatively, use the kill-thread capability of your news reader (if it has one) to just ignore that thread. This is particularly useful for flame wars where a normally sane poster gets irked over one subject and ask if the person concerned is in breach of their usage policy. The onus is then on the ISP to enforce their usage policy. Note that a kill-file need not be permanent. Simply empty it once a month. If the regular miscreants are still posting in a way that upsets or offends then simply add them back in. Finally, something to consider for those responding to rude and abusive posts, either politely or impolitely: While I appreciate that you're doing it with the best of intentions, follow-up posts that quote the unsavoury parts of offensive messages will also swiftly get you into peoples' kill files - if they didn't want to read the original, they certainly don't want someone else to quote it again. The best option is simply to ignore them for being the trolls that they are, and soon they'll either give up or grow up. -- Bruce Horrocks ==== ==== In all the discussion regarding JKH's proposal I missed one IMHO important thing. There is a rule for Usenet that says: Don't feed the troll. If we are all watching this rule, trolls would disappear quickly. Yes, I know, often there is the sorry I could not resist syndrome, which devaluates the rule cited above ;-) ------------------------------------------------------------------------- ==== I am also rather tired of the flaming that has recently been going on in this forum. However, I don't know that the answer is to institute censorship. It seems to me that in this area, as in others, responding by curtailing the general freedoms of all is merely a win for the idiots. I would far rather promote a simpler solution of Coventry: just ignore them. Most of these idiots thrive on the attention that they receive from the legitimate members and delight in provoking an angry response. I have been trying to stay uninvolved in the threads where this is going on and I would urge all of you to do the same. If we all do this then it will not be long before they take their juvenile ravings somewhere else. -- Colin Croft Old mathematicians never die; they just lose some of their functions. ==== HP49 ROM 1.19-5 RISCH not working in algebraic mode. example RISCH(x,x) bad argument type RISCH(x^2,x) bad argument type RISCH(y,y) bad argument type . . . . ==== In the command catalog the on-line help button activates when selecting STOVX or RCLVX even though these new commands doesn't seem ==== These command are very simple. Everybody knows what the commands does, so ==== ==== Really thank's !!! That a minimum !!! Exceptionally: Merci beaucoup Jean Yves, Cyrille, Bernard et tous ceux qui travaillent dans l'ombre. ==== Just finished playing around with 1.19-6, what can I tell you? It's great! Many many many congretulations and thanks. :) Also for the new flags list and the corrections of bugs in the CAS. Also thanks a lot lot lot for the new features of the filer and the editor. The EDIT command that takes you to a new editor is fantastic. :) ==== ==== If I understood you right, you want to put some programs that you have into a library for using them like built-in commands. Grate idea! And ==== Unfortunately I accidentally clicked the button for Post message and the message was sent before it was ready, so here we go again. (Sorry) If I understood you right, you want to put some programs that you have into a library for using them like built-in commands. Great idea! And you know something? You don't need a special program for this. :) The small HP49G has the command CRLIB that lets you do that. Just create a new directory and copy all the programs that you want in it. Then go to that directory and create the following additional variables: '$TITLE' with the title of your library. (For example: Vin-Commands) '$ROMID' with a number that is the ID of the library. (For example: 1000) Be careful not to use any ID that is already used by one of the libraries you have already installed. '$CONFIG' here you can put your configuration procedure, or the number 1. (If you simply put a 1 in this variable then the default configuration procedure will be used.) '$VISIBLE' a list with the names of the programs that should be available as commands when the library is done. (For example: { Prog1 Prog2 Prog3} ) '$HIDDEN' a list with programms which should be eventually hidden from the menu of the library and from the functions catalog. (For example: { Util1 Util2} ) When everything is ready, type CRLIB. The library is created and returned on the stack. Store it in a port, for example 2 STO. Then if you want to have the commands of the lib available from everywhere, go to the home directory. Use the ID that you gave to the library ( variable '$ROMID' ). For example if the ID is 1000, then type 1000 ATTACH. Now if everything went OK, go to the libraries menu. (red-shift, 2). One of the keys of the soft menu shows the title of your library. If you don't see it, press button NXT until you see it. Press the soft menu button of the library and then you see all the commands that you ==== I think part of the default configuration if you set $CONFIG to 0 then the Library automatically attachs to the Home directory on a warm start ON&F3. So your last attach Attach step is not needed. I have Utility Directy into which I dump any usefull programs. All the ==== ==== Well I installed 1.19-6 (latest update) and at least my HP49G returns: 4.20010912 when I use the command VER VERSION HP49-B REVISION #1.19-6 Copyright HP 2001 when I use the command VERSION ==== viestiss212:9phqk9$bfq$1@news.tpi.pl... Yep, but what's the point of activating on-line help, which leads to nothing when either of these commands are selected?