返回

文章详情

CP/M-386 – CP/M 针对 386 保护模式,从 CP/M-68K 派生而来

Hacker News2026年8月3日 00:38

CP/M-386 是针对 386 保护模式的 CP/M,源自 CP/M-68K。 概述 硬件支持 CP/M 兼容性 构建要求 下载 编译 构建输出 QEMU 测试 QEMU 备注 包含的工具 贡献 未来计划 代码统计 镜像 许可证 概述 CP/M-386 目前处于非常早期的开发阶段。完整的 32 位保护模式实现,带有环 3 TPA。 通过 3.5" 1.44MB 软盘 MBR 或 GRUB Multiboot 内核引导。支持 VGA 文本(0xB8000)和/或 COM1 串口(9600/N/8/1,0x3F8)控制台。 尚不支持软盘/硬盘/CD/USB/网络/声音/其他驱动程序。 硬件支持 与具有 2MB(或更多)内存的 386(及更高)系统兼容。支持使用 PC BIOS 或 UEFI(带 CSM)的系统。 支持 VGA、8042 PS/2、8250/16450/16550 UART、CMOS RTC 和 8253/8254 PIT。 CP/M 兼容性 CP/M-386 应与其他实现具有高度源兼容性: 系统 BDOS 覆盖情况: CP/M-68K 1.3 100% CP/M 2.2 100% CP/M-Plus 71% DOS-Plus 62% MP/M 2.1 50% 该系统目前向应用程序报告 BDOS 2.2。 CP/M-386 BDOS 与 CP/M-68K 1.3 和 CP/M 2.2 完全一致。 CP/M-Plus(CP/M 3)BDOS 的大部分功能也得到了支持。 超过 60% 的 DOS-Plus 附加功能已实现。 大约一半的 MP/M 扩展已完成。 缺失的功能主要是多用户、多任务、消息队列和进程控制调用,这些在单用户 CP/M 实现中不适用。 独特的 CP/M-386 特定 BDOS 扩展已被添加,以适应新功能,如直接视频访问、高分辨率定时、PRNG 等。 构建要求 编译 CP/M-386 需要以下依赖项: AWK Cpmtools † GNU Binutils GNU Coreutils GNU GCC 或 LLVM Clang GNU Make NASM QEMU(仅在测试时需要)† 请确保使用 cpmtools 版本 2.23 或更高版本。旧版本可能会出现工作正常但存在多个已知错误的情况。 下载 下载当前的 CP/M-386 构建。 查看 GitLab CI/CD 日志。 编译 在当前的 NetBSD 和 FreeBSD 版本上支持构建 CP/M-386 ‡,以及最近的大多数 Linux 发行版。 以下是经过验证可以成功构建 CP/M-386 的 Linux 发行版的最低版本: CentOS Stream 9、Fedora 36、Debian 12、Ubuntu 18.04(使用来自 ppa:ubuntu-toolchain-r/test 的 gcc-16)、Ubuntu 22.04、Alpine 3.24 和 OpenSUSE Leap 15.4。 GCC 构建(推荐): make -Orecurse -j "$(nproc 2> /dev/null || printf '%s' 1)" make test Clang 构建: make -Orecurse -j "$(nproc 2> /dev/null || printf '%s' 1)" CC="clang" 建议使用 GCC,因为 Clang 编译的 i386 代码更大。 在切换编译器或调整编译器标志时,请确保运行 make clean。 运行测试套件(make test)需要 32 位支持库。 ‡ 在撰写本文时,FreeBSD 正在发布功能失效的 cpmtools2 软件包,mkfs.cpm 功能损坏。要在 FreeBSD 上成功构建,您必须重建 cpmtools,并确保其未与 libdsk 链接。如果在 FreeBSD 上从 mkfs.cpm 收到“驱动程序拒绝磁盘”错误,则您的工具已损坏,无法用来构建 CP/M-386。 构建输出 构建生成两个主要的产物: 文件 描述 cpm386.elf Multiboot 内核映像 floppy.img 可引导的 3.5" 1.44MB 软盘映像 您可以在上方下载预编译的二进制文件。 QEMU 测试 Multiboot 内核(推荐): qemu-system-i386 -m 2M -serial stdio -monitor none -kernel "cpm386.elf" 软盘 MBR 加载器: qemu-system-i386 -m 2M -serial stdio -monitor none -drive if=floppy,format=raw,file="floppy.img" -boot a QEMU 备注 使用 -nographic -display none -vga none 禁用 VGA 视频(仅使用串口控制台)。 使用 -serial none 禁用串行 UART(仅使用 VGA 控制台)。 包含的工具 程序 描述 ACLOCKDV.386 aclock(VGA 文本控制台版本) ACLOCKVT.386 aclock(ANSI 终端版本) BIG.386 多扩展加载测试可执行文件 CLEARTPA.386 清除(归零)并可选地验证 TPA CLS.386 清屏(BDOS 221) DELAY.386 延迟测试(BDOS 141) DEMO.SUB 提交演示 DUMPDIR.386 目录条目转储工具(BDOS 17 / 18) DUMPFCB.386 文件控制块转储工具(BDOS 15) ENV.DAT 环境数据文件 FPARSE.386 F_PARSE 测试(BDOS 152) GETSN.386 显示序列号(BDOS 107) GFXTEST.386 图形和帧缓冲演示(BDOS 229/230/231/233) HD.386 十六进制转储工具 HELLO.386 Hello world(第一个 CP/M-386 程序!) ILLEGAL.386 环 3 保护和异常处理程序测试 IOTEST.386 文件 I/O BDOS 测试 JULIA.386 绘制一个 Julia 集分形(终端版本) LRBC.386 查询和/或设置最后记录字节计数 LS.386 列出文件(附带大小) MANDEL.386 绘制一个 Mandelbrot 集分形(终端版本) ALVTST.386 获取分配向量测试(BDOS 27) MEM.386 内存映射工具(BDOS 227/228) MORE.386 UNIX 风格的分页工具 OD.386 八进制转储工具 PAUSE.386 等待按键 PRINTENV.386 打印环境数据

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡