<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/github---johnsonjh-cpm386-cp-m-386-cp-m-for-386-protected-mode-derived-from-cp-m-68k-xluwhpy7g" -->

---
title: GitHub - johnsonjh/cpm386: CP/M-386: CP/M for 386...
description: CP/M-386 is an early-stage port of the CP/M operating system to 386 protected mode, derived from CP/M-68K. It runs in full 32-bit protected mode with Ring-3...
canonical: https://daily.dev/posts/github---johnsonjh-cpm386-cp-m-386-cp-m-for-386-protected-mode-derived-from-cp-m-68k-xluwhpy7g
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: GitHub - johnsonjh/cpm386: CP/M-386: CP/M for 386 protected mode, derived from CP/M-68K | daily.dev
og:description: CP/M-386 is an early-stage port of the CP/M operating system to 386 protected mode, derived from CP/M-68K. It runs in full 32-bit protected mode with Ring-3...
og:url: https://daily.dev/posts/github---johnsonjh-cpm386-cp-m-386-cp-m-for-386-protected-mode-derived-from-cp-m-68k-xluwhpy7g
og:image: https://api.daily.dev/og/posts/xluwhPY7G.png
og:image:alt: GitHub - johnsonjh/cpm386: CP/M-386: CP/M for 386 protected mode, derived from CP/M-68K
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub - johnsonjh/cpm386: CP/M-386: CP/M for 386 protected mode, derived from CP/M-68K

**[Hacker News](https://daily.dev/sources/hn)** · 8 min read · 0 upvotes · 0 comments

## Summary

CP/M-386 is an early-stage port of the CP/M operating system to 386 protected mode, derived from CP/M-68K. It runs in full 32-bit protected mode with Ring-3 TPA, boots via 1.44MB floppy MBR or GRUB Multiboot, and supports VGA text and COM1 serial consoles. BDOS compatibility covers 100% of CP/M-68K 1.3 and CP/M 2.2, 71% of CP/M-Plus, and partial DOS-Plus and MP/M support. The project is written primarily in C and x86 assembly (~24K lines of code), builds on Linux/BSD with GCC or Clang, and can be tested under QEMU. No disk or network drivers exist yet. LLM-generated code contributions are explicitly rejected.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://github.com/johnsonjh/cpm386>

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 56 comments across lobsters, hackernews (as of 2026-08-06).

**TL;DR:** The community is genuinely enthusiastic about a CP/M-386 hobby OS project, praising it as real non-AI work, while the thread quickly turns into a rich historical discussion about CP/M, DR-DOS, and the DOS wars.

**Sentiment:** 60% positive · 30% mixed · 10% skeptical

**The case for**

- Commenters appreciate that the project is written without AI-generated code, calling it impressive and a welcome change.
- The use of CP/M-68K (written in C) as a base is seen as a technically sound choice for porting to 386 protected mode.
- The project's small footprint is praised as a contrast to bloated modern operating systems.

**The pushback**

- The project is noted to be in very early stages with no floppy, hard disk, network, or other drivers yet.
- Some find the requirement of 2MB minimum memory a quirky design choice, though it's explained as avoiding memory-mapped I/O conflicts.
- The historical lineage is complicated — CP/M-386 as a name is somewhat misleading since DRI had already moved away from the CP/M brand by the 386 era.

**By community**

- hackernews (positive): Enthusiastic reception with deep historical tangents about CP/M, DR-DOS, and the DOS wars, plus explicit praise for the project being AI-free.
- lobsters (positive): Brief but positive note from someone who worked with CCP/M-86 and is interested in running it on a V20 board.

**Hottest debate:** Whether DR-DOS's occasional MS-DOS compatibility hiccups were due to Microsoft deliberately engineering incompatibilities (AARD code) or just the difficulty of cloning undocumented internals.

**Open questions**

- When will floppy, hard disk, and other drivers be added so the OS can actually load and run programs?
- Will the project eventually support networking or a GUI layer similar to GEM?
- Could the FlexOS source ever become available, given it would be a richer base for this kind of hobby project?

**Highlights**

> I don't want to just quibble for the fun of it but so much more of this is wrong than right that it's downright misleading. > I'm pretty sure CP/M 86 was already a thing. Yes it was. Launched after the IBM PC, though, which is why SCP wrote QDOS which  they licensed to MS and became MS-DOS. How and why it was late: https://nemanjatrifunovic.substack.com/p/the-late-arrival-of... > I believe there was even Concurrent CP/M 86 There was. And then CCPM-286 and CCPM-386. > which let you run up to 4 (or more?) virtual sessions concurrently On the console -- but the selling point was that you could also attach dumb terminals to the serial ports and they could run DOS apps too. So you had a cheap multiuser box, where adding 3 or 4 or 8 more users cost about 10% as much as a network with 3 or 4 or 8 more client PCs. >  Light years ahead of MS-DOS but nobody wanted it, No, not at all. One descendant is still supported today, some 45 years later. https://tgcs04.toshibacommerce.com/cs/groups/internet/docume... >  so DRI dumbed it down and added MS-DOS compatibility No, not even slightly. > and re-released as DR-DOS (still superior to MS-DOS though). Not a fair description at all. Here's how it went: MS-DOS beat it to market. So, DR brought multitasking and multiuser from MP/M to turn CP/M-86 into Concurrent CP/M: CCP/M-86 MS-DOS did great. So, lots of apps. So, DR added DOS compatibility to CCP/M. It also did a single-user OS, called DR DOS Plus. Oversimplification: this was a single-user non-multitasking CP/M-86 that read/wrote FAT and could run DOS apps. Intel did a new chip, the 80286. DR ported to it. A native protect-mode 286 OS, which used new 286 features to pre-emptively multitask DOS apps. Intel removed those features before it launched the 286. This killed DR's new OS. So, it refocused: it temporarily dropped DOS compatibility, and sold it as an RTOS instead, with a multitasking version of GEM as its GUI. Intel put the features back and Concurrent DOS 286 became a product but it was too late. This was a better OS/2 before OS/2 1.0 launched. Intel put DOS multitasking into hardware in the 386. DR rewrote CDOS286 in C creating CDOS386. This had really good DOS compatibility. So DR updated DOS Plus to make DR-DOS: a superset of MS-DOS 3.3, with FAT16 for big hard disk, and it could run DOS device drivers. This did OK. IBM did DOS 4. Bigger, but with big disk support, and a GUI app launcher/file manager. DR leapfrogged with DR-DOS 5: all that, but smaller, with built-in memory management. A brief arms race ended with Win95 which bundled MS-DOS and so killed the DOS market. Meantime, DR took the better DOS compatibility and made Multiuser DOS, which did well and throve for decades. Here's a history I did 4Y ago: https://www.theregister.com/software/2022/08/04/the-many-der...
> — [lproven on hackernews](https://news.ycombinator.com/item?id=49155764)

> First project of this kind on here in a long while that isn't complete AI slop. Well done, really happy to see some people still doing this!
> — [m132 on hackernews · 2 comments](https://news.ycombinator.com/item?id=49151541)

> I worked at Digital Research from 1984 to 1990.  CP/M-68K was the first operating system I used there, but only for a brief period.  It's unfortunate that the source for FlexOS is not available; it would be a better choice for a hobby project like this. It was a protected mode OS for the 286 that had a real-time kernel, TCP/IP stack, DOS compatibility box, and more.  It was a clean break from CP/M.  IBM used it in their point-of-sale terminals for quite a few years, and I worked on porting it to 32-bit architectures like the NEC V60.  It died after Novell bought DRI, aside from its use inside IBM.
> — [bloovis on hackernews · 1 comments](https://news.ycombinator.com/item?id=49155578)

> > cp/m-86 targets 8086, which is no more useful or relevant to 386 protected mode than the original z80 version. Did you think they just picked the 68k version at random? The big reason for picking the 68K version is it was mainly written in C (initially in Pascal, but they later switched to C.) By contrast, the more famous 8080 versions were largely written in assembly, as was the 8086 version. Well, CP/M-80 1.x was mostly written in PL/M, a dialect of PL/I developed by Gary Kildall, but CP/M-80 2.x+ was rewritten in assembly for speed; PL/M was still used for some of the utilities. Obviously, C compilers are much easier to come by nowadays than PL/M compilers are.
> — [skissane on hackernews](https://news.ycombinator.com/item?id=49151269)

> > Much as I loved DR-DOS, it did have occasional compatibility hiccups. Because MS carefully built them. This was proved in court. The developers who built the incompatibilities signed their work with their initials: AARD. https://en.wikipedia.org/wiki/AARD_code How it was found: https://www.geoffchappell.com/notes/windows/archive/aard/ind...
> — [lproven on hackernews](https://news.ycombinator.com/item?id=49155794)

**Source threads**

- [lobsters](https://lobste.rs/s/2l3r4x/cp_m_386_cp_m_for_386_protected_mode_derived) · 7 points · 1 comments
- [hackernews](https://news.ycombinator.com/item?id=49149898) · 46 points · 55 comments

## Similar posts on daily.dev

- [At Last\! CP/M For Protected Mode](https://daily.dev/posts/at-last-cp-m-for-protected-mode-uwyyrac2m) · Hackaday · 0 upvotes · 0 comments
- [GitHub - Mazin-O3/cpm-neo: A CP/M-inspired operating system](https://daily.dev/posts/github---mazin-o3-cpm-neo-a-cp-m-inspired-operating-system-qkme4dvof) · Two Stop Bits · 0 upvotes · 0 comments
- [z386: An Open-Source 80386 Built Around Original Microcode](https://daily.dev/posts/z386-an-open-source-80386-built-around-original-microcode-jzqwybv7o) · Hacker News · 1 upvotes · 0 comments
- [Z386: An Open-Source 80386 Built Around Original Microcode](https://daily.dev/posts/z386-an-open-source-80386-built-around-original-microcode-ioqq7baty) · Hackaday · 0 upvotes · 1 comments

---

Tags: [#c](https://daily.dev/tags/c)

[View this post on daily.dev](https://daily.dev/posts/github---johnsonjh-cpm386-cp-m-386-cp-m-for-386-protected-mode-derived-from-cp-m-68k-xluwhpy7g)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"GitHub - johnsonjh/cpm386: CP/M-386: CP/M for 386 protected mode, derived from CP/M-68K","url":"https://daily.dev/posts/github---johnsonjh-cpm386-cp-m-386-cp-m-for-386-protected-mode-derived-from-cp-m-68k-xluwhpy7g","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/github---johnsonjh-cpm386-cp-m-386-cp-m-for-386-protected-mode-derived-from-cp-m-68k-xluwhpy7g"},"datePublished":"2026-08-03T04:31:34.340Z","dateModified":"2026-08-06T11:08:43.230Z","description":"CP/M-386 is an early-stage port of the CP/M operating system to 386 protected mode, derived from CP/M-68K. It runs in full 32-bit protected mode with Ring-3...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/a889ec12aec3802314aa63885fb7ad4b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/a889ec12aec3802314aa63885fb7ad4b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/github---johnsonjh-cpm386-cp-m-386-cp-m-for-386-protected-mode-derived-from-cp-m-68k-xluwhpy7g","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"c","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"GitHub - johnsonjh/cpm386: CP/M-386: CP/M for 386 protected mode, derived from CP/M-68K"}]}
```

