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

Flash page map

This page maps the contents of all 64 physical 16 KiB Flash pages. OS code occupies pages 0007 and 333D; page 2F contains retail USB boot support, page 3E holds two certificate sectors, and page 3F is the retail boot page. Pages 082E and 3032 are blank in this image. [confirmed]

On a retail unit, the blank range stores archived variables and can carry Flash Apps. Flash memory describes physical erase-sector geometry and the dynamic archive/App boundary. The page roles below use resolved bcall targets and per-page function counts.

OS pages (carry bcall entry points)

PageFuncsRoleRepresentative routines
00928Kernel — mapped at 0x0000; RST vectors, bcall dispatcher, FP core, VAT, memory, integer math_JErrorNo, _LdHLind, _DivHLBy10, _FindSym, _FPAdd, _InsertMem
0184Text display / homescreen_PutMap, _PutC, _PutS, _DispHL, _NewLine, _ClrLCDFull
02271Float transcendentals & advanced math_SqRoot, _LnX, _RnFx, _RndGuard
0323Edit-buffer / small font_CloseEditBufNoR, _Load_SFont, _SFont_Len
0466Graph drawing (pixel/line)_DarkLine, _ILine, _IPoint, _DarkPnt
05118TABLE editor + Graph-Table split-screentable_editor_main, table_recompute, table_paint_grid
0649Key input & edit/cursor_GetKey, _CursorOn, _CursorOff, _PutTokString (note _GetCSC’s body is on page 00)
0744Archive / list & matrix ops; error messages; large-font glyph table @ 07:45FF (7-byte stride) read by put_glyph_large (07:4588)_Arc_Unarc, _CleanAll, _RedimMat, _IncLstSize, put_glyph_large
3370Graph coordinate math and programmable timer API_SetXXOP1, _UCLineS, _InitTimer, _StartTimer, timer_irq
3624Mode setters (Func/Param/Polar/Seq)_SetFuncM, _SetParM, _SetPolM, _SetSeqM
3723Graph coordinate conversion, RTC, and date/time formatting_XftoI, _YftoI, _getDate, _getTime, rtc_read_seconds
38277TI-BASIC parser / evaluator_ParseInp, _Find_Parse_Formula, parse_init
39153Equation pretty-printer (2D MathPrint layout) + menuseqdisp_render_entry, eqdisp_emit_glyph, _DispMenuTitle
3A85Statistics (1/2-var, regressions) + TVM finance_OneVar, reg_gauss_solve, tvm_solve_iterate
3416Token/parser scanning_AHEADEQUAL, _PARSAHEADS, _PARSAHEAD, parse_scan_table
356USB controller paths, memory-reset engine, factorialusb_timeout_irq, mem_reset_dispatch, ram_reset_wipe, op1_factorial
3B39bcall jump table + mem utils(table data) _MemClear, _MemSet, _DrawCirc2
3C72Link / variable transfer_SendAByte, _RecAByteIO, _SendVarCmd, _Rec1stByte
3D61App management & Flash_FindApp, _FindAppUp, _FindAppDn, _FlashToRam

Blank, boot, and system pages

No Flash-App headers (80 0F) appear at any page boundary; the image is OS-only [hypothesis]. Byte-level notes on the empty page range and the boot/system pages (some of which, e.g. 34-39/3B/3C, also carry the bcalls listed above):

PageVerified contents
082E, 3032Blank or unused in this OS image — 100% 0xFF in tools/rom.bin. No app headers.
2FRetail USB boot support installed from the checksum- and hash-validated local D84PBE2.8Xv. This installation changes 8,615 bytes of the pinned base. The page-3F boot table maps _AttemptUSBOSReceive, _ReceiveOS_USB, _USBErrorCleanup, _InitUSB, and _KillUSB here; tools/rom.bin contains the payload and tools/symbols/bcalls8x_targets.txt records their bodies. [confirmed]
3439More OS code (parser scan, USB, graph, mode, menu, and RTC); fill 0.2–17% 0xFF.
3Bbcall jump table — starts 99 27 00 = entry 0 (_JErrorNoram:2799).
3CLink code, archive garbage collection, and the OS version string — page starts with ASCII 32 2E 35 35 4D 50 = "2.55MP"; archive_gc_collect is at 3C:7733.
3ECertification page and GC journal — two physical 8 KiB sectors. _GetCertificateStart (bcall 0x8057) selects the active half; _GetCertificateEnd (0x802D) bounds it; _FindFirstCertField (0x8027) and _FindNextCertField (0x8078) walk TLV fields. GC transactionally copies the used tail through the inactive half and stores phase bytes near its end. [confirmed] for the ROM and GC trace.
3FRetail boot page — the pinned base already matches the checksum- and hash-validated local D84PBE1.8Xv payload byte for byte; starts 3E 07 D3 04 3E 7F D3 06 3E 03 D3 0E C3 2C 81, carries boot version 1.03, and hosts the 0x8xxx boot bcall table. Boot and hardware-version bcalls resolve to _getBootVer 3F:477C (0x80B7) and _getHardwareVersion 3F:4781 (0x80BA). [confirmed]

The large-font glyph table is on page 0x07 (see Display and LCD). Alternate large fonts live on pages 0x01 and 0x36 (selected by IY+0x35 bits 5 and 1). Page 0x07 is the busiest data page: archive code, list and matrix code, error messages, and the large font. [confirmed]

Page specialization

The OS is page-specialized: kernel + math on page 0, one subsystem per low page. A bcall is really “run subsystem X’s routine on its page” — the page map is the subsystem decomposition, physically.