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 მისამართებზე, წარმოადგენს ოპერაციული სისტემის ძირითად საკომუნიკაციო არხს.
| Doc | Subsystem |
|---|---|
| 01-memory-map.md | Address space, ports, RAM layout |
| 02-paging.md | Flash/RAM banking (ports 6/7) |
| 03-bcall-mechanism.md | rst 28h system calls + jump table |
| 04-interrupts.md | IM1 ISR, timers, APD, ON key |
| 05-variables-vat.md | Variable Allocation Table, object types |
| 06-floating-point.md | BCD float format, OP registers |
| 07-tokenizer-basic.md | Token tables, parser/interpreter |
| 08-display-lcd.md | LCD ports, screen buffers |
| 09-keyboard-link.md | Keypad scan, link protocol |
| 10-subsystem-map.md | bcall API surface, system through-line |
| 11-boot-contexts-errors.md | Boot, context system, _JError/onSP |
| 12-memory-management.md | RAM heap, VAT/userMem, Flash archive/GC |
| 13-flash-page-map.md | What each of the 64 flash pages contains |
| 14-ram-pages.md | RAM page selectors, page 83, and restore rules |
| 99-open-questions.md | Prioritized future-work roadmap |
| sub-calculation.md | Calculation engine: FP ops, transcendentals, formatting, errors |
| sub-graphing.md | Graphing: window vars, coord↔pixel, draw primitives, Y= eval |
| sub-tibasic.md | TI-BASIC: program execution, control flow, I/O commands |
| sub-tibasic-tracing.md | TI-BASIC fixture traces, smoke runner, coverage anchors |
| sub-vat-archive.md | Variables, Sto/Rcl, Archive/Unarchive, Flash GC |
| sub-apps-mem-settings.md | Apps find/launch, RAM-reset, MODE/format flags |
| sub-statistics.md | STAT: 1/2-var, regressions, statVars |
| sub-matrix-list.md | Matrix/list element access, Gauss-Jordan inverse/det, matmul |
| sub-solver-numeric.md | Solver root-finder, nDeriv/fnInt, TVM finance |
| sub-table-yvars.md | TABLE generation/cache, Y= equation vars |
| sub-equation-display.md | Equation display / MathPrint layout (page 0x39 eqdisp_*) |
| sub-link-transfer.md | Link protocol: byte/packet/var-transfer (page 0x3C) |
| sub-usb-asic.md | USB ASIC/link-assist ports and OS transport selection |
კვლევა Ghidra-ს პროექტის ფარგლებში განხორციელდა და მოიცავს ყველა იმ ინსტრუმენტს, რომელიც აუცილებელია სისტემის თავიდან ასაწყობად. ეს მონაცემები ფასდაუდებელია მათთვის, ვინც დაინტერესებულია ძველი თაობის გამოთვლითი ტექნიკის ოპტიმიზაციით ან მასზე ახალი პროგრამული უზრუნველყოფის შექმნით.



დისკუსია
0 კომენტარი
ჯერ კომენტარი არ არის — იყავი პირველი.