CP/M-68K 模拟器
摘要
一位业余开发者创建了一个适用于Motorola 68000 CPU的模拟器,可运行CP/M-68K,支持自定义BIOS和RAM磁盘;源代码已在GitHub和GitLab上提供。
<p><a href="https://lobste.rs/s/o2couk/cp_m_68k_emulator">评论</a></p>
查看缓存全文
缓存时间: 2026/07/29 03:51
# CP/M-68K 与摩托罗拉 68000 模拟器
来源:https://kobolt.github.io/article-264.html
今年早些时候,我开始编写一个用于摩托罗拉 68000(https://en.wikipedia.org/wiki/Motorola_68000)的模拟器。原计划是在完成基础 68000 工作后,仅添加 MMU 并做一些小改动,将其转为摩托罗拉 68010(https://en.wikipedia.org/wiki/Motorola 68010)。但我发现,相比于更先进的摩托罗拉 68020(https://en.wikipedia.org/wiki/Motorola_68020),68010 在软件上的支持并不广泛。于是我将重心放在纯 68000 支持上,并调整模拟器转而运行 CP/M-68K(https://en.wikipedia.org/wiki/CP/M#16-bit_versions)——我之前也用过这个系统(https://kobolt.github.io/article-210.html)。
在此获取第一个版本 0.1(https://kobolt.github.io/supplies/cpm68emu-0.1.tar.gz),或者查看 GitHub(https://github.com/kobolt/cpm68emu)或 GitLab(https://gitlab.com/kobolt/cpm68emu)上的仓库。
我编写了一个自定义的 CP/M BIOS,与模拟器绑定以处理控制台和 RAM 磁盘访问。按照 Digital Research 的建议,我将 TPA(暂态程序区)放置在地址 0x400,而 CP/M 系统和 BIOS 位于 24 位地址空间远端 0xFF0000,这样大多数程序都应该能正常工作。只有带“.68K”扩展名的程序依赖于特定的 TPA,而带“.REL”扩展名的程序是可重定位的,能在所有系统上运行。
模拟器的控制台部分不依赖 curses(https://en.wikipedia.org/wiki/Curses_(programming_library)),这与我的许多其他模拟器不同,仅使用常规的 stdin/stdout。然而,某些 CP/M 程序可能发出终端控制码,这些内容会被直接透传。在输入方面,LF(换行)被转换为 CR(回车),DEL(删除)被转换为 BS(退格),以提高兼容性。
最方便的方法可能是使用 cpmtools(http://www.moria.de/~michael/cpmtools/)来管理模拟器使用的 RAM 磁盘镜像,但也提供了一些自定义的 CP/M 命令,可以从主机系统读取/写入文件,类似于 YAZE(http://www.mathematik.uni-ulm.de/users/ag/yaze-ag/)。更多技术细节可在源代码附带的 README 文件中找到。
以下是编译 CBASIC(https://en.wikipedia.org/wiki/CBASIC)“Hello World”程序的截图:
CBASIC68 截图。
还有编译 FORTRAN 77(https://en.wikipedia.org/wiki/Fortran#FORTRAN_77)“Heron”程序的截图:
FORTRAN77 截图。
这里还有一个视频(https://www.youtube.com/watch?v=OsRkhFyflAo),展示了一些其他程序的运行。
*主题:开源(https://kobolt.github.io/index-topic.html#open_source),作者:Kjetil @ 2025-10-10,文章链接(https://kobolt.github.io/article-264.html)*
相似文章
CP/M-86 & MS-DOS 交叉开发环境
本项目为CP/M-86和MS-DOS提供了一个交叉开发环境,包括用于复古计算的编译器、汇编器和模拟器。
Scratch 中的 8086 模拟器
一位开发者在 Scratch 中构建了一个 8086 CPU 模拟器,展示了在可视化编程环境中的复古硬件模拟。
微型模拟器
一个基于网页的经典8位计算机模拟器集合,涵盖Amstrad CPC、ZX Spectrum、Commodore和Robotron等机型,使用Visual 6502和Visual Z80 Remix构建。
Linux/M68k
Linux/m68k 是 Linux 操作系统的移植版本,用于在采用摩托罗拉 68020/030/040/060 微处理器的系统上运行。本页面提供有关该项目、发行版和链接的信息。
Plexus P/20 模拟器
一款全新的开源 WebAssembly 模拟器,重现 1980 年代 Plexus P/20 Unix 服务器,让用户可在浏览器中运行 SystemV Unix。