← 返回信息流
AI 资讯Hacker News·1 小时前

卡西欧FX870P计算器模拟器发布

原标题:Casio FX870P Emulator

速览

卡西欧FX870P是一款经典工程计算器。近日有开发者制作并发布了其模拟器,可在现代操作系统上运行。该项目对计算器爱好者和怀旧用户具有价值。

AI 深度解读

背景

Casio FX-870P 是一款1986年发布的袖珍计算机(pocket computer),在欧洲也以VX-4型号销售。它搭载了Hitachi HD61700 CPU(主频921 kHz),配备96×64像素LCD屏幕、83键键盘、串行端口,并可选配MD-120软盘驱动器。尽管硬件规格有限,这类设备在80年代被广泛用于编程学习和工程计算。如今,随着Web技术的发展,爱好者们通过浏览器仿真器让这些经典设备得以重生。

本文介绍的是一款由Mark Wickens开发的Casio FX-870P浏览器端仿真器,使用TypeScript和Vue 3编写,完全移植了原Delphi参考实现。源代码托管在GitHub上,用户可直接在线体验。

核心内容

该仿真器是一个功能完整的FX-870P/VX-4仿真器,可运行在浏览器中。它不仅复现了计算器的外观和操作,还提供了大量高级特性,包括:

  • 响应式计算器界面:使用多分辨率面板图像,可在任意屏幕尺寸下缩放适配。
  • 完整键盘映射:支持PC键盘直接输入,自动处理大写锁定和Shift符号。
  • 程序库:内置精选的BASIC示例程序集合,可通过工具栏直接加载。
  • RS-232C串行通信:通过模拟的COM0端口实现BASIC程序的LOAD/SAVE,支持XON/XOFF流控。
  • 软盘仿真:通过Origin Private File System (OPFS) 实现MD-120磁盘仿真。
  • 字符集表:交互式16×16十六进制网格,显示ROM字体中所有256个字符的位图。
  • DEFCHR$像素编辑器:点击任意字符可打开5×8像素拖拽绘画编辑器,生成BASIC DEFCHR$命令并一键复制。
  • Turbo模式:CPU加速至约50倍速,适合运行计算密集型的BASIC程序。
  • 全屏模式:隐藏工具栏和面板,在移动设备上可全屏使用计算器。
  • 固件切换:可在FX-870P(日文)和VX-4(英文)ROM模式间切换。
  • CPU调试器:实时显示寄存器、标志位和反汇编视图。
  • BASIC列表面板:实时对存储在RAM中的BASIC程序(P0–P9)进行反令牌化显示,支持标签导航、语法高亮和实时/冻结切换。
  • BASIC编辑器:支持就地编辑BASIC程序,具有语法高亮、直接RAM写入、行添加/删除/编辑、整个程序的导入/导出(支持富文本剪贴板)。
  • 通信面板:显示UART寄存器状态、串行字节流和诊断信息。

技术栈和运行环境

  • 后端/构建:Node.js 22 LTS
  • 前端:Vue 3 + TypeScript + Vite 7
  • 编辑器:CodeMirror 6,带自定义语法高亮
  • ROM文件需放置于 public/roms/ 目录(不包含在仓库中)

项目结构(部分关键路径):

  • src/emulator/:包含CPU核心、指令执行、LCD控制器、键盘矩阵、I/O端口、BASIC令牌处理、反串联、RAM编辑、字符映射等模块。
  • src/components/:Vue组件,包括主视图、LCD画布、键盘覆盖、串行面板、调试面板、BASIC列表/编辑器、字符集弹出、程序库弹出、关于对话框等。
  • public/:包含用户文档(ABOUT.md)、示例BASIC程序、图像资源、ROM目录(需手动添加)。
  • tests/:基于vitest的无头测试套件,可用于自动回归测试。
  • tools/:包含可独立使用的HD61700机器码编译器和无头调试器。

运行方式

  • 使用 ./start.sh 启动开发服务器(端口3007,路径 /fx870p-emulator/)
  • 或直接 npm run dev
  • 生产构建:npm run build,预览:npm run preview

额外工具

  • BASIC编译器tools/compiler/):将Casio JIS标准BASIC编译为HD61700机器码,生成汇编列表、原始二进制、符号表和自加载BASIC程序。生成的代码调用现有ROM中的PRINT、INPUT、浮点数学和字符串操作。
  • 无头调试器tools/emu-debugger/):提供断点、内存监视点、指令跟踪、快照恢复、单步执行等功能,用于调试编译后的二进制文件和自动回归测试。

测试与调试

  • 测试需要ROM文件(与开发服务器相同位置)。
  • 开发服务器暴露 /fx870p-emulator/log 端点,可在浏览器控制台通过 window.ioDebug(true) 启用日志。

关键要点

  • 完整复现:仿真器从Delphi参考实现完整移植到Web平台,保留了原始硬件功能,包括CPU、LCD、键盘、串口、软盘、固件切换等。
  • 丰富的开发特性:提供CPU调试器、BASIC程序列表/编辑器、RAM编辑器、字符集编辑器、UART通信面板等,适合开发者和复古计算爱好者深入探索。
  • 跨平台可访问:基于Vue 3和TypeScript,响应式设计,可在桌面和移动设备上直接运行,无需安装任何插件。
  • 性能优化:支持Turbo模式(约50倍速),适合运行计算量大的BASIC程序;同时提供单步执行和指令跟踪功能。
  • 开源工具链:除了仿真器本身,项目还附带BASIC编译器和无头调试器,可用于编写和调试HD61700原生机器码,扩展了复古平台开发的可能性。
  • 实用的文件管理:通过Origin Private File System实现软盘仿真,支持程序库加载和串口LOAD/SAVE,接近真实硬件的使用体验。
  • 测试完善:使用vitest编写无头测试用例,可进行回归测试和SIN(90)等精确计算验证,保证仿真准确性。

意义与影响

该仿真器不仅是Casio FX-870P爱好者的实用工具,更是复古计算领域社区贡献的典范。它通过Web技术让一台36年前的袖珍计算机在现代设备上复活,降低了接触和使用经典硬件的门槛。

从技术角度,项目展示了如何将复杂的硬件仿真(包括CPU、LCD、键盘矩阵、串口通信等)高效地转化为浏览器可运行的TypeScript代码。同时,它提供了一套完整的开发工具链(编译器、调试器),使得对HD61700平台感兴趣的开发者能够编写和调试原生代码,这对于教育和研究复古计算机体系结构非常有价值。

此外,项目的开源性质鼓励社区贡献和改进,例如增加更多ROM支持、完善调试功能、扩展程序库等。该仿真器也可作为学习计算机体系结构、模拟器开发、Web前端技术的优秀案例。

总之,Casio FX-870P仿真器是复古技术与现代Web开发的完美结合,既保留了原始硬件的精髓,又赋予了新时代的交互性和可扩展性,对科技史爱好者和开发者都具有重要意义。

查看原文 →github.com