mirror of
https://gitlab.com/c3d/db48x.git
synced 2024-09-29 05:36:58 +02:00
83d85d91aa
Update the status information in the documentation: - List of unimplemented features - STATUS page Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
182 lines
6.5 KiB
Markdown
182 lines
6.5 KiB
Markdown
### System and user interface
|
|
|
|
- [x] Functional graphical simulator for the DMCP platform
|
|
- [x] Test suite on simulator
|
|
- [x] Main calculator loop, on/off, accessing DMCP Setup menu
|
|
- [x] RPL-style command-line text editor
|
|
- [x] Key processing
|
|
- [x] DM42-adapted shift logic
|
|
- [x] Virtual annunciators
|
|
- [x] Alpha mode and lowercases
|
|
- [x] Garbage collector
|
|
- [x] Low-memory stress testing
|
|
- [x] Built-in commands lookup and parsing
|
|
- [x] Soft menus navigation
|
|
- [x] Global variables
|
|
- [x] Local variables
|
|
- [x] Home directory and subdirectories
|
|
- [x] Variables menu accessible with **RCL** key
|
|
- [x] Complete interactive catalog of available functions
|
|
- [x] RPL program evaluattion
|
|
- [x] RPL program single-stepping / debugging
|
|
- [x] Stack undo / redo
|
|
- [X] Accelerated [blitter code with 8x8 patterns](https://github.com/c3d/db48x/blob/dm42/firmware/include/ggl.h)
|
|
- [X] Unicode-capable [text drawing replacement](https://github.com/c3d/db48x/blob/dm42/firmware/sys/graphics.c)
|
|
- [X] Unicode / UTF-8 support
|
|
- [X] [Unicode fonts](https://github.com/c3d/db48x/blob/dm42/firmware/include/unifont.h)
|
|
(e.g. derived from [WP43S](https://gitlab.com/wpcalculators/wp43) project)
|
|
- [X] Larger font for editor (old geezer mode)
|
|
- [x] Objects in USB-accessible flash storage
|
|
- [x] Calculator state load/save
|
|
- [x] Global help from [generated markdown file](help/db48x.md)
|
|
- [x] [Per-function help](https://github.com/c3d/db48x/blob/dm42/firmware/hal_keyboard.c#L116)
|
|
from [markdown files](doc/calc-help)
|
|
- [x] Character menu / table
|
|
- [x] Brezenham lines, circles and ellipses
|
|
- [ ] Polygon fill
|
|
- [ ] RPL-controlled soft-menu system
|
|
- [x] Domain-specific features / customizaton from files on USB disk
|
|
- [x] Single-key object format cycling
|
|
- [x] Units and conversion customization from `units.csv` file
|
|
|
|
|
|
### Object system
|
|
|
|
- [x] Object system with compact storage and dynamic dispatch
|
|
- [x] Stack management
|
|
- [x] Convenient allocation, initialization and recycling of temporaries
|
|
- [x] Object evaluation
|
|
- [x] Object parsing
|
|
- [x] Object text rendering
|
|
- [x] Object graphical rendering
|
|
- [ ] Object graphical editor
|
|
- [x] Errors and error display
|
|
- [x] Error trapping / handling, e.g `DOERR`.
|
|
|
|
### RPL data types
|
|
|
|
- [x] Built-in commands (e.g. `Neg`)
|
|
- [x] Integer data type, e.g. `123`
|
|
- [x] Hexadecimal (`#123h`), decimal (`#123d`), octal (`#123o`) and binary
|
|
(`#1001b`) based numbers
|
|
- [x] Based integers (arbitrary base between 2 and 36, e.g. `13#10231AC`)
|
|
- [x] Arbitrary-size integers e.g. `123456789012345678901234567890`
|
|
- [x] Fractions, e.g. `1/7`
|
|
- [x[ Fraction formats, e.g. `22/7` vs `3 1/7` vs. `3,1428571429`
|
|
- [x] Decimal floating-point with fixed size (32, 64 and 128 bits)
|
|
- [x] Decimal floating-point with arbitrary size
|
|
- [x] Binary floating-point with arbitrary size
|
|
- [X] Hardware-accelerated 32-bit and 64-bit binary floating-point
|
|
- [x] Text / strings, e.g. `"ABC"`
|
|
- [x] Name / symbols, e.g. `ABC`
|
|
- [x] Complex numbers in rectangular form, e.g. `2 + 3i`
|
|
- [x] Complex numbers in polar form, e.g. `2 ∡ 30°`
|
|
- [ ] Quaternions
|
|
- [ ] Intervals / ranges, e.g. `1..5`
|
|
- [X] Angles, e.g. `∡30°`
|
|
- [x] Lists, e.g. `{ A 1 "Hello" }`
|
|
- [x] Arrays, vectors, matrices and tensors, e.g. `[ [ 1 2 3] [ 4 5 6] ]`
|
|
- [x] Program objects, e.g `« IF 1 = THEN "Equal to one" END »`
|
|
- [ ] Algebraic programs, e.g. `'if x = 1 then "Equal to one"` based on
|
|
[XL-style parser](https://github.com/c3d/XL)
|
|
- [x] Bitmaps, e.g. `GROB 8 8 00000000000000FF`
|
|
- [ ] Fonts, e.g. `FONT 000000`
|
|
- [ ] Vector graphics
|
|
- [x] Tagged objects
|
|
- [x] Algebraic expressions
|
|
- [x] Unit objects
|
|
- [x] Directories
|
|
- [ ] Software libraries
|
|
- [ ] Keymaps
|
|
- [X] Softkey menus
|
|
- [ ] Full-screen menus
|
|
- [ ] Forms
|
|
- [ ] Object handler (can replace eval, parse, render, graphical editor)
|
|
- [ ] HP41/HP42-style key-entry program
|
|
- [ ] ARM PIC code
|
|
|
|
|
|
### Basic Arithmetic
|
|
|
|
- [x] Integer arithmetic
|
|
- [x] Floating-point arithmetic
|
|
- [ ] Detection of precise vs. imprecise results, like newRPL
|
|
- [x] Automatic integer to floating-point promotion
|
|
- [x] Automatic selection of entered floating-point size based on user input
|
|
- [x] Automatic selection of computed floating-point size based on `Precision`
|
|
- [x] Fraction arithmetic
|
|
- [x] Automatic fraction promotion
|
|
- [ ] Correct rounding (a la [crlibm](https://github.com/taschini/crlibm))
|
|
- [ ] Range arithmetic
|
|
|
|
|
|
### Computations on real numbers
|
|
|
|
- [x] Floating-point arithmetic
|
|
- [x] Circular functions, e.g. `sin`, `cos`, `atan`, ...
|
|
- [x] Exponentials and logarithms, e.g. `exp`, `ln`, ...
|
|
- [x] Hyperbolic functions, e.g. `sinh`, `atanh`, ...
|
|
- [x] Probabilities functions, like `Factorial`, `Combinations`, etc.
|
|
- [x] Statistics functions, like `Σ+`, `Mean` or `Median`
|
|
- [ ] Special functions, like `Bessel`, `FastFourierTransforma`, etc
|
|
- [x] Constant tables with arbitrary precision from files on USB disk
|
|
- [x] Equation tables with explanatory graphics from files on USB disk
|
|
- [x] Unit conversions
|
|
|
|
|
|
### Computations on complex numbers
|
|
|
|
- [x] Complex arithmetic
|
|
- [x] Circular functions, e.g. `sin`, `cos`, `atan`, ...
|
|
- [x] Exponentials and logarithms, e.g. `exp`, `ln`, ...
|
|
- [x] Hyperbolic functions, e.g. `sinh`, `atanh`, ...
|
|
- [x] Probabilities functions, like `Factorial`, `Combinations`, etc.
|
|
- [x] Statistics functions, like `Σ+`, `Mean` or `Median`
|
|
- [ ] Special functions, like `Bessel`, `FastFourierTransforma`, etc
|
|
- [x] Equation tables with explanatory graphics from files on USB disk
|
|
|
|
|
|
### Computations on quaternions
|
|
|
|
- [ ] Arithmetic
|
|
- [ ] Circular functions, e.g. `sin`, `cos`, `atan`, ...
|
|
- [ ] Exponentials and logarithms, e.g. `exp`, `ln`, ...
|
|
- [ ] Hyperbolic functions, e.g. `sinh`, `atanh`, ...
|
|
- [ ] Probabilities functions, like `Factorial`, `Combinations`, etc.
|
|
- [ ] Statistics functions, like `Σ+`, `Mean` or `Median`
|
|
- [ ] Special functions, like `Bessel`, `FastFourierTransforma`, etc
|
|
- [ ] Equation tables with explanatory graphics from files on USB disk
|
|
|
|
### Computations on vectors, matrices and tensors
|
|
|
|
- [x] Arithmetic
|
|
- [x] Determinant, inverse, transpose
|
|
- [ ] Eigenvalues
|
|
- [ ] Tables with special matrices, e.g. Pauli matrices, General Relativity
|
|
|
|
|
|
### Computer Algebra system
|
|
|
|
- [x] Rendering of symbolic expressions
|
|
- [x] Parsing of symbolic expressions
|
|
- [x] Symbolic operations
|
|
- [ ] Integrate existing CAS like [GIAC](https://github.com/geogebra/giac)
|
|
- [x] Rules engine
|
|
- [ ] Symbolic differentiation
|
|
- [ ] Symbolic integration
|
|
|
|
|
|
### Numerical evaluation
|
|
|
|
- [X] Integration
|
|
- [X] Root finding
|
|
|
|
### Other RPL functional areas (to be expanded)
|
|
|
|
- [ ] Real-time clock
|
|
- [ ] Alarms
|
|
- [ ] File system access
|
|
- [ ] Printing
|
|
- [x] Plotting
|
|
- [ ] Equation writer
|
|
- [ ] Matrix writer
|