Post #1

newRPL: [UPDATED May-06-16] Firmware for testing available for download

By an overwhelming number of requests (ok, just one but looks better that way) I've made available for download an early firmware image for the adventurous.

It can be downloaded here:

UPDATE: ** USE LINK BELOW FOR LATEST DEMO IMAGE ** - SEE POST #39, #70, #118, #159, #184, #245, #267 and #274 BELOW FOR LATEST CHANGES

newRPL firmware demo

Everyone is invited to test-drive it and provide feedback. Being an early demo there's many things that don't work, some because they aren't implemented yet, and some because they are buggy. I'd appreciate comments on the latter case so we can start debugging this into a more polished product.

What to expect and not to expect:

* There's no menus, but most commands can be typed in alpha mode.

* The VARs menu is fully functional. It can be hidden/shown by long-pressing VAR.

* No status area yet

* Command line is not multiline yet, and there's no begin/end/cut/copy/paste. Skip word, go to the end, etc. are mostly not implemented yet.

* Keyboard is mostly functional, but there's keys not bound yet to their commands (like HOME or UPDIR, you have to type them).

* The new alpha mode will seem very strange at first, but will quickly grow on you.

* The STO/RCL function was moved to the HIST/CMD location in the keyboard due to the new VARs menu keys interfering with it. Everything else stayed where the 50g had it.

* The OFF function was moved to the battery compartment for now (pull a battery!). The OFF key performs a Warm-Start due to technical difficulties.

Feel free to explore the docs here, and the detailed status to see which commands are already implemented here.

There are a few more commands (several that deal with matrices) that were implemented but not shown in the list yet.

To install the rom, simply put it on an SD card together with a file called 'update.scp' that contains the text 'newrplfw.bin' inside (no quotes). Then do a normal ROM update and it will pick it up. Upon reset, you'll get a confirmation screen that warns you that the initial install will wipe out all RAM. This is your last warning before you lose anything that wasn't backed up.

To restore to stock firmware, just do a paperclip reset and re-flash the stock rom, but you'll have to use the 2MB special version that's in the .zip file to get Port 2 working again.

Let's concentrate the feedback and questions on this thread.

Enjoy! (and report back!)

Post #39

RE: newRPL: Updated firmware image Oct-01-2015

A new firmware image is ready for download.

Use the same link from the first post in this thread to get it.

For EXISTING newRPL users only:

------Skip this if you don't have a previous alpha version installed ------

This image had some major internal reorganization to accommodate units, so your existing objects might become invalid after an update. For this reason, a complete memory wipe is recommended after installing this ROM.

To do that:

Press simultaneously On-A-C

The option in the middle is "Clear Mem". However, to avoid accidentally nuking your memory, this requires all 3 shift keys to be pressed simultaneously, so to clear your memory, do:

L Shift + R Shift + Alpha + C (or D, same thing)

You should see a message that install will wipe your memory.

New users obviously need not do this, this is only for people upgrading from the previous alpha. I believe this will be the last major reorganization, as all main object types are now implemented.

------Now here's the important part ------

New in this version: UNITS!

All units in the AUR are supported. Commands UBASE, UVAL and CONVERT are already implemented.

Features of newRPL's unit system:

* Completely open system, you can define any units you like (but not yet, the command to do that is not included in this version).

* User defined units are system-wide, and don't clutter your directories, so a unit and a variable of the same name will never conflict.

* Syntax 1_[m] is now accepted, is optional on normal objects, but mandatory within symbolics. Previously, typing '1_m/X+2' would include the X as part of the unit, the new syntax allows to properly define what's unit and what's variable, and also resolves conflicts: '1_[m]/m+2' will use unit 'm' and variable 'm' as completely separate things.

* Units can be applied to other objects, like vectors, matrices, etc.

* Exponents in units are fractions, not real numbers, so 1_m^(1/3) will stay 1/3, not 0.3333333.

* Operator _ applies a unit after the fact, to an object in the stack (same as ->UNIT but cleaner). < 2 _m > will apply the 'm' unit to the number 2 that's already in the stack.

*Temperatures work as described in a recent thread.

* All unit definitions are updated as per latest CODATA recommended values, so they may differ from the values given by the HP48.

* All units are as exact as possible for the selected system precision. For example, the conversion factor between Rankine and Kelvin is 5/9 at any precision, not just a fixed-precision constant ( like 0.55555556).

I invite all testers to check this new module and report any problems. Thank you!

Post #70

RE: newRPL: [UPDATED Oct-01-2015] Firmware for testing available for download

Latest ROM update as of October 19, 2015:

Changelog:

* Added multi-line command line editor

* Added autocomplete function

* First mode is always C when entering alpha

* ENTRY cycles between P and A only

To use autocomplete, just start adding letters, the suggested word will be displayed in the status area. Holding Alpha+cursors up and down will select next/previous suggestion.

Holding Alpha+ cursor right will insert the command in the command line.

Post #118

RE: newRPL: [UPDATED Oct-19-2015] Firmware for testing available for download

New version of the firmware (11-14-2015) with very small but important changes:

* Working OFF function! Now you can finally turn it off and on like a normal calculator. However, the On function still restarts from scratch, so it doesn't preserve the stack. This will be fixed soon.

* Minor internal changes to make it more emulator friendly (x49gp).

To try it on x49gp, you need to build x49gp from the latest sources (needs latest patch to run newRPL):

x49gp Official Git Repository

Then do the following steps:

Copy the newrplfw.bin firmware to the x49gp folder

Delete the files flash-noboot and flash-50g

Run 'make FIRMWARE=newrplfw.bin flash-50g' from the command line

Run './newconfig' to reset the calculator

Finally, just run the emulator with './x49gp config'.

Post #159

RE: newRPL: [UPDATED Nov-14-2015] Firmware for testing available for download

It's ROM update time.

This one brings:

* Fixed the IP command bug

* Added SQ, LOG and ALOG commands

* Bound 10^X, LOG, LN, EXP, SQ, XROOT to the corresponding keys

* Implemented new menu framework (not visible to the users).

For now, the first menu is also VARS, simply because for the time being there's no other menu to show.

Post #184

RE: newRPL: [UPDATED Dec-02-2015] Firmware for testing available for download

A new version of the firmware was posted, with the following additions since last time:

* Finished soft-menu engine

The menu engine is quite more flexible than the old one.You can read more here.

There aren't any useful menus yet, mainly because I tried to add the first menu and it's a pain to assemble the lists by hand, so I need to figure out a more practical way to add menus (see below).

To play with the menu engine, the TMENU command is ready to go. Changes only apply to the first menu.

Some examples:

{ { "ONE" 1 "This is the number one" } { < IF -1 FC? THEN "DOWN" ELSE "UP" END > < IF -1 FC? THEN "GOING DOWN..." ELSE "GOING UP..." END > "This is an UP/DOWN example" } }

You can try -1 SF and -1 CF to see how it affects the second item.

Any bugs, comments, etc. are always welcome.

Post #229

RE: newRPL: [UPDATED Jan-28-16] Firmware for testing available for download

I updated the firmware image.

This new ROM has quite a few noticeable changes from the user perspective:

* Added ABS and ARG in the corresponding key.

* Added UPDIR in Left-Shift UP (cursor key). This works even when inside the editor, so you can navigate directories while typing text.

* Added HOME to Left-Shift-Hold UP (as a natural extension of UPDIR)

* Added BEGIN and END to Left-Shift Left and right respectively. These only work in the editor to mark the selection.

* Added COPY and PASTE to Left-Shift-Hold Left and Left-Shift-Hold Right respectively. These work not only for the editor, but also in the stack. You can COPY any object to the clipboard, and you can paste text or objects into the stack or the editor.

Also fixed a bug in the compiler that was triggered on rare occasions.

Known bugs:

After I posted I discovered a bug, when the end of selection is the end of the text, and a newline is added to the end, it displays some garbled characters.

I'm sure there will be other bugs, I'm counting on you to help me clear them.

EDIT: BTW, it also adds that extra line of pixels to the black menu. It was done in gray because it cannot be inverted, not sure if it looks right.

Post #245

RE: newRPL: [UPDATED Feb-01-16] Firmware for testing available for download

New update March 2016 has the following changes:

* Added command ->Q (no Qpi yet)

* Fixed bug in units with fractional exponents

* Fixed double dot display bug in 10 3 / 3 *

* Added list support for trig functions.

* Fixed bug: DOLIST inverts the list of arguments

* Added support for algebraic local variables syntax: < -> a b 'a+b' >

Enjoy, and please report any additional bugs.

Post #267

RE: newRPL: [UPDATED Apr-17-16] Firmware for testing available for download

New version of the firmware with the following additions:

* Angles! This is a new feature ready to be tested.

* Polar complex numbers: quite rough in some edges, but implemented except a few places.

* Polar vectors: you can create them, but they are not ready to be operated upon.

Mostly the idea is to test all corner cases of angles and their associated commands, as well as complex vectors (don't forget to enable complex mode with -103 SF in order to get complex results from real operations).

Happy bug hunt.

Post #274

RE: newRPL: [UPDATED Apr-17-16] Firmware for testing available for download

May update!

This new version adds:

* Additional support for complex numbers in many commands (not all, so complex mode is still not going to be advertised as implemented).

* Some indicators in the status area.

* 8-level UNDO/REDO for the stack.

The last item is probably the coolest addition to newRPL.

While looking at the stack, the left cursor became UNDO. Right shift and the left cursor is REDO.

There's 8 levels (will be configurable when the GUI for settings is created).

The only drawback is that it eats some memory in two ways:

a) 4-bytes per each object in the stack.

b) It locks in memory some objects that would otherwise be removed by a garbage collection, because they are in past stacks.

But the benefits outweigh the cost, so there it is.

Post: #313

RE: newRPL: [UPDATED June-22-16] Firmware for testing available for download

June update!
Please go to the first post for download instructions.
Changes in this update are various:
* Added support for Unicode combining marks (currently, only the overline is drawn, others are ignored).
* Added complex infinity symbol (Left-shift-hold-0) (no functions return this symbol yet)
* Added SD card support (most important SDSTO and SDRCL, but try all SDXXX commands). So far it's SD only, SDHC will be supported in the future but not for now (we need plain SD to flash the firmware anyway)
* Added immediate settings shortcuts for the keyboard:
On-Dot: Cycle between various number formatting options
On-SPC: Cycle between various number formatting modes
On-0 through On-9: Select display number of digits (for STD and FIX it's number of figures after the dot, for SCI/ENG it's total number of significant figures displayed).
On-/ On-*: Change forced display exponent for ENG mode (this is experimental, if there's no use it will be removed).
On-Up On-Down: Change current system precision by 8 digits (up/down).
There's other minor bug fixes and updates to some commands, but these are the most significant changes.
As usual, please test and report!

Post #329

RE: newRPL: [UPDATED July-14-16] Firmware for testing available for download

July ROM update!
This update brings multiple bug fixes to the SD Card module and 2 new commands PEVAL and PCOEF (in addition to GCD, LCM, MULTMOD, ADDTMOD, SUBTMOD that came in the previous update but I forgot to mention).
As usual... test and report!

Post #331

Not yet, but here's a quick briefing:
File names can be an IDENT or a string or a list with a path { HOME 'MYDIR' 'NAME' }. Strings can also have paths: "/MYDIR/NAME" is the same as the list before.
The SD Card can have a partition table (MBR) with up to 4 partitions. The syntax accepted is any of DOS syntax "C:/FILENAME", or HP50g syntax ":3:/FILENAME". Other partitions would be letter "D", "E" and "F", or :4:, :5: and :6:.
Files and directory names are case-sensitive (despite being a FAT filesystem), so you can store 'MyVar', 'MYVAR' as 2 separate files.
Commands:
SDSTO/SDRCL ... same as STO/RCL, except the variable name can be an ident, string, or list as explained above.
SDSETPART ... Select the active partition, takes an integer 0-3.
SDCHDIR ... Change to directory name in level 1.
SDMKDIR ... Create new directory
SDPGDIR ... Delete an empty directory
SDPURGE ... Delete a file (I just realized I forgot this command, so it's not there yet!)
SDOPENxxx ... Open a file, leave a file handle (an integer in hex base) on the stack. The variants are xxx=RD (read only), WR (write), MOD (modify any byte within the file without truncating the existing data), APP (append at the end).
SDCLOSE ... Take a handle and close the file
SDREADTEXT ... nchars handle -> String with the text read from the file. nchars is the number of Unicode characters to read. handle is the handle returned by SDOPENxxx.
SDWRITETEXT ... string handle -> Write the string to the file.
SDREADLINE ... handle -> Read a line of text and return it as a string (includes the terminating newline).
SDSEEKxxx ... Move the current offset within a file (takes the offset and handle as arguments) to the given position. The position is relative to xxx=STA -> start of the file, xxx=END -> end of file, xxx=CUR -> current position.
SDTELL ... Take a handle and return the current offset from the start of file
SDFILESIZE ... Take a handle and return the file size.
SDEOF ... Take a handle and return TRUE (1) if the last operation reached the end of file.
SDOPENDIR ... Takes a directory name and opens the directory for scanning with SDNEXTFILE. Returns a handle to use with SDCLOSE.
SDNEXTFILE ... Take the handle of a directory and return the next directory entry. Each entry returns 5 values to the stack: name, attributes, file size, last modified date DD.MMYYYY and last modified time in HH.MMSS
There's a few commands still missing (like SDPURGE) and any others that might come up later.