4 ms·
CP/M 2.2, CP/M 3.0, CP/M-86, Concurrent CP/M-86 listings by Digital Research
- mistrial9 1y agoIsn't MP/M an interesting one?
- lproven 1y agoIt is, but CCP/M is a descendant of it. What stifled CCP/M in its era was that it wasn't compatible with MS-DOS device drivers. Today, that's largely irrelevant: there aren't any modern ones. I feel a modernised FOSS Concurrent DOS could be a fun toy: a multitasking x86-32 OS that can handle 4GB RAM and multitask lots of DOS apps. Slap a GUI on it -- DR GEM is FOSS now -- and it could do all many people need, while being about 0.01% the size of a lightweight Linux distro.
- jandrese 1y agoMultitasking DOS apps is always a minefield. Most DOS apps are expecting to have total control of any aspect of the machine they want, so if they're suddenly being asked to share it's bad news. This is why DOS stuff is all virtual machines now, and while Virtual Machines have many virtues, light weight is rarely one of them.
- rep_lodsb 1y agoVirtual 8086 mode on the 32-bit x86 processors was quite lightweight. EMM386.EXE used it just to emulate EMS :) And the virtualization done by Win9x or OS/2 wasn't that much more resource intensive either.
- lproven 1y agoYes, but as the comment below notes, the 386 has hardware-assisted DOS multitasking: basically, V86 mode is a hardware-enforced real mode VM. CP/M-86 was late -- years late, and MS-DOS got control of the market in that time. It didn't help that when CP/M-86 arrived on the IBM PC it was 5x the price of DOS. So, to make a more compelling product, DR merged CP/M-86 with MP/M to make Concurrent CP/M. The intent was multiple users on terminals, not multitasking on one PC, but it could do that. Concurrent CP/M got an MS-DOS emulator called DOS-mode. This was later built in and Concurrent CP/M became Concurrent DOS. (Later that bit was effectively spun out to become DR-DOS.) Concurrent DOS 286 ran in protected mode on 80286 machines and could multitask DOS apps in protect mode, which even OS/2 couldn't do. But this depended on a feature of pre-release 286 chips that Intel removed before release, crippling the new OS. (With it unable to multitask DOS on early shipping 286s, DR retargeted CDOS 286 as a real-time OS, renaming it FlexOS. That survived for decades. It's still supported by IBM and Toshiba today I think.) So when the 386 came along it did a big rewrite. CDOS 386 supports hardware-assisted DOS multitasking, including on terminals, but on the console too. No GUI, no windowing, only (by default) 4 full-screen virtual consoles, just as Linux has 7 vconsoles by default accessed with Alt-F1...F7. (Ctrl+Alt+F-keys in X11.) Including in graphics mode. At work in my first job, I ran MS-DOS COMMAND.COM on top of CDOS in one session, so it reported it was MS-DOS 3.3, but in the background the machine was running FRACTINT generating Mandelbrots for hours. No CPU heatsinks back then, no power management, no fans, so the PC was no louder running flat-out. It could even handle FRACTINT's fancy direct-VGA-register-writing graphics modes, which reliably crashed OS/2 2.0.
- retrac 1y agoMuch more sophisticated than you might think given the CP/M heritage. Memory protection and preemptive multitasking, asynchronous IO, networking support, and written partly in a high-level language. Software ecosystem comparable to early UNIX or VMS. And a dead end.
- cmrdporcupine 1y agoI would expect some of the IP made it into Concurrent DOS and DR DOS eventually. I know in the past when I've browsed the late-DR sources there were clear lines of continuity between various products in their family tree (GEMDOS, CP/M, M/PM, etc), so I suspect bits ended up in that
- Zardoz84 1y agosearch for Copland and what parts came back to DR-DOS
- kodis 1y agoVery interesting, and a classy move by DR, although the original text files would have been much more interesting to play with.
- the_hoser 1y agoI wonder if there are no text files to provide.
- stevekemp 1y agoYou can find (compilable) versions of CP/M on github hosted by many people. I've referred to them a fair bit in recent times as I've been fighting to get my golang CP/M emulator working on a couple of stubborn binaries. (Downside is that many of the versions of CP/M sources you see use the weird intel-style of assembly rather than the more typical Z80 opcodes. Still that's not a real blocker.)
- rep_lodsb 1y agoThose are usually disassembled binaries, not the original source code. Which used Intel style assembly and PL/M. And Z80 syntax may be more common today, but Zilog made some rather bad choices IMO. If "LD A,(HL)" loads a byte from memory address HL, then you would expect "JP (HL)" to load the address to jump to from memory instead of directly from the HL register. "PCHL" is a lot clearer. Also in 8080 syntax, one mnemonic => one addressing mode and base opcode. No surprising syntax errors because some operand combination isn't allowed, or 4 clock penalty to fetch a prefix byte...
- stevekemp 1y agoThere are inconsistencies, to be sure, for both sides. I guess it mostly depends which you grew up with, or were otherwise exposed to first, which determines which one makes most sense to you.
- classichasclass 1y agoI'm sympathetic to that, and it would make a modern reconstruction easier to create, but it's also nice to see the the rubber stamps and the other ephemera to get an idea of how the process worked. Plus, quite possibly the files in their original form no longer exist.
- clan 1y agoThese listings are fun to explore. As a teenager I got my first 8-bit computer. A lot of my friends had Commodore 64. But a good computer salesman sold me and my dad on the british Amstrad CPC 6128[0]. It had the disk drive and a green monitor. Great computer. Great salesman. They had this newfangled Commodore Amiga but he did not know much about it. It was at the same price but without a monitor so my dad reasoned it would be better as I would then not occupy the living room TV with my computer. I could have jumpstarted my career on 16 bit. I could have been a contender! The Amstrad had a Z80 CPU and ran Locomotive Basic when powered on. But it came with a disk containing CPM Plus 3.0. That was used for "business-like" things such as copying files using "pip to_me from_you". That in turn made me the local über-geek in the computer room in my public school. They had 2 expensive danish made and rather rare Intel 80186 (yes - 80 one 86) based RC Piccoline[1] computers. They in turn each had 4 terminals and 1 dot matrix printer (a typical school setup at the time). A fact which never really dawned upon me at the time what "Concurrent" in CCP/M meant. My geek flex was when the vice principal fetched me during a regular class to help him remove a defamatory text file from a 5,25" floppy disk. He was not able to delete the file himself. I identified the "read-only" attribute was set and such wizardry was rarely seen around those parts. Back in the day when computing was much more heterogeneous and fun. I am sitting here behind my Ryzen monster but still yearn for those days. Now, kids. Get off my lawn :-) [0] https://www.computinghistory.org.uk/det/2666/Amstrad-CPC-6128/ https://www.computinghistory.org.uk/det/2666/Amstrad-CPC-612... [1] https://datamuseum.dk/wiki/RC_Piccoline https://datamuseum.dk/wiki/RC_Piccoline
- mattl 1y agoIn the UK we had lots of 186 based PC clones from Research Machines such as the Nimbus. They ran a version of MS-DOS and Windows but weren’t strictly PC compatible. https://en.wikipedia.org/wiki/RM_Nimbus https://en.wikipedia.org/wiki/RM_Nimbus I had a CPC too but later bought a 3.5 inch drive for it (used from someone else who bought an Amiga) so I could transfer files easily between Windows and AMSDOS. This was how I would later update my website after initially trying to write it all via a modem connection.
- clan 1y ago
- uncircle 1y agoWhat's the language shown in the CP/M-86 listings? E.g. http://www.bitsavers.org/pdf/digitalResearch/CPM_Listings/CPM_86_V1.1_Listing/cpm86_v1.1_vol_3_03_assl86.pdf http://www.bitsavers.org/pdf/digitalResearch/CPM_Listings/CP...
- deleted 1y ago[deleted]
- Aloha 1y agoPL/M https://en.m.wikipedia.org/wiki/PL/M https://en.m.wikipedia.org/wiki/PL/M
- staplung 1y agoSays right at the top: MCS-86 Assembler https://bitsavers.org/pdf/intel/ISIS_II/9800640-02_MCS-86_Macro_Assembly_Language_Manual_Sep79.pdf https://bitsavers.org/pdf/intel/ISIS_II/9800640-02_MCS-86_Ma...
- rep_lodsb 1y agoThat first page is just some "glue" code, the rest of the listing (assembler module for DDT) is written in PL/M. You can see the commands to build the full program on page 3.
- deleted 1y ago[deleted]
- nickdothutton 1y agoI got started with an 8-bit home computer that came with a bunch of games and a copy of CP/M 3.1 (and 2.2). While the games were welcome entertainment, the macro assembler, BCPL, Fortran and all the shareware I managed to acquire set me on a career. It was a magical voyage of discovery and learning.
- bitsavers 1y agohttps://oldbytes.space/@bitsavers/114661628149581952 https://oldbytes.space/@bitsavers/114661628149581952
- deleted 1y ago[deleted]
- timonoko 1y agoWhat? You could write several commands on one line in CP/M assembler: LHLD 0 ! XCHG ; zero DE I dont remember MSDOS Masm having such feature?