用 Z80 汇编给 48K 内存的 ZX Spectrum 写一个图形桌面
来源:github.com/mindbox77/zxdesk — 66 分 · by graemep
📋 概述
ZX Desk 是一个跑在 1982 年 ZX Spectrum 48K 上的图形桌面,全部用 Z80 汇编写成:支持带 z 序与焦点的重叠窗口、下拉菜单、真正的堆、事件队列、可替换后端的存储层,以及记事本、时钟、日历、双栏文件管理器和会真正改设置的设置面板。它最狠的地方在于能在单个 69,888 T 状态(约一帧)内拖动窗口,并且能在真机而非只在模拟器上运行。作者说这不是 GEM 的移植,而是把“机器是一个场所而非一个提示符”这个念头硬压在 3.5MHz CPU、48K 内存和属性冲突的一比特显示上得到的结果。
🔑 核心要点
- 窗口不只是画出来的:z 序即焦点,抬起与聚焦是同一个动作。
- 性能指标是硬约束:拖动一个窗口必须在 69,888 T 状态的一帧内完成。
- 内存管理是真堆:8,112 字节,每个窗口缓冲区按窗口尺寸分配,带属主字节。
- 输入全部事件化:Kempston 鼠标、摇杆与完整键盘矩阵解码后进入 16 槽事件环,主循环里没有窗口相关代码。
- 存储层是六个向量后面的后端注册表:RAM、磁带(走真实 ROM 加载器)、128K 空闲内存盘,esxDOS 预留了编号。
- 它跑在真机上:不只是模拟器,作者把踩过的硬件测量数据当成最有价值的部分留给了后来者。
💡 金句
我想要的其实是 GEM:桌面、窗口、永远在那里的菜单栏,那种机器是一个场所而不只是一个提示符的感觉。
👍 0
👎 0
← 返回 Hacker News 首页