db48x/STATUS.md
Christophe de Dinechin 83d85d91aa doc: Update status
Update the status information in the documentation:
- List of unimplemented features
- STATUS page

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2024-08-31 23:14:50 +02:00

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