THOREAU BASIC 3.2 - RELEASE NOTES ================================ Release date: 2 October 2026 VERSION 3.2 CHANGES =================== FILE ARRAYS, SELECTORS AND PATHS - GETFILES creates or replaces a one-dimensional string array containing matching files, child directories and, where available, the parent entry. Optional flags choose which groups to include. No GETDIRS is needed. - SELECTBOX draws a modal, multi-column selector at a physical text-cell position. Entry width, dimensions and colors are configurable. Enter or mouse double-click accepts; Escape cancels. Single and double frames use the real joined box-drawing characters from the built-in character set. - Selector updates redraw changed entries rather than repainting the entire box while idle. HELP prints each category heading once. - Filenames retain their spelling and case throughout the file APIs and monitor. DIR, FILES, GETFILES and KILL match masks case-sensitively. BASIC commands remain case-insensitive; native filesystem lookup rules still apply. - BASIC path strings can contain up to 4,095 bytes, including any appended default extension. Filesystem component limits still apply. Overlong or unrepresentable paths fail instead of being silently truncated or renamed. - CLS:RUN works in direct mode. RUN inside a stored program restarts through the execution controller instead of recursively entering the C interpreter. A program such as 10 RUN can still loop indefinitely, but Escape interrupts it without an ever-growing host stack. GENERAL-PURPOSE RECOVERY AND FILE OPERATIONS - STATEWRITE / STATELOAD save and restore an explicit variable schema using two alternating, checksummed generations, staged restore and readback verification. These are selected-state checkpoints, not a whole-machine image or an append-only journal. - FLUSH requests platform durability for open output files. FILECOMMIT promotes a staged file and retains target.previous. FILECOPY stages, flushes and byte-verifies a copy before promotion. FILECRC checks file bytes. - SESSIONLOCK prevents simultaneous Windows writers in one recovery folder. ABORTFILES closes failed output handles without retrying buffered writes. - CRC32 checks string bytes; TEXTSTATS counts words and characters in a selected range of a string array. These APIs are reusable by BASIC programs. SUPPORT AND ENGINE CHANGES - SYSTEMINFO$(0..13) reports the platform/version, firmware and input/storage details, CPUID model, usable AVX2/SSE2 path, PARFOR capacity and usage, startup-calibrated TSC MHz, arena allocation, video backend, JIT state and build/CPU identifiers. TSC MHz is a counter rate, not live CPU turbo speed. - BATTERYPERCENT(0) reports an OS/firmware battery percentage when available, otherwise -1. UEFI depends on the Battery Charging Protocol being exposed. - The floating INT JIT path uses native SSE2 with the existing floor behavior. Native hypercomplex magnitude uses a direct square root where safe and retains scaled fallbacks. Hypercomplex multiplication reduces load/operation overhead while preserving operation order and numeric fallbacks. These are interpreter changes; they do not require rewriting BASIC programs. - UEFI supplies its own strcmp implementation for the file-copy helpers, avoiding an unresolved CRT symbol in the freestanding firmware build. BUNDLED PROGRAMS - MANDELZOOM.BAS pans with mouse movement and zooms while a mouse button is held. A fixed-width FPS field occupies a reserved top text row. This example uses scalar arithmetic; it has no native-complex mode switch.