10 — Subsystem map (bcall API surface)
This page categorizes the ~600 named bcall entry points (the OS’s public API) by subsystem, so the whole OS surface is visible at once. This is the surface area user code and the OS itself program against.
| 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,_LinkXferOP |
| System / power | ~15 | _AppInit,_PutAway,_RandInit,_ApdSetup,_Chk_Batt_Low,_SetExSpeed,_JForceCmd |
| 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
The dominant fact: this is a calculator — roughly two-thirds of the API is numeric. 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: bcall/paging (03), interrupts/APD (04), error handling (_JError + TIError codes), and the system flags (SystemFlags @ flags).
How the pieces connect (the 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 per-subsystem docs 01–09 for detail.