文章摘要
这篇文章介绍了TI-84 Plus计算器操作系统的逆向工程,内容包括系统架构、内存管理、中断机制等核心子系统分析,以及逆向工程的方法论和术语解释。
文章总结
以下是经过编辑整理的中文内容重述,保留了核心技术细节并删减了非主题相关内容:
TI-84 Plus操作系统逆向工程笔记
系统概览
研究对象:ti84plus.rom(1MB闪存镜像),运行OS版本2.55MP。硬件采用Zilog Z80处理器(16位地址总线/64KB逻辑空间),支持闪存与RAM分页机制。逆向工程基于Ghidra项目ti84.gpr。
验证状态标注: - [confirmed]:反汇编验证 - [standard]:符合TI-83+/84+文档规范 - [hypothesis]:待验证假设
核心架构
TI-84+通过以下机制突破64KB寻址限制: 1. 四槽分页系统:通过端口6/7实现闪存/RAM分页 2. bcall系统调用:允许跨16KB闪存页调用例程(详见02-paging.md、03-bcall-mechanism.md)
系统采用单任务监控架构:
- 闪存page 0:常驻底层的引导/内核
- 其他闪存页:通过bcall调用的OS例程
- 固定RAM区:存储系统状态(标志位、浮点寄存器、显示缓冲、变量表)
四大核心子系统
- 浮点引擎:9字节BCD实数/复数运算(OP1-OP6寄存器)
- 变量系统(VAT):管理变量分配表(实数/列表/矩阵/字符串等)
- TI-BASIC解析器:执行1-2字节标记的BASIC程序
- I/O子系统:包括IM1中断驱动(定时/APD/光标/ON键)、LCD驱动、键盘扫描和链接端口
文档索引
| 文档 | 子系统 | 说明 | |------|--------|------| | 01-memory-map | 内存映射 | 地址空间/端口/RAM布局 | | 04-interrupts | 中断系统 | IM1中断服务例程 | | 06-floating-point | 浮点引擎 | BCD浮点格式 | | 07-tokenizer-basic | BASIC解析器 | 标记表与解释器 | | 12-memory-management | 内存管理 | RAM堆/VAT/闪存归档 |
扩展功能模块
- 计算引擎(三角函数/超越函数)
- 图形绘制(坐标转换/Y=求值)
- 矩阵运算(高斯-约当法求逆)
- 链接协议(数据包传输)
- USB协处理器控制
(完整子系统映射表详见原文表格)
使用建议
新用户建议优先阅读: - 《约定与方法论》:解读地址标注规范 - 《术语表》:关键概念解释 - 《bcall索引》:完整的系统调用参考
注:本文保留了技术文档的专业性表述,删减了键盘快捷键说明、重复的章节链接等非核心内容,重点突出系统架构与逆向工程的关键信息。
评论总结
总结评论内容:
- 关于内容创作方式的疑问
- 质疑是否由人类完成:"I couldn't tell, is a person doing this? or was this an LLM dissecting it?"(分不清是人还是LLM分析的)
- 对AI生成内容的排斥:"I'd rather read a flawed but human written text than a perfect one written or co-written with an LLM"(宁愿读有缺陷的人类文本也不要LLM写的完美文本)
- 对项目内容的评价
- 肯定信息量但批评文风:"I love that this project produced so much info, and also I'm disappointed with the prose"(喜欢项目信息量但对行文失望)
- 指出排版细节过度解释的问题:"You probably didn't mean to explain the typographic nuances of em vs. en-dashes"(没必要解释em/en破折号的细微差别)
- 技术细节讨论(TI-BASIC)
- 解释token存储机制:"TI-BASIC programs are stored as tokens, not text"
- 提出键盘输入机制的推测:"I would not be surprised if the keypad UI injects tokens directly"(认为键盘可能直接注入token而非转换文本)
所有评论均未显示评分(None),主要分歧在于: - 内容生成方式(人类vsAI) - 技术细节的呈现方式 - 对TI计算器技术实现的不同理解