CP/M-86 Timeline: Difference between revisions

From DisNCord Community Wiki
Jump to navigation Jump to search
Line 37: Line 37:
| CP/M-86 for IBM PC 1.0 || 2.2 || 1982-04-05<ref>https://books.google.cz/books?id=w_OhaFDePS4C&pg=RA2-PA43&redir_esc=y#v=onepage&q&f=false</ref> || Presumably CP/M 2.2 || - || IBM PC CP/M single-side (160k) and double-side (320k) floppy disks || [https://winworldpc.com/download/c5a106c2-a0c2-8fc3-98c2-b211c3a5c28f 160k floppies (WinWorld)], [https://winworldpc.com/download/c3bfc2bc-c593-4fc5-9272-11c3a5c28f13 Manual (WinWorld)]
| CP/M-86 for IBM PC 1.0 || 2.2 || 1982-04-05<ref>https://books.google.cz/books?id=w_OhaFDePS4C&pg=RA2-PA43&redir_esc=y#v=onepage&q&f=false</ref> || Presumably CP/M 2.2 || - || IBM PC CP/M single-side (160k) and double-side (320k) floppy disks || [https://winworldpc.com/download/c5a106c2-a0c2-8fc3-98c2-b211c3a5c28f 160k floppies (WinWorld)], [https://winworldpc.com/download/c3bfc2bc-c593-4fc5-9272-11c3a5c28f13 Manual (WinWorld)]
|-
|-
| CP/M-86 for IBM PC 1.1 || 2.2 || 1982 || CP/M-86 for IBM PC 1.0 || - || As above || [http://www.cpm.z80.de/download/cpm86pc.zip 160k floppies (including later GSX)]
| Concurrent CP/M-86 1.0 || 3.0<ref name="ccpm10prog" /> || August 1982<sup>User's Guide</sup> || MP/M-86 2.0<ref group="note">The Programmers' Guide mentions "MP/M-86 version number" on page 204 for function 163, which is labeled "Return CCP/M Version Number" at page 214, indicating MP/M-86 was left there from previous version by mistake; version 2.0 is derived from a string in the media</ref> (kernel), CP/M-86 for IBM PC 1.1<ref group="note">Based on DDT86 being version 1.2, just like in CP/M-86 1.1, not 1.1 like in CP/M-86 1.0</ref> (userland) || Multitasking, virtual screens || As above || [https://winworldpc.com/download/c2ae43c3-9cc3-b1c3-98c2-b211c3a5c28f 160k floppies (WinWorld)], [https://winworldpc.com/download/c2b035c5-a150-c398-c2b2-11c3a5c28f13 Manual (WinWorld)]
|-
|-
| Concurrent CP/M-86 1.0 || 3.0<ref name="ccpm10prog" /> || 1982 || MP/M-86 2.0<ref group="note">The Programmers' Guide mentions "MP/M-86 version number" on page 204 for function 163, which is labeled "Return CCP/M Version Number" at page 214, indicating MP/M-86 was left there from previous version by mistake; version 2.0 is derived from a string in the media</ref> (kernel), CP/M-86 for IBM PC 1.1<ref group="note">Based on DDT86 being version 1.2, just like in CP/M-86 1.1, not 1.1 like in CP/M-86 1.0</ref> (userland) || Multitasking, virtual screens || As above || [https://winworldpc.com/download/c2ae43c3-9cc3-b1c3-98c2-b211c3a5c28f 160k floppies (WinWorld)], [https://winworldpc.com/download/c2b035c5-a150-c398-c2b2-11c3a5c28f13 Manual (WinWorld)]
| CP/M-86 for IBM PC 1.1 || 2.2 || March 1983<sup>Kernel timestamp</sup> || CP/M-86 for IBM PC 1.0 || - || As above || [http://www.cpm.z80.de/download/cpm86pc.zip 160k floppies (including later GSX)]
|-
|-
| CP/M-86 for IBM PC and IBM PC XT 1.1 || 2.2 || 1983 || CP/M-86 for IBM PC 1.1 || - || IBM PC CP/M single-side (120k) and double-side (320k) floppy disks, IBM XT (and later) fixed disk || [https://winworldpc.com/download/c5be5fc3-8ae2-80a1-c398-c2b211c3a5ef 320k floppies (WinWorld)], [http://www.cpm.z80.de/download/cpm86src.zip kernel source code]
| Concurrent CP/M-86 2.0 || 3.1<ref>VCMODE source code</ref> || 1983-04-30<sup>XIOS source date</sup> || Presumably Concurrent CP/M-86 1.0 || Multitasking, virtual screens || ? || [http://www.cpm.z80.de/download/ccpm8620.zip Source code]
|-
|-
| Concurrent CP/M-86 2.0 || 3.1<ref>VCMODE source code</ref> || 1983-04-30<sup>XIOS source date</sup> || Presumably Concurrent CP/M-86 1.0 || Multitasking, virtual screens || ? || [http://www.cpm.z80.de/download/ccpm8620.zip Source code]
| Concurrent CP/M-86 2.0 for Texas Instruments Professional Computer || Likely 3.1 || 1983-04-30<sup>XIOS build date</sup> || Presumably Concurrent CP/M-86 2.0 || As above || IBM PC CP/M double-side (320k) floppy disks,  "Winchester" fixed disk || [https://winworldpc.com/download/fc7cbf87-8998-11e9-ab10-fa163e9022f0 320k floppies (WinWorld)]
|-
|-
| Concurrent CP/M-86 2.0 for Texas Instruments Professional Computer || Likely 3.1 || 1983-04-30<sup>XIOS build date</sup> || Presumably Concurrent CP/M-86 2.0 || Multitasking, virtual screens || IBM PC CP/M double-side (320k) floppy disks, "Winchester" fixed disk || [https://winworldpc.com/download/fc7cbf87-8998-11e9-ab10-fa163e9022f0 320k floppies (WinWorld)]
| CP/M-86 for IBM PC and IBM PC XT 1.1 || 2.2 || August 1983<sup>BDOS source date</sup> || CP/M-86 for IBM PC 1.1 || - || IBM PC CP/M single-side (120k) and double-side (320k) floppy disks, IBM XT (and later) fixed disk || [https://winworldpc.com/download/c5be5fc3-8ae2-80a1-c398-c2b211c3a5ef 320k floppies (WinWorld)], [http://www.cpm.z80.de/download/cpm86src.zip kernel source code]
|}
|}



Revision as of 15:05, 9 February 2023

This is a project aiming to document the timeline of various versions of the CP/M-86 operating system, focusing primarily on those released for the IBM PC.

The various names of the operating system include CP/M-86, CP/M-86 Plus, MP/M-86, Concurrent CP/M-86, Personal CP/M-86, Concurrent DOS, DOS Plus, Concurrent PC DOS (not to be confused with IBM PC DOS), Concurrent DOS 286, Concurrent DOS 386, Concurrent DOS XT, Multiuser DOS (not to be confused with Microsoft's Multitasking DOS 4), and FlexOS.

The most important fact about each version is BDOS, which is the part of the CP/M kernel that interfaces with userspace applications. The BDOS version can be easily deduced via the function 12 system call, however, it doesn't say everything about the API, since Digital Research didn't always update the BDOS number when adding new calls. Original CP/M-86 uses BDOS 2.2, earlier MP/M-based versions use 3.x (adding multitasking support)[1], while later MP/M-based versions use 4.x (adding directory support)[2].

What to document

For each version, the following information is collected into a table:

  • Date of release, or at least the year if unknown
  • Release name and version
  • Following patches to the release, if any (e.g. CP/M-86 1.1 for IBM PC XT)
  • BDOS version, as reported by function 12 (MRTVNO)
  • The version's predecessor, if applicable and interesting
  • Specific API differences, if applicable
  • Present features, especially DOS filesystem support, DOS application support, and multitasking
  • Supported media types (e.g. fixed disk, 160k floppies, ...)
  • Links to preserved copies: source, binaries, and floppy images, both official and unofficial
  • Links to manuals (User's Guide, System Guide, Programmer's Guide), DRI manuals are good sources of information

The CP/M-86 history documentation project channel on Discord is the chat associated with the project, you can join it if you are interested in helping out.

Lingering questions

  • How does Power-On Command Line work? Concurrent CP/M-86 doesn't seem to have a way to edit this in SETUP.CMD, unlike CP/M-86. CCP/M 3.1 HELP for SYSDISK mentions creating a "startup file" to set system disk on boot, how is this related to Power-On Command Line?
  • How is Concurrent DOS implemented? Is it somehow on top of Concurrent CP/M-86 and auto launched on start, or is it baked deeper into the kernel?

Timeline table

CP/M-86 Timeline Table
Version name BDOS version Release date Based on Features Supported media types Links
CP/M-86 for IBM PC 1.0 2.2 1982-04-05[3] Presumably CP/M 2.2 - IBM PC CP/M single-side (160k) and double-side (320k) floppy disks 160k floppies (WinWorld), Manual (WinWorld)
Concurrent CP/M-86 1.0 3.0[1] August 1982User's Guide MP/M-86 2.0[note 1] (kernel), CP/M-86 for IBM PC 1.1[note 2] (userland) Multitasking, virtual screens As above 160k floppies (WinWorld), Manual (WinWorld)
CP/M-86 for IBM PC 1.1 2.2 March 1983Kernel timestamp CP/M-86 for IBM PC 1.0 - As above 160k floppies (including later GSX)
Concurrent CP/M-86 2.0 3.1[4] 1983-04-30XIOS source date Presumably Concurrent CP/M-86 1.0 Multitasking, virtual screens ? Source code
Concurrent CP/M-86 2.0 for Texas Instruments Professional Computer Likely 3.1 1983-04-30XIOS build date Presumably Concurrent CP/M-86 2.0 As above IBM PC CP/M double-side (320k) floppy disks, "Winchester" fixed disk 320k floppies (WinWorld)
CP/M-86 for IBM PC and IBM PC XT 1.1 2.2 August 1983BDOS source date CP/M-86 for IBM PC 1.1 - IBM PC CP/M single-side (120k) and double-side (320k) floppy disks, IBM XT (and later) fixed disk 320k floppies (WinWorld), kernel source code

Detailed information

Here you can find detailed information about the most important versions of CP/M-86, which doesn't fit into the table above.

CP/M-86 for IBM PC 1.0

CP/M-86 1.0 for IBM PC booted on 86box

Officially named CP/M-86 for the IBM Personal Computer Version 1.0, this is the first version of CP/M-86 for the IBM PC. It was delayed around eight months after the IBM PC release in August 1981, giving it a late start against IBM PC DOS 1.0, itself a clone of CP/M.

Unlike DOS, which ships with IBM BASIC as the built-in programming tool, CP/M-86 included ASM86, an 8086 version of the CP/M-80 assembler ASM. The assembler produces .H86 files with machine code, which can be transformed into relocatable executables wit h the GENCMD utility; this is an improvement upon both CP/M-80 and DOS, both of which use memory images (raw binaries) for programs. CP/M-86 manual also metion a LMCMD program for creating .CMD file from Intel 8086 relocatable object files (which are likely produced by Intel tools like the PL/M compilercitation needed), but the IBM PC distribution doesn't ship it.

CPM-86 1.0 for IBM PC is an adaptation of the earlier CP/M-86 codebase developed from 1979 to 1981; the dates of 15 December 1981 and 28 December 1981 can be found on the install media. Unlike later versions, the kernel is not contained in a file named CPM.SYS, instead it is loaded by a bootstrap loader from an unknown location after the boot sector and the directory entry table (needs investigation). All configuration is done by command line tools, there is no text user interface.

To create a system floppy, the floppy formatting utility NEWDISK has to be run with the paramter $S ($DS for a double sided disk). This will copy both the bootloader and the bootstrap kernel onto the disk, similarly to what the SYSGEN utility does for CP/M-80.

References

Notes

  1. The Programmers' Guide mentions "MP/M-86 version number" on page 204 for function 163, which is labeled "Return CCP/M Version Number" at page 214, indicating MP/M-86 was left there from previous version by mistake; version 2.0 is derived from a string in the media
  2. Based on DDT86 being version 1.2, just like in CP/M-86 1.1, not 1.1 like in CP/M-86 1.0