CP/M-386 — это CP/M для защищённого режима 386, наследник CP/M-68K. Проект пока в самой ранней стадии разработки. Работает на 386 и более новых системах с 2MB памяти, через PC BIOS или UEFI с CSM. Из железа поддержаны VGA, контроллер клавиатуры 8042 PS/2, UART 8250/16450/16550, CMOS RTC и таймер 8253/8254.
По совместимости с исходным кодом картина такая: BDOS полностью совпадает с CP/M-68K 1.3 и CP/M 2.2, на 71% покрыт CP/M-Plus, на 62% — DOS-Plus, на 50% — MP/M 2.1. Приложениям система сообщает BDOS 2.2. Не хватает в основном многопользовательских и многозадачных вызовов, очередей сообщений и управления процессами — для однопользовательской CP/M они не нужны. Добавлены свои BDOS-расширения: прямой доступ к видео, таймер высокого разрешения, PRNG.
Для сборки нужен cpmtools версии 2.23 или новее — старые версии вроде работают, но содержат известные баги. Собирается на NetBSD, FreeBSD и большинстве свежих дистрибутивов Linux. Проверены CentOS Stream 9, Fedora 36, Debian 12, Ubuntu 18.04 (с gcc-16 из ppa:ubuntu-toolchain-r/test), Ubuntu 22.04, Alpine 3.24 и OpenSUSE Leap 15.4. Рекомендуется GCC: код от Clang для i386 получается больше. Перед сменой компилятора или флагов нужно делать make clean. Для запуска make test нужны 32-битные библиотеки поддержки. На FreeBSD сейчас сломаны пакеты cpmtools2: mkfs.cpm не работает, поэтому надо пересобрать cpmtools и не линковать его с libdsk. Ошибка «Disc rejected by driver» означает, что инструменты битые.
Готовые бинарники можно скачать. Запуск через QEMU: qemu-system-i386 -m 2M -serial stdio -monitor none -kernel cpm386.elf для multiboot-ядра или с флоппи-образа через -drive if=floppy,format=raw,file=floppy.img -boot a. Флаг -nographic -display none -vga none отключает VGA и оставляет только последовательную консоль, а -serial none — наоборот, только VGA.
В комплекте много утилит: HELLO.386 (самая первая программа для CP/M-386), LS.386, MORE.386, MEM.386, GFXTEST.386, MANDEL.386, JULIA.386, VGAFONT.386, TOD.386, REBOOT.386, SYNC.386 и различные тесты BDOS. Автор не принимает pull request'ы с большими объёмами LLM-сгенерированного кода — их отклонят сразу. Сейчас в ОС нет ни строчки сгенерированного ИИ кода, хотя есть AI-тесты, комментарии и анализ; проект задуман как учебный. Использовать AI-инструменты участникам пока можно, на условиях LLVM AI Tool Use Policy, но разрешение могут отозвать в любой момент без предупреждения. В кодовой базе 100 файлов и 24 464 строки кода на C, ассемблере и Makefile. CP/M-386 распространяется под MIT License. Bryan W. Sparks из DRDOS, Inc. dba DeviceLogics LLC, правопреемника активов CP/M от Digital Research, дал неограниченное разрешение использовать, распространять, модифицировать и улучшать CP/M, включая все производные.