A519 === Subject: Re: OPENFIRE i noticed that all the images are dithered, is this true? i'm finding the same in hpgcc. does this mean the screen isn't really 16 grey shades at all. On Thu, 24 May 2007 01:06:04 +0100, Due.96o de Monte >> can anyone post a link for OPENFIRE, all the download links seem to be >> down, and it seems awfully useful. > > http://fly.srk.fer.hr/~manjo/openfire/ > > This one works for me. > > Daniel > === Subject: Re: OPENFIRE > i noticed that all the images are dithered, is this true? > > i'm finding the same in hpgcc. does this mean the screen isn't really 16 > grey shades > at all. > The LCD is monochrome, the controller generates shades of gray by dithering. Claudio === Subject: Re: OPENFIRE > i noticed that all the images are dithered, is this true? > i'm finding the same in hpgcc. does this mean the screen isn't really 16 > grey shades > at all. > The LCD is monochrome, the controller generates shades of gray by > dithering. > > Claudio Afirmative, LCD is monochrome, LCD controller can display graysale images on monochrome screen by flickering (ie spliting image in to frames with specific duty cycle), dithering is an additional feature of the controller it can be turned on and off. (which i choose to enable it seams hpgcc guys thought the same way :-) Most of sample images on openfire site are reduced to 16 gray levels using error diffusion so maybe what you refere to is actualy noticable error diffusion on images. although monochrome display does display 16 stable graylevels my only whish is if it would be double horizontal and vertical resolution: 262x160 or more standard 320x240 then 16 bit color wouldn't hurt ... and i'm off topic *again* :-) (can't wait to see your latest work) manjo === Subject: Re: How much to have HP repair 49G+ ?? I should have called HP, but thought I would find out what others of you had experienced first. Tom On 24 May 2007 07:02:12 -0700, S. Martin >> In an earlier post, I mentioned that the ENTER key on my 2.5-year-old >> HP 49G+ has broken (still will work if pushed correctly!). Does >> anyone know if HP can repair/replace the keyboard, or does that >> basically mean just getting a whole new calculator? >> >> I expect the latter is true, from what I've read here. I also have an >> HP50G, so all is not lost... >> >> Tom > >Just the other day I had a similar problem with the '1' key on my 49g >+. >I called HP support and although the rep was very nice, there was >nothing >they could do. I had purchased the calculator about 3 years ago (the >warranty >is only good for 1 year). The rep also said that HP does not offer >any repair >on any of there new calculators (the 49g and higher graphing >calculators as >well as the rest of the current line they sell) since they are not >designed to be >opened nor repaired. > >Your only option appears to be replacing it with a new 50g (since the >49g+ is no >longer sold by HP). > >Steve > === Subject: How to Break out of loops On Thu, 24 May 2007 11:22:08 -0500 G.E.: > As for RPL, you can't even break out of a loop. Yuck. Yes you can; START...STEP and FOR...STEP can be exited via a large increment (use ExitAtLOOP in similar SysRPL loops), DO...UNTIL...END and WHILE...REPEAT...END can be exited via the loop test condition (similarly with UNTIL and WHILE in SysRPL), and *any* UserRPL program can be broken out of at any time, using elementary commands that you can create yourself: If you have a program in which you want to be able to issue a BREAK, just invoke that program via the RUN command; when the inner program either completes or issues a BREAK, execution then continues following the RUN command: << Break DOERR >> 'BREAK' STO << IFERR EVAL THEN ERRM Break =/ { ERRN DOERR } IFT END >> 'RUN' STO @ Sample programs using the above: @ This program will display a Break message: @ (if called by another program, it will *not* return): << 123 BREAK 888 >> 'Prg1' STO @ Output is 123 @ Similarly, but no message will appear, and this program @ *can* be called from other programs, *without* aborting: << << 123 BREAK 888 >> RUN >> 'Prg2' STO @ Output is 123 @ This program also continues running (no messages): << 'Prg1' RUN << 456 BREAK 999 >> RUN 789 >> 'Prg3' STO @ Final output of Prg3 is 123 456 789 Note that the RUN command traps only the specific message used by the BREAK command; all other errors cancel the running program unless trapped by your own IFERR. [r->] [OFF] === Subject: Re: HP67/97/41 translator schrieb im Newsbeitrag >> The main problem remains GTO ... You can't translate it in easy way... >> >> ...one of the thing that I most like in (User)RPL is the lacking of >> GOTO, a superflous ... > > You like to feel pain ? There is a name for this disease. > > I prefer powerful languages like : > RPN (has GOTO), > Pascal (has GOTO), > C++ (has GOTO), > or even BASIC (has GOTO). > Is there a scheme here ? > I decide what I want and the language provides the support. > > As for RPL, you can't even break out of a loop. Yuck. > This is NOT correct. Of course you can 'break out' of a loop, if you really want to. JHM shows how to do it in UserRPL, I'll indicate how to do it in SysRPL. Consider the following code snippet: DO :: ..some_code.. ..test_condition.. case ExitAtLOOP ..some_other_code.. ; LOOP If ..test_condition.. returns TRUE, the ExitAtLOOP word will be evaluated. ExitAtLOOP is the same as 'ZEROISTOPSTO', in other words : Loop end has been reached. This is the clean and supported way to terminate a loop at any time. You can also exit a loop using an error condition. You could even exit a loop using return stack manipulating words, but that would indicate a code design problem, not a limitation of the language... Please refer to RPLMAN.DOC for more info on this topic. BTW: As mentioned in my earlier post, even SysRPL has a GOTO ;-) Don't get me wrong: When programming an HP-41, be it RPN or (in most cases) ML, you'll need GO jumps. However, RPL isn't RPN nor BASIC nor Pascal . It's RPL, a combination of FORTH and LISP. To get the most out of your HP-48 based machine, it's best to use the language which is suited best for the platform, and that's RPL, where you simply don't need GO jumps. HTH Raymond === Subject: Re: HP67/97/41 translator Doesn't there exist a library for the HP48 which runs HP41-type programs, essentially interpreting the program listing, and making various correspondences, e.g. an array for the numbered registers, and so forth? One could also actually create a list of program steps to be sequentially evaluated, with some items representing a go to step nnn (or this step +/- nnn), and thus create an effective go to, just as always existed in past calculators which had numbered steps; labels (which could be tags) could also be implemented in similar fashion, if desired. This would proceed more slowly than native operations on the 48/49/50 series, but certainly you can create whatever effect you want to get. [r->] [OFF] === Subject: Re: HP67/97/41 translator Hi John, John H Meyers schrieb im Newsbeitrag > Doesn't there exist a library for the HP48 which > runs HP41-type programs, essentially interpreting > the program listing, and making various correspondences, > e.g. an array for the numbered registers, and so forth? > > One could also actually create a list of program steps > to be sequentially evaluated, with some items > representing a go to step nnn (or this step +/- nnn), > and thus create an effective go to, just as always existed > in past calculators which had numbered steps; > labels (which could be tags) could also be implemented > in similar fashion, if desired. > yes, there exists something like that. It's called Emu41CV and was made by Zengrange for HP. But it's much easier to write programs for the HP-41 'emulator' on the HP-48, as the interpreter/compiler accepts a nearly free formatted source text file. You don't even have to use line numbers! And to bring the RPL/RPN GOTO (or not) topic to kinda top: The original Emu41CV software uses absolute addressing, and absolute RPL jumps in many places to save space while gaining speed. I know of someone who made a total conversion of that absolute addressed code to a totally relocateable code, replacing all RPL GOTO's by suitable RPL or ML constructs;-) In other words, there exists a real GX version of the emulator, which runs in any port at any location:-))) > This would proceed more slowly than native operations > The way Emu41CV handles it isn't necessarily slower. > on the 48/49/50 series, but certainly you can create > whatever effect you want to get. > Yes, you could even create functions to access HP-IL devices, given you have a suitable serial-to-HP-IL converter. Raymond === Subject: Re: HP67/97/41 translator <5bh86iF2skddsU1@mid.individual.net> <5bivrdF2td86pU1@mid.individual.net> > Hi John, > > runs HP41-type programs, essentially interpreting > the program listing, and making various correspondences, > e.g. an array for the numbered registers, and so forth? > > One could also actually create a list of program steps > to be sequentially evaluated, with some items > representing a go to step nnn (or this step +/- nnn), > and thus create an effective go to, just as always existed > in past calculators which had numbered steps; > labels (which could be tags) could also be implemented > in similar fashion, if desired. > > yes, there exists something like that. > It's called Emu41CV and was made by Zengrange for HP. > > But it's much easier to write programs for the HP-41 'emulator' > on the HP-48, as the interpreter/compiler accepts > a nearly free formatted source text file. > You don't even have to use line numbers! > > And to bring the RPL/RPN GOTO (or not) topic to kinda top: > > The original Emu41CV software uses absolute addressing, > and absolute RPL jumps in many places to save space > while gaining speed. > > I know of someone who made a total conversion of that > absolute addressed code to a totally relocateable code, > replacing all RPL GOTO's by suitable RPL or ML constructs;-) > > In other words, there exists a real GX version of the emulator, > which runs in any port at any location:-))) > > This would proceed more slowly than native operations > > The way Emu41CV handles it isn't necessarily slower. > > on the 48/49/50 series, but certainly you can create > whatever effect you want to get. > > Yes, you could even create functions to access HP-IL devices, > given you have a suitable serial-to-HP-IL converter. > > > Raymond Hi John & Raymond. What a couple of teachers! It's really a pleasure to read & learn from you two :-) Giancarlo === Subject: Re: HP67/97/41 translator format=flowed; reply-type=original I think that GOTO is legacy, too. Some very powerful languages don't have GOTO and you don't need it. Obviously If you use oldest (legacy) languages you need GOTO. SysRPL is interesting in how manage code execution and program structures: from what I understand (I'm a beginner in SysRPL programming) it doesn't need GOTO. But this GOTO discussion is more than 30 years old (Dijkstra and Jacopini make nice contribution) and in my previous post I put a smiley ;-) to The idea that I want to communicate is that it is very difficult to translate a program that uses GOTO to a program that uses WHILE, FOR and similar structured statementes. MS === Subject: Re: HP 48GX ON button not working > What are my options? Seems all other buttons are fine! Any repair or > replacement available? > > Probably due to dust accumulation inside the keyboard. > > > If you have skill (and the guts) you can try repairing it yourself:http://www.hpcalc.org/details.php?id=6375 > > A fairly comprehensive guide to opening the calc and repairing keyboard > and screen problems. > > Note: I have not tried to do this myself, and make no claims to the > accuracy of the above YMMV > > Good luck Hey Bob, I sprayed contact cleaner into the sides of the button and it works now (with bats removed) so it looks like dust. I will attempt the opening & cleaning/repair. === Subject: Re: HP 48GX ON button not working > >>What are my options? Seems all other buttons are fine! Any repair or >>replacement available? > > > Probably due to dust accumulation inside the keyboard. > > HP won't be any help: > > If you have skill (and the guts) you can try repairing it yourself: > http://www.hpcalc.org/details.php?id=6375 > > A fairly comprehensive guide to opening the calc and repairing keyboard > and screen problems. > > Note: I have not tried to do this myself, and make no claims to the > accuracy of the above YMMV > > Good luck Is a aging 'artefact' in some HP48G depend of drying and loss sticking in tape holding ribbon cable to keyboard. if you can stay with press sligthly in place between F2,F3 and display, and on-button in same time for start up, you not need open calculator for repair. === Subject: Mathamaticians? Special Program Language eh? Specialization is for insects - (Hienlien) Keystroke, BASIC, or Ignonamy. Learn this. (Non-Proced-bla-structur-bla-advanc-bleeeet-plann-baaaaa-gto is bad always) Keystroke, BASIC, or Ignonamy. === Subject: Crazy 3D processing question... Does anyone know what the 'Approach' is ( i will figure it out from there ) for determining if a polygon is being seen from the front or back...??? This is useful when hiding polygons in a 3D rendering. The input would be ( for a triangle ) ( a pentagon+ would use the first three vertices ) [ x y z ] [ x y z ] [ x y z ] arranged clockwise, looking into the polyhedron and the eyeball point, ( where you're looking from, towards the infinite horizon intersection point...??? ) 5: [ x y z ] 4: [ x y z ] 3: [ x y z ] 2: [ x y z ] eyeball 1: [ x y z ] Where you're looking towards ... eh...??? thanx. ( i used to know this, but i lost it... ! ) === Subject: Re: Crazy 3D processing question... On May 26, 3:08 pm, TranslucentAmoebae > Does anyone know what the 'Approach' is ( i will figure it out from > there ) for determining if a polygon is being seen from the front or > back...??? > This is useful when hiding polygons in a 3D rendering. > The input would be ( for a triangle ) ( a pentagon+ would use the > first three vertices ) > [ x y z ] [ x y z ] [ x y z ] > arranged clockwise, looking into the polyhedron > and the eyeball point, ( where you're looking from, towards the > infinite horizon intersection point...??? ) > 5: [ x y z ] > 4: [ x y z ] > 3: [ x y z ] > 2: [ x y z ] eyeball > 1: [ x y z ] Where you're looking towards > ... eh...??? > thanx. > ( i used to know this, but i lost it... ! ) Given 3 points A, B and C. Calculate the normal vector: N=(B-A)x(C-A) where x represents the cross product The order of the points will affect the direction of your normal. For faster processing, store the normal vector with the points in the face and apply all the rotations to the normal as well to keep your normal vector updated. With this approach, a pentagonal face would need several triangles but only one normal. Then if E is your eye, (E-A).N > 0 the face is visible, otherwise invisible. in the expression above, the dot . represents the dot product Claudio === Subject: Safe string compiler for all HP48/49/50 STRC - Alternative to STR-> for all HP48/49/50 STR-> (DOSTR>) performs both compiling and *evaluating* the result of compilation, so here we provide a safe version, for compile-only needs, such as after an INPUT command: string -> compiled object (always one object returned, never evaluated) Cases which differ from STR-> PURGE -> PURGE (non-executed command) X -> 'X' (always unevaluated) Multiple-object (or no object) cases: ob1 ob2 -> program containing unevaluated objects -> empty program (invisible on stack) If multiple objects are either expected or to be rejected, use { SWAP + } + STRC instead, which results in a list, containing as many objects as the string represents; this can be done even with STR->, although STRC provides a more absolute safety against evaluating objects. STRC is similar to the protection originally provided against executing anything transferred from a computer to a calculator using Kermit; Conn4x may not afford this same protection, and may execute transferred commands, which may also result in transferred ascii files interfering with the transfer software itself, resulting in either wrong stored info or errors within transfer software. The downloadable file below contains comments preceded by @ Both source and binary are provided. You may use the entire file, which tests for calc series, or you may select portions for your specific model, and/or for source vs. binary installation. One should always make a memory backup before installing system software. %%HP: T(3); @ Header for ascii file transfer only @ SysRPL source for STRC :: CK1NOLASTWD CK&DISPATCH1 str :: palparse NOTcase2drop SYNTAXERR DUPTYPECOL? NOT?SEMI { xSILENT' x' } OVER LENCOMP #1- NTHELCOMP NOT?SEMI OVER CARCOMP jEQcase EVAL ; ; ( << >> or 'X' ) @ To compile with on-board MASD+Extable or Jazz: RCLF SIZE 3 > { 64 CHR + -92 SF ASM2 } { ASS } IFTE 'STRC' STO @ Binary installer (no assembly required :) RCLF SIZE 3 > { @ 49/50 series D9D20792628236252133D9D2026FE267 943431622715329A4347A2073883FE98 + 3B21302C230B7650E0E306B65029A432 + C23098050A3D63E8F60B2130B2130 + 64 STWS DUP BYTES DROP #13Bh == #100001h * LIBEVAL } { 10 CHR @ need ASC-> on original 48[S/G] D9D202BA812BF81D0040D9D204A83201 91668F017E126C2A1647A20C94324563 + OVER + 2B21302C230B7650E0E306B650C2A162 + C230980506DC36E8F60B2130B2130F49 + SWAP + D + ASC-> } IFTE 'STRC' STO @ [End] === Subject: Re: Safe string compiler for all HP48/49/50 [Windows binaries] On Sat, 26 May 2007 15:04:04 -0500: > STRC - Alternative to STR-> for all HP48/49/50 Original post: If you store the following text (with boundary lines as the first and last lines) in a file named strc4849.mim and open that using WinZip, you will obtain binary files named strc48 and strc49 -- ready for transfer to calculators of whichever series you have ( 48[S/G] vs. 49/50/etc. ) either via cable or directly on SD card. If you are copying from a Quoted-Printable encoded version of this post, first replace all Equal3D by Equal -----boundary----- UEsDBAoAAgAAAFZ/ujYrcT6YRwAAAEcAAAAGAAAAc3RyYzQ4SFBIUDQ4LVedLSCrGLKP0QAEnS1A iiMQGWb4EOchxqJhdCrASSNUNrISA8IysGcFDj5gawUsGiYsA4lQYM1jjm+wEgMrMQBQSwMECgAC AAAAZH+6Njv7A1ZHAAAARwAAAAYAAABzdHJjNDlIUEhQNDktV50tcCkmKGNSEjOdLSD2LnZJQxMm clEjqTR0KnCDOO+JsxIDwjKwZwUOPmBrBZJKIywDiVCg0zaOb7ASAysxAFBLAQIUAAoAAgAAAFZ/ ujYrcT6YRwAAAEcAAAAGAAAAAAAAAAAAIQAAAAAAAABzdHJjNDhQSwECFAAKAAIAAABkf7o2O/sD VkcAAABHAAAABgAAAAAAAAAAACEAAABrAAAAc3RyYzQ5UEsFBgAAAAACAAIAaAAAANYAAAAAAA== -----boundary----- === Subject: Re: Safe string compiler for all HP48/49/50 [Windows binaries] On Sat, 26 May 2007 17:40:52 -0500: > If you are copying from a Quoted-Printable encoded version > of this post, first replace all Equal3D by Equal It turns out that you also need to re-join split lines, by removing the Equal[newline] which may get inserted; i.e. split lines look like this: StartOfLine................................Equal .....EndOfLine Below is a small program which I actually use on my (emulated) calculator to do this -- just copy original text, paste on calculator stack, run program, copy fixed text from calculator stack. %%HP: T(3); @ Header for file transfer by cable @ Quoted-Printable encoding corrector for email or postings @ (49/50 series only) << 61 CHR -> e << ->STR DUP e 3D + POS { 13 CHR SREPL DROP e 10 CHR + SREPL DROP e 3D + e SREPL DROP } IFT >>> 'KQP' STO @ [End] === Subject: How to put comment on HPUserEdit Hi i just want to comment my code in HPUserEdit i don't know what is the string i must put to reconize as a comment thx === Subject: Re: How to put comment on HPUserEdit On Sat, 26 May 2007 21:14:30 -0500: > I just want to comment my code in HPUserEdit; > what is the string i must put to recognize as a comment. Anything preceded by @ (or between two consecutive @ on the same line) is ignored by the on-board compiler, and thus is a comment. @ within a quoted string is part of the string, however, and is retained. You can thus sprinkle comments throughout source files on your computer, which you can transfer to your calc, but when you display transferred programs on your calc, all comments will have disappeared (and the program will have been reformatted), because the program becomes a pure binary internal file (without comments) when compiled, just as when typed into the on-board editor, and any subsequent display is later generated by de-compiling that binary to re-create brand new readable text, which isn't the original source text, so there is no point trying to type comments on the calculator itself, unless you are editing only a string, then using STR-> on that string to compile the program as a new object. [r->] [OFF] === Subject: Re: How to put comment on HPUserEdit > On Sat, 26 May 2007 21:14:30 -0500: > > I just want to comment my code in HPUserEdit; > what is the string i must put to recognize as a comment. > > Anything preceded by @ > (or between two consecutive @ on the same line) > is ignored by the on-board compiler, > and thus is a comment. > > @ within a quoted string is part of the string, > however, and is retained. > > You can thus sprinkle comments throughout source files > on your computer, which you can transfer to your calc, > but when you display transferred programs on your calc, > all comments will have disappeared (and the program > will have been reformatted), because the program > becomes a pure binary internal file (without comments) > when compiled, just as when typed into the on-board editor, > and any subsequent display is later generated > by de-compiling that binary to re-create brand new readable text, > which isn't the original source text, > so there is no point trying to type comments > on the calculator itself, unless you are editing > only a string, then using STR-> on that string > to compile the program as a new object. > > [r->] [OFF] Thx alot :) === Subject: Re: How to put comment on HPUserEdit At the expense of more memory use, however, plus a slight run-time overhead, one can sprinkle into one's programs: My comments about what I'm doing DROP One can also attach tags to some objects, since commands which do not attach special meaning to tagged arguments generally automatically strip tags during argument processing; e.g. the following executes the system word named TRUE (although SYSEVAL uses only the address part, and takes no interest in what you think its name is :) :TRUE: #3A81h SYSEVAL A SYSEVAL translator package (created for migrating UserRPL programs containing SYSEVAL from HP48 to HP49) took advantage of this to attach the correct name to every argument of SYSEVAL on the HP48, and then to use those names to look up and replace the (generally different) address within the program itself, after transferring the program to an HP49 (this was essentially a program pre-editor, not a run-time operation). Complete SYSEVAL translator package http://www.hpcalc.org/search.php?query=syseval+translator I also wasted memory by posting some of my programs with the tags included, just as documentation, even though I'd mention that they weren't necessary :) [r->] [OFF] === Subject: Re: How to put comment on HPUserEdit The @ character starts a comment which continues to the end of the line or until another @ character. For example: @ comment @ comment @ not a comment @ comment @ not a comment @ comment again This isn't really an HPUserEdit issue -- this is how comments are done in any UserRPL code, whether done on the calculator, with HPUserEdit or any other editor. -wes > Hi i just want to comment my code in HPUserEdit > i don't know what is the string i must put to reconize as a comment > > thx === Subject: Re: Bluetooth and wifi > > I have a idea for using an HP50G to collect data that would really > benefit from doing it wirelessly i.e. by radio over a short range say > <15m. Has anyone heard of a Bluetooth, 802.15.4 or 802.11 module that > could be connected to a HP50G? > > Any assistance would be appreciated > > Dave > > > it is quite easy to do with any Bluetooth serial module readily available in any good electronic web store like digikey You can also purchase Lantronix Serial to Wifi module with a little bit of electronic around and PCB board it is fairly easy to do what you want to do (client side not AP side) === Subject: Ascii Import/Export for SD card and Emulator The question keeps coming up about how to transfer UserRPL programs, from text files on a computer, especially when using an SD card, and the same situation when using an emulator. When source text files are transmitted over a cable, the designed-in file transfer system kicks in, translating special-character representations (backslash codes for 8-bit, non-universal characters) and compiling the text automatically into an actual program, also using a file header to preserve modes affecting the interpretation of the file, as explained in: However, when you put the source text files on an SD card (or drop/paste them onto the emulator stack as strings), any PC text file from an SD card just sits there, as a string on the stack, waiting for translation help, like a lost foreign child in an airport waiting room :) Here is a very simple program to provide that help, on all HP48/49/50 (real or emulated); note that you must first *remove* any %%HP: T()A()F(); header (which indicates calc modes, and isn't part of the program); you can easily do this on the calc itself, using the editor. @ 7-bit ascii string -> calc object << ->STR 3 TRANSIO RCLF SIZE 3 > #2F34Dh #3016Bh IFTE SYSEVAL + STR->> 'IN' STO Here is an equally simple program to do the reverse, i.e. to make a string for posting or to save on computer or SD card, to represent the object on the stack: @ Calc object -> 7-bit ascii string << STD 64 STWS ->STR 3 TRANSIO RCLF SIZE 3 > #2F34Fh #2FEC9h IFTE SYSEVAL >> 'OUT' STO If you are using Linux and don't want CRLF line endings, change the last system addresses to #2F34Eh and #2FEDDh Make a memory backup, of course, before using the above! (the exact binary addresses are very critical) What's lacking in the above simple programs: o Doesn't accept or generate %%HP: T()A()F(); file headers o Unprotected - executes all commands, etc. o Gets Invalid Syntax when used on anything that isn't UserRPL (e.g. SysRPL, or any other kind of text). What's below is a more complete system, including: IN like above, but accepts %%HP: T()A()F(); headers INX like IN, but safer (doesn't execute/evaluate) OUT like above, doesn't create %%HP: T()A()F(); header OUTX like OUT, but includes %%HP: T()A()F(); header The above, in turn, call upon the following: KINV character translation only, for PC -> calc (IN) KVIS character translation only, for calc -> PC (OUT) KHIN function that accepts %%HP: T()A()F(); header KHOUT function that creates %%HP: T()A()F(); header STRC replaces STR-> (doesn't execute/evaluate commands) Special additional function: KQP - Quoted-Printable encoding corrector for email/postings (enables importing Original from over-processed postings); use first, before IN or any other function. STRC and KQP are elaborated in detail at: KHIN & KHOUT are provided below in both pure UserRPL (longer) and a shorter version using unsupported (but probably stable) internal functions invoked via SYSEVAL; STRC is provided both in pure SysRPL (recommended) and UserRPL (less rigorous). How to transfer stuff between computer, emulator, and calc: Transfer from computer (or SD card) to emulator: o Drag stored binary *or* text files to emulator window (or use Load object). o Text that has first been copied into clipboard can be put directly on stack via Paste string/stack Transfer from emulator to computer or to SD card: o Text that is on stack can be copied directly to clipboard using Copy string/stack, and then pasted from clipboard into text files, emails, or postings. o Save object can be used directly to SD card, if the emulated calc is HP50/49/new48 series Transfer from calc to SD card (storing text onto SD card): o The calculator inserts HPHP4x-y before *all* objects that are stored, just as does the emulator's Save object function (which stores objects as *binary* internal files); for string objects, the next five bytes are also not part of the string, and should be deleted when editing on PC. o If you happen to have your emulator running on the PC, you can first drag from SD card or Load object to the emulator, then Copy string/stack from emulator to PC clipboard, then paste clipboard into documents. The entire file below (with @ preceding comments) is downloadable by the original *short* IN program above (just remove the header line first), so don't waste any time typing it manually! Caution: Programs using SYSEVAL could corrupt or wipe out calc memory if entered incorrectly; make memory backups before using any of these programs (including those above). %%HP: T(3); @ Header for ascii file transfer only @ This file is for all HP48/49/50 @ KHIN and KHOUT (optional ascii header functions) @ are available as pure UserRPL, or using @ unsupported but probably stable entry points @ (the latter versions are much shorter). @ STRC (compile without evaluating) @ is also available in SysRPL (short) or UserRPL (long) @ Complete Input system: @ Ascii string -> translate, compile, evaluate << KINV STR->> 'IN' STO @ Ascii string -> translate, compile, *don't* execute << KINV STRC >> 'INX' STO @ 7-bit ascii string -> translate to internal 8-bit @ Accepts optional %%hp: T()A()F(); header << ->STR 3 TRANSIO KHIN RCLF SIZE 3 > #2F34Dh #3016Bh IFTE SYSEVAL + >> 'KINV' STO @ Process and remove %%hp: T()A()F(); header @ (UserRPL version) @ (leaves modes set as specified in header) << ->STR DUP 1 64 SUB %% HP: + POS { DUP 1 OVER ; POS SUB DUP T(0) POS { 0 TRANSIO } IFT DUP T(1) POS { 1 TRANSIO } IFT DUP T(2) POS { 2 TRANSIO } IFT DUP T(3) POS { 3 TRANSIO } IFT DUP A(D) POS { DEG } IFT DUP A(R) POS { RAD } IFT DUP A(G) POS { GRAD } IFT DUP F(.) POS { -51 CF } IFT DUP F(,) POS { -51 SF } IFT SIZE 1 + OVER SIZE SUB } IFT >> 'KHIN' STO @ Process and remove %%hp: T()A()F(); header, @ using unsupported (probably stable) entry point @ (leaves modes set as specified in header) << ->STR DUP 1 64 SUB DUP ; POS OVER %% HP: + POS DUP2 AND 3 DUPN DROP > AND { 5 + SWAP DUP 4 ROLLD 1 - SUB RCLF SIZE 3 > #25F31h #30477h IFTE SYSEVAL DROP 1 + OVER SIZE SUB } { DROP2 DROP } IFTE >> 'KHIN' STO @ Replacement for STR-> (to compile without evaluating) @ UserRPL version (multiple objects -> list) @ (less rigorous than SysRPL version) << ->STR <<<<>>'x' SWAP + >> + STR-> #54AFh SYSEVAL #5459h SYSEVAL @ All HP48/49/50 DUP 2 GET OVER 4 GET 2 ->LIST SWAP 7 OVER SIZE 1 - SUB DUP SIZE 1 > { SWAP { SWAP DROP DUP SIZE { 1 GET } } IFTE IFT >> 'STRC' STO @ SysRPL version (multiple objects -> program) @ [this installs program via hex string, no source here] @ On original 48[S/G] you must have ASC-> pre-installed RCLF SIZE 3 > { @ 49/50 series D9D20792628236252133D9D2026FE267 943431622715329A4347A2073883FE98 + 3B21302C230B7650E0E306B65029A432 + C23098050A3D63E8F60B2130B2130 + 64 STWS DUP BYTES DROP #13Bh == #100001h * LIBEVAL @ built-in H-> } { 10 CHR @ need ASC-> on original 48[S/G] D9D202BA812BF81D0040D9D204A83201 91668F017E126C2A1647A20C94324563 + OVER + 2B21302C230B7650E0E306B650C2A162 + C230980506DC36E8F60B2130B2130F49 + SWAP + D + ASC-> } IFTE 'STRC' STO @ Quoted-Printable encoding corrector for email/postings @ QP string -> Corrected string (use before IN[X]) << 61 CHR -> e << ->STR DUP e 3D + POS { 13 CHR SREPL DROP e 10 CHR + SREPL DROP e 3D + e SREPL DROP } IFT >>> 'KQP' RCLF SIZE 3 > { STO } { DROP2 } IFTE @ 49/50 series only @ Complete Output system: @ Any object -> Ascii string (without header) << DUP TYPE 2 =/ { RCLF SIZE 3 > #25ECEh #15A0Eh IFTE SYSEVAL } IFT KVIS >> 'OUT' STO @ Any object -> Ascii string, with %%hp: T()A()F(); << DUP TYPE 2 == { C$ $ 10 CHR + SWAP + } { RCLF SIZE 3 > #25ECEh #15A0Eh IFTE SYSEVAL } IFTE KVIS KHOUT >> 'OUTX' STO @ string -> Ascii (7-bit) output string << ->STR 3 TRANSIO RCLF SIZE 3 > #2F34Fh #2FEC9h IFTE SYSEVAL >> 'KVIS' STO @ #2F34Eh #2FEDDh to not insert CR before LF @ Prefix a header %%hp: T()A()F(); to string @ (UserRPL version) << ->STR %% HP: + { T(0) T(1) T(2) T(3) } OPENIO CLOSEIO { HOME IOPAR } RCL 6 GET 1 + GET + -17 FS? A(R) { -18 FS? A(G) A(D) IFTE } IFTE + -51 FS? F(,) F(.) IFTE + ; + 10 CHR + SWAP + >> 'KHOUT' STO @ Prefix a header %%hp: T()A()F(); to string, @ using unsupported (probably stable) entry point << ->STR %% HP: + RCLF SIZE 3 > #25F30h #303ACh IFTE SYSEVAL + ; + 10 CHR + SWAP + >> 'KHOUT' STO @ End of downloadable file === Subject: cmsg cancel <465aa9f3$1$27391$ba4acef3@news.orange.fr> Control: cancel <465aa9f3$1$27391$ba4acef3@news.orange.fr> Summary: EMP spam === === Subject: HP49G Sysrpl help with recalling contents of pointers Hi , I need some help me with recalling contents of ROM during runtime. I wish to recall the contents of e.g. C%SIN (supported entry) to the stack during runtime (in order to modify the composite ) and then use it. E.g. :: ' C%SIN recall? CDRCOMP EVAL ; What would the magic word or procedure for recall? be on the hp49g? I ask because C%SIN decompiles to :: PTR 0FEDA 2DUP %%COSH....; Where PTR 0FEDA splits a C% (complex) into two extended reals. In this case I already have two extended reals on the stack, and it would be a waste of time and accuracy to make it a C% first. Gjermund Skailand PS in this particular case the below is a shorter version. :: ' C%SIN recall? EvalNoCheck ;