From 01927b1c978c46446e2e5649038e3a919c052b02 Mon Sep 17 00:00:00 2001 From: Christophe de Dinechin Date: Tue, 10 Sep 2024 20:43:36 +0200 Subject: [PATCH] Release 0.7.17 "Open" - DoSubs, DoList, entering units MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This release adds `DoSubs`, `DoList`, `NSub` and `EndSub` commands, and fixes related issues that were found with the associated examples in teh HP50G Advanced Reference Manual. **Features** * lists: Implement `DoList`, `DoSubs`, `NSub` and `EndSub` * units: Add usual "big" units to `Computing` units menu (e.g. KB, MB) * graphics: Add `Freeze` command * ui: Make it easier to enter units * expressions: Accept algebraic forms for `integrate` and `root` * expressions: Graphical rendering of integrals **Bug fixes** * case: Preserve the code for the default case (which was lost before) * parser: Parse arg-less alegbraic commmands such as `NSub` * equations: Fix syntax errors in built-in equations, e.g. missing parentheses * equations: Replace variables that match DB48X command names, e.g. `Re` * equations: Replace imperial units with SI units, e.g. `in` with `cm` * units: Reject user-defined functions in unit expressions * constants: Fix definition for the `qε0` constant **Improvements** * Update help about equations with some additional material * tests: Run through all the builtin equations * ui: Do not insert an extra space before parentheses in equation * simulator: Add macOS icons for DB48X and DB50X * font: Record saved font with `v` update Signed-off-by: Christophe de Dinechin --- doc/4-ReleaseNotes.md | 35 ++++++++++++ doc/5-Unimplemented.md | 10 ++-- help/db48x.md | 120 ++++++++++++++++++++++++++++++++++------- help/db50x.md | 120 ++++++++++++++++++++++++++++++++++------- src/dm32/qspi_crc.h | 2 +- src/dm42/qspi_crc.h | 2 +- 6 files changed, 246 insertions(+), 43 deletions(-) diff --git a/doc/4-ReleaseNotes.md b/doc/4-ReleaseNotes.md index 91cb3ae3..f4dca3db 100644 --- a/doc/4-ReleaseNotes.md +++ b/doc/4-ReleaseNotes.md @@ -1,5 +1,40 @@ # Release notes +## Release 0.7.17 "Open" - DoSubs, DoList, entering units + +This release adds `DoSubs`, `DoList`, `NSub` and `EndSub` commands, and fixes +related issues that were found with the associated examples in teh HP50G +Advanced Reference Manual. + + +### Features + +* lists: Implement `DoList`, `DoSubs`, `NSub` and `EndSub` +* units: Add usual "big" units to `Computing` units menu (e.g. KB, MB) +* graphics: Add `Freeze` command +* ui: Make it easier to enter units +* expressions: Accept algebraic forms for `integrate` and `root` +* expressions: Graphical rendering of integrals + +### Bug fixes + +* case: Preserve the code for the default case (which was lost before) +* parser: Parse arg-less alegbraic commmands such as `NSub` +* equations: Fix syntax errors in built-in equations, e.g. missing parentheses +* equations: Replace variables that match DB48X command names, e.g. `Re` +* equations: Replace imperial units with SI units, e.g. `in` with `cm` +* units: Reject user-defined functions in unit expressions +* constants: Fix definition for the `qε0` constant + +### Improvements + +* Update help about equations with some additional material +* tests: Run through all the builtin equations +* ui: Do not insert an extra space before parentheses in equation +* simulator: Add macOS icons for DB48X and DB50X +* font: Record saved font with `v` update + + ## Release 0.7.16 "Clean" - New commands The focus of this release is on new commands, notably for matrix and vector diff --git a/doc/5-Unimplemented.md b/doc/5-Unimplemented.md index 3b0489bd..7e76854a 100644 --- a/doc/5-Unimplemented.md +++ b/doc/5-Unimplemented.md @@ -62,6 +62,7 @@ The following is a list of the HP50 RPL commands which are implemented in DB48X. * [COS](#cos) * [COV](#covariance) * [CRDIR](#crdir) +* [CROSS](#cross) * [C→R](#complextoreal) * [DATE](#date) * [→DATE](#setdate) @@ -78,8 +79,11 @@ The following is a list of the HP50 RPL commands which are implemented in DB48X. * [DISP](#disp) * [DISPXY](#dispxy) * [DIV2](#div2) -* [DOERR](#doerr) * [DO](#do) +* [DOERR](#doerr) +* [DOLIST](#dolist) +* [DOSUBS](#dosub) +* [DOT](#dot) * [DRAW](#draw) * [DRAX](#drax) * [DROP2](#drop2) @@ -342,7 +346,6 @@ of the HP48 commands. * CONIC * CORR * CR -* CROSS * CSWP * CURL * CYCLOTOMIC @@ -372,10 +375,7 @@ of the HP48 commands. * DIVMOD * DIVPC * dn -* DOLIST * DOMAIN -* DOSUBS -* DOT * DRAW3DMATRIX * DROITE * DUPDUP diff --git a/help/db48x.md b/help/db48x.md index c1a03885..3bef3cd6 100644 --- a/help/db48x.md +++ b/help/db48x.md @@ -2293,6 +2293,41 @@ You can edit it by recalling its content on the stack using back to disk using `"config:equations.csv" STO`. # Release notes +## Release 0.7.17 "Open" - DoSubs, DoList, entering units + +This release adds `DoSubs`, `DoList`, `NSub` and `EndSub` commands, and fixes +related issues that were found with the associated examples in teh HP50G +Advanced Reference Manual. + + +### Features + +* lists: Implement `DoList`, `DoSubs`, `NSub` and `EndSub` +* units: Add usual "big" units to `Computing` units menu (e.g. KB, MB) +* graphics: Add `Freeze` command +* ui: Make it easier to enter units +* expressions: Accept algebraic forms for `integrate` and `root` +* expressions: Graphical rendering of integrals + +### Bug fixes + +* case: Preserve the code for the default case (which was lost before) +* parser: Parse arg-less alegbraic commmands such as `NSub` +* equations: Fix syntax errors in built-in equations, e.g. missing parentheses +* equations: Replace variables that match DB48X command names, e.g. `Re` +* equations: Replace imperial units with SI units, e.g. `in` with `cm` +* units: Reject user-defined functions in unit expressions +* constants: Fix definition for the `qε0` constant + +### Improvements + +* Update help about equations with some additional material +* tests: Run through all the builtin equations +* ui: Do not insert an extra space before parentheses in equation +* simulator: Add macOS icons for DB48X and DB50X +* font: Record saved font with `v` update + + ## Release 0.7.16 "Clean" - New commands The focus of this release is on new commands, notably for matrix and vector @@ -3848,6 +3883,7 @@ The following is a list of the HP50 RPL commands which are implemented in DB48X. * [COS](#cos) * [COV](#covariance) * [CRDIR](#crdir) +* [CROSS](#cross) * [C→R](#complextoreal) * [DATE](#date) * [→DATE](#setdate) @@ -3864,8 +3900,11 @@ The following is a list of the HP50 RPL commands which are implemented in DB48X. * [DISP](#disp) * [DISPXY](#dispxy) * [DIV2](#div2) -* [DOERR](#doerr) * [DO](#do) +* [DOERR](#doerr) +* [DOLIST](#dolist) +* [DOSUBS](#dosub) +* [DOT](#dot) * [DRAW](#draw) * [DRAX](#drax) * [DROP2](#drop2) @@ -4128,7 +4167,6 @@ of the HP48 commands. * CONIC * CORR * CR -* CROSS * CSWP * CURL * CYCLOTOMIC @@ -4158,10 +4196,7 @@ of the HP48 commands. * DIVMOD * DIVPC * dn -* DOLIST * DOMAIN -* DOSUBS -* DOT * DRAW3DMATRIX * DROITE * DUPDUP @@ -5178,27 +5213,27 @@ using the `config/equations.csv` configuration file. The variables in the columns and beams section are: -* `o`: Eccentricity (offset) of load -* `σcr`: Critical stress -* `σmax`: Maximum stress -* `θ`: Slope at `x` +* `o`: Eccentricity (offset) of load (dim.: length) +* `σcr`: Critical stress (dim.: pressure) +* `σmax`: Maximum stress (dim.: pressure) +* `θ`: Slope at `x` (dim.: angle) * `A`: Cross-sectional area * `a`: Distance to point load -* 'ε': Eccentricity +* 'ε': Eccentricity (dim.: length) * `c`: Distance to edge fiber (Eccentric Columns), or Distance to applied moment (beams) -* `E`: Modulus of elasticity -* `I`: Moment of inertia +* `E`: Modulus of elasticity (dim.: pressure) +* `I`: Moment of inertia (dim.: length^4) * `K`: Effective length factor of column * `L`: Length of column or beam -* `M`: Applied moment -* `Mx`: Internal bending moment at x -* `P`: Load (Eccentric Columns), or Point load (beams) -* `Pcr`: Critical load +* `M`: Applied moment (dim.: length۰force) +* `Mx`: Internal bending moment at x (dim.: length۰force) +* `P`: Load (Eccentric Columns), or Point load (beams) (dim.: force) +* `Pcr`: Critical load (dim.: force) * `r`: Radius of gyration * `V`: Shear force at x -* `w`: Distributed load +* `w`: Distributed load (dim.: force) * `x`: Distance along beam -* `y`: Deflection at x +* `y`: Deflection at x (dim.: length) For simply supported beams and cantilever beams (“Simple Deflection” through @@ -5265,6 +5300,55 @@ These equations apply to a slender column (`K·L/r>100`) with length factor `K`. ## Electricity +The variables in the electricity section are: + +* `∈r`: Relative permittivity +* `μr`: Relative permeability +* `ω`: Angular frequency (dim.: angle/time) +* `ω0`: Resonant angular frequency (dim.: angle/time) +* `φ`: Phase angle +* `φp, φs`: Parallel and series phase angles +* `ρ`: Resistivity (dim.: resistance۰length; in SI: ohm۰meter, Ω۰m) +* `ΔI`: Current Change (dim.: charge/time; in SI: ampere, A) +* `Δt`: Time Change +* `ΔV`: Voltage Change (dim.: energy/charge; in SI: volt, V) +* `A`: Wire cross-section area (Wire Resistance), os Solenoid cross-section area (Solenoid Inductance), or Plate area (Plate Capacitor) +* `C, C1, C2`: Capacitance (dim.: charge^2/energy; in SI: farad, F) +* `Cp, Cs`: Parallel and series capacitances (dim.: charge^2/energy; in SI: farad, F) +* `d`: Plate separation (dim.: length) +* `E`: Energy +* `Er`: Electric field at distance r from the source (dim.: force/charge; in SI: N/C = V/m) +* `Ep`: Electric field over an infinite plate (dim.: force/charge; in SI: N/C = V/m) +* `F`: Force between charges +* `f`: Frequency (dim.: time^-1) +* `f0`: Resonant frequency (dim.: time^-1) +* `I`: Current, or Total current (Current Divider) (dim.: charge/time; in SI: ampere, A) +* `I1`: Current in R1 (dim.: charge/time; in SI: ampere, A) +* `Imax`: Maximum current (dim.: charge/time; in SI: ampere, A) +* `L`: Inductance (dim.: energy/current^2; in SI: henry, H), or Length (Wire Resistance, Cylindrical Capacitor) +* `Lp, Ls`: Parallel and series inductances (dim.: energy/current^2; in SI: henry, H) +* `N`: Number of turns +* `P`: Power (dim.: energy/time) +* `q`: Charge (in SI: coulomb, C) +* `q1, q2`: Point charge (in SI: coulomb, C) +* `Qp, Qs`: Parallel and series quality factors +* `r`: Charge distance +* `R, R1, R2`: Resistance (dim.: energy۰time/charge^2; in SI: ohm, Ω) +* `ri, ro`: Inside and outside radii +* `Rp, Rs`: Parallel and series resistances (dim.: energy۰time/charge^2; in SI: ohm, Ω) +* `t`: Time +* `ti, tf`: Initial and final times +* `V`: Voltage, or Total voltage (dim.: energy/charge; in SI: volt, V) +* `V1`: Voltage accross R1 (dim.: energy/charge; in SI: volt, V) +* `Vi, Vf`: Initial and final voltages (dim.: energy/charge; in SI: volt, V) +* `Vmax`: Maximum voltage (dim.: energy/charge; in SI: volt, V) +* `XC`: Reactance of capacitor (dim.: energy۰time/charge^2; in SI: ohm, Ω) +* `XL`: Reactance of inductor (dim.: energy۰time/charge^2; in SI: ohm, Ω) + +### Coulomb's Law & E Field + +These equations describe the electrostatic force between two point charged particles and the electric field measured at the location of a test charge + ## Fluids ## Forces and Energy diff --git a/help/db50x.md b/help/db50x.md index 4623e545..61d11d92 100644 --- a/help/db50x.md +++ b/help/db50x.md @@ -2293,6 +2293,41 @@ You can edit it by recalling its content on the stack using back to disk using `"config:equations.csv" STO`. # Release notes +## Release 0.7.17 "Open" - DoSubs, DoList, entering units + +This release adds `DoSubs`, `DoList`, `NSub` and `EndSub` commands, and fixes +related issues that were found with the associated examples in teh HP50G +Advanced Reference Manual. + + +### Features + +* lists: Implement `DoList`, `DoSubs`, `NSub` and `EndSub` +* units: Add usual "big" units to `Computing` units menu (e.g. KB, MB) +* graphics: Add `Freeze` command +* ui: Make it easier to enter units +* expressions: Accept algebraic forms for `integrate` and `root` +* expressions: Graphical rendering of integrals + +### Bug fixes + +* case: Preserve the code for the default case (which was lost before) +* parser: Parse arg-less alegbraic commmands such as `NSub` +* equations: Fix syntax errors in built-in equations, e.g. missing parentheses +* equations: Replace variables that match DB50X command names, e.g. `Re` +* equations: Replace imperial units with SI units, e.g. `in` with `cm` +* units: Reject user-defined functions in unit expressions +* constants: Fix definition for the `qε0` constant + +### Improvements + +* Update help about equations with some additional material +* tests: Run through all the builtin equations +* ui: Do not insert an extra space before parentheses in equation +* simulator: Add macOS icons for DB50X and DB50X +* font: Record saved font with `v` update + + ## Release 0.7.16 "Clean" - New commands The focus of this release is on new commands, notably for matrix and vector @@ -3848,6 +3883,7 @@ The following is a list of the HP50 RPL commands which are implemented in DB50X. * [COS](#cos) * [COV](#covariance) * [CRDIR](#crdir) +* [CROSS](#cross) * [C→R](#complextoreal) * [DATE](#date) * [→DATE](#setdate) @@ -3864,8 +3900,11 @@ The following is a list of the HP50 RPL commands which are implemented in DB50X. * [DISP](#disp) * [DISPXY](#dispxy) * [DIV2](#div2) -* [DOERR](#doerr) * [DO](#do) +* [DOERR](#doerr) +* [DOLIST](#dolist) +* [DOSUBS](#dosub) +* [DOT](#dot) * [DRAW](#draw) * [DRAX](#drax) * [DROP2](#drop2) @@ -4128,7 +4167,6 @@ of the HP48 commands. * CONIC * CORR * CR -* CROSS * CSWP * CURL * CYCLOTOMIC @@ -4158,10 +4196,7 @@ of the HP48 commands. * DIVMOD * DIVPC * dn -* DOLIST * DOMAIN -* DOSUBS -* DOT * DRAW3DMATRIX * DROITE * DUPDUP @@ -5178,27 +5213,27 @@ using the `config/equations.csv` configuration file. The variables in the columns and beams section are: -* `o`: Eccentricity (offset) of load -* `σcr`: Critical stress -* `σmax`: Maximum stress -* `θ`: Slope at `x` +* `o`: Eccentricity (offset) of load (dim.: length) +* `σcr`: Critical stress (dim.: pressure) +* `σmax`: Maximum stress (dim.: pressure) +* `θ`: Slope at `x` (dim.: angle) * `A`: Cross-sectional area * `a`: Distance to point load -* 'ε': Eccentricity +* 'ε': Eccentricity (dim.: length) * `c`: Distance to edge fiber (Eccentric Columns), or Distance to applied moment (beams) -* `E`: Modulus of elasticity -* `I`: Moment of inertia +* `E`: Modulus of elasticity (dim.: pressure) +* `I`: Moment of inertia (dim.: length^4) * `K`: Effective length factor of column * `L`: Length of column or beam -* `M`: Applied moment -* `Mx`: Internal bending moment at x -* `P`: Load (Eccentric Columns), or Point load (beams) -* `Pcr`: Critical load +* `M`: Applied moment (dim.: length۰force) +* `Mx`: Internal bending moment at x (dim.: length۰force) +* `P`: Load (Eccentric Columns), or Point load (beams) (dim.: force) +* `Pcr`: Critical load (dim.: force) * `r`: Radius of gyration * `V`: Shear force at x -* `w`: Distributed load +* `w`: Distributed load (dim.: force) * `x`: Distance along beam -* `y`: Deflection at x +* `y`: Deflection at x (dim.: length) For simply supported beams and cantilever beams (“Simple Deflection” through @@ -5265,6 +5300,55 @@ These equations apply to a slender column (`K·L/r>100`) with length factor `K`. ## Electricity +The variables in the electricity section are: + +* `∈r`: Relative permittivity +* `μr`: Relative permeability +* `ω`: Angular frequency (dim.: angle/time) +* `ω0`: Resonant angular frequency (dim.: angle/time) +* `φ`: Phase angle +* `φp, φs`: Parallel and series phase angles +* `ρ`: Resistivity (dim.: resistance۰length; in SI: ohm۰meter, Ω۰m) +* `ΔI`: Current Change (dim.: charge/time; in SI: ampere, A) +* `Δt`: Time Change +* `ΔV`: Voltage Change (dim.: energy/charge; in SI: volt, V) +* `A`: Wire cross-section area (Wire Resistance), os Solenoid cross-section area (Solenoid Inductance), or Plate area (Plate Capacitor) +* `C, C1, C2`: Capacitance (dim.: charge^2/energy; in SI: farad, F) +* `Cp, Cs`: Parallel and series capacitances (dim.: charge^2/energy; in SI: farad, F) +* `d`: Plate separation (dim.: length) +* `E`: Energy +* `Er`: Electric field at distance r from the source (dim.: force/charge; in SI: N/C = V/m) +* `Ep`: Electric field over an infinite plate (dim.: force/charge; in SI: N/C = V/m) +* `F`: Force between charges +* `f`: Frequency (dim.: time^-1) +* `f0`: Resonant frequency (dim.: time^-1) +* `I`: Current, or Total current (Current Divider) (dim.: charge/time; in SI: ampere, A) +* `I1`: Current in R1 (dim.: charge/time; in SI: ampere, A) +* `Imax`: Maximum current (dim.: charge/time; in SI: ampere, A) +* `L`: Inductance (dim.: energy/current^2; in SI: henry, H), or Length (Wire Resistance, Cylindrical Capacitor) +* `Lp, Ls`: Parallel and series inductances (dim.: energy/current^2; in SI: henry, H) +* `N`: Number of turns +* `P`: Power (dim.: energy/time) +* `q`: Charge (in SI: coulomb, C) +* `q1, q2`: Point charge (in SI: coulomb, C) +* `Qp, Qs`: Parallel and series quality factors +* `r`: Charge distance +* `R, R1, R2`: Resistance (dim.: energy۰time/charge^2; in SI: ohm, Ω) +* `ri, ro`: Inside and outside radii +* `Rp, Rs`: Parallel and series resistances (dim.: energy۰time/charge^2; in SI: ohm, Ω) +* `t`: Time +* `ti, tf`: Initial and final times +* `V`: Voltage, or Total voltage (dim.: energy/charge; in SI: volt, V) +* `V1`: Voltage accross R1 (dim.: energy/charge; in SI: volt, V) +* `Vi, Vf`: Initial and final voltages (dim.: energy/charge; in SI: volt, V) +* `Vmax`: Maximum voltage (dim.: energy/charge; in SI: volt, V) +* `XC`: Reactance of capacitor (dim.: energy۰time/charge^2; in SI: ohm, Ω) +* `XL`: Reactance of inductor (dim.: energy۰time/charge^2; in SI: ohm, Ω) + +### Coulomb's Law & E Field + +These equations describe the electrostatic force between two point charged particles and the electric field measured at the location of a test charge + ## Fluids ## Forces and Energy diff --git a/src/dm32/qspi_crc.h b/src/dm32/qspi_crc.h index bc9006df..f88808d8 100644 --- a/src/dm32/qspi_crc.h +++ b/src/dm32/qspi_crc.h @@ -1,4 +1,4 @@ -#define QSPI_DATA_SIZE 262020 +#define QSPI_DATA_SIZE 262556 #define QSPI_DATA_CRC 0x000cfed6 diff --git a/src/dm42/qspi_crc.h b/src/dm42/qspi_crc.h index e12c1b1f..55a4268e 100644 --- a/src/dm42/qspi_crc.h +++ b/src/dm42/qspi_crc.h @@ -1,4 +1,4 @@ -#define QSPI_DATA_SIZE 261564 +#define QSPI_DATA_SIZE 262100 #define QSPI_DATA_CRC 0x000cfed6