TECH Signal 322 2 feeds carried it
CP/M-386: CP/M for 386 protected mode, derived from CP/M-68K
CP/M-386 is an early-stage port of CP/M to 32-bit protected mode on 386-compatible hardware, derived from the CP/M-68K codebase.
Engineers can now experiment with a CP/M environment that runs in protected mode, using modern build tools and can be tested in QEMU or on real hardware. The project shows how to adapt the classic BDOS to ring-3 TPA and multiboot bootstraps while highlighting which legacy features remain unimplemented. This provides a reference for low-level OS development and for understanding compatibility limits when porting old software to newer x86 modes.
Written by elseif from the cluster below · every claim links back to a sourceThe three things worth knowing
CP/M-386 produces a multiboot kernel (cpm386.elf) and a bootable floppy image (floppy.img) that run on 386+ CPUs with at least 2 MB RAM and BIOS or UEFI-CSM firmware.
It claims full BDOS compatibility with CP/M 2.2 and CP/M-68K 1.3, and partial support for CP/M-Plus, DOS-Plus and MP/M extensions, while adding its own extensions for video access, timing and PRNG.
The current release lacks storage, USB, network and sound drivers and is still in early development, so only basic console I/O and the supplied test utilities function.
THE READ
What the cluster adds up to.
CP/M-386 moves the classic CP/M environment from real mode into a 32-bit protected mode setting, executing the transient program area at ring-3. The kernel is built as a multiboot image, allowing it to be loaded by GRUB or directly from a MBR floppy boot sector. This enables the system to start without relying on the legacy BIOS boot services that original CP/M required. Developers can therefore test the OS in QEMU or on real hardware using the same boot mechanisms used by modern kernels.
The port targets any 386 or later processor with a minimum of two megabytes of RAM, and it works with either a traditional PC BIOS or a UEFI firmware that provides a compatibility support module. Supported hardware includes VGA text mode, the 8042 PS/2 keyboard controller, 8250/16450/16550 UARTs for serial consoles, a CMOS real-time clock, and the 8253/8254 programmable interval timer. No drivers for storage devices, USB, network interfaces or sound hardware are present in this release. Consequently, interaction is limited to the video console or serial port unless additional drivers are added.
Compatibility tables show that CP/M-386 offers full BDOS level compatibility with CP/M 2.2 and CP/M-68K 1.3, while providing about seventy-one percent of CP/M-Plus calls, sixty-two percent of DOS-Plus additions and roughly half of the MP/M extensions. The missing pieces are primarily the multi-user, multi-tasking, message queuing and process control functions that are irrelevant to a single-user CP/M system. To make up for the lack of hardware support, the project has added its own BDOS extensions for direct video access, high-resolution timing and a pseudo-random number generator. These extensions give developers new ways to interact with the system beyond the original CP/M API.
Building CP/M-386 requires a typical GNU toolchain: AWK, cpmtools (version 2.23 or later), Binutils, Coreutils, GCC or Clang, Make, NASM and QEMU for testing. The source compiles on recent Linux distributions, NetBSD and FreeBSD (with a rebuilt cpmtools on FreeBSD). The output consists of a multiboot ELF kernel and a floppy disk image that can be written to physical media or used directly in QEMU. Because the current code lacks disk, USB, network and sound drivers, any attempt to access those subsystems will stop working, limiting the OS to console-based programs and the supplied test utilities until further drivers are implemented.
Written by elseif from the cluster below · checked for specifics the sources never containedTHE CLUSTER