TI-84 Plus 操作系统的全逆向工程
键盘快捷键 按 ← 或 → 在章节之间导航 按 S 或 / 在书中搜索 按 ? 显示此帮助 按 Esc 隐藏此帮助 TI-84 Plus 操作系统 — 逆向工程笔记:系统概述 目标:ti84plus.rom(1 MiB 闪存转储)。操作系统自我标识为 2.55MP。CPU:Zilog Z80(16 位地址总线,64 KiB 逻辑空间),具有硬件闪存/RAM页面功能。Ghidra 项目:ti84.gpr(重建:tools/build.sh)。信心标记:[确认] = 在反汇编/反编译器中验证;[标准] = 与已记录的 TI-83+/84+ 架构匹配,并与反汇编一致;[假设] = 推断,尚未验证。大局观 TI-84+ 是一台 Z80 机器,一次只能看到 64 KiB,但具有 1 MiB 的闪存和 128 KiB 的 RAM。它通过一种 4 槽分页方案和一个系统调用(“bcall”)机制来弥补这一差距,该机制允许一页 16 KiB 的闪存代码调用任何其他页面的例程。操作系统是一个单任务监控程序:一个位于闪存页面 0(始终映射到低地址)的引导/内核核心,一个遍布其他闪存页面的庞大操作系统例程体,且通过 bcall 访问,以及一个固定的 RAM 区域保存系统状态(标志,浮点寄存器,显示缓冲区,变量表)。用户互动的所有内容 — 主屏幕,TI-BASIC 程序,图形,目录 — 都建立在四个支柱之上: 分页 + bcall — 如何访问超过 64 KiB 的代码和数据。(见 02-paging.md,03-bcall-mechanism.md) 浮点引擎 — OP1–OP6 寄存器中的 9 字节 BCD 实数/复数;所有数学计算均通过这些寄存器流动。(06-floating-point.md) 变量系统(VAT) — 在变量分配表中编目命名对象(实数、列表、矩阵、字符串、程序、应用变量……)。(05-variables-vat.md) 词法分析器/解析器 — TI-BASIC 存储为 1 字节和 2 字节的标记;解析器执行它们。(07-tokenizer-basic.md) 周围的是 I/O 子系统:驱动时序/APD/光标/开机键的 IM1 中断(04-interrupts.md)、LCD 驱动程序、键盘扫描器和链接端口。 子系统索引 每行将文档页面映射到它所涵盖的子系统及其分析状态。 文档 子系统 01-memory-map.md 地址空间,端口,RAM 布局 02-paging.md 闪存/RAM 页面(端口 6/7) 03-bcall-mechanism.md rst 28h 系统调用 + 跳转表 04-interrupts.md IM1 ISR,定时器,APD,开机键 05-variables-vat.md 变量分配表,对象类型 06-floating-point.md BCD 浮点格式,OP 寄存器 07-tokenizer-basic.md 标记表,解析器/解释器 08-display-lcd.md LCD 端口,屏幕缓冲 09-keyboard-link.md 键盘扫描,链接协议 10-subsystem-map.md bcall API 表面,系统穿透线 11-boot-contexts-errors.md 引导,上下文系统,_JError/onSP 12-memory-management.md RAM 堆,VAT/userMem,闪存归档/垃圾回收 13-flash-page-map.md 每个 64 个闪存页面的内容 14-ram-pages.md RAM 页面选择器,第 83 页和恢复规则 99-open-questions.md 优先级未来工作路线图 sub-calculation.md 计算引擎:FP 操作,超越,格式化,错误 sub-graphing.md 图形:窗口变量,坐标↔像素,绘制原语,Y= 评估 sub-tibasic.md TI-BASIC:程序执行,控制流,I/O 命令 sub-tibasic-tracing.md TI-BASIC fixture 追踪,烟雾运行器,覆盖锚点 sub-vat-archive.md 变量,Sto/Rcl,存档/解档,闪存 GC sub-apps-mem-settings.md 应用查找/启动,RAM 重置,MODE/格式标志 sub-statistics.md STAT:1/2-变量,回归,统计变量 sub-matrix-list.md 矩阵/列表元素访问,高斯-约旦逆/det,矩阵乘法 sub-solver-numeric.md 求解器根查找,nDeriv/fnInt,TVM 财务 sub-table-yvars.md 表生成/缓存,Y= 方程变量 sub-equation-display.md 方程显示 / MathPrint 布局 (页面 0x39 eqdisp_*) sub-link-transfer.md 链接协议:字节/数据包/变量传输 (页面 0x3C) sub-usb-asic.md USB ASIC/链接辅助端口和操作系统传输选择(sub-* 文档是涵盖用户面功能和 I/O 内部的深度探讨:计算、图形、TI-BASIC、VAT/存档、应用、统计、矩阵、求解器、表、方程显示、链接和 USB/链接辅助。) 对这些笔记很陌生?从约定与方法论(如何阅读地址和信心标志)和词汇表开始;bcall 索引是完整的字母顺序系统调用参考。 主 0x4xxx bcall 表和零售引导 bcall 表(0x8xxx,来自本地完整 ROM)均带有 TI-OS 类型。大多数引导 bcall 内容位于页面 3F;USB 引导例程如 _AttemptUSBOSReceive,_ReceiveOS_USB,_InitUSB,和 _KillUSB 位于页面 2F。重建:tools/build.sh。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡