DB48X RPL Reference Programmer's guide · 604 commands, 194 flags, 165 settings, 66 menus · release 0.9.20 "Corpus" for SwissMicros DM42/DM32/DM42n

Page 1 explains the DB48X dialect of RPL: keyboard, objects, programs, locals, tests, loops, lists, flags, numbers, CAS, solvers, variables, I/O, plotting, units and the differences from HP48/50 RPL. A page on native C/C++ programs (DMCP SDK) follows. Then the index of every command, operator, flag, setting and menu from src/ids.tbl with its aliases, grouped by topic. Hover a row for aliases, HP flag number, stack diagram, description and the menu where it lives. Where the DB48X spelling differs from HP (e.g. Duplicate vs DUP) both are shown; all spellings are accepted on input.

Type:CommandFunction (usable in algebraics)Flag (● = default state)SettingMenuitalic aliases / HP spelling
Sources: DB48X source tree (src/ids.tbl, src/*.h, config/db48x.48k), help/db48x.md, doc/*.md and doc/8-menus-tree-dm42.md, release 0.9.20 "Corpus". github.com/c3d/db48x
Colour keythe machineentry, stack & displayprogrammingmathematicsdata objectssymbolic, solvers & financevariables & memoryinput, output & interfaceplotting & graphicsreference & systemnative code & hardware

DB48X Programmer's Reference

RPL as implemented by DB48X — syntax, semantics, idioms · click the title to collapse

Keyboard & Shifts

DM42/DM32 keys are described by their letter (A…Z, printed at the lower right of each key). One physical shift key cycles: 🟨 (yellow, first press) → 🟦 (blue, second press) → none. Holding 🟨 ≥½ s toggles Alpha. Long-press any function key or soft key → built-in help.

KeyUnshifted🟨 shift🟦 shift
AToolsMenu (context menu for level 1)LastMenu (←MENU)MainMenu (all menus)
B / C / Dinv / / ^ (pow)exp / / absln / xroot / AlgebraMenu
E / FMathMenu / ' () start expression, or () inside onePowersMenu / EquationsMenuPartsMenu / CharactersMenu
G / H / ISTO / VAR (ToggleCustomMenu) / STK (StackMenu)ComplexMenu / MemoryMenu / ConstantsMenuRealMenu / Library / FractionsMenu
J / K / Lsin / cos / tanasin / acos / atanHyperbolicMenu / CircularMenu / AnglesMenu
ENTERENTER (evaluate command line / DUP)ALPHA (cycles ABC → abc → off)TEXT: insert ""
M / N / OSwap (x⇆y) / neg (+/−) / Cycle (×10ⁿ, EEX while typing)LastArg / ModesMenu / DisplayModesMenuUndo / UserInterfaceModesMenu / PlotMenu
← (backspace)Drop when not editingClearThingsMenuUpDir
▲ (◀) / ▼ (▶)Interactive stack / Edit level 1; cursor left/right while editingCommand-line history / EditMenusame
P Q R S (7 8 9 ÷)digits, ÷SolverMenu IntegrationMenu [ ] StatisticsMenuSymbolicMenu PolynomialsMenu MatrixMenu TVM (FinanceSolverMenu)
T U V W (4 5 6 ×)digits, ×BasesMenu UnitsMenu FlagsMenu ProbabilitiesMenuTextMenu UnitsConversionsMenu TimeMenu NumbersMenu
X Y Z _ (1 2 3 −)digits, →Num USER (ToggleUserMode) ProgramMenu ListMenuDebugMenu LoopsMenu TestsMenu ObjectMenu
EXITcancel / interrupt program (Attn)OFF (OffWithImage)SAVE state (SaveState)
0 . R/S +0 . — R/S = space / = in expr / Run+SETUP (SystemSetup) Show « » CAT (Catalog)FilesMenu GraphicsMenu { } HELP

Alpha mode

  • 🟨 ENTER cycles ABC → abc → normal. Hold 🟨 ≥½ s toggles ABC. Hold ◀ (uppercase) or ▶ (lowercase) while typing = transient alpha.
  • In alpha, 🟨 gives digits/operators back; 🟨/🟦 on letter keys give Σ ^ √ ∂ σ ( ▶ % π < = > … and ∏ ∆ ↑ μ θ → ← ↓ ≤ ≠ ≥ ∫ [ # ∞ | & @ $ … ; · { } !
  • + in alpha (or 🟨 +) opens the Catalog: auto-completion of any command containing the typed letters; inside text it offers accents/variants of the last character, else the CharactersMenu.
  • F1–F6 = soft keys. Menus hold 18 items: row 1 unshifted, row 2 with 🟨, row 3 with 🟦; F6 = ▶ next page, 🟨 F6 = ◀ previous when >18 entries. Menu style: ThreeRowsMenus/SingleRowMenus/FlatMenus.

Editing

  • ▶ edits level 1; ◀ enters the interactive stack (◀▶ move, F-keys: Edit, Eval, Roll…, ENTER accept, EXIT cancel).
  • 🟨 ◀ / 🟨 ▶ move up/down in multi-line editor and recall command-line history. Long press auto-repeats.
  • EditMenu (🟨 ▶): select, word ◀/▶, begin/end, cut/copy/paste, incremental search, replace.
  • ENTER on an empty line = Dup; ← on empty line = Drop; typing a number then an operator key applies it (RPN).

Keyboard — the default DM42 map (config/db48x.48k)

Each key: 🟨 first-shift function, 🟦 second-shift function, then the unshifted binding with the alpha letter at right; last line = original DM42 label and the shifted alpha characters (α = 🟨/🟦 in alpha mode). ≡ marks a menu. Soft keys F1–F6 above row 1 are menu keys. In alpha mode the digit keys type letters; 🟨 restores digits.

🟨 ≡Last
🟦 ≡Main
≡ToolsA
Σ+ · αΣ ∏
🟨 exp
🟦 ln
x⁻¹B
1/x · α^ ∆
🟨 x²
🟦 xroot
C
√x · α√ ↑
🟨 abs
🟦 ≡Algebra
D
LOG · α∂ μ
🟨 ≡Powers
🟦 ≡Parts
≡MathE
LN · ασ θ
🟨 ≡Equations
🟦 ≡Characters
UIAlgebraicF
XEQ · α( ''
🟨 ≡Complex
🟦 ≡Real
StoreG
STO · α▶ →
🟨 ≡Memory
🟦 ≡Library
≡ToggleCustomH
RCL · α% ←
🟨 ≡Constants
🟦 ≡Fractions
≡StackI
R↓ · απ ↓
🟨 sin⁻¹
🟦 ≡Hyperbolic
sinJ
SIN · α< ≤
🟨 cos⁻¹
🟦 ≡Circular
cosK
COS · α≠
🟨 tan⁻¹
🟦 ≡Angles
tanL
TAN · α> ≥
🟨 UIAlpha
🟦 UIText
Duplicate
ENTER · α"
🟨 LastArguments
🟦 Undo
SwapM
x⇆y · α⇄ ~
🟨 ≡Modes
🟦 ≡UserInterfaceModes
NegateN
+/- · α± °
🟨 ≡DisplayModes
🟦 ≡Plot
CycleO
E · α∡ ε
🟨 ≡ClearThings
🟦 UpDirectory
Drop
← · α↵
🟨 EditorHistory
🟦 EditorHistory
StackEditor
🟨 ≡Solver
🟦 ≡Symbolic
“7”P
7 · α?
🟨 ≡Integration
🟦 ≡Polynomials
“8”Q
8 · α∫
🟨 “[·]”
🟦 ≡Matrix
“9”R
9 · α[
🟨 ≡Statistics
🟦 ≡FinanceSolver
/S
÷ · α/
🟨 ≡Edit
🟦 ≡Edit
Edit
🟨 ≡Bases
🟦 ≡Text
“4”T
4 · α#
🟨 ≡Units
🟦 ≡UnitsConversions
“5”U
5 · α∞
🟨 ≡Flags
🟦 ≡Time
“6”V
6 · α|
🟨 ≡Probabilities
🟦 ≡Numbers
*W
× · α*
🟨 UIRightShift
🟦 UINoShift
UILeftShift
SHIFT
🟨 →Decimal
🟦 ≡Debug
“1”X
1 · α&
🟨 ToggleUserMode
🟦 ≡Loops
“2”Y
2 · α@
🟨 ≡Program
🟦 ≡Tests
“3”Z
3 · α$
🟨 ≡List
🟦 ≡Object
-_
− · α…
🟨 PowerOffWithImage
🟦 SaveState
UIExit
EXIT
🟨 SystemSetup
🟦 ≡Files
“0”:
0 · α;
🟨 Show
🟦 ≡Graphics
UIDecimal,
. · α·
🟨 “«·»”
🟦 “{·}”
RunSPC
R/S · α{}
🟨 Catalog
🟦 Help
+CAT
+ · α!

Objects & Delimiters

TypeSyntax / examplesNotes
Integer ℤ123 -45 100!exact, arbitrary size (MaxNumberBits); TypeName → "integer"/"bignum"
Fraction ℚ2/3 (or 2 3 /), 1 ¹/₂ mixedfirst-class exact type; MixedFractions/ImproperFractions; →Q →Qπ →Num
Decimal123. 1.5E-3 0.5 (FancyExponent shows the exponent as a superscript)variable precision (Precision, default 24 digits); HardwareFloatingPoint → hwfloat/hwdouble
Based (binary)#1Ah #101b #77o #42d 16#1A 2#1010any base 2–36 with base#; WordSize truncation; Base command
Complex2+3ⅈ 1∡90° (2;3) (1∡90)rectangular or polar kept as entered; Cycle (EEX key) toggles; angle unit stored
Range / interval2…4 3±1 2±50% 4±σ3 (uncertain)arithmetic propagates bounds / uncertainty; →Range →∆Range →%Range →σRange
Text"Hello" (🟦 ENTER)UTF-8, + concatenates, × n repeats, Size = code points, Bytes = bytes
Symbol / name'X' in stack syntax; X evaluatescase-insensitive by default (DistinguishSymbolCase); ⓋName forces variable (not constant/command)
Expression'2+X*sin(Y)' 'X²+1'always an expression object even for '5' or 'N' (unlike HP)
Equation'A+B=C'expression containing =; solver / plot input; = also tests numeric equality
AssignmentX=6 R=20 (command line, outside quotes)stores 6 in X and pushes the assignment; DB48X extension used by the equation library
PolynomialⓅx²+2·x+1 (→Polynomial)dedicated multivariate polynomial type; Polynomial→ back to expression
List{ 1 'A' "Hi" { 2 3 } } (🟦 R/S)a bag: + appends/concatenates, × repeats; not evaluated as program (ListAsProgram)
Vector / matrix[1 2 3] [[1 2][3 4]] (🟨 R)any object types, N dimensions; arithmetic element-wise; matrix product with ×
Program« 1 + » (🟨 R/S)runs with Eval/Run (R/S key); →Program from list/expression
Unit object1_km/s shown 1 km/s; 3_m^2 1_kiB_ after a value; SI prefixes incl. Q R Y Z z y r q, binary Ki Mi Gi
Tagged:X:3 shows X:3; "X" 3 →Tagtags stripped by arithmetic; Tag→ DeleteTag
ConstantⒸπ Ⓒc ⒸG (also bare π, c if no variable)symbolic until →Num; ⓈX std uncertainty, ⓇX relative; from config/constants.csv
Library equation / itemⒺName (equations.csv), ⓁName (library.csv)EquationsMenu (🟨 F), Library (🟦 H); Attach/Detach/Libs
Directory{ Sub Var } paths in STO/RCL, CrDirvariables searched up through parents; Home UpDir Path
Graphicsgrob / bitmap / pixmap (→Grob, →Bitmap, Blank…)Show, Pict, GOr/GAnd/GXor; CompatibleGROBs
BooleanTrue Falsetests return these; any non-zero number is also true
Menu, font, keymapreturned by RecallMenu; KeyMap directoryspecial objects

Comments: @ text to end of line is kept in the program; @@ text is stripped when loading. Numbers: E (or ×10ⁿ key) enters an exponent; digit separators shown per MantissaSpacing (thin spaces by default) — never type them.

Programs & Local Variables

« obj₁ obj₂ … »program = sequence of objects (🟨 R/S inserts « ») « → a b 'ABS(a-b)' »local structure + algebraic body « → x y « x SQ y SQ + √ » »local structure + program body « ! 2 / » 'HALFFACT' STOstore, then run by name / VAR key « → x y 'x+2*y/x' » 'MyFN' STO 'MyFN(A;B)' EVALuser-defined function usable in algebraics (args separated by ;)
Object in programAction
Command / functionexecuted
Number, text, list, array, program, quoted name/expressionput on the stack
Unquoted global or local nameevaluated: program → run; directory → becomes current; other → put on stack. Locals evaluate too (differs from HP: no EVAL needed for a program in a local)
Ⓒname constant, / library refpushed symbolic (constant) / evaluated (library program)

Local variables

  • → a b c takes values from the stack in command-line order: 10 6 20 → a b c gives a=10, b=6, c=20 (c = level 1).
  • Locals exist only inside their body, are as fast as stack access, never show in VAR, and can be nested; inner bodies see outer locals; called global programs do not.
  • No compiled locals (←x) — pass values or use user-defined functions instead. Quote(x) prevents evaluation of an argument in an expression.
  • Store into a local with 'a' STO; recall without evaluation with 'a' RCL.

Running & stopping

  • Run: VAR soft key · type name + ENTER · program on stack + R/S (Run) or Eval · 'NAME' EVAL.
  • EXIT interrupts. With DebugOnError, an error halts in the debugger (Step / Continue) instead of killing (KillOnError).
  • Halt inserts a breakpoint; Debug starts a program stepping (SingleStep, StepOver, StepOut, MultipleSteps, Continue, Kill). Header shows ♦ halted, › stepping.
  • TimedEval runs an object and returns elapsed time; RunStats/GCStats for profiling.

Files & states

  • .48s files hold source (state files in STATE/), .48b binary, .txt text, .csv lists/arrays. "name.48s" STO/RCL read/write disk; "config:units.csv" RCL edits configuration.
  • 🟦 EXIT saves state; 🟨 0 SETUP opens the system menu (load/save/merge state, USB disk, DM42 program).

Tests & Logic

2 3 < → Falsestack syntax: level2 test level1 '2<3' → Truealgebraic syntax; 'X<5' stays symbolic until evaluated IF 'X' 5 > THEN "OK" ENDsymbolic tests auto-evaluate in IF/WHILE/UNTIL/CASE '0=0.0' EVAL → True '0==0.0' EVAL → False= value equality, == representation equality (on the command line X=6 is an assignment) 'A' 'B' SAME → Falsesame = object identity, does not evaluate names
TestMeaning
= numeric/value (in)equality; inside '…' also builds an equation for the solver
==same type and representation (1==1. is False)
< > order; text/lists/arrays compare lexicographically; symbolic if a name is involved
sameidentical objects (names not evaluated)
and or xor nottruth logic; bitwise on integers/based numbers (42 4 AND → 0). TruthLogicForIntegers restores HP behaviour
nand nor implies equiv excludesDB48X extensions (also bitwise on integers)
FS? FC? FS?C FC?C FS?S FC?Sflag tests (user flag n or setting name)
Type / TypeNameHP-compatible number (CompatibleTypes) or negative detailed (DetailedTypes) / text like "integer", "expression"

Truth: True/False objects; any non-zero number is true, 0 is false. Infix and/or/xor and prefix not work in algebraics: '3<5 XOR 4>7'.

Conditionals

IF test THEN true-clause END IF test THEN true-clause ELSE false-clause END test obj IFTrun obj if test true test objT objF IFTE / 'IFTE(t;a;b)'function form usable in expressions CASE t1 THEN c1 END t2 THEN c2 END default ENDfirst true test wins; optional default clause before final END X CASE 0 WHEN "zero" END 1 WHEN "one" END 2 WHEN "two" END ENDvalue WHEN = DUP value = THEN (DB48X); the value stays on the stack X CASE DUP 0 < THEN "N" END DUP 0 > THEN "P" END "Z" ENDdefault clause before the final END (in 0.9.20 a default after WHEN clauses also runs — use THEN clauses with a default) IFERR clause THEN trap [ELSE ok] ENDerror trap; errm errn give the error, err0 clears, doerr raises

TestsMenu (🟦 3) inserts the structures with the cursor placed inside; F-keys IfThen, IfElse, Case, IFT, IFTE. LoopsMenu (🟦 2) does the same for loops.

Loops

start stop START body NEXTcounted, no variable start stop START body incr STEPincrement may be negative/fractional start stop FOR i body NEXTlocal counter i; body may STO into i start stop FOR i body incr STEP { 1 3 5 } FOR i body NEXTDB48X: iterate a list or array (i = element); START also accepts a list DO body UNTIL test ENDruns at least once WHILE test REPEAT body ENDtest first 1 10 FOR i i SQ NEXT 10 →Listcollect results into a list { 1 2 3 } « 2 * » MAPfunctional alternatives: Map Filter Reduce DoList DoSubs

Loops always execute the FOR/START body at least once (10 1 FOR i … NEXT runs once, like HP). ListRecursionDepth (default 1) controls how deep Map and friends recurse into nested lists (0 = HP50G unlimited).

Lists, Arrays & Element Access

OperationList { } (bag)Array [ ] (values)
+append / concatenate: {1 2} 3 +{1 2 3}element-wise add or vector/matrix add: [1 2] 3 +[4 5]
×repeat: {1 2} 2 ×{1 2 1 2}scale, element-wise or matrix product; A B ÷ = A·B⁻¹
functions (sin, inv…)applied to every elementapplied to every element (abs too; norm for Euclidean norm)
n GET, {i j} GETn-th element; nested index pathrow […] for a matrix with a single index (unlike HP); {r c} element
Min Maxwhole-list lexicographic comparisonelement-wise
comparisonslexicographiclexicographic
Sizenumber of elements (1 for numbers, expressions, units)dimension list, e.g. {2 3}
Sort QuickSort Unique Reverse…sort (Quick… = unstable, faster); Unique drops consecutive duplicatessame
{ 1 2 3 } OBJ→ → 1 2 3 3Explode/Obj→ splits with count 1 2 3 3 →LIST → { 1 2 3 } 1 2 3 3 →ARRY → [1 2 3] {1 2 3} « 3 * » MAP {4 5} { 6 7 } 2 « + » DOLIST {1 2 3 4} « + » REDUCE → 10 {…} « 2 mod » FILTERReduce = Stream {1 2 3} ΣList ∏List ∆Listsum, product, successive differences { 1 2 3 } { 2 } 9 PUT « » →Programlists to programs with →Program

Tags are stripped by list arithmetic; quoted names inside lists stay quoted. Arrays may be ragged or mixed-type until an operation needs a shape.

Flags & Settings

33 SF 33 CF 33 FS? 33 FC? 33 FFuser flags 1…MaxFlags (128) 'MixedFractions' SF 'HideDate' CFsystem flags by name (any FLAG pair) -2 SF -22 FS?HP-compatible negative numbers (table below) 12 Precision 'Precision' RCL 16 'Base' STOsettings are commands and special variables Modes → M … ResetModes M EVALsave/restore all settings; RclF/StoF for the flag word 'DisplayMode' RCL → Fixread enum settings
HP flagDB48X name when setHP flagDB48X name when set
−1PrincipalSolution−52MultiLineResult
−2NumericalConstants−55NoLastArguments
−3NumericalResults−56BeepOff
−4CarefulEvaluation−61UserModeLock
−14TVMPayAtBeginningOfPeriod−62UserMode
−20 / −21UnderflowError / OverflowError−64IndexWrapped
−22InfinityValue−65MultiLineStack
−23 −24 −25 −26underflow−/underflow+/overflow/infinite indicators−97 / −98VerticalLists / VerticalVectors
−29 / −31NoPlotAxes / NoCurveFilling−100FinalAlgebraResults
−40 / −41 / −42ShowTime / Time24H / DayBeforeMonth−103ComplexResults
−51DecimalComma−126EchelonFormKeepLastColumn

Every FLAG in the index lists its opposite; the default state is the one marked ● in the Settings cards. FlagsMenu (🟨 6), ModesMenu (🟨 N), DisplayModesMenu (🟨 O).

Numbers, Precision & Display

  • 1 integer ≠ 1. decimal; integers/fractions are exact and usually faster than decimals. 2 3 /2/3; →Num (🟨 1) converts; NumericalResults forces decimals.
  • Precision (3…up to thousands of digits, default 24) drives all decimal math; the number of digits typed in a literal is kept as-is. HardwareFloatingPoint uses IEEE binary float for Precision ≤ 16 (fast, inexact for 0.2).
  • Display: Std (all digits), n Fix, n Sci, n Eng, n Sig (significant digits, e.g. 12 SIG ≈ HP48 STD). StandardExponent (default 9) sets when Std switches to scientific. MinimumSignificantDigits controls Fix→Sci fallback.
  • Separators: DecimalDot/DecimalComma; MantissaSpacing (3), FractionSpacing (5), BasedSpacing (4); NumberSpaces/NumberDotOrComma/NumberTicks/NumberUnderscore; LeadingZero (0.5 vs .5); FancyExponent (superscript vs E).
  • Exponents up to ±2⁶⁰; overflow/underflow/∞/undefined behaviour chosen by OverflowValue, UnderflowValue, InfinityValue, UndefinedValue (indicator flags −23…−26 record events).
  • Based numbers: #… uses the current Base (Bin/Oct/Dec/Hex or 36 Base); 16#1A fixes a base; results wrap to WordSize bits (default 64; up to 256 kbits); RealToBinary/BinaryToReal (R→B B→R).
  • Cycle (EEX/×10ⁿ key on a stack object): decimal ↔ fraction, rect ↔ polar, integer ↔ based (2/8/10/16), array ↔ list ↔ program, text ↔ symbol, unit ↔ SI prefixes, range formats.
  • Angles: Deg Rad Grad PiRadians; angle-typed values 30_°, 1_r, 2_πr; →Deg/→Rad/… convert; SetAngleUnits makes trig-inverse results carry the unit.
  • Random: Random (RAND), RandomSeed (RDZ), a b Random in a range; ACORN generator (RandomGeneratorBits/Order).

Algebraics & CAS

'2+3×5' EVAL → 17'…' key F; R/S evaluates; →Num forces numeric 'X+1' 3 × → '(X+1)·3'build expressions from RPN keystrokes 'Σ(i;1;10;i^2)' 'i' 1 10 'i^2' Σ; separates ALL arguments (no i=1); same for '∫(0;1;X^2;X)' 0 1 'X^2' 'X' ∫symbolic when possible, else numeric (SymbolicIntegration) '∂X(sin(2*X))' → '2·cos(2·X)' 'sin(2*X)' 'X' ∂full differentiation in both syntaxes; F′, F′₁ for user fns 'A+B|A=X|B=Y+Z|Z=42' → 'X+Y+42'| where: chained substitutions, applied left to right 'X^2-2' 'X' ISOL 'X^2-2' 'X' ZEROSisolate a variable / list of zeros 'A+B+0' { 'X+0' 'X' } ↓MATCH → 'A+B' 1rewrite rules; returns count of rewrites '(A+B)^3' { 'X^k' 'X*X^(k-1)' } ↓MATCH → '(A+B)·(A+B)↑2' 1wildcards = any name (&A = literal A unless ExplicitWildcards); k = non-zero integer 'A+B+C' { 'X+Y' 'Y-X' } ↓MATCH → 'C-(B-A)' 2rules repeat until stable (FinalAlgebraResults) 'X^2+2*X+1' →POLY PROOT PCOEF PEVALpolynomial type; [a b c] coefficient vectors 'A^2+2*A*B' EXPAND COLLECT SIMPLIFYFoldConstants, ReorderTerms, TrigSin, Apply, Subst, Quote
Rule wildcard initialMatches
a b cnumerical constants
i jpositive integers incl. 0 (may be computed)
k l mnon-zero positive integers
n o psymbols / names
u v wunique terms (matched once)
lowercase initialoperands must be sorted (x+y matches A+B not B+A)

Settings: AutoSimplify (X+0X), SymbolicResults/NumericalResults (−3), SymbolicConstants/NumericalConstants (−2), FinalAlgebraResults (repeat rules until stable) vs StepByStepAlgebraResults, MaxRewrites, ComplexResults (−103), PrincipalSolution (−1). = CAS config directory, /Stoⓧ = CAS variable (default X). Precedence follows normal math; and ^ are power, ·/× product, = lowest.

Solvers, Integration & Finance

'sin(x)=cos(x)/3' 'x' 0.5_° ROOT → x=18.43°expr/equation, variable, guess (unit fixes result unit) 'ROOT(sin(x)=cos(x)/3;x;1.5_°)' EVALalgebraic form; guess can be {lo hi} { 'sin(x)=y' '7*y^3=2' } { x y } { 0 0 } ROOTmultiple equations solved one at a time (MES) [ 'X^2+Y^2=1' '(X-1)^2+Y^2=1' ] [X Y] [0 0] ROOTJacobian solver when equations are coupled '(X-5)²+3' 'X' 0+0ⅈ ROOTcomplex guess → complex root 'x^2+1' STEQ SolvingMenuinteractive solver: F-key stores, 🟨 solves, 🟦 recalls; Equation may be a list (NextEq) 'X^3-X^2-8*X+12' 'X' ZEROS → { -3 2 }exact/symbolic zeros when possible 0 1 'X^2' 'X' ∫ → 1/3 2 22 '1/X' 'X' ∫symbolic if SymbolicIntegration, else numeric to IntegrationImprecision TVM (🟦 S): n I%Yr PV PMT FV PYr — 🟨 key solvesTVMRoot, Amort, AmortTable, TVMEquation, TVMBeg/TVMEnd (flag −14), FinanceRounding

Root returns an assignment x=value and also stores the variable; if no root is found it errors (HP silently returns an extremum) but leaves the closest value in the variable. SolverImprecision (6) digits are given up relative to Precision; SolverIterations, SolverShuffles tune the search; SymbolicSolver lets Root try Isolate first. Library equations (EquationsMenu, 🟨 F) come with variables and units; use assignments α=20 β=30 then '…' STEQ SolvingMenu.

Variables, Directories & Files

2 'ABC' STO 'ABC' RCL ABCstore / recall / evaluate; X=6 also stores 42 { SubDir FortyTwo } STOpath through directories (list or array); may start with Home 1 'A' STO+ 'A' INCR 'A' RCL+ 5 'A' ▶ (Copy)Sto+ Sto− Sto× Sto÷ Rcl± Increment Decrement; stores and keeps value { A B } PURGE 'X' PGALL 'D' PGDIRpurge here / in all enclosing dirs / directory with contents { Tools Examples } CRDIR UPDIR HOME PATHdirectories; recall searches parents, store is local VARS { 8 } TVARS { A B } ORDERlist / typed list / reorder VAR menu 1 "FOO.TXT" STO "prog.48s" RCL "data.csv" STOtext name = file on flash (DATA/…); .48s source, .48b binary, .csv, .txt "config:units.csv" RCL … STOedit configuration files (units, constants, equations, library, characters)
  • Names are case-insensitive but case-preserving; a name equal to a command cannot be a variable (ⓋClone escapes). NumberedVariables allows integer names.
  • VAR menu (H): key = evaluate, 🟨 = recall, 🟦 = store. Second press of VAR = CustomMenu (variable CustomMenu = list of { "label" obj }).
  • Sto into a setting name changes the setting; text names hit the file system; the Header and KeyMap variables customize the display and keyboard.
  • Memory: Mem (AvailableMemory), FreeMemory, Bytes, GC, Clone. Objects are compact (small ints 2 bytes, common commands 1 byte).

Input, Output, Menus & Keys

"Enter n" { 42 0 number } INPUTprompt, default text/list {init cursor validator}; validators: text alg algebraic expression object objects program number real integer positive or « prog » "Msg" PROMPT … (user presses R/S to Run)suspend program, message in header 0 WAIT → keycode 2.5 WAIT -1 WAITwait for key (returns code; −1 shows menu) or seconds "Hi" 1 DISP "x" { #10 #20 } 2 DISPXY CLLCD FREEZEtext at line n / at pixel coords with font n; Show (🟨 .) full-screen render 440 0.5 BEEP obj "label" →TAG « TIME " " PATH →TEXT + » HEADER 10000 CustomHeaderRefreshcustom header program (variable Header) { { "1+" « 1 + » } { "10+" « 10 + » } } MENUcustom menu (also TMENU temporary); matrix = vertical items; RCLMENU, 0 MENU = LastMenu 'ASN' 34 ASN 'StandardKey' 34 ASNuser key: object, position rc.ph (row col . plane hold); planes 1 none 2🟨 3🟦 4 α 5 α🟨 6 α🟦 7 a 8 a🟨 9 a🟦 { "α" 21.5 "β" 22.5 } STOKEYS RCLKEYS 0 DELKEYSstored in KeyMap directory per directory (hierarchical); USER = 🟨 2, UserModeLock/UserModeOnce

Help (🟦 +) shows help for a topic text on level 1 or the type of the object; long-press any key for its help. Catalog auto-completes; ToolsMenu (A) picks a menu for the object in level 1 (e.g. DebugMenu for programs, ComplexMenu for complex).

Plotting & Graphics

'sin(x)*cos(3*x)' FunctionPlotalso PolarPlot (r=f(x)), ParametricPlot (complex result), TruthPlot (x,y → bool/gray/color), ScatterPlot BarPlot HistogramPlot (ΣData) 'EQ' … DRAW DRAXplot the Equation variable, draw axes (-10;-6) PMIN (10;6) PMAX -1.5 1.5 XRNG -2 2 YRNGPlotParameters (PPAR): {ll ur indep res axes type dep}; 'PPAR' PGALL resets 'T' INDEP { 'T' 0 6.28 } INDEP 'U' DEPND #400 RES (0;0) 1 CIRCLE { #10 #20 } { #100 #50 } LINE RECT RRECT ELLIPSEcoords: complex, {x y} list/vector; based #n = pixels (0..399 × 0..239), else user units #10 #10 PIXON PIXOFF PIX? PIXC? { #0 #0 } { #399 #239 } CLIP 50 50 BlankGraphic { #0 #0 } { #49 #49 } RECTgrob/bitmap/pixmap objects; →Grob renders any object (Show) g1 g2 GOR / GAND / GXOR PICT LCD→ →LCD ScreenCapturecombine, screen grob 0.5 GRAY 0 1 0 RGB 120 1 1 HSV "red" COLOR 3 LineWidthdrawing patterns/colors (grayscale on DM42, color on DM42n)

Freeze keeps the graphic; the stack/menu resume at the next key. NoPlotAxes, NoCurveFilling, XYPlotBins, StatsPlotBins, GraphingTimeLimit, PlotRefreshRate tune plotting. GraphicAppend/Stack/Ratio/Root/… typeset formulas as graphics.

Units, Constants & Libraries

3_km 2_mi + → 6.21… km 1_m 1_ft CONVERTresult in the unit of level 2 / convert to unit of level 1 3_km UBASE → 3000 m UVAL → 3 UFACT 3 1_km →UNITbase units, value, factor, apply the unit of a unit object UnitsMenu (🟨 5): key applies unit, 🟨 converts to it, 🟦 divides by ite.g. 6_m [🟦 s] → 6 m/s; Cycle steps SI prefixes Ⓒc → 299 792 458 m/s 'c' CONST 'c' CstSU →Us →Urconstants: value, std uncertainty (ⓈX), relative (ⓇX), StdRnd RelRnd PrcRnd Ⓔ"Simple Shear" LIBEQ ⓁDedicace XLIBlibrary equations / items; Attach Detach Libs Constants
Unit menusAt a glance
Length · Area · Volumem ft in mi nmi au lyr · m² ha acre b · m³ l gal qt pt floz galUK bbl
Time · Speed · Masss min h d yr Hz rpm · m/s km/h mph knot c · kg lb oz t ct u Da
Force · Energy · PowerN dyn kip lbf pdl · J erg cal Btu eV therm · W hp
Fluids · Electricity · AngleK °C °F Pa atm bar psi torr · A V C Ω F H S T Wb · ° grad r πr sr
Light · Radiation · Computingcd lm lx fc nit sb · Gy rad rem Sv Bq Ci R · bit byte KiB MB bps baud flops dB
Constants menusMathematics (π e ⅈ ∞ ? τ …) · Chemistry · Physics · Electromagnetism · Quantum · Mass · Size · Scattering · Astronomy (planets, Sun) · Materials · Computing · Dates

Every built-in unit

DB48X ships 272 unit definitions across 13 menus — the complete table below, read straight from src/unit.cc. A definition of = base unit means the unit is its own base — the SI unit for that menu, or one the firmware derives directly from it. Everything else shows the exact conversion the firmware uses; note these are exact fractions, not decimals, so 1_ft is 3048/10000_m and round-trips without error.

Length · 46 units

GroupUnitDefinitionMeaning
Human scalem1 mmeter, based for SI lengths
Human scaleyd9144/10000 myard
Human scaleft3048/10000 mfoot
Human scaleftUS1200/3937 mUS survey foot
Human scaleUS1 ftUS/ftConversion factor
Small stuffcm= base unitCentimeter
Small stuffmm= base unitMillimeter
Small stuffin254/10000 minch
Small stuffmil254/10000000 mA thousands of a inch (min is taken)
Small stuffμ1 μmA micron can be written as μ
Short travel distancekm= base unitKilometer
Short travel distancemi5280 ftMile
Short travel distancenmi1852 mNautical mile
Short travel distancemiUS1 mi*USMile (US Survey)
Short travel distancefur660 ftFurlong
US Surveych66 ftChain
US Surveyrd1/4 chRod, pole, perch
US Surveycable720 ftCable's length (US navy)
US Surveyfath6 ftFathom
US Surveyleague3 miLeague
AstronomyMpc= base unitMegaparsec
Astronomypc30856775814913673 mParsec
Astronomyau149597870700 mAstronomical unit
Astronomylyr31557600 lsLight year
Astronomyls299792458 mLight-second
US Survey, convert between pre-2023 and post-2023mi= base unitNew mile
US Survey, convert between pre-2023 and post-2023miUS= base unitOld mile
US Survey, convert between pre-2023 and post-2023ft= base unitNew foot
US Survey, convert between pre-2023 and post-2023ftUS= base unitOld foot
US Survey, convert between pre-2023 and post-2023US= base unitConversion factor
Nauticalnmi= base unitNautical mile
Nauticalcable= base unitCable length
Nauticalli1/100 chLink
Nauticalacable18532/100 mCable's length (Imperial/Admiralty)
Nauticalicable1852/10 mCable's length ("International")
Microscopic100 pmAngstroem is 100pm, 1E-10m
Microscopicfermi1 fmfermi is another name for femtometer
Microscopicμm= base unitMicron
Microscopicnm= base unitNanometer
Long-name aliaseschain1 chChain
Long-name aliasesfathom1 fathFathom
Long-name aliasesfurlong1 furFurlong
Long-name aliaseslink1 liLink
Long-name aliasesrod1 rdAlternate spelling
Long-name aliasespole1 rdPole
Long-name aliasesperch1 rdPerch

Area · 20 units

GroupUnitDefinitionMeaning
Human scale= base unitSquare meter
Human scaleyd²= base unitSquare yard
Human scaleft²= base unitSquare foot
Human scalein²= base unitSquare inch
Human scalecm²= base unitSquare centimeter
Surveyingkm²= base unitSquare kilometer
Surveyingmi²= base unitSquare mile
Surveyingha= base unitHectare
Surveyinga100 m²Are
Surveyingacre1 acAcre
US-Survey conversionac10 ch²Acre
US-Survey conversionacUS10 ch²*US²Acre (pre-2023)
US-Survey conversionmi²= base unitSquare mile
US-Survey conversionmiUS²= base unitSquare mile (pre-2023)
US-Survey conversionUS²= base unitConversion factor
Microscopic stuff and aliasesb100 fermi²Barn, 1E-28 m^2
Microscopic stuff and aliasesbarn1 bBarn, 1E-28 m^2
Microscopic stuff and aliasesmm²= base unitSquare millimeter
Microscopic stuff and aliasesμm²= base unitSquare micron
Microscopic stuff and aliasesnm²= base unitSquare nanometer

Volume · 31 units

GroupUnitDefinitionMeaning
Usual= base unitCubic meter
Usuall1 dm³Liter
Usualgal231 in³Gallon
Usualcm³= base unitCubic centimeter
Usualmm³= base unitCubic millimeter
Imperial unitsgal= base unitGallon
Imperial unitsqt1/4 galQuart
Imperial unitspt1/8 galPint
Imperial unitscup1/16 galCup
Imperial unitsfloz1/32 qtFluid ounce
Human scale= base unitCubic meter
Human scaleyd³= base unitCubic yard
Human scaleft³= base unitCubic foot
Human scalein³= base unitCubic inch
Human scalecm³= base unitCubic centimeter
More imperial unitsgill1/32 galGill
More imperial unitsdrqt67200625/1000000 in³US dry quart
More imperial unitsdrgal4 drqtUS dry gallon
More imperial unitsbu32 drqtUS dry bushel
More imperial unitspk8 drqtUS dry peck
Other gallons, just becausegalC4546090 mm³Canadian gallon
Other gallons, just becausegalUK4546092 mm³UK gallon
Other gallons, just becauseptUK1/2 galUKUK pint
Other gallons, just becauseozUK1/40 galUKUK fluid ounce
Other gallons, just becausefbm1 ft²*inBoard foot
Other funny volume unitstbsp4 ozTablespoon
Other funny volume unitstsp1/3 tbspTeasppon
Other funny volume unitsst1 m³Stere (wood volume)
Other funny volume unitsbbl7056 in³Barrel
Other funny volume unitscrbl5826 in³Cranberry barrel
Other funny volume unitsLlLiter can be spelled uppercase

Time · 16 units

GroupUnitDefinitionMeaning
Basic time unitss1 sSecond
Basic time unitsmin60 sMinute
Basic time unitsh3600 sHour
Basic time unitsd86400 sDay
Basic time unitsyr36524219/100000 dMean tropical year
FrequenciesHz1 s⁻¹Hertz
FrequencieskHz= base unitKilohertz
FrequenciesMHz= base unitMegahertz
FrequenciesGHz= base unitGigahertz
Frequenciesrpm1 turn/minRotations per minute
Alias names for common time unitsyear1 yrYear
Alias names for common time unitsday1 dDay
Alias names for common time unitshour1 hHour
Alias names for common time unitsminute1 minMinute
Alias names for common time unitssecond1 sSecond
Alias names for common time unitshms1 hHour/minutes/seconds to hours

Speed · 9 units

GroupUnitDefinitionMeaning
Standard speedm/s= base unitMeter per second
Standard speedkm/h= base unitKilometer per hour
Standard speedft/s= base unitFeet per second
Standard speedmph1 mi/hMiles per hour
Standard speedknot1 nmi/h1 knot is 1 nautical mile per hour
Physicsc299792458 m/sSpeed of light
Physicsga980665/100000 m/s^2Standard freefall acceleration
PhysicsG1 gaAlternate spelling (1_G)
Physicskph1 km/hUS common spelling for km/h

Mass · 30 units

GroupUnitDefinitionMeaning
Metric unitskg1 kgKilogram (SI base unit)
Metric unitsg1/1000 kgGram
Metric unitst1000 kgMetric ton
Metric unitsct200 mgCarat
Metric unitsmol1 molMole (quantity of matter)
Imperial unitslb45359237/100000 gAvoirdupois pound
Imperial unitsoz1/16 lbOunce
Imperial unitsdr1/256 lbDrachm
Imperial unitsstone14 lbStone
Imperial unitsgrain1/7000 lbGrain (sometimes "gr")
UK/US conversionsqrUK28 lbQuarter (UK)
UK/US conversionsqrUS25 lbQuarter (US)
UK/US conversionscwtUK112 lbLong hundredweight (UK)
UK/US conversionscwtUS100 lbShort hundredweight (US)
UK/US conversionsgr1 grainGrain
UK/US conversionstonUK20 cwtUKLong ton
UK/US conversionstonUS20 cwtUSShort ton
UK/US conversionston1 tonUSShort ton
UK/US conversionsslug1 lbf*s^2/ftSlug (what?)
UK/US conversionsblob12 slugBlob (seriously????)
Troy weight systemdwt24 grainPennyweight (Troy weight system)
Troy weight systemozt20 dwtTroy ounce
Troy weight systemlbt12 oztTroy pound
Troy weight systemdram1 drAlternate spelling
Troy weight systemdrachm1 drAlternate spelling
Alternate spellingsmole1 molMole (quantity of matter)
Alternate spellingscarat1 ctCarat
Alternate spellingsu1.66053906892E-27 kgUnified atomic mass
Alternate spellingsDa1.66053906892E-27 kgDalton (Alternative spelling for u)
Alternate spellingsAvogadro6.02214076E23Avogadro constant (# units in 1_mol)

Force · 6 units

GroupUnitDefinitionMeaning
N1 kg*m/s^2Newton
dyn1/100000 NDyne
kip1000 lbfKilopound-force
lbf44482216152605/10000000000000 NPound-force
gf980665/100000000 NGram-force
pdl138254954376/1000000000000 NPoundal

Energy · 12 units

GroupUnitDefinitionMeaning
J1 kg*m^2/s^2Joule
erg1/10000000 Jerg
Kcal= base unitLarge calorie
cal41868/10000 JInternational calorie (1929, 1956)
Btu1055.05585262 JBritish thermal unit
calth4184/1000 JThermochemical Calorie
cal44204/1000 J4°C calorie
cal1541855/10000 J15°C calorie
cal204182/1000 J20°C calorie
calmean4190/1000 J4°C calorie
therm105506000 JEEC therm
eV1.60217733E-19 Jelectron-Volt

Power · 5 units

GroupUnitDefinitionMeaning
W1 J/sWatt
kW= base unitKilowatt
MW= base unitMegawatt
GW= base unitGigawatt
hp745.699871582 WHorsepower

Fluids · 27 units

GroupUnitDefinitionMeaning
K1 KKelvin
°C'(°C+273.15)' KCelsius
°R5/9 KRankin
°F'((°F+459.67)*5/9)' KFahrenheit
°D'(373.15-2/3*°D)' KDelisle
Pa1 N/m^2Pascal
atm101325 PaAtmosphere
bar100000 Pabar
psi6894.75729317 PaPound per square inch
ksi1000 psiKilopound per square inch
kPa= base unitKilopascal
mmHg1 torrmillimeter of mercury
inHg1 in/mm*mmHginch of mercury
inH2O249.0889 PaInch of H2O
torr1/760 atmTorr = 1/760 standard atm
m³/yr= base unitCubic meters per year
m³/d= base unitCubic meters per day
m³/h= base unitCubic meters per hour
l/min= base unitliters per minute
l/s= base unitliters per second
cm³/s= base unitCubic centimeters per second
gal/yr= base unitGallons per year
gal/d= base unitGallons per day
gal/min= base unitGallons per minute
gal/s= base unitGallons per second
P1/10 Pa*sPoise
St1 cm^2/sStokes

Electricity · 13 units

GroupUnitDefinitionMeaning
A1 AAmpere
V1 kg*m^2/(A*s^3)Volt
C1 A*sCoulomb
Ω1 V/AOhm
F1 C/VFarad
Fdy96487 A*sFaraday
H1 ohm*sHenry
S1 A/VSiemens
T1 V*s/m^2Tesla
Wb1 V*sWeber
mho1 SOhm spelled backwards
ohm1 ΩOhm
1 ΩRobustness: Unicode u8486 vs u937

Angles · 10 units

GroupUnitDefinitionMeaning
turn1 turnFull turns
°1/360 turnDegree
grad1/400 turnGrad
r'0.5/Ⓒπ' turnRadian
πr1/2 turnPi radians
dms1 °Degrees shown as DMS
arcmin1/60 °Arc minute
arcs1/60 arcminArc second
sr1 srSteradian
pir1/2 turnPi radians

Light/radiation · 47 units

GroupUnitDefinitionMeaning
cd1 cdCandela
lm1 cd*srLumen
lx1 lm/m^2Lux
fc1 lm/ft^2Footcandle
flam1 cd/ft^2*r/pirFoot-Lambert
ph10000 lxPhot
sb10000 cd/m^2Stilb
lam1 cd/cm^2*r/pirLambert
nit1 cd/m^2Nit
nt1 cd/m^2Nit
Gy1 m^2/s^2Gray
rad1/100 m^2/s^2rad
rem1 radrem
Sv1 GySievert
Bq1 HzBecquerel (disintegrations/s)
Ci37 GBqCurie
R258 µC/kgRoentgen
Computingbit1 bitBit
Computingbyte8 bitByte
Computingbps1 bit/sbit per second
Computingbaud1 bps/SRbaud
Computingflops1 flopsFloating point operation per second
ComputingKiB= base unitUsual sizes with powers of two
ComputingMiB= base unit
ComputingGiB= base unit
ComputingTiB= base unit
ComputingPiB= base unit
ComputingKB= base unitUsual sizes with powers of 10
ComputingMB= base unit
ComputingGB= base unit
ComputingTB= base unit
ComputingPB= base unit
ComputingB1 byteByte
ComputingBd1 baudbaud (standard unit)
Computingmips1 mipsMillion instructions per second
ComputingSR1Symbol rate (default is 1)
ComputingdB1 dBdecibel
Computingkbit/s= base unit
ComputingMbit/s= base unit
ComputingGbit/s= base unit
Computingkbaud= base unit
Computingkbps= base unit
ComputingMflops= base unit
ComputingGflops= base unit
ComputingTflops= base unit
ComputingPflops= base unit
ComputingEflops= base unit

All from config/units.csv, constants.csv, equations.csv (menu name row, then "name","definition" rows; "=" = self-defined; "=Cycle" menu customizes Cycle). Built-in ones hide when a file exists (ShowBuiltinUnits…). Exact fraction factors (1_ft = 3048/10000_m); 2023 US survey foot handled.

Differences from HP48/50 RPL

  • Commands have long and short spellings, all case-insensitive; display per LongForm/UpperCase/… A word that is a command cannot be a variable (ⓋDup if needed).
  • Local names evaluate (no EVAL needed); lists are data by default (ListAsProgram to change); CASE … WHEN; no compiled locals ←x.
  • = tests numeric equality; == structural; 'N' and '5' are expressions (Type 9). Tests return True/False, not 1/0.
  • Integers, fractions and decimals are distinct types (11.); complex polar/rectangular kept; Size is 1 for numbers/expressions/units.
  • AND/OR/NOT are bitwise on integers (TruthLogicForIntegers restores HP). Σ(i;1;10;i²) — no i=1 syntax.
  • Lists: + concatenates, × repeats, Min/Max compare whole lists; arrays: element-wise arithmetic and functions; [[…]] 1 GET returns a row; abs on arrays is element-wise (norm = HP ABS).
  • ↑Match/↓Match return the number of rewrites and repeat until stable; wildcards are any name; letters carry meaning; | chains substitutions.
  • derivative of user function F is F′ (not d1F); unknown derivatives error; always differentiates fully.
  • LastArg saved only for interactive commands by default (ProgramLastArguments for programs); Undo is a real command.
  • Root handles multiple equations/variables and complex guesses, errors when no root; Type needs CompatibleTypes for HP numbers; TypeName preferred.
  • Menus by name (no numbers): MainMenu, LastMenu; key assignments live in the KeyMap variable per directory. Settings are named flags/variables ('Precision' STO).
  • Storage: "file.48s" STO/RCL on the USB flash; states .48S; no ports/libraries — Library, Constants, Equations come from CSV files.
  • Num/Chr are Unicode code points; Size of text = characters; leading zero shown (0.5); huge exponent range (±2⁶⁰); flags negative numbers only for HP-known flags.

Idioms

« → r '4/3*Ⓒπ*r^3' →NUM » 'VOL' STOsymbolic constant → numeric result « DUP2 POW UNROT DUP2 + UNROT SQ SWAP SQ SWAP - / - »pure stack style (half the bytes of locals) « → x y 'x^y-(x+y)/(x^2-y^2)' »same, readable IFERR 'sq(X-5)+3' 'X' 0 ROOT THEN "no root" ENDtrap solver failure « Modes → M « … ResetModes M EVAL » »run with modified settings, restore after « 0 1 10 FOR i i + NEXT » { 1 2 3 } « + » REDUCEsum { } 1 100 FOR i IF i ISPRIME THEN i + END NEXTcollect primes into a list « → n « IF n 1 ≤ THEN 1 ELSE n 1 - MyFact n * END » » 'MyFact' STOrecursion by name (Fact would clash with the built-in fact command) 'Precision' RCL 60 Precision … 'Precision' PURGEtemporarily raise precision (purge = default) R=20 H=18 SPHset globals with assignments, run DetailedTypes "x" TYPE → -3 "x" TYPENAME → "text" LIBS DUP DETACH ATTACHreload library after editing library.csv 'PPAR' PGALLreset plot parameters « "Enter number then press Run" PROMPT 1 + »interactive input via R/S 16#FF 2#1010 AND #FF 8 SL 64 WordSizebinary work DEBUG Step / Over / Steps / Continue / Kill (DebugMenu, 🟦 1)debugging a program on the stack

Native C/C++ Programs for the DM42 (DMCP)

writing, building and loading your own firmware programs next to DB48X · SwissMicros DMCP SDK, NOMAS · click the title to collapse

Native programs on DMCP — the model

The DM42/DM32/DM42n run DMCP, SwissMicros' boot loader + OS. DMCP owns the hardware and loads exactly one program (a .pgm on DM42, .pg5 on DM32/DM42n) into flash; DB48X, the stock DM42 firmware and your own code are all such programs. Your program is a bare-metal C/C++ image (no OS threads, no MMU) that calls DMCP services through a fixed function table (dmcp/lft_ifc.h, LIBRARY_FN_BASE) — LCD, keyboard, FAT file system, RTC, timers, buzzer, USB, malloc, printf.

PieceWhat it is
dmcp/dmcp.hthe API (all prototypes, key codes, STAT_* flags, KEY_*, LCD_X/LCD_Y, menus, FatFs ff_ifc.h)
dmcp/startup_pgm.sProgram_Entry: copies .data, zeroes .bss, runs static constructors, calls program_main()
dmcp/sys/pgm_syscalls.cnewlib glue: malloc/free/realloc and _write forward to DMCP; defines the prog_info header (magic, entry, IFC version, QSPI size/CRC, name, version, keymap id)
stm32_program.ldmemory map: program FLASH 704 KB @0x08050000 (DM42) · 1024 KB @0x080A0000 (DMCP5) · static RAM only 8 KB · QSPI 2 MB @0x90000000 (read-only data)
bin/add_pgm_chsum, bin/check_qspi_crcwrap the flash image into a .pgm with checksum; verify the QSPI image CRC matches src/qspi_crc.h
lib/gcc111libbid_hard.aIntel BID decimal library (bid128_*) — optional, what SDKdemo uses for numbers
sourcesgithub.com/swissmicros/DMCP_SDK (hello world) · SDKdemo (RPN calc; a copy lives in db48x/dmcp/) · DMCP5_SDK (DM32/DM42n) · DM42PGM (stock firmware) · DB48X src/dmcp/main.cc (big C++ example) · docs technical.swissmicros.com/dmcp/doc/DMCP-ifc-html/

Memory rules

  • Globals/statics + stack share the 8 KB RAM section (DMCP5 layout differs, still small) — keep static data tiny; put big buffers on the DMCP heap with malloc(); sys_free_mem() tells you how much is left (DB48X grabs sys_free_mem() − 10 KB for its whole object store, i.e. roughly 70 KB on a DM42).
  • Constant tables can go in flash (const); the 2 MB QSPI is for large read-only data but the DM42 loader only accepts a QSPI image whose CRC matches the stock one — leave the .qspi section empty unless you rebuild the QSPI image (DB48X's make does the CRC trick).
  • No exceptions, RTTI, iostream, std:: containers or new[] in DB48X-style builds (-fno-exceptions -fno-rtti, newlib-nano). Plain C, printf (-u _printf_float), malloc, memcpy, strlen etc. work.
  • FPU is single precision (-mfpu=fpv4-sp-d16): float is hardware, double is software; the BID library gives 34-digit decimals if you need calculator-grade math.

SwissMicros publishes the SDK as “NOMAS” — NOt MAnufacturer Supported: use it, but don't expect support.

Toolchain, Makefile & build

brew install arm-none-eabi-gcc coreutilsmacOS (Fedora: dnf install arm-none-eabi-gcc arm-none-eabi-gcc-cs-c++ arm-none-eabi-newlib); needs bash dd sed tac printf find crc32 sha1sum git clone https://github.com/swissmicros/SDKdemo && cd SDKdemo && make→ build/SDKdemo.pgm (or start from db48x/dmcp/) TARGET = MyProg # Makefile #define PROGRAM_NAME "MyProg" # src/main.hname shows in the DMCP program info C_SOURCES += src/main.c CXX_SOURCES += src/app.cc C_INCLUDES += -Isrcadd your files (C++ compiled with -fno-exceptions -fno-rtti) CPUFLAGS = -mthumb -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16Cortex-M4F; DB48X adds -specs=nano.specs -specs=nosys.specs -u _printf_float CFLAGS += -O2 (or -Os) -Wall -fdata-sections -ffunction-sections -g LDFLAGS = -T stm32_program.ld -Wl,--gc-sections -Wl,--wrap=_malloc_r $(LIBS)malloc is routed to DMCP; map file for size checks arm-none-eabi-objcopy --remove-section .qspi -O binary MyProg.elf MyProg_flash.binflash image (the Makefile does this) bin/check_qspi_crc MyProg src/qspi_crc.h && bin/add_pgm_chsum build/MyProg_flash.bin build/MyProg.pgmQSPI CRC check + checksum → the loadable file arm-none-eabi-size build/MyProg.elftext must fit the 704 KB program area; data+bss ≤ 8 KB make DEBUG=1-O0 -DDEBUG build

C++ specifics

  • Compile with arm-none-eabi-g++, -fno-exceptions -fno-rtti -fno-threadsafe-statics; provide operator new/delete yourself (wrap malloc/free) or avoid new; no std::string/std::vector (they pull in exceptions and big code); static constructors run (__libc_init_array is called by the startup code).
  • Keep main.h C-compatible (extern "C" void program_main();) — the startup file calls the C symbol program_main.
  • The whole DB48X firmware is a worked example: object system without virtuals, own smart pointers, -Os, -specs=nano.specs; see db48x/Makefile and recorder/make-it-quick/config.arm-none-eabi.mk.

DM32 / DM42n (DMCP5)

  • Use the dmcp5/ SDK and its stm32_program.ld (STM32U5: flash 1024 KB @0x080A0000, RAM @0x28000000, LIBRARY_FN_BASE 0x08000301, sdb @0x20000000); output extension .pg5; same API, PLATFORM_IFC_VER 16.
  • DB48X builds both: make (dm42 → db48x.pgm), make dm32 / make dm42n (→ db50x.pg5).

Minimal program skeleton

// src/main.h
#define PROGRAM_NAME    "Hello"
#define PROGRAM_VERSION "1.0"
// PROGRAM_KEYMAP_ID defaults to 0xffffffff (any)

// src/main.c
#include <main.h>
#include <dmcp.h>

static void redraw(int key) {
  lcd_clear_buf();
  lcd_writeClr(t24);          // 24-px font, line 0
  lcd_putsR(t24, PROGRAM_NAME); // inverted title
  lcd_writeClr(fReg);         // big "register" font
  lcd_switchFont(fReg, 3);
  lcd_printAt(fReg, 3, "Hello, DM42!");
  lcd_printAt(fReg, 4, "key = %d", key);
  static const char *menu[6] =
    {"BEEP", "", "", "", "", "OFF"};
  lcd_draw_menu_keys(menu);
  lcd_refresh();
}

void program_main() {
  int key = 0;
  redraw(key);
  for (;;) {
    // idle: sleep until a key or the auto-off timer
    if ((ST(STAT_PGM_END) && ST(STAT_SUSPENDED)) ||
        (!ST(STAT_PGM_END) && key_empty())) {
      CLR_ST(STAT_RUNNING);
      sys_sleep();
    }
    // going to / staying in the OFF state
    if (ST(STAT_PGM_END) || ST(STAT_SUSPENDED)) {
      if (!ST(STAT_SUSPENDED)) {
        lcd_set_buf_cleared(0);
        draw_power_off_image(1);
        LCD_power_off(0);
        SET_ST(STAT_SUSPENDED);
        SET_ST(STAT_OFF);
      }
      continue;
    }
    SET_ST(STAT_RUNNING);
    CLR_ST(STAT_SUSPENDED);
    if (ST(STAT_OFF)) {           // waking up
      LCD_power_on();
      rtc_wakeup_delay();
      CLR_ST(STAT_OFF);
      if (!lcd_get_buf_cleared())
        lcd_forced_refresh();
    }
    if (!key_empty())
      reset_auto_off();
    // <0 none, 0 release, >0 key code
    key = key_pop();
    if (key == KEY_EXIT || key == KEY_F6)
      SET_ST(STAT_PGM_END);       // -> off
    else if (key == KEY_F1) {     // beep 440 Hz
      start_buzzer_freq(440000);
      sys_delay(200);
      stop_buzzer();
    }
    if (key >= 0)
      redraw(key);
  }
}

This is SDKdemo's program_main loop reduced to essentials: DMCP expects the program to cooperate with sleep/auto-off through the calc_state bits (STAT_RUNNING, STAT_PGM_END, STAT_SUSPENDED, STAT_OFF) — EXIT does not "quit", it turns the calculator off; the DMCP menu (SETUP) is how the user leaves your program.

DMCP API — display & fonts

CallPurpose
lcd_clear_buf() lcd_refresh() lcd_forced_refresh() lcd_refresh_lines(ln,cnt)draw into the 400×240 1-bpp buffer, then push to the LCD (LCD_X LCD_Y, LCD_LINE_SIZE 50 bytes/line)
lcd_fill_rect(x,y,dx,dy,val) lcd_fill_ptrn(x,y,dx,dy,p1,p2) lcd_fillLine(s)rectangles / patterns / whole lines
bitblt24(x,dx,y,val,BLT_OR|BLT_ANDN|BLT_XOR,fill) lcd_line_addr(y)raw pixel access (24-bit blits, line pointers)
lcd_draw_img(img,xo,yo,x,y) _part _directdraw bitmaps
t20 t24 fRegsystem disp_stat_t* font states: 20-px, 24-px, and the switchable "register" font (lcd_switchFont(fReg,n), lcd_nextFontNr/lcd_prevFontNr)
disp_stat_t fieldsx y cursor · inv inverse video · lnfill clear line first · newln advance after write · xoffs · fixed width · y_top_grd
lcd_writeClr(ds) lcd_setLine(ds,n) lcd_setXY(ds,x,y) lcd_prevLn(ds) lcd_writeNl(ds)position by line number or pixel
lcd_print(ds,fmt,…) lcd_printAt(ds,ln,fmt,…) lcd_printR lcd_printRAtprintf-style text (R = inverted)
lcd_puts(ds,s) lcd_putsAt lcd_putsR lcd_putsRAt lcd_writeTextplain text; lcd_textToBox(ds,x,w,s,from_right,align_right) clips/aligns
lcd_textWidth(ds,s) lcd_charWidth lcd_lineHeight(ds) lcd_baseHeight lcd_fontWidth lcd_textToWidth lcd_textForWidthmeasuring / word-wrapping
lcd_draw_menu_keys(const char*keys[6]) lcd_draw_menu_key(n,s,hl) lcd_draw_menu_bg() LCD_MENU_LINES (32)the six soft-key labels at the bottom
msg_box(ds,txt,inv) lcd_for_calc(DISP_ABOUT…)message box; system screens
draw_power_off_image(1) LCD_power_off(clear) LCD_power_on() lcd_set_buf_cleared(0)off-image (/OFFIMG/*.bmp) and panel power
create_screenshot(report)BMP to /SCREENS (SDKdemo binds it to KEY_SCREENSHOT, code 44)

DMCP API — keys, time, power, sound

CallPurpose
key_pop() key_empty() key_push(k) key_pop_last() key_pop_all() key_tail()key queue: key_pop → >0 press, 0 release, <0 empty
wait_for_key_press() wait_for_key_release(tout) runner_get_key(&repeat) runner_get_key_delay(…) sys_last_key() read_key(&k1,&k2)blocking waits, auto-repeat helper, raw matrix read
KEY_SIGMA=1 KEY_INV KEY_SQRT KEY_LOG KEY_LN KEY_XEQ KEY_STO KEY_RCL KEY_RDN KEY_SIN KEY_COS KEY_TAN=12row 1–2 (same 1…37 numbering as DB48X KeyMap/ASN and the keyboard map above)
KEY_ENTER=13 KEY_SWAP KEY_CHS KEY_E KEY_BSP=17 KEY_UP=18 KEY_7 8 9 KEY_DIV=22 KEY_DOWN=23 KEY_4 5 6 KEY_MUL=27rows 3–5
KEY_SHIFT=28 KEY_1 2 3 KEY_SUB=32 KEY_EXIT=33 KEY_0 KEY_DOT KEY_RUN=36 KEY_ADD=37 · KEY_F1…F6=38…43rows 6–7, soft keys; KEY_SCREENSHOT 44, KEY_SH_UP/DOWN 45/46, KEY_DOUBLE_RELEASE 99; IS_EXIT_KEY(k)
ST(f) SET_ST(f) CLR_ST(f) on calc_stateSTAT_RUNNING STAT_SUSPENDED STAT_OFF STAT_PGM_END STAT_MENU STAT_BEEP_MUTE STAT_SLOW_AUTOREP STAT_DMY STAT_CLK24 STAT_POWER_CHANGE STAT_CLK_WKUP_*
sys_sleep() reset_auto_off() is_auto_off() sys_auto_off_cnt()low-power idle and the auto-off timer
sys_delay(ms) sys_tick_count() sys_current_ms() sys_timer_start(ix,ms) sys_timer_timeout(ix) sys_timer_disable(ix) start_timer2/3 get_tim1_timer()delays and timers (TIMER_BASE_FREQ 8 MHz)
rtc_read(&tm,&dt) rtc_write rtc_read_sec/min get_rtc_ticks() (256/s) rtc_set_alarm julian_day(&dt) julian_to_date print_dmy_date print_clk24_timeclock and calendar (tm_t h/m/s/csec, dt_t y/m/d)
read_power_voltage() get_vbat() get_lowbat_state() usb_powered() power_check_screen()battery / USB
start_buzzer_freq(mHz) stop_buzzer() beep_volume_up/down get_beep_volume is_beep_mute()sound (frequency in millihertz: 440 Hz = 440000)
sys_free_mem() sys_reset() sys_critical_start/end() set_reset_magic() get_hw_id()system

DMCP API — files, menus, I/O

CallPurpose
f_open(&f,"/DATA/x.txt",FA_READ|FA_WRITE|FA_CREATE_ALWAYS|FA_OPEN_APPEND…) f_read f_write f_lseek f_close f_unlink f_rename f_size f_tell f_eofFatFs on the internal flash disk (the same USB volume you copy .pgm files to); returns FRESULT (FR_OK…)
sys_disk_ok() sys_disk_write_enable(1)(0) sys_disk_check_valid() sys_write_buf_used()DB48X wraps every write in enable/disable (see src/file.cc)
file_exists(fn) file_size(fn) check_create_dir(dir) make_date_filename(s,dir,ext) set_fat_label(s)helpers
file_selection_screen(title, base_dir, ".txt", cb, disp_new, overwrite_check, data)built-in file picker; cb(fpath,fname,data) is called on ENTER
item_sel_init/engine/header item_sel_state_tgeneric scrolling list picker
handle_menu(&MID_MENU, MENU_RESET|MENU_ADD, line) with smenu_t {name, items[], msg[], post_disp}full-screen system-style menus; items are MI_* ids (yours 0–127, system 128–255)
run_menu_item_app = my_run_menu_item; menu_line_str_app = my_menu_line_str;callbacks: run an item / give its label (return MRET_UNIMPL, MRET_EXIT)
MI_SYSTEM_ENTER MI_MSC (USB disk) MI_ABOUT MI_SET_TIME MI_SET_DATE MI_BEEP_MUTE MI_SLOW_AUTOREP MI_PGM_LOAD MI_LOAD_QSPI MI_DISK_INFO MI_OFF_MODEsystem items you can put in your own Setup menu (SDKdemo menu.c)
run_set_time() run_set_date() disp_disk_info(hdr) run_help_file("/HELP/x.htm") run_help()stock dialogs; help viewer for .htm files
printf(...)_write → DMCPdebug console (SDKdemo DBG_PRINT); usb_acm_on() acm_puts(s) usb_is_on() usb_turn_off() USB serial
print_byte(b) print_buffer(buf,n) print_is_ready() printer_set_delay(ms)HP 82240 IR printer
qspi_user_addr() qspi_user_size() qspi_user_write(data,size,offset,erase)a user area in QSPI flash for persistent data
sys_flash_erase_block sys_flash_write_block sys_flashing_init/finishraw program-flash writes (dangerous)

Install, run, debug, switch back

SETUP (🟨 0) → System → Enter System Menu → Reset to DMCP Menu → Activate USB Diskstock DM42; on DB48X: SETUP → 5. Activate USB disk (DM32: 🟨 C) cp build/MyProg.pgm /Volumes/DM42/ && diskutil eject DM42copy to the calculator's FAT volume; DM32/DM42n: .pg5 DMCP menu → 3. Load Program → MyProg.pgm → ENTERchecks hash, flashes, "Loading OK", key → restarts into your program Back to DB48X: Load Program → DB48X.PGM (and 4. Load QSPI from FAT with the matching DB48X QSPI file)DB48X needs its own extended QSPI image; stock DM42 firmware runs on the stock QSPI. Always flash PGM + QSPI from the same DB48X build Reach the DMCP menu from any program: SETUP/System menu, or hold EXIT while pressing RESET (paper clip)if your program hangs SDKdemo.pgmships in db48x/dmcp/ — load it to see the demo RPN calculator

Debugging

  • No JTAG needed for most work: printf over the DMCP console/USB serial, on-screen lcd_print, create_screenshot() to /SCREENS, msg_box, log files with f_write.
  • Watch memory: arm-none-eabi-size (data+bss ≤ 8 KB) and sys_free_mem() at runtime; a hard fault shows the DMCP fault screen (DISP_FAULT) — check the .map file.
  • Prototype the logic on your Mac first (plain C, then swap in the DMCP calls) — SwissMicros has no simulator for third-party programs; DB48X's Qt simulator (sim/dmcp.cpp) re-implements the DMCP API for DB48X and is a good reference for expected behaviour.

When to choose this over extending DB48X

  • Standalone .pgm: full control of screen/keys/timing, small and simple, but no RPL, no DB48X objects, and the user must switch programs (only one is loaded at a time).
  • Adding a command to DB48X (src/ids.tblCOMMAND_DECLARECOMMAND_BODYmenu.cc, then make -j sim to test, make -j8 for db48x.pgm): your C++ gets bignums, decimals, units, expressions and the UI for free — see AGENTS.md.

Keyboard & Menu Maps

default DM42 key bindings, every built-in soft menu, and the menu tree drawn · click the title to collapse

Command & Setting Index

every parseable ID in src/ids.tbl, grouped by topic (commands used in several topics appear in each) · click the title to collapse

Stack

24

Basic

DuplicateDup Duplicate an object on the stack
DropRemove an object from the stack
SwapExchange objects in levels 1 and 2
OverDuplicate object at level 2 on the stack
RotMove object from level 3 to level 1
UnRotMove object from level 1 to level 3
NipRemove object at level 2 on the stack
DepthGet the current stack depth
ClearClearStack Remove all objects from the stack

Multiple objects

Duplicate2Dup2 Duplicate two objects on the stack
DuplicateNDupN Duplicate a group of N objects, N being given in stack level 1
DuplicateTwiceDupDup Duplicate the same object twice on the stack
NDuplicateNNDupN Replicate one object N times and return N
Drop2Remove two objects form the stack
DropNRemove N objects from the stack, N being given in level 1.
PickDuplicate object at position N on the stack
Pick3Duplicate object at level 3 on the stack
UnPickMove object from level 1 to level N.
RollMove object at level N to level 1
RollDownRollD Move object from level 1 to level N

Last things

LastArgumentsLastArg Put the last arguments back on the stack.
LastXPut the last first argument on the stack.
UndoRestore the stack to its last state before executing an interactive command.
StackEditorEnter the interactive stack (◀ key): browse levels, Edit, Eval, Roll, Pick, Drop, →List.

Arithmetic & Real

66

Basic operations

+add Add two values.
-subtract Subtract two values
×*, multiply You can repeat a list by multiplying it by a number.
÷/, divide Divide two values
^, pow Raise to the power
Negateneg Negate the value in level 1.
x⁻¹inv, Invert Invert the value in level 1
absModulus Return the absolute value for a real number.
signSign of a number, -1, 0 or 1.
sq, Square Square of the input
cubed Cube of a number: x³.
SquareRoot, sqrt Compute the square root
CubeRoot, cbrt Compute the cube root
xrootRaise to the inverse power.
MinSmallest of 2 objects
MaxLargest of 2 objects

Parts & rounding

IntegerPartIP, IntPart Integer part of a number
FractionalPartFP, FracPart Fractional part of a number
floorLargest integer less than the input
ceilSmallest integer larger than the input
RoundRnd Round a number to the given number of figures
TruncateTrnc Truncate a number to the given number of figures
Mantissamant Mantissa of a real number
Exponentxpon Exponent of a real number
SignificantDigitsSigDig Number of significant digits in a real number
StdRndStandardRound Round a value based on a standard uncertainty, implementing Rule 3.
RelRndRelativeRound Round a value based on a relative uncertainty, implementing Rule 2 and Rule 3.
PrcRndPrecisionRound Round one value to the precision of another one.

Percent

%Percent Percentage of a number
%Change%Ch, PercentChange Percentage of change on a number
%Total%T, PercentTotal Get percentage of a total

Integer arithmetic

modRemainder of the integer division
remRemainder of integer division (sign follows the dividend); `mod` follows the divisor.
QuoRemQuotientRemainder, Div2 Euclidean division, returning quotient and remainder.
GreatestCommonDenominatorGCD Greatest common divisor of two integers.
LeastCommonMultipleLCM Least common multiple of two integers.
FactorsDecompose an integer into its prime factorization.
IsPrimeTest whether an integer is prime.
NextPrNextPrime Return the smallest prime strictly greater than the input.
PrevPrPreviousPrime Return the largest prime strictly smaller than the input.

Probability & special functions

x!!, fact Factorial of a number
Combinationscomb Combinations: number of ways to choose X items among Y (binomial coefficient).
Permutationsperm Permutations: number of ordered arrangements of X items among Y.
ΓGamma, tgamma Gamma function Γ(x); Γ(n+1)=n!
lnΓLnGamma, lgamma Natural logarithm of the Gamma function, ln Γ(x).
erfError function erf(x).
erfcComplementary error function 1−erf(x).
RandomNumberrand Generate a random real number between 0 and 1, 1 being excluded.
RandomGenerate a pseudo-random number between two bounds.
RandomSeedrdz Initialize random number generator with a seed.

Number conversions

→Decimal→Num, ToDecimal Convert fractions and symbolic constants to decimal form.
→ℚ→Q, ToFraction Convert decimal values to fractions.
→ℚπXQ, ToQuotient Convert decimal values to a rational form, or a rational form with π, square roots, natural logs, or the Eule…
R→I→Int, ToInteger Convert decimal values to integers.
ContinuedFractionDFC Decompose a real number into its continued fraction coefficients (Décomposition en Fraction Continue).
ContinuedFractionToFractionDFC2F Reconstruct a real number from its continued fraction coefficient list.
CycleCycle through various representations of the object on the first level of the stack.
RealToBinaryR→B Convert an integer or real to a based (binary) number in the current base.
BinaryToRealB→R Convert a based number to a decimal integer.

Ranges & uncertainty

→Range→Interval, ToRange Build a range (interval in the form a…b) out of two individual components for the low and high value:
→∆RangeToDeltaRange Build a delta range (range of the form a±b) out of two individual components for the center and delta value.
→%RangeToPercentRange Build a percentage range (range of the form a±b%) out of two individual components for the center value and p…
→σRange→Un, ToUncertain Build an uncertain number (range of the form a±σb) out of two individual components for the mean and standard…
Range→FromRange Split a range into its lower and upper bounds (or center/uncertainty for ± forms).
Union, RangeUnion Perform the union of two ranges
Intersect, RangeIntersect Perform the intersection of two ranges

Transcendental

34

Circular

sinAnalytic function returning the sine of the argument.
cosAnalytic function returning the cosine of the argument
tanAnalytic function returning the tangent of the argument
sin⁻¹asin, arcsin Compute the arcsine
cos⁻¹acos, arccos Compute the arccosine
tan⁻¹atan, arctan Compute the arctangent
secAnalytic function returning the secant of the argument (1/cos).
cscAnalytic function returning the cosecant of the argument (1/sin).
cotAnalytic function returning the cotangent of the argument (cos/sin).
sec⁻¹asec, arcsec Compute the arc-secant.
csc⁻¹acsc, arccsc Compute the arc-cosecant.
cot⁻¹acot, arccot Compute the arc-cotangent.
atan2 Compute arctangent(y/x)
Hypothenuse, hypot Calculate the hypotenuse given two values (x, y), i.e., sqrt(x^2 + y^2).

Hyperbolic

sinhCompute the hyperbolic sine
coshCompute the hyperbolic cosine
tanhCompute the hyperbolic tangent
sinh⁻¹asinh Compute the hyperbolic arcsine
cosh⁻¹acosh Compute the hyperbolic arccosine
tanh⁻¹atanh Compute the hyperbolic arctangent
sechCompute the hyperbolic secant (1/cosh)
cschCompute the hyperbolic cosecant (1/sinh)
cothCompute the hyperbolic cotangent (cosh/sinh)
sech⁻¹asech Compute the hyperbolic arcsecant
csch⁻¹acsch Compute the hyperbolic arccosecant
coth⁻¹acoth Compute the hyperbolic arccotangent

Exponential & logarithm

expCompute exponential function
lnCompute natural logarithm
exp10alog Compute anti-logarithm in base 10
log10log Compute logarithm in base 10
exp2alog2 Compute 2^x
log2Base-2 logarithm.
expm1expm Compute exp(x)-1
ln1plnp1 Compute ln(x+1)

Angles, Time & Date

34

Angle conversion

→Degrees→Deg, ToDegrees Convert a number or angle to an angle in degrees.
→Radians→Rad, ToRadians Convert a number or angle to an angle in radians.
→Grads→Grad, ToGrads Convert a number or angle to an angle in grads.
→PiRadians→πr, ToPiRadians Convert a number or angle to an angle in multiple of π radians.
Degrees→RadiansD→R, DegreesToRadians Convert degrees to radians.
Radians→DegreesR→D, RadiansToDegrees Convert radians to degrees.
DegreesDeg Select degrees as the angular unit.
RadiansRad Select radians as the angular unit.
GradsGrad Select grads as the angular unit.
πradiansPiRadians Select multiples of π as the angular unit.
AngleModeSetting holding the current angle mode (Deg/Rad/Grad/πr).
SetAngleUnitsWhen this setting is active, inverse trigonometric functoins asin, acos and atan return a unit value with a u…
NoAngleUnitsThis is the opposite setting to SetAngleUnits.

DMS / HMS

→DMSToDMS Convert value to DMS format.
DMS→FromDMS Convert value from DMS format.
DMS+DMSAdd Add two angles in degrees-minutes-seconds format.
DMS-DMSSub Subtract two angles in DMS format.
→HMSToHMS Convert decimal time to HH.MMSS (Hours, Minutes, Seconds) format.
HMS→FromHMS Convert time in HH.MMSS (Hours, Minutes, Seconds) format to numerical time.
HMS+HMSAdd Add time in HH.MMSS format.
HMS-HMSSub Subtract time in HH.MMSS format

Date & time

DateReturn the current system date as a unit object in the form YYYYMMDD_date.
TimeReturn the current system time as a unit object in the form HH.MMSS_hms.
DateTimeReturn the current system date as a unit object in the form YYYYMMDD_date.
→DateSetDate Set current system date.
→TimeSetTime Set current time from a stack value HH.MMSSCC.
Date+DateAdd Add days to a date. The date format is YYYYMMDD, with an optional fractional part defining the time, as in YY…
DDaysDaysBetweenDates, DateSub Number of days between dates.
JDNJulianDayNumber Return the Julian day number for the given date and time.
JDN→DateFromJulianDayNumber Return the date for a given Julian day number.
TicksReturn system clock in milliseconds
ChronoTimeReturn the time with sub-second precision (chronometer).
TimedEvalTEval Perform EVAL and measure elapsed time
WaitWait for a key press or a time lapse.

Complex Numbers

22

Parts

reReal part of a complex number
imImaginary part of a complex number
argArgument of a complex number
conjConjugate of a complex number
absModulus Return the absolute value for a real number.
signSign of a number, -1, 0 or 1.

Build & split

ℝ→ℂR→C, RealToRectangular Make a complex number in rectangular form from real and imaginary part
ℝ→PolarℂR→P, RealToPolar Make a complex number in polar form from argument and modulus
ℂ→ℝC→R, RectangularToReal Extract real and imaginary parts from a complex number in rectangular form
Polarℂ→ℝP→R, PolarToReal Extract modulus and argument from a complex number in polar form
→Rectangular→Cartesian, ToRectangular Convert a complex number or vector to rectangular (cartesian) form.
→PolarToPolar Convert a complex number or a 2D or 3D vector to polar form.
CycleCycle through various representations of the object on the first level of the stack.

Vectors ↔ complex

→CylindricalToCylindrical Convert a 3D vector to cylindrical form
→SphericalToSpherical Convert a 3D vector to spherical form.
→2D→V2, To2DVector Make a 2D vector from two components
→3D→V3, To3DVector Make a 3D vector from three components
Vector→V→, FromVector Expand a vector into its individual components

Settings

ComplexResultsAllow complex results, e.g.
RealResultsReal-only results: `-1 √` errors (default).
ComplexIBeforeImaginaryDisplay complex numbers as `2+ⅈ3`.
ComplexIAfterImaginaryDisplay as `2+3ⅈ` (default).

Vectors & Matrices

44

Build

→Arry→Array, ToArray Stack to Array Command: Returns a vector or matrix built from individual elements placed on the stack and dim…
Arry→Array→, FromArray Array to Stack Command: Takes an array and returns its elements as separate values.
ConConstantArray Returns a constant array, defined as an array whose elements all have the same value.
IdnIdentityMatrix Identity Matrix Command: Returns an identity matrix, that is, a square matrix with its diagonal elements equa…
RanMRandomArray, RandomMatrix Returns an array containing random integer values between -9 and 9.
→ListToList Build a list from elements on the stack.
List→FromList Expand a list on the stack and return the number of elements.

Products & norms

dot Internal product (dot product) of vectors
cross Cross produce of vectors
Determinantdet Compute the determinant of a matrix
normEuclidean norm of a vector of matrix
absModulus Return the absolute value for a real number.
ColumnNormCNrm Column norm (one norm) of a matrix
RowNormRNrm Row norm (infinity norm) of a matrix
TransposeTran Transpose a matrix (without comjugate, unlike TRN)
TransConjugateTrn Complex conjugate transpose of a matrix
x⁻¹inv, Invert Invert the value in level 1

Rows & columns

MatrixToColumns→Col, →Columns Split an array into column vectors
ColumnsToMatrixCol→, Columns→ Columns to Matrix Command: Transforms a series of column vectors and a column count into a matrix containing…
MatrixToRows→Row, →Rows Split an array into row vectors
RowsToMatrixRow→, Rows→ Rows to Matrix Command: Transforms a series of row vectors and a row count into a matrix containing those row…
AddColumnCol+, Column+ Insert Columns Command: Insert columns into an existing array.
DeleteColumnCol-, Column- Delete Columns Command: Deletes one or more columns from an array.
AddRowRow+ Insert Rows Command: Insert rows into an existing array.
DeleteRowRow- Delete Rows Command: Deletes one or more rows from an array.
ColumnSwapCSwp Swap two columns in an array or vector.
RowSwapRSwp Swap two rows in an array or vector.

Elimination & factorization

RowEchelonFormREF Reduce a matrix to echelon form (upper triangular) using Gaussian elimination.
RowReducedEchelonFormRREF Fully reduce a matrix to row-reduced echelon form using Gauss-Jordan elimination.
RowReducedEchelonFormPivotsRREFPivots, RREFP Row-reduced echelon form with pivot list.
RowReducedEchelonFormModuloRREFMOD Modular row-reduced echelon form (reduction modulo the current CAS modulus).
LUFactorizationLUDecomposition, LU Crout LU factorization with partial pivoting for a square matrix A.

Elements

GetGet an element from composite data, such as list, an array or a text.
PutPut an element into composite data, such as list, an array or a text.
GetIterationGetI Extract an item and increase index
PutIterationPutI Replace an item and increase index
SizeNumber of elements in a composite
Object→Obj→, Explode Explode an object into its sub-components.

Settings

HorizontalVectorsRender vectors horizontally.
VerticalVectorsRender vectors vertically (default, flag −98).
LaxArrayResizingArray operations may resize arrays automatically.
StrictArrayResizingStrict dimension checks (default).
EchelonFormKeepLastColumnWhen set, RREF and RREFP reduce the coefficient block but leave the last column unnormalizedw.
EchelonFormReduceLastColumnWhen set, RREF and RREFP reduce the coefficient block including the last column.

Lists

37

Build & split

→ListToList Build a list from elements on the stack.
List→FromList Expand a list on the stack and return the number of elements.
Object→Obj→, Explode Explode an object into its sub-components.
HeadReturn the first element of a list, or an Invalid dimension error if the list is empty.
TailReturn all but the first element of a list, or an Invalid dimension error if the list is empty.
ExtractSub Extract a group of elements from a composite
SizeNumber of elements in a composite
GetGet an element from composite data, such as list, an array or a text.
PutPut an element into composite data, such as list, an array or a text.
GetIterationGetI Extract an item and increase index
PutIterationPutI Replace an item and increase index

Sort & set operations

SortSort elements in a list or array, sorting by increasing values when comparing numers, text or symbols.
QuickSortQSort Sort elements in a list or array using the memory representation of objects.
ReverseSortSort a list or array by value, in reverse order compared to Sort.
ReverseQuickSortSort a list or array using the memory representation of objects, in reverse order compared to QuickSort.
ReverseListRevList Reverse the order of elements in a list
UniqueRemove duplicate consecutive values.
QuickUniqueRemove duplicate consecutive values that match exactly in memory

Iterate

MapApply an operation on all elements in a list or array.
ReduceStream Apply a cumulative pairwise operation on all elements in a list or array.
FilterFilter elements in a list of array based on a predicate.
DoListApply a program to corresponding elements of N lists: `{1 2} {3 4} 2 « + » DoList` → `{4 6}`.
DoSubsApply a program to successive sub-sequences of a list, N elements at a time (`NSub`/`EndSub` available inside…
NSubInside a `DoSubs` program: index of the current subsequence (1-based).
EndSubInside a `DoSubs` program: total number of subsequences.
ForNext`start finish FOR i … NEXT`: counted loop with local i.
StartNext`start finish START … NEXT`: counted loop without a variable.

Sums & differences

ΣListListSum Return the sum of a list or array.
∏ListListProduct Return the product of a list or array.
∆ListListDifferences Return the differences between successive elements in a list or array.

Settings

ListRecursionDepthThis setting selects the depth of recursion for Map, Reduce or Filter.
ListAsProgramWhen this setting is set, DB48X behaves like the HP48S and later HP devices and evaluates lists as if they we…
ListAsDataWhen this setting is set, DB48X behaves like the HP28 and evaluates lists as data.
VerticalListsRender lists vertically, one element per line (flag −97).
HorizontalListsRender lists horizontally (default).
IndexWrappedIndicator flag −64: last `GetI`/`PutI` index wrapped around.
IndexDidNotWrapIndex did not wrap.

Text, Characters & Tags

20

Text ↔ object

→Text→Str, ToText Convert an object to its text representation.
Text→Str→, Compile Compile and evaluate the text, as if it was typed on the command line.
Text→ObjectCompileToObject Compile and evaluate a text argument to get a single object.
Text→NumberCompileToNumber Compile and evaluate a text argument to get a number.
Text→IntegerCompileToInteger Compile and evaluate a text argument to get an integer value.
Text→PositiveCompileToPositive Compile and evaluate a text argument to get a positive integer.
Text→RealCompileToReal Compile and evaluate a text argument to get an real number, which includes integers, fractions and decimal va…
Text→AlgebraicCompileToAlgebraic Compile and evaluate a text argument to get an algebraic value.
Text→ExpressionCompileToExpression Compile and evaluate a text argument to get an expression.
→Program→Prg, ToProgram Convert an object into a program.
Object→Obj→, Explode Explode an object into its sub-components.

Characters (Unicode)

Char→CodeNum, CharToUnicode Return the Unicode codepoint of the first character in the text, or -1 if the text is empty.
Code→TextChr, UnicodeToText Build a text out of a Unicode codepoint.
Text→CodeTextToUnicode Return a list of the Unicode codepoints for all codepoints in the given text.
SizeNumber of elements in a composite
BytesReturn the size of the object and a hash of its value.
ExtractSub Extract a group of elements from a composite

Tags

→TagToTag Apply a tag to an object.
Tag→FromTag Expand a tagged object in level 1 into its object and tag.
DeleteTagDTag Remove a tag from an object.

Bases & Bitwise

52

Base selection

BinaryBin Selects base 2
OctalOct Selects base 8
DecimalDec Selects base 10
HexadecimalHex Selects base 16
BaseSelect an arbitrary base for computations
WordSizestws Store the current word size in bits.
rcwsRecallWordSize Return the current word size in bits.
MaxNumberBitsDefine the maxmimum number of bits for numbers.
RealToBinaryR→B Convert an integer or real to a based (binary) number in the current base.
BinaryToRealB→R Convert a based number to a decimal integer.

Logic (bitwise on integers)

andLogical operations combine boolean values.
orLogical operations combine boolean values.
xorLogical exclusive "or" operation: the result is true if exactly one input is true.
notLogical operations combine boolean values.
nandLogical "not and" operation: the result is true unless both inputs are true.
norLogical "not or" operation: the result is true unless either input is true.
impliesLogical implication operation: the result is true if the first input is false or the second input is true.
equivLogical equivalence operation: the result is true if both inputs are true or both inputs are false.
excludesLogical exclusion operation: the result is true if the first input is true or the second input is false.

Shift & rotate

ShiftLeftSL Shift the value left by one bit.
ShiftRightSR Shift the value right by one bit.
ArithmeticShiftRightASR Shift the value right by one bit, preserving the sign bit.
RotateLeftRL Rotate the value left by one bit.
RotateRightRR Rotate the value right by one bit.
ShiftLeftByteSLB Shift the value left by one byte (8 bits).
ShiftRightByteSRB Shift the value right by one byte (8 bits).
ArithmeticShiftRightByteASRB Shift the value right by one byte (8 bits), preserving the sign bit.
RotateLeftByteRLB Rotate the value left by one byte (8 bits).
RotateRightByteRRB Rotate the value right by one byte (8 bits).
ShiftLeftCountSLC Shift the value left by a given number of bits.
ShiftRightCountSRC Shift the value right by a given number of bits.
ArithmeticShiftRightCountASRC Shift the value right by a given number of bits, preserving the sign bit.
RotateLeftCountRLC Rotate the value left by a given number of bits.
RotateRightCountRRC Rotate the value right by a given number of bits.

Bits

SetBitSet bit N of a based number.
ClearBitClear bit N of a based number.
FlipBitFlip bit N of a based number.
FirstBitSetIndex of the lowest set bit.
LastBitSetIndex of the highest set bit.
CountBitsNumber of set bits (population count).

Settings

OnesComplementBased-number negation uses one's complement.
TwosComplementTwo's complement arithmetic on based numbers (default).
CompatibleBasedNumbersDisplay based numbers using the HP syntax, i.e.
ModernBasedNumbersDisplay based numbers using the modern DB48x syntax, i.e.
BasedSpacingSelect the spacing for based numbers.
BasedSpacesUse thin spaces to group digits of based numbers.
BasedDotOrCommaUse dot or comma to group digits of based numbers.
BasedTicksUse ticks (') to group digits of based numbers.
BasedUnderscoreUse underscores to group digits of based numbers.
BasedSeparatorCommandSetting holding the digit-group separator style for based numbers.
TruthLogicForIntegersWhen this flag is set, logical operations such as and or not applied to integers return True or False, for co…
BitwiseLogicForIntegersWhen this flag is set, logical operations such as and or not applied to integers return a bitwise numerical r…

Tests & Logic

30

Comparison

=TestEQ Checks if two values are mathematically equal.
==TestSame Checks if two objects are identical after evaluating names (contrary to same which does not evaluate names).
sameChecks if two objects are identical without evaluating names (contrary to ==).
TestNE Check if two values are mathematically different.
<TestLT Check if the first value is less than the second value.
TestLE Check if the first value is less than or equal to the second value.
>TestGT Check if the first value is greater than the second value.
TestGE Check if the first value is greater than or equal to the second value.
TrueRepresent a logical truth, the opposite of False.
FalseRepresent a logical untruth, the opposite of True.

Logic

andLogical operations combine boolean values.
orLogical operations combine boolean values.
xorLogical exclusive "or" operation: the result is true if exactly one input is true.
notLogical operations combine boolean values.
nandLogical "not and" operation: the result is true unless both inputs are true.
norLogical "not or" operation: the result is true unless either input is true.
impliesLogical implication operation: the result is true if the first input is false or the second input is true.
equivLogical equivalence operation: the result is true if both inputs are true or both inputs are false.
excludesLogical exclusion operation: the result is true if the first input is true or the second input is false.

Conditional commands

IfThenIFT Evaluate objects on the stack conditionally
IfThenElseIFTE Evaluate objects on the stack conditionally
IfThen`IF cond THEN … END`.
IfThenElse`IF cond THEN … ELSE … END`.
CaseStatement`CASE test1 THEN … END test2 THEN … END … default END`; `value WHEN … END` compares against level 1 (DB48X sh…
CaseThenA `THEN … END` clause inside `CASE`.
CaseWhenA `value WHEN … END` clause inside `CASE`: shorthand for `DUP value = THEN`.

Type tests

TypeReturn the type of the object as a numerical value.
TypeNameReturn the type of the object as text.
DetailedTypesThe Type command returns detailed DB48X type values, which can distinguish between all DB48X object types, e.…
CompatibleTypesThe Type command returns values as close to possible to the values documented on page 3-262 of the HP50G adva…

Symbolic Algebra (CAS)

62

Rewrite & simplify

↑MatchMatchUp Match pattern up and rewrite expression, starting with the innermost subexpressions first.
↓MatchMatchDown Match pattern down and rewrite expression, starting with the outermost expression first.
ExpandExpan Expand products and powers in an expression, e.g.
CollectCollect terms in an expression, factoring common terms.
SimplifySimplify an expression using the built-in rewrite rules.
FoldConstantsEvaluate constant sub-expressions, e.g.
ReorderTermsReorder terms in an expression into a canonical order.
TrigSinSimplify replacing cos(x)² with 1-sin(x)²
ApplyApply a function name to a list of arguments, building the expression `F(args)`.
QuoteReturn an object unevaluated (quoted).
SubstituteSubst Substitute a value for a variable in an expression: `'X+1' 'X=2' Subst`.
|Where Perform a substitution and evaluate the resulting expression.
IsolateIsol Isolate variable: Returns an expression that rearranges an expression given in stack level 2 to "isolate" a v…

Calculus

Derivative Compute the derivative function for an expression.
PrimitiveRisch Symbolic primitive (antiderivative) of an expression relative to a variable (Risch-style).
Integrate Perform a numerical integration of a function for a specified variable on a numerical interval.
ΣSum Summation Σ(index;from;to;expression).
Product Product ∏(index;from;to;expression), same syntax as Σ.
ZerosFind unique zeros of a univariate expression.
RootFind the root of an equation or of a system of equations.

Polynomials

→Polynomial→Poly, ToPolynomial Convert an algebraic object to a polynomial.
Polynomial→Poly→, FromPolynomial Convert a polynomial to an ordinary expression.
PolynomialEvaluationPEval Evaluate a polynomial at a point (Horner’s method).
PolynomialRootsPRoot Find all roots of a polynomial given by its coefficients.
PolynomialCoefficientsPCoef Build the monic polynomial whose roots are the given values.
→Arry→Array, ToArray Stack to Array Command: Returns a vector or matrix built from individual elements placed on the stack and dim…

CAS state

CASDir, AlgebraConfiguration Name reserved for the current algebra configuration directory.
RclVX, AlgebraVariable Recall the current CAS algebra variable (HP-50G VX / RCLVX).
StoreⓧStoVX, StoreAlgebraVariable Store the current CAS algebra variable (HP-50G STOVX).
EquationEq Define an equation for use in solving or integration operations.
StoreEquationStEq Store expression in Equation variable.
RecallEquationRcEq Recall expression from Equation variable.
NextEquationNextEq Cycle equations in the Equation variable if it is a list.
EvaluateEquationEvalEq Evaluate the current equation.
ListExpressionNamesLName List all variables used in an expression or polynomial, leaving the original object on the stack, and returni…
ExpressionVariablesXVars List all variables used in an expression or polynomial, returning the result as a list.

Evaluation settings

AutoSimplifyEnable automatic reduction of numeric subexpressions according to usual arithmetic rules.
NoAutoSimplifyDisable automatic reduction of numeric subexpressions according to usual arithmetic rules.
SymbolicResultsEnable the generation of symbolic results, as opposed to NumericalResults.
NumericalResultsEnable the generation of symbolic results, as opposed to SymbolicResults.
SymbolicConstantsConstants stay symbolic until `→Num` (default).
NumericalConstantsConstants such as `Ⓒπ` evaluate to their numerical value (flag −2 set).
FinalAlgebraResultsEvaluate algebraic rules on symbolic expressions repeatedly until no futher change results from applying them.
StepByStepAlgebraResultsEvaluate algebraic rules on symbolic expressions one step at a time.
ExplicitWildcardsHP style: `↑Match` wildcards must start with `&` (flag set).
ImplicitWildcardsDB48X style: any name is a wildcard; `&A` matches only `A` (default).
PrincipalSolutionSolver / `Isolate` return only the principal solution (flag −1 set).
AllSolutions`Isolate` returns the general solution with `n1`, `s1`… parameters (default).
ComplexResultsAllow complex results, e.g.
RealResultsReal-only results: `-1 √` errors (default).
MaxRewritesDefines the maximum number of rewrites in an equation.
CarefulEvaluationEvaluate carefully (flag −4 set): fully evaluate names in expressions.
LazyEvaluationLazy evaluation of names inside expressions (default).
ExplicitConstantsRequire an explicit marker to identify a constant from the constant library.
AutomaticConstantsWhen parsing, identify the constants from the constants library without an explicit Ⓒ constant marker.

Polynomial settings

NewStylePolynomialsUse DB48X polynomial objects for polynomial-oriented commands where the result is a polynomial in one variabl…
CompatiblePolynomialsUse HP-style coefficient vectors for polynomial root and coefficient commands.
PrefixPolynomialRenderRender polynomials with an `Ⓟ` prefix.
NormalPolynomialRenderRender polynomials like expressions (default).
MaxPolynomialDegreeMaximum degree accepted by PRoot, PCoef, PEval, Zeros, and coefficient conversion (ToPolynomial, ToArray on a…
MaxLaguerreIterationsMaximum iterations of Laguerre’s method per root when PRoot or Zeros uses numerical root finding (after low-d…
MaxRootDivisorLargest integer tested as a candidate divisor when PRoot or Zeros searches for rational roots (via divisors o…

Solvers & Finance

31

Root finding

RootFind the root of an equation or of a system of equations.
MultipleEquationsSolverMRoot Solve a system of multiple equations simultaneously.
MultipleVariablesSolverMSlv Solve for multiple variables in a system of equations.
ZerosFind unique zeros of a univariate expression.
IsolateIsol Isolate variable: Returns an expression that rearranges an expression given in stack level 2 to "isolate" a v…
SolvingMenuInteractive solver menu for the current `Equation`: F-key = store, 🟨 = solve for variable, 🟦 = recall.
EquationEq Define an equation for use in solving or integration operations.
StoreEquationStEq Store expression in Equation variable.
RecallEquationRcEq Recall expression from Equation variable.
NextEquationNextEq Cycle equations in the Equation variable if it is a list.
EvaluateEquationEvalEq Evaluate the current equation.

Numerical integration

Integrate Perform a numerical integration of a function for a specified variable on a numerical interval.
IntegrationIterationsMaximum number of refinement iterations for numerical integration (default 12).
IntegrationImprecisionNumber of digits of `Precision` given up by numerical integration (default 6).
NumericalIntegration`∫` always integrates numerically.
SymbolicIntegration`∫` tries a symbolic primitive first (default).

Solver settings

SolverIterationsNumber of times the solver will try to find a solution.
SolverImprecisionSet the number of digits that can be ignored when solving.
SolverShufflesNumber of times the solver will shuffle the test vector around errors and singularities.
NumericalSolver`Root` never uses `Isolate`; pure numerical iteration.
SymbolicSolver`Root` first tries a symbolic isolation (default).
AllEquationVariables`SolvingMenu` shows variables of all equations in the `Equation` list.
CurrentEquationVariablesShow only the current equation's variables (default).

Time value of money

FinanceSolverMenuTVM Display the Time Value of Money (TVM) solver menu.
TVMRootSolves for the specified TVM variable using values from the remaining TVM variables.
TVMEquationReturn the time-value-of-money equation relating n, I%Yr, PV, PMT, FV and PYr.
TVMAmortizeAmort, TVMAmort Amortizes a loan or investment based upon the current amortization settings.
TVMAmortizationTableAmortizationSchedule, TVMAmortTable Build an amortization table based on the current amortization settings.
FinanceRoundingThis setting defines the number of digits values returned by finance values will be rounded two.
TVMPayAtBeginningOfPeriodTVMBeg This flag indicates that payments occur at the beginning of a payment period.
TVMPayAtEndOfPeriodTVMEnd This flag indicates that payments occur at the end of a payment period.

Units, Constants & Libraries

47

Units

ConvertConvert value from one unit to another.
BaseUnitsUBase Expand all unit factors to their base units.
UnitValueUVal Return the numeric part of a unit object.
FactorUnitUFact Factor the unit in level 1 from the unit expression of the level 2 unit object.
→UnitToUnit Creates a unit object from a real number and the unit part of a unit object.
ApplyUnitApply a unit to a number (unit menu key): `3 ApplyUnit(km)` → `3_km`.
ConvertToUnitConvert a unit object to another unit (🟨 unit menu key).
ApplyInverseUnitDivide by a unit (🟦 unit menu key), e.g.
ConvertToUnitPrefixConvert a unit object to the same unit with a different SI prefix.
UnitsSIPrefixCycleSets a prefix cycle for SI units when using the Cycle key (EEX or ×10ⁿ, next to O) on the command-line to cyc…
CycleCycle through various representations of the object on the first level of the stack.

Constants

πPi Return the π constant (approximately 3.14159).
EulerianNumber Return the value of Euler's number (approximately 2.71828)
Infinity Return a positive infinity
−∞NegativeInfinity Return a negative infinity
LibraryConstantConst Recall the value of a library constant given by name: `'c' Const`.
ConstantNameXLibName, EquationName Return the name for a given constant, as text
ConstantValueXLibValue, EquationValue Return the value for a given constant
ConstantRangeReturn the value of a constant as a range including its standard uncertainty.
StandardUncertaintyCstSU Returns the standard uncertainty of a constant from the constants library.
RelativeUncertaintyCstRU Returns the relative uncertainty of a constant from the constants library.
→Us→StdUnc, ToStandardUncertainty Calculate standard uncertainty.
→Ur→RelUnc, ToRelativeUncertainty Calculate relative uncertainty.
ConstantsConstant objects represent named values like Euler's constant e, the ratio between circumference and diameter…

Equation & program libraries

LibraryEquationLibEq Returns the value of a library equation from the equation library.
LibraryItemXLib Returns the value of a library item from the library.
AttachLoad one or more library items from disk, ensuring that they are ready for use.
DetachUnload one or more library items from disk, freeing the memory they used.
LibrariesLibs Returns a list containing the currently attached libraries.

Settings

ShowBuiltinUnitsShow built-in units in the UnitsMenu even when a units file was loaded.
HideBuiltinUnitsHide built-in units in the UnitsMenu when a units file was loaded.
ShowBuiltinConstantsShow built-in constants after the file-defined ones (default).
HideBuiltinConstantsHide built-in constants in `ConstantsMenu` when a constants file is loaded.
ShowBuiltinEquationsShow built-in equations (default).
HideBuiltinEquationsHide built-in equations in `EquationsMenu` when an equations file is loaded.
ShowBuiltinLibraryShow the built-in library items in `Library`.
HideBuiltinLibraryHide built-in library items (default).
ShowBuiltinCharactersShow built-in character menus (default).
HideBuiltinCharactersHide built-in character menus when a characters file is loaded.
ExplicitConstantsRequire an explicit marker to identify a constant from the constant library.
AutomaticConstantsWhen parsing, identify the constants from the constants library without an explicit Ⓒ constant marker.
ExplicitXLibsRequire an explicit marker to identify a library item from the library.
AutomaticXLibsWhen parsing, identify the library entries from the library without an explicit Ⓛ library marker.
HideEquationBodyShow only the name of library equations on the stack.
ShowEquationBodyShow the body of library equations (default).
SetAngleUnitsWhen this setting is active, inverse trigonometric functoins asin, acos and atan return a unit value with a u…
NoAngleUnitsThis is the opposite setting to SetAngleUnits.

Program Control

47

Evaluation

EvaluateEval Evaluate the object at stack level 1.
RunThe Run command is intended to run programs or resume their execution.
→Program→Prg, ToProgram Convert an object into a program.
QuoteReturn an object unevaluated (quoted).
WaitWait for a key press or a time lapse.
HaltThe Halt instruction interrupts the execution of a program, making it possible to insert breakpoints at speci…
KillThe Kill instruction stops the execution of the program currently being debugged.

Conditionals

IfThen`IF cond THEN … END`.
IfThenElse`IF cond THEN … ELSE … END`.
CaseStatement`CASE test1 THEN … END test2 THEN … END … default END`; `value WHEN … END` compares against level 1 (DB48X sh…
CaseThenA `THEN … END` clause inside `CASE`.
CaseWhenA `value WHEN … END` clause inside `CASE`: shorthand for `DUP value = THEN`.
IfThenIFT Evaluate objects on the stack conditionally
IfThenElseIFTE Evaluate objects on the stack conditionally

Loops

StartNext`start finish START … NEXT`: counted loop without a variable.
StartStep`start finish START … step STEP`: counted loop with increment (may be negative or fractional).
ForNext`start finish FOR i … NEXT`: counted loop with local i.
ForStep`start finish FOR i … step STEP`: counted loop with local i and increment.
DoUntil`DO … UNTIL cond END`: body runs at least once, repeats until cond is true.
WhileRepeat`WHILE cond REPEAT … END`: repeats while cond is true.

Errors

IfErrThenError trap `IFERR … THEN … END`: run the trap clause when the first clause errors.
IfErrThenElseError trap `IFERR … THEN … ELSE … END`.
ErrorMessageerrm Return the last error message as text.
ErrorNumbererrn Return the last error number.
ClearErrorerr0 Clear the last error.
DoErrordoerr Raise an error: with a text, that message; with a number, the corresponding built-in error; 0 = user interrup…
DebugOnErrorAn error during a program enters the debugger, letting you correct the problem before resuming execution.
KillOnErrorAn error kills the program without giving you the possibility to debug the problem.
NeedToClearErrorsAn error stays displayed until cleared with a key press.
NoNeedToClearErrorsErrors clear automatically on the next key (default).

Debugging

Debugdbug The Debug command takes a program or expression as an argument, and starts debugging execution of it.
SingleStepsst The SingleStep command steps through a single instruction in the RPL program.
StepOverThe StepOver command steps over the next instruction.
StepOutThe StepOut command steps out of the current code block.
MultipleStepsThe MultipleSteps instruction evaluates an arbitrary number of steps in the program being debugged.
Continuecont The Continue command resumes execution of the current RPL program at the current instruction.
HaltThe Halt instruction interrupts the execution of a program, making it possible to insert breakpoints at speci…
KillThe Kill instruction stops the execution of the program currently being debugged.
TimedEvalTEval Perform EVAL and measure elapsed time
RuntimeStatisticsRunStats Return an array containing runtime statistics, including:
GarbageCollectorStatisticsGCStats Return an array containing garbage collector statistics, including:

Last arguments

LastArgumentsLastArg Put the last arguments back on the stack.
LastXPut the last first argument on the stack.
SaveLastArgumentsSave last arguments when evaluating commands interactively.
NoLastArgumentsDisable the saving of last arguments when interactively evaluating commands.
ProgramLastArgumentsSave last arguments during program execution.
NoProgramLastArgumentsDisable the saving of command arguments during program execution.
SaveStackSave the stack before each command so `Undo` can restore it (default).
NoStackSaveDo not save the stack before commands (disables `Undo`).

Flags

14

Set / clear / test

SetFlagSF Set a user or system flag.
ClearFlagCF Clear a user or system flag
FlipFlagFF Invert a user or system flag
TestFlagSetFS? Test if a flag is set
TestFlagClearFC? Test if a flag is clear
TestFlagSetThenClearFS?C Test if a flag is set, then clear it
TestFlagSetThenSetFS?S Test if a flag is set, then set it
TestFlagClearThenClearFC?C Test if a flag is clear, then clear it
TestFlagClearThenSetFC?S Test if a flag is clear, then set it

All flags

FlagsToBinaryRclF Recall all system flags as a binary number.
BinaryToFlagsStoF Store and replace all system flags from a binary number
MaxFlagsNumber of user flags available (default 128).
ModesReturns a program that will restore the current settings.
ResetModesReset all the settings to their default value.

Variables, Directories & Files

51

Store & recall

StoreSto Store an object into a specified location.
RecallRcl Recall an object from a specified location.
Copy Copy a value into a global variable.
PurgeDelete a global variable from the current directory
PurgeAllPgAll Delete a global variable from the current directory and enclosing directories.
IncrementIncr Add one to the content of a variable
DecrementDecr Subtract one from content of a variable
Store+Sto+, StoreAdd Add a value to the content of a variable
Store-Sto-, StoreSub Subtract a value from the contents of a variable
Store×Sto×, StoreMul Multiply the contents of a variable by a value
Store÷Sto÷, StoreDiv Divide the contents of a variable by a value
Recall+Rcl+, RecallAdd Add the content of a variable to a value on the stack
Recall-Rcl-, RecallSub Subtract the contents of a variable from a value on a stack
Recall×Rcl×, RecallMul Multiply a value on the stack by the contents of a variable The value in the variable is multiplied on the ri…
Recall÷Rcl÷, RecallDiv Divide a value on the stack by the contents of a variable

Directories

CreateDirectoryMkDir, CrDir Create one or more empty directories in the current directory.
PurgeDirectoryRmDir, PgDir Delete a global variable from the current directory, including directory contents.
UpDirectoryUpDir Change current directory to its parent
HomeDirectoryHome Change current directory to HOME
DirectoryPathPath Get a path to the current directory
CurrentDirectoryReturn the current directory object.
OrderReorder variables in the current directory.
VariablesVars List all visible variables in a directory
TypedVariablesTVars List variables of a specific type
VariablesMenuThe variables menu, accessed using the VAR key, displays the variables in the current directory.

Memory

AvailableMemoryMem Return the number of bytes available in memory.
FreeMemoryReturn the number of bytes immediately available in memory, without performing a cleanup of temporary values…
SystemMemoryReturn the amount of memory available to the system (bytes).
BytesReturn the size of the object and a hash of its value.
CloneNewOb, NewObject Make a new copy of the given object
GarbageCollectGC Perform a clean-up of temporary objects and return number of bytes reclaimed.
GarbageCollectorStatisticsGCStats Return an array containing garbage collector statistics, including:
RuntimeStatisticsRunStats Return an array containing runtime statistics, including:
GCStatsClearAfterRead`GCStats` resets counters after reading.
GCStatsKeepAfterReadCounters are kept (default).
RunStatsClearAfterRead`RunStats` resets counters after reading.
RunStatsKeepAfterReadCounters are kept (default).
GCTemporariesCleanupTemporaries are cleaned only by the garbage collector.
AutomaticTemporariesCleanupTemporaries cleaned automatically (default).

State & files

SaveStateSave the machine's state to disk, using the current state if one was previously loaded.
AttachLoad one or more library items from disk, ensuring that they are ready for use.
DetachUnload one or more library items from disk, freeing the memory they used.
LibrariesLibs Returns a list containing the currently attached libraries.

Settings

NumberedVariablesThis flag enables numbered variables similar to what existed on earlier RPN calculators.
NoNumberedVariablesThis flag disables numbered variables, behaving closer to the way RPL calculators work.
StoreAtEndNew variables are added at the end of the directory / VAR menu.
StoreAtStartNew variables are added at the start (default).
DistinguishSymbolCaseDistinguish the case in symbols, i.e.
IgnoreSymbolCaseIgnore the case in symbols, i.e.
PushEvaluatedAssignment`A='2+3'` pushes `A=5`.
PushOriginalAssignment`A='2+3'` pushes the original `A='2+3'` (default).

Input, Output & Display

38

Input

InputPrompts for data input to the command line and prevents the user access to stack operations.
PromptDisplay a message in the header area, then stop the currently executing program to wait for user input.
WaitWait for a key press or a time lapse.
RunThe Run command is intended to run programs or resume their execution.
HaltThe Halt instruction interrupts the execution of a program, making it possible to insert breakpoints at speci…

Output

DrawTextDisp Draw the text or object in level 2 at the position indicated by level 1.
DrawStyledTextDispXY Draw the text or object in level 3 at the position indicated by level 2, using the font specified in level 1.
ClearLCDClLCD Clear the LCD display, and block updates of the header or menu areas.
ShowDisplay the first level of the stack using the entire screen, with a possible scroll using the 4, 8, 6 and 2…
FreezeFreeze part of the display (header, stack, menu) after a graphics operation, so it is not refreshed until a k…
BeepEmit a beep of the given frequency (Hz) and duration (s): `440 0.5 Beep`.
HeaderHdr The Header command updates a special variable also called Header.
→TagToTag Apply a tag to an object.
HelpThe DB48X project includes an extensive built-in help, which you are presently reading.
ScreenCaptureCapture the current state of the screen in a dated file stored on the flash storage under the SCREENS/ direct…

Display of results

GraphicResultDisplayDisplay the first level of the stack (result) using a graphical representations for objects such as expressio…
TextResultDisplayDisplay the first level of the stack (result) using a text-only representations.
GraphicStackDisplayDisplay the stack levels above the first one using a graphical representations for objects such as expression…
TextStackDisplayDisplay the stack levels above the first one using a text-only representation.
MultiLineResultShow the result (level 1 of the stack) using multiple lines.
SingleLineResultShow the result (level 1 of the stack) on a single line.
MultiLineStackShow the levels of the stack after the first one using multiple lines.
SingleLineStackShow the levels of the stack after the first one on a single line This is the opposite of MultiLineStack.
AutoScaleStackWhen using graphic result display, automatically scale down the font size in order to make stack elements fit.
NoStackAutoScaleWhen using graphic result display, do not automatically scale down the font size in order to make stack eleme…
MaximumShowWidthMaxW Maximum number of horizontal pixels used to display an object with Show.
MaximumShowHeightMaxH Maximum number of vertical pixels used to display an object with Show.
ShowTimeLimitMaximum number of milliseconds that can be spent rendering an object for the Show command.
ResultGraphingTimeLimitMaximum amount of time that can be spent rendering the result (level 1 of the stack) graphically.
StackGraphingTimeLimitMaximum amount of time that can be spent rendering the levels of the stack above level 1.
TextRenderingSizeLimitLimit in bytes for the size of objects to be rendered on the stack.
GraphRenderingSizeLimitLimit in bytes for the size of objects to be rendered on the stack graphically.

Sound

BeepOnBeeps enabled (default).
BeepOffSilence all beeps (flag −56 set).
SilentBeepOnFlash the screen instead of beeping.
SilentBeepOffNormal audible beep (default).
ErrorBeepFrequencyFrequency (Hz) of the error beep (default 1400).
ErrorBeepDurationDuration (ms) of the error beep (default 50).

Graphics

46

Pixels & shapes

DrawPixelPixOn Turn on (draw in foreground) the pixel at the given coordinates.
DrawBackgroundPixelPixOff Turn off (draw in background) the pixel at the given coordinates.
PixelGrayLevelPix?, PixTest Test the pixel at the specified coordinates and return its gray level.
PixelColorPixC?, PixColor Test the pixel at the specified coordinates and return its color as a three component values for the red, gre…
DrawLineLine Draw a line between two points specified by level 1 and level 2 of the stack.
DrawRectangleRect Draw a rectangle given two opposite corners.
DrawRoundedRectangleRRect Draw a rounded rectangle given two opposite corners and a corner radius.
DrawEllipseEllipse Draw an ellipse given two opposite corners of its bounding box (or a graphics list).
DrawCircleCircle Draw a circle given its center and radius, e.g.
ClipSet the current clipping rectangle for graphic operations.
CurrentClipReturn the current clipping rectangle.
LineWidthLine width in pixels for graphic and plot drawing (default 1).

Patterns & colors

GrayPatternGrey, Gray Create a gray pattern for graphics operations.
RGBPatternRGB Create an RGB (red-green-blue) color pattern for graphics operations.
HSVPatternHSV Create an HSV (hue-saturation-value) color pattern for graphics operations.
ColorPatternColor Create color pattern for graphics operations.

Graphic objects

→GrobToGrob Creates a graphics object from a specified object on the stack.
→HPGrobToHPGrob Turn an object into a graphic object in HP compatible format (GROB).
→BitmapToBitmap Turn an object into a graphic object in DB48x PackedBitmaps format.
→PixmapToPixmap (This command is only available for color RPL)
BlankGraphicBlank Create a blank graphic object with the specified dimensions.
BlankGrobCreate a blank HP48-compatible graphic object (GROB) with the specified dimensions.
BlankBitmapCreate a blank packed bitmap graphic object with the specified dimensions.
BlankPixmapCreate a color pixmap graphic object with the specified dimensions.
GraphicXorGXor Superimposes a source graphic object onto a destination graphic object, which can be Pict to represent what i…
GraphicOrGOr Superimposes a source graphic object onto a destination graphic object, which can be Pict to represent what i…
GraphicAndGAnd Superimposes a source graphic object onto a destination graphic object, which can be Pict to represent what i…
GraphicPicturePict Pict is the name given to the graphics shown on the calculator's screen.
→LCD→Screen, ToLCD Display a graphic object on the screen.
LCD→Screen→, FromLCD Return the content of the screen as a graphic object that is put on the stack.
ClearLCDClLCD Clear the LCD display, and block updates of the header or menu areas.

Typeset graphics

GraphicAppendAppend two graphic objects side by side.
GraphicStackGrobAdd Stack two graphic objects on top of one another.
GraphicSubscriptCombine two graphic objects with the second one in subscript position
GraphicExponentCombine two graphic objects with the second one in exponent position
GraphicRatioCombine two graphic objects as if they were in a fraction
GraphicRootGenerate a square root sign around a graphical object
GraphicParenthesesGenerate parentheses around a graphical object
GraphicNormGenerate a norm (vertical bars) around a graphical object
GraphicSumGenerate a sum (capital Sigma) sign of the given size
GraphicProductGenerate a product (capital Pi) sign of the given size
GraphicIntegralGenerate an integral sign of the given size

Settings

CompatibleGROBsWhen this flag is set, graphic operations will generate HP48 compatible GROB objects.
PackedBitmapsWhen this flag is set, graphic operations will generate DB48x graphic objects, which are slightly denser and…
SoftwareDisplayRefreshOn hardware calculator, use the software display refresh.
DMCPDisplayRefreshOn hardware calculators, use the DMCP system background display refresh.

Plotting

33

Plot commands

FunctionPlotFunction Plot a function in the form y=f(x).
PolarPlotPolar Plot a function in polar coordinates, where r=f(θ).
ParametricPlotParametric Plot a parametric curve where x and y are both functions of a parameter.
TruthPlotTruth Plot a curve where an expression in x and y is tested.
ScatterPlotScatter Create a scatter plot from the first two columns of a matrix, the first column representing the horizontal ax…
BarPlotBar Create a bar chart from a vector of values.
HistogramPlotHistogram Create a histogram from a data vector on the stack.
DrawPlotDraw Draw the plot for the current `Equation` (EQ) using `PlotParameters`, like HP's DRAW.
DrawAxesDrax Draw the plot axes according to `PlotParameters`.
EquationEq Define an equation for use in solving or integration operations.
StoreEquationStEq Store expression in Equation variable.
RecallEquationRcEq Recall expression from Equation variable.

Plot parameters

PlotParametersPPar The PlotParameters reserved variable defines the plot parameters, as a list, with the following elements:
PlotMinPMin Set the minimum value for the current plot range.
PlotMaxPMax Set the maximum value for the current plot range.
PlotXRangeXRng, XRange Set the X-axis range for the current plot.
PlotYRangeYRng, YRange Set the Y-axis range for the current plot.
PlotScaleScale Set the plot scale (units per 10 pixels) in X and Y, adjusting `PlotParameters`.
PlotScaleXScaleH, XScale Set the horizontal plot scale.
PlotScaleYScaleW, YScale Set the vertical plot scale.
PlotCenterCentr, Center Set the coordinates of the center of the plot in `PlotParameters`.
ResolutionRes Set the plot resolution (interval between independent-variable samples; a based number gives pixels).
IndependentVariableINDEP, Indep Set the independent variable in PlotParameters.
DependentVariableDEPND, Depnd Set the dependent variable in PlotParameters.

Settings

DrawPlotAxesDraw axes (default).
NoPlotAxesDo not draw axes when plotting (flag −29 set).
CurveFillingConnect samples with lines when plotting (default).
NoCurveFillingDo not connect plotted points (flag −31 set).
XYPlotBinsNumber of bins used to draw XY plots (e.g.
StatsPlotBinsNumber of bins used to draw statistical plots (e.g.
PlotRefreshRateScreen refresh interval (µs) while plotting.
GraphingTimeLimitMaximum number of milliseconds that can be spent rendering an object graphically.
LineWidthLine width in pixels for graphic and plot drawing (default 1).

Statistics

48

Data

ΣDataΣDat, StatsData The ΣData variable contains the statistics data, in the form of a matrix.
ΣParametersΣPar, StatsParameters The ΣParameters variable contains the statistics parameters, as a list with five elements:
Σ+AddData Add data to the statistics data array ΣData.
Σ-RemoveData Remove the last data entered in the statistics array, and pushes it on the stack.
RecallΣRclΣ, RecallData Recall statistics data and puts it on the stack
StoreΣStoΣ, StoreData Stores an array from the stack as statistics data in the ΣData variable.
ClearΣClΣ, ClearData Clear statistics data.
ΣSizeNΣ, DataSize Return the number of data rows in the statistics data array ΣData.
ΣColumnsColΣ, DataColumns Set both the independent and dependent data columns in the reserved variable ΣParameters.
IndependentColumnXCol Set the independent variable column in the reserved variable ΣParameters.
DependentColumnYCol Set the dependent variable column in the reserved variable ΣParameters.

Summary statistics

ΣTotalTot, DataTotal Returns the sum of all columns in the statistics data array ΣData.
ΣMeanMean, Average Compute the average (mean) of the values in the statistics data.
MedianCompute the median of the values in the statistics data array ΣData.
ΣMinMinΣ, MinData Compute the smallest of the values in the statistics data array ΣData.
ΣMaxMaxΣ, MaxData Compute the largest of the values in the statistics data array ΣData.
VarianceVar Calculates the sample variance of the coordinate values in each of the columns in the current statistics matr…
StandardDeviationSDev Calculates the sample standard deviation of each of the columns of coordinate values in the current statistic…
CovarianceCov Returns the sample covariance of the independent and dependent data columns in the current statistics matrix…
CorrelationCorr Returns the correlation coefficient of the independent and dependent data columns in the current statistics m…
PopulationVariancePVar Calculates the population variance of the coordinate values in each of the m columns in the current statistic…
PopulationStandardDeviationPSDev Calculates the population standard deviation of each of the m columns of coordinate values in the current sta…
PopulationCovariancePCov Computes the population covariance of the independent and dependent data columns in the current statistics ma…
FrequencyBinsBins Sort into frequency bins.

Sums

ΣXSumOfX Return the sum of values in the XCol column of the statistics data array ΣData.
ΣYSumOfY Return the sum of values in the YCol column of the statistics data array ΣData.
ΣXYSumOfXY Return the sum of the product of values in the XCol and YCol columns of the statistics data array ΣData.
ΣX²ΣX2, SumOfXSquares Return the sum of the squares of the values in the XCol column of the statistics data array ΣData.
ΣY²ΣY2, SumOfYSquares Return the sum of the squares of the values in the YCol column of the statistics data array ΣData.

Regression

LinearRegressionLR Uses the currently selected statistical model to calculate the linear regression coefficients (intercept and…
SlopeReturn the slope value last computed by LinearRegression
InterceptReturn the intercept value last computed by LinearRegression
PredictXPredX Predict X from Y using the current fit model.
PredictYPredY Predict Y from X using the current fit model.
RegressionFormulaΣLine Return the regression formula for the current fit as an expression.
BestFitSelect the best linear regression mode based on current data, i.e.
LinearFitLinFit Select linear fit, i.e.
ExponentialFitExpFit Select exponential fit, i.e.
LogarithmicFitLogFit Select logarithmic fit, i.e.
PowerFitPwrFit Select power fit, i.e.
LinearFitSumsWhen this setting is active, statistics functions that return sums, such as ΣXY or ΣX², operate without any a…
CurrentFitSumsWhen this setting is active, statistics functions that return sums, such as ΣXY or ΣX², will adjust their inp…

Random

RandomNumberrand Generate a random real number between 0 and 1, 1 being excluded.
RandomGenerate a pseudo-random number between two bounds.
RandomSeedrdz Initialize random number generator with a seed.
RanMRandomArray, RandomMatrix Returns an array containing random integer values between -9 and 9.
RandomGeneratorBitsDefine the number of random bits generated by ACORN random number generator, between 32 and 4096 bits.
RandomGeneratorOrderDefine the order of the ACORN random number generator, i.e.

Menus & Keyboard

101

Menu commands

MenuThis command shows up a system menu or defines a custom menu.
TemporaryMenuTMenu The TMenu command works like Menu, but does not define the CustomMenu variable.
RecallMenuRclMenu Return the last menu entry, or 0 if there is no current menu.
LastMenuThe LastMenu function (🟨 A), returns back in the history of past visited menus.
CustomMenuCst The CustomMenu command activates a menu defined by the variable of the same name.
ToggleCustomMenuThe ToggleCustomMenu command toggles between the VariablesMenu and the CustomMenu.
VariablesMenuThe variables menu, accessed using the VAR key, displays the variables in the current directory.
ToolsMenuThe ToolsMenu invokes a context-dependent menu adapted to the top level of the stack.
CatalogThe Catalog command is triggered by the + command while in Alpha mode, or using 🟨 + otherwise (CAT).
MenuNextPageShow the next page of the current menu (F6 ▶ when the menu overflows).
MenuPreviousPageShow the previous menu page (🟨 F6 ◀).
MenuFirstPageReturn to the first page of the current menu.

User mode & key assignment

ToggleUserModeToggle UserMode between on and off states.
UserModeEnables user mode. The opposite setting is UserModeOff.
UserModeOffDisable user mode. The opposite setting is UserMode.
UserModeLockLock user mode when using ToggleUserMode, meaning that user mode will not automatically be disabled after the…
UserModeOnceEnable temporary user mode, where the first activation of ToggleUserMode only enables user mode for a single…
KeyMapKeys Key assignments on DB48x are not global, unlike what happens with ASN on HP claculators.
AssignKeyAsn The ASN command defines the behaviour of a given key in user mode.
StoreKeysStoKeys Defines multiple keys on the user keyboard by assigning objects to specified keys.
RecallKeysRclKeys Recall the current user key assignment in the current directory.
DeleteKeysDelKeys Delete key assignments.
StandardKeySKey The StandardKey is given as an argument to AssignKey or StoreKeys to erase a specific key assignment.
UserModeMenuMenu for user-mode keyboard customization: ASN, StoKeys, RclKeys, DelKeys, user mode on/off/lock.

Math menus

MainMenuThe Main menu gives access to all the functions in your calculator, sorted by cathegory.
MathMenuThe Math menu gives access to mathematical functions like SIN in your calculator.
RealMenuMenu: Trig · Hyper · Powers · Prob · Angles · Parts · Ceil · Floor · rem · % · %Chg · %Total · Min · Max · mo…
PartsMenuMenu: R→I · →ℚ · →ℚπ · →Decimal · SignificantDigits · Truncate · Mantissa · Exponent · ceil · floor · abs · s…
FractionsMenuMenu: Frac→ · 1 1/2 · ¹/₃ · FractionIterations · FractionLargestPrime · FractionDigits · %Total · %Chg · DMS+…
PowersMenuExpLogMenu Menu: pow · xroot · FstSet · LstSet · popcnt · Hyper · exp2 · log2 · expm1 · ln1p · x³ · ∛ · exp · ln · exp10…
NumbersMenuMenu: →Int · IsPrime · NextPr · PrevPr · GCD · LCM · →Num · →Q · →Qπ · R#Seed · RandomGeneratorBits · RandomG…
ProbabilitiesMenuMenu: Normal · Student · Chi² · F-Distr · FFT · Γ · ln(Γ) · erf · erfc · RSeed · Comb · Perm · x!
ComplexMenuMenu: 2+i3 · ℝ∡ℝ→ℂ · ℂ→ℝ∡ℝ · Auto ℂ · Angles · →Rect · →Polar · conj · sign · |z| · arg · ℝ→ℂ · ℂ→ℝ · re · im
RangeMenuMenu: Size · →Range · →∆Range · →%Range · →σRange · ∪ · ∩ · Range→
VectorMenuMenu: Hypot · Atan2 · →Vec2 · →Vec3 · Vec→ · →Cylind · Complex · Matrix · Norm · Dot · Cross · →Rect · →Polar…
MatrixMenuMenu: RowNrm · ColNrm · CondNum · Size · Vector · Det · Norm · →Array · Array→ · Random · Idnty · Const · Tra…
AnglesMenuMenu: →DMS · DMS→ · DMS+ · DMS- · Hypot · Atan2 · →Deg · →Rad · →Grad · →πr · →Polar · →Rect · Deg · Rad · Gr…
CircularMenuMenu: sec · csc · cot · sec⁻¹ · csc⁻¹ · cot⁻¹ · sin · cos · tan · sin⁻¹ · cos⁻¹ · tan⁻¹
HyperbolicMenuMenu: csch · sech · coth · csch⁻¹ · sech⁻¹ · coth⁻¹ · sinh · cosh · tanh · sinh⁻¹ · cosh⁻¹ · tanh⁻¹
BasesMenuMenu: WordSize · NAnd · NOr · Implies · Excludes · Base · Bin · Oct · Dec · Hex · And · Or · Xor · Not · SLC…
StatisticsMenuMenu: StoΣ · RclΣ · ClrΣ · Proba · Plot · XCol · YCol · MinΣ · MaxΣ · ΣSize · Σ+ · Σ- · Total · Mean · StdDev…
SignalProcessingMenuMenu: FFT · InvFFT

Symbolic & solver menus

SymbolicMenuMenu: Integ · DSolve · Simplify · KeepAll · Arith · Calc · Trig · Exp/Ln · Poly · Graph · Collect · Expand ·…
AlgebraMenuMenu: Ⓓ · ⓧ · Stoⓧ · Final · &Wild · Symb · ∂ · ∫ · ∑ · ∏ · ∆ · →Qπ · ↓Match · ↑Match · Isolate · Apply · Sub…
ArithmeticMenuMenu: Show · Quote · | · Rules · Symb · ∂ · ∫ · ∑ · ∏ · ∆ · Taylor
CalculationMenuMenu: Limit · Serie · Taylor · Symb · LName · XVars · Deriv · DerivX · IBF · IntVX
TrigIdentitiesMenuMenu: Symb · HalfTan · Tan→SinCos · Tan→SinCos² · TExpand · TLin · TrigSin
ExpLogIdentitiesMenuMenu: ExpLn · Lin · LnCollect · SinCos · TExpand · Symb
IntegrationMenuDifferentiationMenu Menu: Σ · ∏ · ∂ · ∫ · Num ∫ · Symb ∫ · Eq · Indep
PolynomialsMenuMenu: MSolvr · Solve · TVMRoot · FRoots · XRoot · FCoef · Obj→ · Display · QuoRem · Root · Zeros · MRoot · →P…
SolverMenuMSolvr Menu: Multi · Finance · Plot · Eqns · SolverImprecision · SolverIterations · ▶Eq · Stoⓧ · Symb · Diff · Poly…
NumericalSolverMenuMenu: Eq · Indep · Root · SolverMenu
SymbolicSolverMenuMenu: Eq · Indep · Root · Isolate · SolverMenu
PolynomialSolverMenuMenu: Eq · Indep · Root · SolverMenu
LinearSolverMenuMenu: Eq · Indep · Root · SolverMenu
MultiSolverMenuMenu: Eqs · Indeps · MRoot · SolverMenu
DifferentialSolverMenuMenu: Eq · Indep · Root · SolverMenu
SolvingMenuInteractive solver menu for the current `Equation`: F-key = store, 🟨 = solve for variable, 🟦 = recall.
FinanceSolverMenuTVM Display the Time Value of Money (TVM) solver menu.

Program & object menus

ProgramMenuMenu: Stack · Debug · Objects · List · Flag · Version · Mem · Test · Cmp · Loop · Base · Eval · Run
TestsMenuMenu: Case · Then · When · Compare · Loops · Prog · IfThen · IfElse · IfErr · IfErrElse · IFT · IFTE · < · =…
CompareMenuMenu: true · false · Tests · Loops · Prog · and · or · xor · not · == · Unimplemented · < · = · > · ≤ · ≠ · ≥
LoopsMenuMenu: Compare · Prog · Label · Goto · Gosub · Return · Start · StStep · For · ForStep · Until · While
ListMenuMenu: Sort · RSort · Map · Reduce · Filter · QSort · RQSort · ∑List · ∏List · ∆List · →List · List→ · Size ·…
StackMenuMenu: DupN · DropN · Depth · Nip · Pick3 · Dup2 · Drop2 · Rot↓ · Roll↓ · Pick · Dup · Drop · Rot↑ · Roll↑ · O…
ClearThingsMenuMenu: Stack · Purge · Stats · Mem · Error · LCD
ObjectMenuMenu: Eval · Run · Clone · DTag · Tag→ · Tools · →List · →Text · →Tag · →Graph · →Prog · →Array · Bytes · Typ…
FlagsMenuMenu: Prog · Loops · Modes · F→Bin · Bin→F · Tests · Flip · Set?Set · Clr?Set · Set · Clear · Set?
TextMenuMenu: T→Real · T→Expr · T→Int · T→Pos · T→Code · Code→T · Extract · T→Obj · T→Alg · T→Num · →Text · Text→ · L…
CharactersMenuThe CharactersMenu, which can be accessed using 🟦 2 (CHAR), presents a convenient way to insert characters.
DebugMenuThe debug menu contains operations necessary to debug RPL programs:
MemoryMenuMenu: Free · TVars · PgAll · CurDir · GCStats · Avail · Vars · Home · Path · GC · Store · Recall · Purge · Cr…
FilesMenuMenu: Seek · Dir · Save · Load · Open · Close · Read · Write · Libs · Attach · Detach · Voltage · USB?
IOMenuMenu: Save · MinimumBatteryVoltage · Save · Load · Print · Voltage · USB?
PrintingMenuMenu: Print · Screen · Disk · IR

Libraries & units menus

ConstantsMenuConstantsLibrary, ConLib The ConstantsMenu gives access to numerous constants, shown in various categories.
EquationsMenuEquationsLibrary, EqnLib Content loaded dynamically at runtime.
LibraryThe Library is a catalog of frequently used and rarely modified objects that are stored on disk in the config…
UnitsMenuContent loaded dynamically at runtime.
UnitsConversionsMenuMenu: µ (-6) · n (-9) · p (-12) · T (+12) · P (+15) · m (-3) · c (-2) · k (+3) · M (+6) · G (+9) · Convert ·…

Modes, graphics & time menus

ModesMenuThe ModesMenu controls the primary modes of the calculator.
DisplayModesMenuThe DisplayModesMenu is accessible through 🟨O and gives a quick access to the various display settings.
SeparatorModesMenuThis menu contains the configuration of separators used when displaying numbers.
MathModesMenuThe MathModesMenu controls settings related to mathematical computations.
UserInterfaceModesMenuMenu: 3-lines · 1-line · Flat · Round · Hide · ResultFont · StackFont · EditorFont · MultilineEditorFont · Cu…
PlotMenuMenu: Lines · Axes · StatsPlotBins · XYPlotBins · PlotRefreshRate · Foregnd · Backgnd · LineWdth · Xrange · Y…
GraphicsMenuMenu: PixOn · PixOff · Pix?
TimeMenuShow a softkey menu for time-related commands:
DateMenuShow a softkey menu for date-related commands, including:
AlarmMenuMenu: AckAll · Time · Date · Alarm · Ack · →Alarm · Alarm→ · FindAlm · DelAlm
EditMenuMenu: Stack · Hist↑ · Hist↓ · Csr⇄Sel · |← · →| · Replace · Copy · Clear · Select · ←Word · Word→ · Search ·…

Menu appearance

ThreeRowsMenusDisplay menus on up to three rows, with shift and double-shift functions showns above the primary menu functi…
SingleRowMenusDisplay menus on a single row, with labels changing using shift.
FlatMenusDisplay menus on a single row, flattened across multiple pages.
MenuAppearanceSetting holding the menu layout (SingleRowMenus/FlatMenus/ThreeRowsMenus).
RoundedMenusDisplay menus using rounded black or white tabs.
SquareMenusDisplay menus using square white tabs.
ExitKeepsMenuBy default, the EXIT key clears the current menu if not editing.
ExitClearsMenuRestore the default behaviour where EXIT clears the current menu when not editing.
ShowEmptyMenuShow empty menu entries.
HideEmptyMenuRestore the default behaviour where empty menus entries are not shown, leaving more space for the stack displ…

Editor & UI Actions

54

Editing

EditEdit the object in level 1 in the command-line editor (▶ key).
StackEditorEnter the interactive stack (◀ key): browse levels, Edit, Eval, Roll, Pick, Drop, →List.
EditorSelectEditor: start/stop text selection.
EditorCutCut the text selection to the clipboard.
EditorCopyCopy the selected text to the clipboard.
EditorPasteInsert the clipboard contents on the command-line.
EditorSearchIncremental search in the text editor.
EditorReplaceEditor: search and replace.
EditorClearEditor: clear the command line.
EditorFlipEditor: flip cursor and selection anchor.
EditorWordLeftEditor: move one word left.
EditorWordRightEditor: move one word right.
EditorBeginEditor: move to beginning of line/text.
EditorEndEditor: move to end of line/text.
EditorHistoryRecall the previous command line from history (🟨 ◀ when not editing).
EditorHistoryBackMove back in the command-line history.
EditorWrapColumnColumn at which the editor will start wrapping long lines of code.
TabWidthWidth of a tab in the editor, in pixels.
CursorBlinkRateSet the cursor blink rate in millisecond, between 50ms (20 blinks per second) and 5000ms (blinking every 5 se…

Keyboard actions (bindable)

UILeftShiftKeyboard action: yellow shift (🟨).
UIRightShiftKeyboard action: blue shift (🟦).
UINoShiftKeyboard action: cancel shift.
UIAlphaKeyboard action: toggle uppercase alpha mode.
UILowercaseKeyboard action: toggle lowercase alpha mode.
UINoAlphaKeyboard action: leave alpha mode.
UIAlgebraicKeyboard action: start an algebraic expression `''` or insert `()` (the ' () key).
UITextKeyboard action: insert `""` text delimiters (🟦 ENTER).
UIExitKeyboard action: EXIT / cancel / interrupt.
UIEnterKeyboard action: ENTER (in alpha mode).
UIDecimalKeyboard action: decimal separator key.
UILeftKeyboard action: cursor left (◀).
UIRightKeyboard action: cursor right (▶).
UIUpKeyboard action: cursor up (🟨◀).
UIDownKeyboard action: cursor down (🟨▶).
UIBackspaceKeyboard action: backspace.
UIDeleteKeyboard action: delete character under cursor.
SelfInsertEditor: insert the key's own label text (used by soft-menu keys that insert text).
ReplaceCharEditor: replace the character left of the cursor (used by the character catalog).
InsertHmsEditor: insert an H:MM:SS / DMS separator while typing an angle or time.

Power & system

PowerOffOff Turn calculator off programmatically
PowerOffWithImageOffWithImage Power off and show the off-screen image (🟨 EXIT).
SystemSetupDisplay the built-in system setup
SaveStateSave the machine's state to disk, using the current state if one was previously loaded.
VersionReturn DB48X version information as text.
BatteryVoltageReturn the current battery voltage as a decimal value.
PowerVoltageReturn the voltage of the power source.
USBPoweredReturns True if the calculator is connected to USB power.
LowBatteryReturns True if the calculator is running low on battery, which is defined as having less than 1/4th of the c…
DMCPLowBatteryReturns True if the calculator is running low on battery according to the DMCP get_lowbat_state() function.
MinimumBatteryVoltageThis setting defines the minimum battery voltage in millivolts where the calculator will automatically switch…
BatteryRefreshThis setting defines the refresh interval in milliseconds between checks or updates of the battery levels.
BusyIndicatorRefreshRefresh interval (ms) of the busy indicator in the header.
ChuckChuckNorris The most powerful command in DB48x.
UnimplementedPlaceholder raising an `Unimplemented` error; last command in the catalog.

Display & Number Formatting

83

Display mode

StandardDisplayStd Display numbers using full precision.
SignificantDisplaySig Display up to the given number of digits without trailing zero.
FixedDisplayFix Display numbers rounded to a specific number of decimal places.
ScientificDisplaySci Display numbers in scientific notation, i.e.
EngineeringDisplayEng Display numbers as a mantissa with a specified number of digits, followed by an exponent that is a multiple o…
DisplayModeSetting holding the current display mode (Std/Sig/Fix/Sci/Eng); recall with `'DisplayMode' RCL`.
DisplayDigitsNumber of digits for the current display mode (`3 FIX` sets it to 3).
StandardExponentSelect the maximum exponent before switching to scientific notation.
MinimumSignificantDigitsSelect the minimum number of significant digits before switching to scientific notation in FIX and SIG mode.
PrecisionPrec Set the default computation precision, given as a number of decimal digits.
TrailingDecimalDisplay a trailing decimal separator to distinguish decimal from integer types.
NoTrailingDecimalHide the trailing decimal separator for decimal values with no fractional part.
LeadingZeroDisplay a leading zero for fractional decimal values, i.e.
NoLeadingZeroDo not display the leading zero for fractional decimal values, i.e.
FancyExponentDisplay the exponent in scientific mode using a fancy rendering that is visually similar to the normal mathem…
ClassicExponentDisplay the exponent in scientific mode in a way reminiscent of classical HP48 calculators, for example 1.23E…
FixedWidthDigitsUse fixed-width digits so columns of numbers align.
VariableWidthDigitsProportional digits (default).

Fractions

MixedFractionsDisplay fractions as mixed fractions when necessary, e.g.
ImproperFractionsDisplay fractions as improper fractions, e.g.
SmallFractionsShow fractions using smaller characters, for example ¹²/₄₃
BigFractionsShow fractions using regular characters, for example 12/43
ShowAsDecimalShow integer numbers like 25 and fractions like 3/2 as decimal values.
ShowIntegersAndFractionsShow integer numbers like 25 and fractions like 3/2 as is.
FractionIterations→QIterations Define the maximum number of iterations converting a decimal value to a fraction.
FractionDigits→QDigits Define the maximum number of digits of precision converting a decimal value to a fraction.
FractionLargestPrime→QπMaxPrime Define the largest prime used when extracting square factors during →Qπ conversion.

Separators & spacing

DecimalDotSelect the dot as a decimal separator, e.g.
DecimalCommaSelect the comma as a decimal separator, e.g.
MantissaSpacingSelect the spacing for the non-fractional part of the mantissa.
FractionSpacingSelect the spacing for the fractional part of the mantissa.
BasedSpacingSelect the spacing for based numbers.
NumberSpacesSeparate digits with thin spaces.
NumberDotOrCommaSeparate digits with dots if DecimalComma is active, and with commas if DecimalDot is active.
NumberTicksSeparate digits with ticks ’.
NumberUnderscoreSeparate digits with underscores _.
NumberSeparatorCommandSetting holding the digit-group separator style for numbers (spaces, dot/comma, ticks, underscore).

Command & name spelling

LowerCaseCommandsLowerCase Display comands using the short form in lower case, for example sto.
UpperCaseCommandsUpperCase Display comands using the short form in upper case, for example STO.
CapitalizedCommandsCapitalized Display comands using the short form capitalized, for example Sto.
LongFormCommandsLongForm Display comands using the long form, for example Store.
CommandDisplayModeSetting holding the command spelling mode (LowerCase/UpperCase/Capitalized/LongForm).
LowerCaseSymbolsLowerCaseNames Display names using the short form in lower case, for example varName will show as varname.
UpperCaseSymbolsUpperCaseNames Display names using the short form in upper case, for example varName will show as VARNAME.
CapitalizedSymbolsCapitalizedNames Display names using the short form capitalized, for example varName will show as VarName.
LongFormSymbolsLongFormNames Display names using the long form, for example varName will show as varName.
NameDisplayModeSetting holding the symbol spelling mode.

Numeric behaviour

HardwareFloatingPointHardFP, HFP Use IEEE-754 binary float (32-bit below 7 digits, 64-bit below 16) — faster, not exact for decimals.
SoftwareFloatingPointSoftFP, SFP Use variable-precision decimal arithmetic (default).
MaxNumberBitsDefine the maxmimum number of bits for numbers.
MaximumDecimalExponentLargest decimal exponent before overflow (default 2⁶⁰).
MaxFactorsBitsMaximum number of bits for integers accepted by prime-related commands: IsPrime, Factors, NextPr, and PrevPr.
MaxFactorIterationsMaximum number of Pollard's Rho iterations per attempt when factoring integers with Factors.
IgnorePrecisionLossSilently ignore loss of precision (e.g.
ReportPrecisionLossReport precision loss with an error (default).
TooManyDigitsErrorsError when a number literal has more digits than `Precision`.
NoErrorForTooManyDigitsExtra digits are kept silently (default).
UseCrossForMultiplicationRender multiplication as `×`.
UseDotForMultiplicationRender multiplication as `·` (default).

Overflow, underflow & infinity

InfinityValue`1/0` returns the `∞` constant and sets `InfiniteResultIndicator` (flag −22 set).
InfinityError`1/0` raises `Division by zero` (default).
OverflowValueOverflow returns ±∞ and sets an indicator flag (default: value).
OverflowErrorOverflow raises an error (flag −21 clear).
UnderflowValueUnderflow returns 0 and sets an indicator flag (default: value).
UnderflowErrorUnderflow raises an error (flag −20 clear).
UndefinedValue`0/0` returns the `?` undefined constant.
UndefinedError`0/0` raises `Undefined operation` (default).
ZeroOverZeroIsUndefined`0/0` gives the undefined value `?`.
ZeroOverZeroIsError`0/0` is an error (default).
ZeroPowerZeroIsUndefined`0^0` gives `?`.
ZeroPowerZeroIsOne`0^0` = 1 (default).
OverflowIndicatorIndicator flag −25: an overflow occurred.
NoOverflowNo overflow recorded.
PositiveUnderflowIndicatorIndicator flag −24: a positive underflow occurred.
NoPositiveUnderflowNo positive underflow recorded.
NegativeUnderflowIndicatorIndicator flag −23: a negative underflow occurred.
NoNegativeUnderflowNo negative underflow recorded.
InfiniteResultIndicatorIndicator flag −26: an infinite result was produced.
NoInfiniteResultNo infinite result recorded.
UndefinedResultIndicatorIndicator flag: an undefined result was produced.
NoUndefinedResultNo undefined result recorded.

Programs

VerticalProgramRenderingRender programs on multiple lines with indentation.
HorizontalProgramRenderingRender programs on a single line (default).

Header, Date/Time & Theme

97

Header

HeaderHdr The Header command updates a special variable also called Header.
CustomHeaderRefreshThis setting indicates how frequently a custom Header should be evaluated.
ShowDateShow the date in the header (default).
HideDateHide the date in the header.
ShowTimeShow the time in the header (default).
HideTimeHide the time in the header (flag −40 clear).
ShowSecondsShow seconds in the header clock.
HideSecondsHide seconds (default).
Time24H24-hour clock (default, flag −41).
Time12H12-hour clock with AM/PM.
ShowDayOfWeekShow the day of week (default).
HideDayOfWeekHide the day of week in the header.
ShowMonthNameShow the month name (default).
HideMonthNameShow the month as a number in the header.
DayBeforeMonthDate shown as day/month (default).
MonthBeforeDayDate shown as month/day (flag −42 clear).
YearLastDate shown with the year last (default).
YearFirstDate shown with the year first (ISO style).
FourDigitYearFour-digit year (default).
TwoDigitYearTwo-digit year in dates.
DateSlashDisplay dates with `/` separators.
DateDashDisplay dates with `-` separators.
DateDotDisplay dates with `.` separators.
DateSpaceDisplay dates with space separators.
DateSeparatorCommandSetting holding the date separator (DateSlash/DateDash/DateDot/DateSpace).
ShowVoltageShow battery voltage next to the battery icon (default).
HideVoltageHide the battery voltage in the header.

Fonts

ResultFontFont used for the level-1 result.
StackFontFont used for stack levels above 1.
EditorFontFont used in the single-line editor.
MultilineEditorFontFont used in the multi-line editor.
CursorFontFont of the cursor in the single-line editor.
MultilineCursorFontFont of the cursor in the multi-line editor.
HeaderFontFont used in the header area.

Theme colors

BackgroundTheme color (24-bit RGB value) for background.
ForegroundTheme color (24-bit RGB value) for foreground.
StackBackgroundTheme color (24-bit RGB value) for stack background.
StackForegroundTheme color (24-bit RGB value) for stack foreground.
StackLevelBackgroundTheme color (24-bit RGB value) for stack level background.
StackLevelForegroundTheme color (24-bit RGB value) for stack level foreground.
StackLineForegroundTheme color (24-bit RGB value) for stack line foreground.
ResultBackgroundTheme color (24-bit RGB value) for result background.
ResultForegroundTheme color (24-bit RGB value) for result foreground.
EditorBackgroundTheme color (24-bit RGB value) for editor background.
EditorForegroundTheme color (24-bit RGB value) for editor foreground.
EditorLineForegroundTheme color (24-bit RGB value) for editor line foreground.
ErrorBackgroundTheme color (24-bit RGB value) for error background.
ErrorForegroundTheme color (24-bit RGB value) for error foreground.
ErrorBorderTheme color (24-bit RGB value) for error border.
PlotErrorBackgroundTheme color (24-bit RGB value) for plot error background.
SelectionBackgroundTheme color (24-bit RGB value) for selection background.
SelectionForegroundTheme color (24-bit RGB value) for selection foreground.
CursorSelBackgroundTheme color (24-bit RGB value) for cursor sel background.
CursorBackgroundTheme color (24-bit RGB value) for cursor background.
CursorForegroundTheme color (24-bit RGB value) for cursor foreground.
CursorBorderTheme color (24-bit RGB value) for cursor border.
CursorAlphaBackgroundTheme color (24-bit RGB value) for cursor alpha background.
CursorAlphaForegroundTheme color (24-bit RGB value) for cursor alpha foreground.
CursorAlphaBorderTheme color (24-bit RGB value) for cursor alpha border.
SearchBackgroundTheme color (24-bit RGB value) for search background.
SearchForegroundTheme color (24-bit RGB value) for search foreground.
CommandBackgroundTheme color (24-bit RGB value) for command background.
CommandForegroundTheme color (24-bit RGB value) for command foreground.
UserCommandBackgroundTheme color (24-bit RGB value) for user command background.
UserCommandBorderTheme color (24-bit RGB value) for user command border.
UserCommandForegroundTheme color (24-bit RGB value) for user command foreground.
MenuBackgroundTheme color (24-bit RGB value) for menu background.
RoundMenuBackgroundTheme color (24-bit RGB value) for round menu background.
RoundMenuForegroundTheme color (24-bit RGB value) for round menu foreground.
SquareMenuBackgroundTheme color (24-bit RGB value) for square menu background.
SquareMenuForegroundTheme color (24-bit RGB value) for square menu foreground.
SelectedMenuForegroundTheme color (24-bit RGB value) for selected menu foreground.
SkippedMenuBackgroundTheme color (24-bit RGB value) for skipped menu background.
FolderCornerForegroundTheme color (24-bit RGB value) for folder corner foreground.
UnimplementedForegroundTheme color (24-bit RGB value) for unimplemented foreground.
HeaderBackgroundTheme color (24-bit RGB value) for header background.
HeaderForegroundTheme color (24-bit RGB value) for header foreground.
DateForegroundTheme color (24-bit RGB value) for date foreground.
TimeForegroundTheme color (24-bit RGB value) for time foreground.
StateNameForegroundTheme color (24-bit RGB value) for state name foreground.
RunningIconForegroundTheme color (24-bit RGB value) for running icon foreground.
SteppingIconForegroundTheme color (24-bit RGB value) for stepping icon foreground.
HaltedIconForegroundTheme color (24-bit RGB value) for halted icon foreground.
GCIconForegroundTheme color (24-bit RGB value) for gcicon foreground.
LeftShiftBackgroundTheme color (24-bit RGB value) for left shift background.
LeftShiftForegroundTheme color (24-bit RGB value) for left shift foreground.
RightShiftBackgroundTheme color (24-bit RGB value) for right shift background.
RightShiftForegroundTheme color (24-bit RGB value) for right shift foreground.
AlphaForegroundTheme color (24-bit RGB value) for alpha foreground.
LowerAlphaForegroundTheme color (24-bit RGB value) for lower alpha foreground.
BatteryForegroundTheme color (24-bit RGB value) for battery foreground.
BatteryBackgroundTheme color (24-bit RGB value) for battery background.
VoltageForegroundTheme color (24-bit RGB value) for voltage foreground.
BatteryLevelForegroundTheme color (24-bit RGB value) for battery level foreground.
HalfBatteryForegroundTheme color (24-bit RGB value) for half battery foreground.
LowBatteryForegroundTheme color (24-bit RGB value) for low battery foreground.
ChargingForegroundTheme color (24-bit RGB value) for charging foreground.