Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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~bcallsRepresentative 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)

  1. Interrupt keeps time, scans the keypad into kbdScanCode, runs APD.
  2. _GetKey turns scan codes into key codes (TIKeyCode), driving menus and the homescreen.
  3. The parser reads tokenized input/programs, dispatching each TIToken.
  4. Number tokens → FP engine (OP1–OP6, BCD); name tokens → VAT (_FindSym).
  5. Results land in OP1 and are rendered by the display subsystem.
  6. bcall + paging is the substrate that lets steps 3–5 live on different flash pages; errors unwind via _JError/onSP.

See per-subsystem docs 0109 for detail.