Skip to content

Releases: c3d/db48x

v0.2.4 - Dynamic number spacing while editing

11 Jul 07:57
@c3d c3d

Choose a tag to compare

Bug fixes:

  • CHS removes negative sign instead of putting a + sign
  • Fix crash when applying decimal functions to negative values (#101)
  • Use default formatting when saving calculator state
  • Repair rendering of FIX, SCI and ENG on the stack (#100)
  • Fixes the selection of the editor's displayed rows and columns (#98, #99)
  • Remove premature "too many digits" error message for decimal128 (#97)
  • Do not terminate editing for self-inserting menus such as # (#96)
  • Show B cursor for all base-36 digits (#95)
  • Defensive coding against malformed UTF8 text rendering (#101)

Features:

  • Show thousand separators while editing numnbers
  • Render based numbers with a numerical postfix base indicator (#95)
  • Parse numbers in arbitrary base, e.g. 3#212 (#95)

Full Changelog: v0.2.3...v0.2.4

Release 0.2.3 - For loops

10 Jul 07:06
@c3d c3d

Choose a tag to compare

Pre-release

Bug fixes:

  • Memory corruption in division of large numbers (#70)
  • Parsing 'X⁻¹+(Y²+Z³)' resulting in syntax error (#76)
  • Parsing -80/60 resulting in 4/3 (sign lost) (#78)
  • Large numbers written to state file had separators (#83)
  • Render names on stack as 'ABC' instead of 'ABC' (#84)
  • Evaluate names as 'ABC' and not ABC (#86)
  • Directory corruption following purge (#87)
  • Local blocks now always execute (#90)
  • Correct spacing of control structures on stack

Features:

  • Keyboard binding to create lists (#89)
  • Implementation of for loops (#92)

Other:

  • Solidified the test suite further, added many tests
  • Added reference to FOSDEM talk to README.md
  • Added Freedom Covenant to the repository

Signed-off-by: Christophe de Dinechin [email protected]

v0.2.2 - Optimisations and stabilisation

07 Jul 06:47
@c3d c3d

Choose a tag to compare

Bugs fixed since v0.2.1:

  • Fixed the while loop
    The test for the while loop was inverted
    The location of the end and repeat keywords was swapped

  • Fixed bug in detection of multiplication overflow
    The computation of the factorial of 23 and up is now correct.

  • Fixed bug mistakenly converting some fractions to integers
    For example, 2/17 INV would return 17 instead of 17/2

  • Add spacing to large numbers
    A number that did not fit on 64-bit would not respect spacing settings

  • Repaired the test suite
    Tests were setting-dependent, and would fail with default settings because
    they did not take number spacing into account.

Features implemented since v0.2.1:

  • Implemented local variables, e.g. << -> A B C << A B - C * >> >>
    Local variables are a very fast way to reference data. Internally, they are
    represented by an offset to a known location, which makes them practically as
    fast as stack accesses, and much faster than global variable lookups.

  • Implement the same function
    The same function detects if two objects are identical.
    Like the HP48, there are multiple "equality" variants:

    • same detects if two objects are binary-identical
    • == does the same, but dereference names
    • = is a mathematical equality (does not exist in HP48 RPL)
  • Add feature to import ASCII versions of «, » and
    In .48S files, you can use <<, >> and -> instead.

  • Implement →List (stack to list)
    This was the last missing command to be able to execute the
    HP calculator's N-queens benchmark

  • Better truncation of very large numbers when shown on stack
    A very large number, like the factorial of 64, would show up truncated
    at 80 digits, so the first digits shown were wrong.

  • Various optimizations to make things a bit snappier, notably on battery power

    • Refactored the object model to use a simpler lookup mechanism

    • Implemented a C++ interface for arithmetic and functions, which will be
      useful when implementing complex number and matrix operations, and already
      simplified the code for operations such as abs or cubed.

    • Sime fine-tuning of LEB128 handling for types

    • Execution time for NQueens measured, reduced from about 980ms down
      to about 530ms.

Full Changelog: v0.2.1...v0.2.2

Version 0.2.1 - Add VERSION command

01 Jul 07:37
@c3d c3d

Choose a tag to compare

Pre-release

Add a VERSION command, and git-derived version string in the PGM file

Full Changelog: v0.2...v0.2.1

v0.2 - Fix problem when running on battery power

30 Jun 21:29
@c3d c3d

Choose a tag to compare

The primary reason for a v0.2 is that this solves #12, a hang on battery power. There are also major bug fixes on integer arithmetic, and a new formatting of numbers.

Full Changelog: v0.1...v0.2

v0.1

28 Jun 05:56
@c3d c3d

Choose a tag to compare

v0.1 Pre-release
Pre-release

First preview of the firmware with pre-built binaries

To install:

  1. Put your DM42 in USB disk mode
  2. Expand the contents of the release at the base of the disk. You should have four files, DB48X.pgm, DB48X_qspi.bin, help/DB48X.md and STATE/test.48S
  3. Using the calculator's setup menu, flash QSPI image from USB disk. This will load DB48X_qspi.bin and erase it from the disk.
  4. Using the calculator's setup menu, load the DB48X.pgm.

Note: Normally, the QSPI binary is "compatible" with the original DM42 program, so that you can switch back and forth. There may be limitations if the symbols in that file are not at the right address. If your DM42 program misbehaves after installing this QSPI, restore the original QSPI image from SwissMicros.