Releases: c3d/db48x
Release 0.4: Matrices and equation rewrites
New features:
- Equation rewrite engine (#203, #213, #244)
- Early implementation of
expand
andcollect
(#231)
- Early implementation of
- Transient alpha mode for quick alppha entry (#204, #215, #233, #237)
(note that XEQ no longer automatically switches to alpha) - Vector and array arithmetic (#26, #185, #190)
- Automatic simplification in basic operations (#197, #216, #221)
- Help knows how to render "yellow" and "blue" keys
- Contextual tool menu (#127) and contextual help (#162, #193)
LastMenu
(xshift-A) goes back in menu history (#165)- Displaying date and time in the header (#123, #224)
GET
function on lists and arrays (#173)- Concatenation and repetition of lists (#178)
- Apply standard functions to arrays and lists (#179, #182)
- Add limits to size of numbers and number of rewrites (#214)
Improvements:
- Better rendering of unimplemented menu functions (#218)
- Accelerate garbage collector (#219)
- Render polar arguments with explicit angle units (#119, #161)
- Update key layout for easier matrix / vector entry (#198)
- Render complex numbers with additive precedence (#222)
Bugs fixes:
- Fix cursor position for up/down movement (#159)
- Show help for R/S (Eval) and division keys (#157)
- Fix spacing for thousands (e.g 5000) (#137)
- Redraw editor after inserting variable name (#156)
- Draw alpha annunciator after busy cursor is cleared
- Refresh editor when going at beginning or end of text
- Parsing of
Invert(X)
(#163) - Do not insert parenthese in editor after binary operators (#164)
- Correct parsing of
π
and imaginary unit (#145, #168, #169, #207, #208) - Repair repeat for R/S as a space key (#199)
- Parsing of complex numbers in matrices (#205)
- Parsing of complex numbers in equations (#220, #224)
- Parsing of "fancy" power sign (#238)
- Computation of power with integer and negative exponent (#239)
- Refresh menu after
NumberSpacing
(#240)
Other:
- Various help file improvements:
- Help now uses more standard mardown for keys
- As a result, README.md now points to the built-in help on GitHub (#227)
- Add acknowledgements to help file (#129), including link to HP Museum
- Improve documentation of differences between RPL variants (#177, #192)
- Add documentation for the
Help
command (#228) - Fix label for F6 key in help (#230)
- Improve rendering of code font in help (#232)
- Improved test suite, now faster, more stable and detects more errors
- Fixes / adjustments to keyboard layout suggested by C47 team
- Use standard C++ iterators for programs and lists (#166, #242)
- Split source files for list, program, array and equation (#167)
- Unify precedence handling for parser and renderer
- Add "storytelling" file (#191) for video demos
- Update STATUS.md file (#200)
- Fix generation of fonts
- Fix subtle dereferencing bug in GC pointer
- Use C++ template metaprogramming to build RPL equations from C++ (#230)
- Use flags instread of range comparisons to check properties of objects (#234)
- Default settings when running "current test" (#150)
- Add
rewrite_all
to rewrite until convergence (#241, #243) - Do not integrate random files in
make dist
.
Verse of the day:
The kingdom of heaven is like treasure hidden in a field.
When a man found it, he hid it again, and then in his joy went and sold
all he had and bought that field (Mt 13:44)
Signed-off-by: Christophe de Dinechin [email protected]
Full Changelog: v0.3.1...v0.4
Release 0.3.1: Editor acceleration
Bug fixes:
- Avoid a beep on shift-ENTER (shifting Alpha mode)
- Do not drop top of stack if editing editor with EXIT
- Display factorial as a postfix (
X!
and not!X
) - Modulo on negative integers
- Computation of modulo for fractions
- Parsing of
+
at end of command-line (interpreted as number) - Trailing zeros inserted if non-displayed significant digit
Features:
- Optimization of the text editor, now reasonably fast on battery
- Add ancillary functions to manage complex numbers
- Add
pi
function - Respect angles settings in trigonometric functions
- Added
Purge
andPurgeAll
toMemoryMenu
- Normalized angle for complex in polar form (sensitive to DEG/RAD/GRAD)
Other:
- Some rearranging of the menus (unfinished)
- Updated the proposed keyboard layout, notably with "Previous menu"
and "Toolbox" (context-sensitive menu) keys, removal of duplicate
"Stack" key assignment. - Make GC and busy animation a bit faster to avoid skipping on battery
Signed-off-by: Christophe de Dinechin [email protected]
Full Changelog: v0.3...v0.3.1
Release 0.3: Complex numbers
Bug fixes:
- CHS on second number on the command line (#105)
- program interruption when keys were pressed other than EXIT (#104)
- Rounding of 1.9999 displaying as 10.000 instead of 2.000 (#112)
- Memory corruption in logical operations on big numbers (#103, #107)
- Out of memory error when no spacing is present (#109)
- Strip trailing zeros introduced by rounding (#116, #117)
- Reject
0 SIG
(displaying no significant digits) - Potential crash in low-memory condition (#118)
- Removed useless "Program" menu in system menu (#120)
- Exit the state save/load menu after saving/loading (#122)
- Crash loading state file if no error was generated
- Detection of integer overflow in implementation of a^b (power)
- Evaluation of
"ABC" 3 *
was no longer working
Features:
- Complex numbers (#15)
- Render based numbers with base as subscript (#106)
- Change default spacing for fractional part to 5 digits (#108)
- Animation for long-running user programs and garbage collection (#115)
- xshift-EXIT saves state to disk (#113)
- Switch to three-level menus by default (#128)
- Generalization of
pow
with integer on right side - Represent
hypot
andatan2
using ⊿ and ∠ operators - Added
sign
function - Change behavior of Shift-Enter (alpha), now cycles back to non-alpha
Other:
- Add keyboard cutout for tentative keyboard layout
- Vastly enhanced regression test suite (faster and more extensive)
- Fixed dependencies in Makefile for fonts
- Improved efficiency of arithmetic computations
- Added several characters to the base font
- Improve 'const'-safety in C++ code, garbage-collected pointers are const now
Signed-off-by: Christophe de Dinechin [email protected]
Full Changelog: v0.2.4...v0.3
v0.2.4 - Dynamic number spacing while editing
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
Bug fixes:
- Memory corruption in division of large numbers (#70)
- Parsing
'X⁻¹+(Y²+Z³)'
resulting in syntax error (#76) - Parsing
-80/60
resulting in4/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 notABC
(#86) - Directory corruption following
purge
(#87) - Local blocks now always execute (#90)
- Correct spacing of control structures on stack
Features:
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
Bugs fixed since v0.2.1:
-
Fixed the
while
loop
The test for thewhile
loop was inverted
The location of theend
andrepeat
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 return17
instead of17/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
Thesame
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 asabs
orcubed
. -
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
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
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
First preview of the firmware with pre-built binaries
To install:
- Put your DM42 in USB disk mode
- 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
andSTATE/test.48S
- Using the calculator's setup menu, flash QSPI image from USB disk. This will load
DB48X_qspi.bin
and erase it from the disk. - 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.