CP/M-386: un port del histórico CP/M al modo protegido del 386

Fuentes: CP/M-386: a port of historic CP/M to 386 protected mode

CP/M-386 es un proyecto de software que adapta el veterano sistema operativo CP/M a procesadores 386 y superiores mediante una implementación completa en modo protegido de 32 bits, con TPA en Ring-3. El código deriva de CP/M-68K 1.3 y, según la documentación, alcanza el 100 % de compatibilidad con la capa BDOS de CP/M-68K 1.3 y CP/M 2.2, cubre el 71 % de CP/M-Plus, el 62 % de DOS-Plus y el 50 % de MP/M 2.1, e incorpora extensiones propias para acceso directo a vídeo, temporización de alta resolución y generador de números aleatorios.

El sistema arranca desde un disquete de 3,5" (1,44 MB) mediante MBR o como kernel Multiboot de GRUB, y funciona con 2 MB de RAM en equipos con BIOS o UEFI con CSM. Soporta consola de texto VGA (0xB8000) y puerto serie COM1 (9600/N/8/1, 0x3F8), además de UART 8250/16450/16550, RTC CMOS, PIT 8253/8254 y teclado PS/2 8042; por ahora carece de controladores de disco duro, CD, USB, red o sonido. Para compilarlo se necesitan AWK, cpmtools 2.23 o superior, GNU Binutils, Coreutils, GCC o Clang, GNU Make y NASM, con build verificado en NetBSD, FreeBSD y distribuciones Linux como CentOS Stream 9, Fedora 36, Debian 12, Ubuntu 18.04/22.04, Alpine 3.24 y OpenSUSE Leap 15.4. La salida incluye un kernel Multiboot (cpm386.elf) y una imagen de disquete arrancable (floppy.img), ambos testables con QEMU. El proyecto se distribuye con utilidades de ejemplo (HELLO.386, STAT, LS, GFXTEST, MANDEL, entre otras) y está en una fase muy temprana de desarrollo.