Find a file
Christophe de Dinechin 2dbbec4ad7 Release 0.6.4 "Healing": Testing and fixes
This release focuses on heavy testing of the new variable-precision
decimal stack. Adding tests also means finding bugs.

Another significant change is support for fixed-precision
hardware-accelerated floating point, using 32-bit and 64-bit IEEE754
binary floating-point representation. Since this uses a binary format,
some decimal values do not map to decimal correctly. For example,
displaying 1.2 with a large number of decimals will show residue,
because 1.2 does not have an exact (zero-terminated) representation in
binary.

New features:

* plotting: Make refresh rate configurable
* menu: Add `/` key to `FractionsMenu`
* hwfp: Add support for hardware-accelerated floating-point
* menus: Add hardware floating-point flag to `MathModesMenu`
* ui: Allow multiple uses of `.` to insert DMS separators
* HMS: Editing of HMS values in HMS format

Bug fixes:

* stats: Fix crash on `variance` with single-column statistics
* algebraic: Clear error before evaluating the function
* functions: Correctly emit a type error for non-algebraics
* ui: Make sure we save stack if closing the editor
* logical: Fix mask for rotate left with 64-bit size
* logical: Make sure we save args for single-argument logicals
* flags: Update flags on `FlipFlag`, consume them from `BinaryToFlags`
* stack: Show multi-line objects correctly
* lists: Returns `Bad argument value` for index with bad arguments
* lists: Return an empty list for tail of empty list
* arithmetic: `→Frac` should not error on integers
* power: Do not shut down during `WAIT` if on USB power

Improvements:

* menu: Shorten the labels `→QIter` and `→QPrec` to avoid scrolling
* stack: Avoid running same code twice on simulator
* ids: Add aliases for hardware floating point
* functions: Optimize abs and neg
* ui: Replace calls to `rt.insert` with calls to `insert`
* menu: Reorganize fractions menu
* dms: Do the DMS conversion using fractions
* list: Adjust multi-line rendering
* copyright: Update copyright to 2024
* text: Return null text when indexing past end of text

Testing:

* tests: Increase the delay for help to draw
* tests: Add tests for hardware-accelerated floating-point
* tests: Add shifts and rotate tests
* tests: Check flag functions
* tests: Test DMS and HMS operations
* tests: Add test for `integrate` using decimal values
* tests: Test multi-line stack display
* tests: Add tests for `GETI`
* tests: Min and max commands
* tests: Repair last regression test
* tests: Check behaviour of 0^0
* tests: Avoid string overflow in case of very long message

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2024-02-05 01:12:46 +01:00
config units: Fix rpm value in the units definitions 2023-11-17 14:10:57 +01:00
DB48X-DB50X-Keys-Src Add files via upload 2023-10-17 21:41:09 -04:00
DB48X-Keys keyboard: Change 'CST' label to 'CONST' 2023-10-15 22:13:49 +02:00
dmcp@4befe9b376 Update dmcp commit 2023-08-08 15:21:39 +02:00
dmcp5@91cb47248c license: Change to GPL v3, disconnect from DMCP 2023-08-07 23:58:27 +02:00
doc Release 0.6.4 "Healing": Testing and fixes 2024-02-05 01:12:46 +01:00
fonts font: Add missing glyphs for angles 2024-01-14 23:35:45 +01:00
help Release 0.6.4 "Healing": Testing and fixes 2024-02-05 01:12:46 +01:00
images tests: Repair last regression test 2024-01-22 19:26:45 +01:00
inc Decimal128 objects and related 2023-06-19 21:56:30 +02:00
lib DMCP Version 3.13 2019-05-22 14:19:31 +02:00
recorder@8b0b079b54 Release 0.6.4 "Healing": Testing and fixes 2024-02-05 01:12:46 +01:00
sim hwfp: Add support for hardware-accelerated floating-point 2024-02-05 00:24:27 +01:00
src Release 0.6.4 "Healing": Testing and fixes 2024-02-05 01:12:46 +01:00
state doc: Record performance data for 1000 iterations of SumTest 2024-01-18 22:48:16 +01:00
tools decimal: Add code to generate constants 2023-12-25 19:33:09 +01:00
.clang-format Add .clang-format file 2023-08-08 15:44:45 +02:00
.clangd Find includes two level up (necessary e.g. for target.h) 2023-06-20 18:47:55 +02:00
.gitignore tool: Update .gitignore entries 2024-01-14 23:35:45 +01:00
.gitmodules license: Change to GPL v3, disconnect from DMCP 2023-08-07 23:58:27 +02:00
AUTHORS Add AUTHORS file 2023-08-08 16:05:04 +02:00
BUILD.md help: Add various acknowledgements to the help file 2023-07-21 12:08:08 +02:00
FREEDOM_COVENANT.txt Add freedom covenant to that repository 2023-07-07 21:23:43 +02:00
Keyboard-Cutout.png keyboard: Change 'CST' label to 'CONST' 2023-10-15 22:13:49 +02:00
Keyboard-Layout.png keyboard: Change 'CST' label to 'CONST' 2023-10-15 22:13:49 +02:00
LICENSE.txt license: Change to GPL v3, disconnect from DMCP 2023-08-07 23:58:27 +02:00
Makefile hwfp: Add support for hardware-accelerated floating-point 2024-02-05 00:24:27 +01:00
README.md doc: Fix link to old db48x in README.md 2023-12-25 11:51:13 +01:00
STATUS.md Release 0.6.1 "Happy New Year": Quick bug fixes 2024-01-14 23:35:45 +01:00

DB48X on DM42

The DB48X project intends to rebuild and improve the user experience of the HP48 family of calculators, notably their "Reverse Polish Lisp" (RPL) language with its rich set of data types and built-in functions, and Lisp-level programming power.

The project in this repository is presently targeting the SwissMicro DM42 and DM32 calculators. It leverages their built-in software platform, known as DMCP. There is also a simulator that is tested on macOS or Linux.

In the long-term, the vision is to be able to port DB48X on a number of different physical calculator platforms, like the ARM-based HP50 and related machines (HP49, HP48Gii, etc), and the HP Prime (at least the G1, since the G2 seems a bit more locked down), maybe others. The basis for that work can be found in the DB48X project.

This project was presented at FOSDEM 2023

Watch the video

Why name the project DB48X?

DB stands for "Dave and Bill", who are more commonly known as Hewlett and Packard. The order is reversed compared to HP, since they reportedly chose the order at random, and it's about time Dave Packard was given preeminence.

Part of Dave and Bill's great legacy (beyond giving birth to the Silicon Valley) is a legendary series of calculators. The HP48 remains one of my favorites, notably for its rich built-in programming language, known as Reverse Polish Lisp (RPL). This project aims at recreating a decent successor to the HP48, at least in spirit.

State of the project

This is currently UNSTABLE and INCOMPLETE software. Please only consider installing this if you are a developer and interested in contributing. Or else, have a paperclip at hand just in case you need to reset your calculator.

The detailed current status is described in the STATUS file.

Self-test in the simulator

How to build this project

There is a separate document explaining how to build this project. The simulator includes a test suite, which you should run before submitting patches. To run these tests, pass the -T option to the simulator, or hit the F12 key in the simulator.

Built-in documentation

The calculator features an extensive built-in documentation that uses a restricted version of Markdown. You access that built-in help by holding a key down, or using the Help command

Other documentation

There is DMCP interface doc in progress see DMCP IFC doc (or you can download html zip from doc directory).

The source code of the DM42PGM program is also quite informative about the capabilities of the DMCP.