Subsystem map (bcall API surface)
This page groups the roughly 600 named bcall entry points by subsystem. The result shows the public API used by both application code and the OS itself.
| Subsystem | ~bcalls | Representative entry points |
|---|---|---|
| Floating-point / numeric | ~230 (+~120 more in “misc”) | _FPAdd,_Times2,_DivHLBy10,_Intgr,_Trunc,_DToR,_RToD,_Min,_Max,_SqRoot |
| Display / LCD | ~41 | _PutMap,_PutC,_PutS,_DispHL,_NewLine,_ClrLCDFull,_VPutS,_GrBufCpy |
| Variables / VAT | ~37 | _FindSym,_ChkFindSym,_CreateReal,_CreateStrng,_CreateAppVar,_DelVar,_InsertMem,_Arc_Unarc |
| String / convert | ~18 | _ExpToHex,_OP1ExpToDec,_CreateStrng,_StrCopy,_Get_Tok_Strng |
| Parser / TI-BASIC | ~18 | _IsA2ByteTok,_GetTokLen,_BinOPExec,_ParseInp |
| Link / I-O | ~15 | _SendAByte,_RecAByteIO,_SendVarCmd,_Rec1stByte,link_xfer_op |
| System / power | ~15 | _AppInit,_PutAway,_RandInit,_ApdSetup,_Chk_Batt_Low,_SetExSpeed,_JForceCmd |
| Boot cryptography | 5 | _MD5Init, _MD5Update, _MD5Final, _SigModR, _TransformHash |
| List / Matrix | ~13 | _CreateRList,_CreateCList,_CreateRMat,_ErrDimMismatch,dim/element ops |
| Keyboard | ~5 | _GetCSC,_GetKey,_KeyToString |
| Menu / UI | ~5 | _DispMenuTitle,_CursorOn,_CursorOff,_RunIndicOn,_RunIndicOff |
(Counts approximate — keyword buckets overlap; ~170 “misc” are mostly more math/int helpers.)
Reading the map
This is a calculator: roughly two-thirds of the API is numeric, and everything else is comparatively small glue. The architecture flows:
flowchart TD
KP([keypad]) --> GK["_GetKey"] --> P[parser] --> TD[token dispatch]
TD --> VAT["VAT · _FindSym<br/>variables"]
TD --> FP["FP engine · OP1..6<br/>arithmetic / transcendentals"]
TD --> DISP["display · _PutMap<br/>homescreen / graph"]
VAT --> R["result in OP1<br/>shown via _DispOP1A / _PutS"]
FP --> R
DISP --> R
Cross-cutting services used by all of the above: the bcall mechanism, interrupt dispatch, clock/timers/APD/power, MD5 and boot signature arithmetic, error handling (_JError + TIError codes), and the system flags (SystemFlags @ flags).
Execution through-line
- Interrupt keeps time, scans the keypad into
kbdScanCode, runs APD. _GetKeyturns scan codes into key codes (TIKeyCode), driving menus and the homescreen.- The parser reads tokenized input/programs, dispatching each
TIToken. - Number tokens → FP engine (OP1–OP6, BCD); name tokens → VAT (
_FindSym). - Results land in
OP1and are rendered by the display subsystem. - bcall + paging is the substrate that lets steps 3–5 live on different flash pages; errors unwind via
_JError/onSP.
See the subsystem pages linked above and in the sidebar for detail.