Skip to content

feat(nspire): add CX II Ndless host - #347

Draft
gfhdhytghd wants to merge 3 commits into
pocket-stack:mainfrom
gfhdhytghd:feat/nspire-cx2-host
Draft

feat(nspire): add CX II Ndless host#347
gfhdhytghd wants to merge 3 commits into
pocket-stack:mainfrom
gfhdhytghd:feat/nspire-cx2-host

Conversation

@gfhdhytghd

@gfhdhytghd gfhdhytghd commented Aug 31, 2026

Copy link
Copy Markdown

Summary

  • add a TI-Nspire CX II-only Ndless development host with a fixed 320x240 RGB565 takeover surface
  • map keypad buttons and the touchpad through PocketJS button and analog input contracts
  • build the Hero guest, software renderer, pinned QuickJS, and Ndless wrapper into one .tns program
  • add the private target resolver, manifest tests, framebuffer conversion test, build documentation, and generated-output ignores
  • add a CX II input acceptance guest that displays button state, press/release edges, and raw analog position
  • keep audio, touchscreen, network, filesystem, and runtime fonts outside the advertised capability set

Hardware status

Tested on a TI-Nspire CX II CAS running OS 5.3.0.564. The initial QuickJS runtime reboot was traced to Newlib malloc metadata incompatibility and removed. The prior diagnostic build reached JS evaluation. This revision replaces the incorrect Vita 16-byte JSValue configuration with QuickJS native ARM32 NaN-boxing and still needs the final calculator boot/render/input acceptance run, so this PR remains a draft. The input guest is built, but its latest upload is pending because the calculator disconnected from USB.

Validation

  • bun test tests/nspire-profile.test.ts tests/platform-contracts.test.ts — 43 passed
  • bun x tsc --noEmit — passed
  • native framebuffer conversion C test with warnings as errors — passed
  • clean bun nspire build with the Ndless ARMv5TE toolchain — passed; produced a 2,340,256-byte .tns
  • clean input-guest build — passed; produced a 1,447,424-byte .tns
  • QuickJS patch reverse-apply check — passed

The broad bun test run was also attempted: 711 passed, while unrelated simulator/browser/oracle groups did not complete cleanly in this checkout because the wasm32 target and browser test condition were absent, alongside existing oracle failures and one timeout.

@gfhdhytghd
gfhdhytghd marked this pull request as ready for review August 31, 2026 02:24
@gfhdhytghd
gfhdhytghd marked this pull request as draft August 31, 2026 02:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant