6 ms·
CP/M-386 – CP/M for 386 protected mode, derived from CP/M‑68K
- rgmerk 2mo agoCP/M - because pip just makes more sense than copy.
- kees99 2mo agoWasn't that abbreviation from "pipe"? As in - this is a pipe that you can use to connect terminal to a file, file to a printer... and yes, file to a file (that's cp/copy).
- haddonist 2mo agoNo. https://en.wikipedia.org/wiki/Peripheral_Interchange_Program https://en.wikipedia.org/wiki/Peripheral_Interchange_Program
- Gracana 2mo agoIt also has an “ed” that will make you miss UNIX’s “ed”. I’ve used it to write programs and it is not fun!
- rgmerk 2mo agoI was a kid at the time, so I only got as far as writing and modifying a few programs in MBASIC. Anyone that got anything nontrivial to work on those systems deserves much respect.
- Zardoz84 2mo agoedilin was in the same page
- pjmlp 2mo agoMy computer skills typographic school exam was done with edlin, on MS-DOS 3.3 Never used it ever again.
- tengwar2 2mo agoWhen I started using it, standard advice was to use Wordstar in text mode.
- lproven 2mo ago> pip just makes more sense than copy. PIP was a stock tool on DEC OS-8 and other OSes of which CP/M was basically a cheapo cut-down Intel version. https://en.wikipedia.org/wiki/Peripheral_Interchange_Program https://en.wikipedia.org/wiki/Peripheral_Interchange_Program
- peter_d_sherman 2mo ago>"Compatible with 386 (and later systems) with 2MB (or more) memory." Looks good! An order of magnitude (or two!) less code complexity and less memory hungry than most of 2026's bloated Operating Systems... Well done!
- anonymousiam 2mo agoMy assumption on the reason that it requires 2M or more is all the memory mapped I/O devices in the first 1M of PC memory. They just wanted to avoid the whole page and set the origin at 2MB.
- trn 2mo agoHi there, this is my project. And yes, you are essentially correct. It can actually work in a little less than 2MB, but this was done this way for simplicity, and to avoid, for now, what would be a more complicated memory map and paging requirements.
- iqp 2mo agoI'm pretty sure CP/M 86 was already a thing. I believe there was even Concurrent CP/M 86, which let you run up to 4 (or more?) virtual sessions concurrently. Light years ahead of MS-DOS but nobody wanted it, so DRI dumbed it down and added MS-DOS compatibility and re-released as DR-DOS (still superior to MS-DOS though).
- dboreham 2mo agoNot 386 though.
- codebje 2mo agoCP/M-86 was definitely a thing, but CP/M-386 was not. By the time the 386 existed, DRI had dropped the CP/M name in favour of Concurrent DOS - though they had MS-DOS compatibility in Concurrent CP/M - and, as you say, eventually renamed it to DR-DOS. Much as I loved DR-DOS, it did have occasional compatibility hiccups.
- m132 2mo agoChances are those hiccups weren't without a reason! https://en.wikipedia.org/wiki/Jim_Allchin#Controversies https://en.wikipedia.org/wiki/Jim_Allchin#Controversies
- codebje 2mo agoAlso, it was super common practice to just go direct to undocumented internals. You didn't have a clean API to duplicate, you had all the untamed glory of a CPU with no MMU to deal with, and all the programs that did shonky things because they worked.
- lproven 2mo ago> 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 https://en.wikipedia.org/wiki/AARD_code How it was found: https://www.geoffchappell.com/notes/windows/archive/aard/index.htm https://www.geoffchappell.com/notes/windows/archive/aard/ind...
- iberator 2mo agoDoes it support flat memory model or its banked like DOS ?
- deleted 2mo ago[deleted]
- paseante 2mo ago[flagged]
- Zardoz84 2mo agoif it runs in 32 bits protected mode, by definition you have flat memory.
- ButlerianJihad 2mo agoThe question is understandable because EMM/EMS use protected mode in a limited way. In fact, 386 protected mode could still make use of memory segmentation, with 32-bit segment registers being an upgrade from the 286 protected mode. But there has been no production OS that continued to use segmentation once 386 mode made 32-bit addressing so easy. In large part because Unix could be ported from flat memory models such as VAX, and m68k. Therefore, since CP/M-386 is derived from CP/M-68K, it seems straightforward that a flat 32-bit memory model is employed.
- unnah 2mo agoAlso, since CP/M 3.0 on Z80 supported more than 64 kB memory via bank switching, one might expect CP/M to do so on other platforms too.
- ButlerianJihad 2mo agoYou probably mean "more than 64KB" or "more than 64KiB", but you're not wrong that 65,536 > 64,000
- lproven 2mo ago
- flomo 2mo agoJust as some off-the-top history, MS-DOS was clearly obsolete, but it hung around for like 10 years too long because people couldn't quit it. It was a DOSSY DOS world. "Protected Mode DOS" went through the IBM/MS gristmill and became OS/2, which was a compromised product in a lot of ways. Then Windows (still mostly a DOS program) got a little traction, and Microsoft had hired Dave Cutler to write a real OS. And David overthrew Goliath and the rest is history. On topic, nobody really wanted protected-mode DOS or CP/M etc.
- p_l 2mo agoWindows 3.0 becoming a hit was something unplanned by Microsoft originally - even the NT team was working with the assumption of using OS/2 API for applications. Win3.0 started out as skunkworks project initially hiding from management under smokescreen of just being one last release of "windows as application library" that some products (including 3rd party ones) were using
- ndiddy 2mo agoHere's a good anecdote about that: https://web.archive.org/web/20130806213426/http://blogs.msdn.com/b/larryosterman/archive/2005/02/02/365635.aspx https://web.archive.org/web/20130806213426/http://blogs.msdn... > I remember wandering over to the Windows group over in Building 3 to talk to Aaron Reynolds about something to do with the MS-DOS redirector (I was working on DOS Lan Manager at the time). I ran into David, and he called me into his office "Hey, look at what I've got working!". > He showed me existing windows apps running in protected mode on the 286. UNMODIFIED Windows 1.0 applications running in protected mode. He then ran me around the rest of the group, and they showed me the other stuff they were working on. Ralph had written a new driver architecture called VxD. Aaron had done something astonishing (I'm not sure what). They had display drivers that could display 256 color bitmaps on the screen (the best OS/2 could do at the time was 16 colors). > My jaw was dropping lower and lower as I moved from office to office. "Oh my goodness, you can't let Steve see this, he's going to pitch a fit" (those aren't quite the words I used, but this is a family blog). You see, at this time, Microsoft's systems division was 100% focused on OS/2 1.1. All of the efforts of the systems division were totally invested in OS/2 development. We had invested literally tens of millions of dollars on OS/2, because we knew that it was the future for Microsoft. OS/2 at the time just ran a single DOS application at a time, and it had only just recently gotten a GUI (in 1989). It didn't have support for many printers (only about 5, all made by IBM, and (I believe) the HP Laserjet). > And here was this little skunkworks project in building three that was sitting on what was clearly the most explosive product Microsoft had ever produced. It was blindingly obvious, even at that early date - Windows 3.0 ran multiple DOS applications in virtual x86 machines. It ran Windows applications in protected mode, breaking the 640K memory barrier. It had a device driver model that allowed for development of true 32bit device drivers. It supported modern displays with color depths greater than had been available on PC operating systems. There was just no comparison between the two platforms - if they had to compete head-to-head, Windows 3.0 would win hands down.
- m132 2mo agoFirst 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!
- CursedSilicon 2mo agoCareful now. For some reason celebrating not using the slop machine attracts a lot of negative attention. There's no room for dissent against the slop bot for some reason
- trollbridge 2mo agoYeah, I was a bit shocked to run across the "no AI generated code is in this code base yet", although the project doesn't have an anti-AI contribution policy. Makes it much more impressive.
- trn 2mo agoWhile I'm not necessarily 100% anti-AI, it would completely eliminate all the potential for learning and any "fun" from this project.
- trn 2mo agoThank you, as this is my project. As I said in the README, it's as much of a learning experience as it is a "practical" project. Using AI would eliminate the fun.
- anonymousiam 2mo agoCP/M‑386 is currently in the very early development stages. Full 32‑bit protected mode implementation with Ring‑3 TPA. Bootable via 3.5" 1.44MB floppy disk MBR or GRUB Multiboot kernel. Supports VGA text (0xB8000) and/or COM1 serial (9600/N/8/1, 0x3F8) consoles. No floppy/hard disk/CD/USB/network/sound/other drivers (yet). So it boots from a floppy, but has no floppy disk support?
- jmmv 2mo agoThat's not surprising. The page says the kernel is multiboot compliant, which means it can be loaded by existing boot loaders. Whether the kernel later provides a floppy driver is a separate story. This is also pretty common even if you don't use multiboot. The I/O services exposed by the BIOS or firmware during boot may not be usable once the kernel has started, and thus the kernel has to provide its own drivers.
- trn 2mo agoYes, currently the system boots from a floppy disk (stage1 -> stage2 loader), which then loads the OS (CBIOS/BDOS/CCP) and an (384K) initial ramdisk, and currently runs out of memory, so once the OS is booted the disk can actually be removed from the system. Once there is more proper disk support, the initial ramdisk can become optional, though a more proper ramdisk implementation is planned, which will make supporting floppy-disk-only systems easier.
- Zardoz84 2mo agoingesting....but not was like "Star trek project" something like this. DR-DOS evolved from CP/M-86 and they added. And "Star Trek" added to DR DOS a multitasker named "Vladivar" (and a port of System 7 GUI). If I remember it correctly, there is these multitasker in DR-DOS 7 that allow pre-emptive tasking in 32 bits protected mode.
- lproven 2mo agohttps://lowendmac.com/2014/star-trek-apples-first-mac-os-on-intel-project/ https://lowendmac.com/2014/star-trek-apples-first-mac-os-on-...
- trn 2mo agoYes, DR-DOS/Novell DOS 7 has a full 386 preemptive multitasking kernel and a decent API, which was essentially unused, with a few exceptions. See https://web.archive.org/web/20160809210402/http://www.drdos.net/documentation/multtask/01mtch1.htm https://web.archive.org/web/20160809210402/http://www.drdos.... and https://web.archive.org/web/20170211175548/http://drdos.net/documentation/multtask/02mtch2.htm https://web.archive.org/web/20170211175548/http://drdos.net/... for more details
- rswail 2mo agoOne of my first jobs, back in the 1980s, was a project for a government department that the supplier (Wang Computers) had bet on MS-DOS being multi-process. Of course, it wasn't but there was MP/M-86/CCP/M/CDOS/DR-DOS which allowed you to have 4 "users"/virtual TTYs. So we ended up using that along with some tweaks to the software (including an IBM 3270 emulator, MS-Word/Excel (the DOS versions), and a custom software app) that ended up getting deployed to a few hundred government offices. Mostly worked except some of the software really didn't like the fact that it was being swapped out of keyboard/screen access.
- lorreyfum 2mo agoNow if I can find those 8” wordstar floppies.
- bloovis 2mo agoI 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.
- lproven 2mo ago> It's unfortunate that the source for FlexOS is not available So very true. 100x this.
- ddevnyc 2mo agoLooking back on the project, what do you think could be some interesting things one can learn from it?
- bloovis 2mo agoOne thing that sticks in my mind was that the system call API was well-designed (by Frank Holsworth). Everything involved getting or setting tables (structures). The documentation for this was really quite good.
- dfawcus 2mo agoThe documentation for FlexOS 1.2/1.3 is available on Bitsavers. So someone could re-implement it. The build kit for CDOS-68k 1.2 (aka FlexOS 68k) is available ob Gaby's site. I worked for an OEM in the 90s, and we used FlexOS 286 (and 386) ver 2.2/2.3 on some custom systems, including an ePOS system.
- bloovis 2mo agoThat's interesting. I left DRI just before Novell bought it, and wasn't aware of anybody besides IBM using it.