Remote X 3.5 for HP48 By Dr. Lex (https://www.dr-lex.be/) Based on Remote a.k.a. rem34bg by Bjorn Gahm (d89-bga@nada.kth.se) Finished in September 2020 (yes, 25 years after the 3.4 version). And then it had been sitting on my hard drive until March 2024 when I finally 'released' it. This is a modified version of the Remote 3.4 program. The only major change is that the UI allows to use _all_ hardware buttons (except alpha, shift keys and ON) as remote buttons. There is no more need to scroll through a grid of buttons on the screen, which I found awkward in poorly lit rooms, which is usually the case when using this as a media player remote. The arrow keys can now also be used as actual remote buttons, which I instinctively kept trying to do with the 3.4 program, and this was the main motivation to dust off my SysRPL skills after some 18 years. This change limits the number of buttons per remote to a 'measly' 45. I believe any device needing more than that many buttons is unusable anyway. The display shows a grid of assigned button names. This excludes the 0-9 number buttons whose names cannot be changed because I assume anyone will want to use them as numbers. Because the display is just 8 pixels too short to show all buttons in their true layout, the bottom row of keys has been shifted to the left. This means the bottom right button shown on the display is actually the - (minus) key, the one to its left is the + (plus) key. I also fixed an error that could cause a mess when using a custom Size, although I doubt anyone ever does this. I also added a basic argument check to the Select program such that it won't nuke your calculator's memory when accidentally executed by the user. Because of the changes, the old remote configurations are not compatible with this one. You can reuse the CODE, REM, and GROUP variables, but the button names are now stored in a variable 'LBL' and the key codes in 'CDS', which must be a string of 98 bytes (or generally, 49*Size). INSTALLING/USING The whole directory to be uploaded to the calculator, is provided in the REMOTX binary file. It also includes the LEARN and MAKE tools of the original REMOTE distribution (nothing has changed about these). The documentation of the original REMOTE 3.4 is provided in OriginalDocs. Most of it is still applicable, except the things that have been changed about the UI. Mind that you can no longer switch between remotes with the arrow keys, because those now act as remote buttons. Just exit the current remote with the ON button to choose another one. If you want to make the program learn a new remote, the original instructions still apply. However, if you already have the IR codes from LIRC or similar, and you can figure out the correct parameters for the remote as a whole, then you can simply enter the codes directly in the UI by pressing the desired key combined with left-shift. For the remote I tested, learning new codes with right-shift also worked pretty well. Only one example remote configuration is included, which can be used as a template for new remotes. It is a configuration for controlling GeexBox, and it uses the code set from a Samsung TV remote. I doubt anyone still uses one of the devices from the original list of remotes anyway. And in case you would be wondering: no, this cannot mimic an Apple IR remote. Its protocol deviates too much from classic IR remotes. Obviously, using this is at your own risk. It seems to work fine on my hacked "48G++" (a HP48G with extra memory soldered in), but I give no guarantees. SOURCE CODE Uncompiled source code for the programs that have been modified, is provided in the Sources dir. I used 'SRP' as extension for RPL code files that contain no HP48-specific characters (hence can be simply edited and compiled), and 'URP' for files that have special non-ASCII characters. I provide a tool rpl_charset_unicode.pl that can convert between the raw HP48 'URP' files and UTF-8 encoded files that can be edited on a regular computer. To avoid confusion with the originals, I renamed all the modified things: * Build becomes Render * Prg becomes Main * MD becomes LBL (button labels) * DATA becomes CDS (codes) and must be a string of 98 bytes. * Put becomes Edit * I have to edit Start anyway because of the Prg rename, so it becomes Start2. Select, Get, … stay the same. Tog has been removed.