TI-84 Plus-ის ოპერაციული სისტემის სრულყოფილი რევერს-ინჟინერია დასრულდა, რაც მკვლევრებს კალკულატორის შიდა არქიტექტურის სრულფასოვანი გააზრების საშუალებას აძლევს. 1 მეგაბაიტიანი ფლეშ-მეხსიერების დამპის ანალიზმა, რომელიც Zilog Z80 პროცესორზეა დაფუძნებული, სისტემის მუშაობის უცნობი დეტალები გამოავლინა.

სისტემა, რომელიც 2.55MP ვერსიად იდენტიფიცირდება, იყენებს სპეციალურ პეიჯინგის სქემას, რათა გადალახოს Z80-ის 64-კილობაიტიანი მისამართების სივრცის შეზღუდვა. ეს მექანიზმი საშუალებას აძლევს კალკულატორს, ჰქონდეს წვდომა 1 მეგაბაიტ ფლეშ-მეხსიერებასა და 128 კილობაიტ ოპერატიულ მეხსიერებაზე.

კვლევის მიხედვით, მოწყობილობის ფუნქციონირება ოთხ მთავარ საყრდენზეა დაფუძნებული:

  • პეიჯინგი და bcalls: მექანიზმი, რომელიც კოდს საშუალებას აძლევს, დაუკავშირდეს სხვადასხვა მეხსიერების გვერდებს.
  • მათემატიკური ძრავა: 9-ბაიტიანი BCD ფორმატის რეალური და კომპლექსური რიცხვების დამუშავება OP1–OP6 რეგისტრების მეშვეობით.
  • ცვლადების სისტემა (VAT): ცვლადების, სიების, მატრიცებისა და პროგრამების მართვის ცხრილი.
  • ტოკენიზატორი: TI-BASIC კოდის შესრულების სისტემა, რომელიც ბრძანებებს 1 და 2-ბაიტიან ტოკენებად გარდაქმნის.

გარდა ამისა, დოკუმენტაცია დეტალურად აღწერს შეყვანა-გამოყვანის (I/O) ქვესისტემებს, მათ შორის LCD დისპლეის დრაივერს, კლავიატურის სკანირების პროცესს და მონაცემთა გადაცემის პორტს. სისტემური გამოძახებების (bcall) ცხრილები, რომლებიც განთავსებულია 0x4xxx და 0x8xxx მისამართებზე, წარმოადგენს ოპერაციული სისტემის ძირითად საკომუნიკაციო არხს.

DocSubsystem
01-memory-map.mdAddress space, ports, RAM layout
02-paging.mdFlash/RAM banking (ports 6/7)
03-bcall-mechanism.mdrst 28h system calls + jump table
04-interrupts.mdIM1 ISR, timers, APD, ON key
05-variables-vat.mdVariable Allocation Table, object types
06-floating-point.mdBCD float format, OP registers
07-tokenizer-basic.mdToken tables, parser/interpreter
08-display-lcd.mdLCD ports, screen buffers
09-keyboard-link.mdKeypad scan, link protocol
10-subsystem-map.mdbcall API surface, system through-line
11-boot-contexts-errors.mdBoot, context system, _JError/onSP
12-memory-management.mdRAM heap, VAT/userMem, Flash archive/GC
13-flash-page-map.mdWhat each of the 64 flash pages contains
14-ram-pages.mdRAM page selectors, page 83, and restore rules
99-open-questions.mdPrioritized future-work roadmap
sub-calculation.mdCalculation engine: FP ops, transcendentals, formatting, errors
sub-graphing.mdGraphing: window vars, coord↔pixel, draw primitives, Y= eval
sub-tibasic.mdTI-BASIC: program execution, control flow, I/O commands
sub-tibasic-tracing.mdTI-BASIC fixture traces, smoke runner, coverage anchors
sub-vat-archive.mdVariables, Sto/Rcl, Archive/Unarchive, Flash GC
sub-apps-mem-settings.mdApps find/launch, RAM-reset, MODE/format flags
sub-statistics.mdSTAT: 1/2-var, regressions, statVars
sub-matrix-list.mdMatrix/list element access, Gauss-Jordan inverse/det, matmul
sub-solver-numeric.mdSolver root-finder, nDeriv/fnInt, TVM finance
sub-table-yvars.mdTABLE generation/cache, Y= equation vars
sub-equation-display.mdEquation display / MathPrint layout (page 0x39 eqdisp_*)
sub-link-transfer.mdLink protocol: byte/packet/var-transfer (page 0x3C)
sub-usb-asic.mdUSB ASIC/link-assist ports and OS transport selection

კვლევა Ghidra-ს პროექტის ფარგლებში განხორციელდა და მოიცავს ყველა იმ ინსტრუმენტს, რომელიც აუცილებელია სისტემის თავიდან ასაწყობად. ეს მონაცემები ფასდაუდებელია მათთვის, ვინც დაინტერესებულია ძველი თაობის გამოთვლითი ტექნიკის ოპტიმიზაციით ან მასზე ახალი პროგრამული უზრუნველყოფის შექმნით.