Talk:CP/M
{{WikiProject banner shell}}
to this page and add the quality rating to that template instead of this project banner. See WP:PIQA for details.![]() | Computing B‑class Top‑importance | |||||||||
|
PDP
Hmmm, the name for the copy command on the old PDP-11 (or possibly PDP-8, I'm not sure which) was "pip", n'est-ce pas? What is the connection there?
Do you know what OS on the PDP? I think PIP in CP/M stands for Peripheral Interchange Program, but I am not sure, will look up at some point (I think I set a set of Digital Research CP/M docs somewhere). --drj
There were several OSs on the PDP. I myself used RSTS/E on a PDP-11/70, and it used PIP. --Alan Millar (nice reference --drj)
CP/M was essentially identical to the OS on the PDP-15, so far as I could see. I used a PDP-15 a little in 1972-1973. When I encountered CP/M on a Z-80 machine about 1983, I was amazed that everything was the same. There were DDT, PIP, and other utilities whose names I forget. It had the IOByte, named the same as on the -15 to control IO operations. The utility names and operations were all just the same, as far as I could remember. Of course, the assembly code must have been different, but otherwise it was the same. DEC must have had a family of similar OSs, for the OS on the PDP-8 was similar, but simplified, and less obviously similar to CP/M. I never used the PDP-11, so I can't really compare its OS, but from what I saw later, the -11 OS was quite a bit different. I have always thought that Kildare's project must have been to port (or re-implement) the PDP-15 OS, even though I have never read anything to that effect, because of the remarkable similarities in function and utility names. --[[ |Tom Passin]]
The "pip" command (indeed standing for "Peripheral Interchange Program") was the swiss army knife of CP/M -- it could do copys, moves, and several other file operations. It was designed to know all about the various peripherals (hence the name) and how to copy, etc. to each of them. -- NickelKnowledge
- Calling the "pip" syntax "obscure" *grrrr* It does not copy, it assigns, which explains the Pascal-like assignment syntax. The result of such an assignment actually can be a copy but it's a slightly different point of view -- Volker
"pip" exists/existed also on Vax VMS and, presumably, still on OpenVMS. Wilsonsamm (talk) 21:26, 26 January 2010 (UTC)
Title
Why not simply CP/M? We don't have to my knowledge any convension that says put operating system to all of articles of operating system. -- Taku 23:43 Apr 4, 2003 (UTC)
History
PRESERVED HISTORY OF CP/M (pre-merge and rename):
(cur) (last) . . 13:11, 26 Sep 2001 . . 194.129.101.xxx (Revision as of 13:11, 26 Sep 2001)
CP/M stands for Control Program Monitor and was an
early operating system for Intel 8080 and Zilog Z80 based computers.
It was normally distributed in its raw form on 8 inch floppy disks.
CP/M could be implemented on most new 8080 and z80 based systems by writing an interface layer, called the BIOS, for your particular computer then using the largely generic rest of the operating system largely unchanged. It was thus fairly portable amongst different machines with the same CPU; this made it popular, and much more software was written for CP/M than for operating systems that only ran on one brand of hardware.
Hundreds of different brands of machines ran CP/M.
WordStar, one of the first widely used word processors, was written for CP/M.
Later a version of CP/M for the Intel 8086 (CP/M-86) was written; it was an alternative to DOS for IBM PC's. DOS proved to be much more popular.
In many ways CP/M was a predecessor of DOS, many internal mechanisms of early versions of DOS were clearly inspired by those of CP/M.
The user interface of DOS however was a bit more friendly. Compare for example CP/M's copy command.
PIP <destination filename> <source filename>
to DOS's more intuitive
COPY <source filename> <destination filename>
(cur) (last) . . 13:16, 26 Sep 2001 . . 203.25.148.xxx (unfortunately, slashes in titles cause Wikipedia to create a sub-page. moved to CPM operating system. -- Bignose)
(page blanked - cut and paste move)
(cur) (last) . . m 15:43, 25 Feb 2002 . . Conversion script (Automated conversion)
REDIRECT CPM operating system
See also : CP
(cur) (last) . . 00:13, 8 Jun 2002 . . Uriyan
REDIRECT CP/M operating system
END PRESERVED HISTORY
Accuracy
Lots of edits just now - I used CP/M from 1981 till around 1993, mostly on an Osborne 1 and Ibex 7150 - so I missed the 8 inch drives period, mostly. C: hard drive is an MS DOS thing - my Ibex calls the hard drive A: and the floppy B:, and any CP/M machine had to call the drive from which CCP was reloaded the A: drive. User area 0 was not generally accessible to other user areas in stock CP/M, but ZCPR patched this to make it work the way the article used to describe it. Executable files were called .COM in 8-bit CP/M - the .EXE extension was only for MS DOS. (16-bit CP/M called binaries .CMD). It's a little unfair to call a 30-year old operating system "primitive" by today's standards, especially as you could have found CP/M contemparies which were even harder to use (such as no random access files). I've also done some reorganizing - the drawback with editing online is that after a few people have touched the article the flow gets murky. --Wtshymanski 05:50, 8 January 2006 (UTC)
Backronym?
I'm 99.9% sure that "Control Program for Microcomputers" is a backronym, and "Control Program/Monitor" is the original name. It's that missing 0.1% that's preventing me from doing the edit myself... -- DocSigma 08:42, 18 January 2006 (UTC)
- Control Program for Microprocessors was more common. Kildall wrote it for Intel. Intel weren't exactly shipping thousands of their prototypes.
- I have changed the order of the two names; you are correct, the name was changed. I used to have documentation that would prove this. --Moby 10:28, 27 February 2006 (UTC)
Acronym
Isn't the correct acronym for CP/M actually "Control Processor for Microcomputers"? Maybe I just made this up (it's been a long time!) or maybe it was printed wrong in the manuals that I had for my 1984 Kaypro II. Any thoughts on this? --KevinWatts 06:11, 2 May 2006 (UTC)
- I am quite sure that Processor was never commonly used. Maybe your manual had a typo. --Moby 11:06, 2 May 2006 (UTC)
- It said 'Control Program for Microprocessors' in early manuals. 'Microcomputer' wasn't even heard of back then.
- Ah, did a little more research, and I'm in agreement now! Thanks! KevinWatts 05:18, 6 May 2006 (UTC)
Correct
Should'nt 64000 bytes of memory say 65536 bytes of memory? johan_h 23:15, 19 February 2006 (UTC)
RAM?
Why are we using "random access memory" in here rather than referring to it as RAM? Seems particularly odd seing as we aren't using the long version of BIOS and others...
Graphics
I am not sure if this (from the "History" section) is correct: "There were no operating system support for graphics (images) with 8-bit versions of CP/M. While graphics-capable S100 systems existed from the commercialization of the S100 bus, CP/M did not provide any standardized graphics support until the release of CP/M 3.0 with GEM graphics extensions. Owing to the small memory available, graphics was never a common feature associated with 8-bit CP/M operating systems.". On the (8-bit) Amstrad PCW8256, there was something called GSX (Graphics Systems eXtension?), a library providing graphical drawing functions. I thought this was part of CP/M, but I am not sure, and did not find anything on the net about it. Ahy1 12:45, 23 April 2006 (UTC)
- You are quite right. Graphical Environment Manager has a chapter on GSX. Though, I'm not sure about the actualy timeframe. See also http://www.seasip.demon.co.uk/Cpm/gsx.html. --Frodet 15:16, 23 April 2006 (UTC)
Is this right?
Many of the basic concepts and internal mechanisms of early versions of MS-DOS were patterned after those of CP/M. Internals like file-handling data structures were identical, and both referred to disk drives with a letter (A:, B:, etc.). The main innovation was MS-DOS's FAT file system. This intentional similarity made it easier to port popular CP/M software like WordStar and dBase.
My understanding is that MS-DOS was a CP/M x86 port purchased by Microsoft. That is, it was not 'like' CP/M, it was CP/M.
This was, of course, long ago and I may not be remembering this correctly.
- It would seem so. MS-DOS was the work of Tim Paterson. It intentionally retained compatibility with CP/M - right up to the end. See the IVT for example. But Paterson made a cross-assembly into the 8086. CP/M was an 8-bit OS written specifically for the Intel 8080. The Z80 was compatible with the 8080 as the engineers and founders of Zilog had built the 8080 for Intel.
- I doubt you'd call Linux a Unix port, or Wine a Windows port. AFAICS, it would only be considered a port if it used actual CP/M code. --StuartBrady (Talk) 17:33, 12 July 2006 (UTC)
- This is semantics. That's all.
- CP/M-86 was Digital Research's own version of CP/M for the 16-bit register width Intel 8088 / 8086 CPUs. It was made available (at a hefty premium) for the IBM PC. MS-DOS was a somewhat reworked (at Microsoft) version of QDOS which was CP/M-80 ported to the new 16-bit processors as a way to test a new CPU board for the S-100 bus developed at Seattle Computer Products. It was written by Tim Patterson, then an employee there. Patterson was later hired to work at Microsoft and supposedly did some work on that version of QDOS.
- One 't' in 'Paterson'. Otherwise spot on. But he didn't work on QDOS - he worked (with 'MZ') on MS-DOS.
- So this editor's impression of what CP/M-86 was is quite off the mark both as to the name as well as to the internals. 67.86.175.54 05:03, 28 September 2006 (UTC)
- CP/M-86 was Digital Research's own version of CP/M for the 16-bit register width Intel 8088 / 8086 CPUs. It was made available (at a hefty premium) for the IBM PC. MS-DOS was a somewhat reworked (at Microsoft) version of QDOS which was CP/M-80 ported to the new 16-bit processors as a way to test a new CPU board for the S-100 bus developed at Seattle Computer Products. It was written by Tim Patterson, then an employee there. Patterson was later hired to work at Microsoft and supposedly did some work on that version of QDOS.
- I'm sorry - you're an editor here and you're relying on impressions? Then please don't edit anymore. Thank you.
Z80 and 8080
The connection between Z80 and 8080 support is not clear, in my opinion.
ZCPR
I greatly enhanced the section on the Z-System (ZCPR). I used the comp.os.cpm FAQ and the listed article from the Computer Journal issue #54. That article was taken from this url, and had this copyright notice at the bottom:
[This article was originally published in issue 54 of The Computer Journal, P.O. Box 12, South Plainfield, NJ 07080-0012 and is reproduced with the permission of the author and the publisher. Further reproduction for non-commercial purposes is authorized. This copyright notice must be retained. (c) Copyright 1991, 1992 Socrates Press and respective authors]
This article is also available from this url, presumably the home of ZNode 51 (which would have been a BBS dedicated to ZCPR and CP/M back in the day) and run by Helmut Jungkunz. This version does *not* have the copyright notices placed as on the other.
I did not use any verbatum text, but rather my own words based on the original. Could someone verify copyright status of this material? Thanks... DavidDouthitt (Talk) 03:57, 31 July 2007 (UTC)
- The Z-System is now GPLed, if that's what you're trying to find out. Frotz (talk) 21:56, 10 January 2008 (UTC)
I failed to see the connection between ZCPR and CP/M...could someone throw in a sentence or two as to why it's related? —Preceding unsigned comment added by 72.65.96.197 (talk) 16:10, 3 July 2008 (UTC)
Open-source Release unmentioned...
I notice that nobody has mentioned the fact that CP/M was released as Open Source software under a BSD-like licence in October 2001...
- Was it? The FAQ says the source has been released, but alterations and commercial redistrubtution is denied. // Liftarn (talk)
Descendants
I don't think it's particularly meaningful to describe OS/2 or Windows as a "descendant" of CP/M - about the only thing in common is referring to disk drives by a letter. The products were made by different companies for different processors - if CP/M is an "ancestor" to Windows, it's in such a dilute sense that it has no practical meaning. Why aren't Linux and MacOS X also considered "descendants" of CP/M? I'd like to think an "ancestor" has some clear influence on its descendants, and I bet drive letters are the only thing these have in common. --Wtshymanski 16:31, 21 October 2007 (UTC)
- I think we can safely say that the first versions of MSDOS(86-DOS) was originally a 16bit clone of CP/M. I am not sure if that makes it a descendant, but it makes it a closer relative to CP/M than Linux and MacOS X. Still I don't think it should be included in the article unless someone shows sources stating it is a descendant. Ahy1 19:06, 21 October 2007 (UTC)
- DR-DOS was simply another name for CP/M and it was capable to run Windows. OS/2 was a descendant to DOS and Windows NT simply branched from OS/2 project.--Certh 19:49, 21 October 2007 (UTC)
- Linux and MacOS X are counted as part of the Unix family. Frotz 20:25, 21 October 2007 (UTC)
- And UNIX is about as much a descendant of CP/M as is Windows Vista, right? I don't think it's at all useful or descriptive to say that the various PC operating systems are descendants of CP/M. --Wtshymanski 23:57, 21 October 2007 (UTC)
- We weren't saying anything about Unix of any sort being a descendant of CP/M. Just DOS, OS/2, and Windows. Frotz 02:24, 22 October 2007 (UTC)
- But you haven't explained why UNIX *isn't* a descendant of CP/M, either. Just as no-one has explained what CP/M has to do with Windows, for example. The proverbial bright 12-year-old Wikipedia user is going to have a terrible time trying to find any CP/Mish features in Windows, *aside from referring to drives by letters* which I submit is hardly unique. If you look hard enough at a whale skeleton you can find the back legs...point out the remains of CP/M in Windows and I'll be convinced. Just what do you *mean* when you say Windows, OS/2 etc. are "descendants" of CP/M ? It's a vacuous statement that just pads out the article with no information content. --Wtshymanski 17:12, 22 October 2007 (UTC)
- And UNIX is about as much a descendant of CP/M as is Windows Vista, right? I don't think it's at all useful or descriptive to say that the various PC operating systems are descendants of CP/M. --Wtshymanski 23:57, 21 October 2007 (UTC)
- Let me explain the lineage more clearly. DOS began as a clone of CP/M. DOS 1.x in particular is exceedingly CP/M-like. The only significant differences are that DOS replaced PIP with COPY and crude device files. By DOS 2.x, proper directories were added -- a feature previously found in assorted mainframe and minicomputer operating systems. From then on, DOS acquired no fundamental changes of the magnitude of directories. At the same time, Digital Research kept developing CP/M-86, adding the same tweaks that Microsoft added to DOS. Digital Research decided to take Microsoft head-on and so renamed CP/M-86 to DR-DOS. Window started as a layer on top of regular DOS. OS/2 started as an overhaul of DOS. That makes OS/2 an indirect descendant of CP/M. Windows NT branched off from this and eventually became the current Windows. Now the, for the whale legs. 1) The executable file formats for Windows are exactly the same as they were from DOS. There's a trap at the beginning that checks what operating system is being used. 2) The command line is the same as in DOS. 3) NTFS still has features left over from FAT. Frotz 18:27, 22 October 2007 (UTC)
- Do you know that the first name for Windows NT was OS/2 NT? Do you know that OS/2 started as uder the name MS-DOS 3.0 which was planned to support multitasking? The "8.3" file name format comes from CP/M and still preserved in FAT32 and NTFS directory. Windoows 95 was able to run on DR-DOS kernel (although it was prohibited by license).--Certh 19:59, 22 October 2007 (UTC)
- We're speaking of CP/M here - every new version of MS DOS since 1.X was supposed to be multitasking, according to hype at the time. In the book "Advanced MS DOS" Microsoft Press 1986, ISBN 0-914845-77-2, page 6, Ray Duncan points out many differences even between MS DOS 1.0 and CP/M including "...an improved disk-directory structure ...superior disk allocation and management method...an expanded set of operating-system services including hardware independant function calls to set or read the date...". I don't think it helps the modern student to think of CP/M 80 as an ancestor to anything other than perhaps the first release of MS DOS which had some calling conventions that made mechanical translations of CP/M 80 source code easier do MS DOS 1.X programs even run under later versions? Under Windows? ). But the charactersitic mode of invoking functions in MS DOS is via Int 21h, which has no comparable equivalent in CP/M. CP/M did not support any interrupts. CP/M had a much cruder file system than even 1.0. True, Duncan does say "ancestor" on page 6, too, but I think it's misleading to speak of CP/M 80 as an ancestor of things like Windows on MS DOS, free-standing Windows, OS/2, and the like - it's just too much of a stretch. Can you still load the CL register with the function number and call 0005H ? If this doesn't work, then the last traces of CP/M 80 are gone - aside from drive letters, of course. --Wtshymanski 00:37, 23 October 2007 (UTC)
- The first MS DOS was simply 86-QDOS - made by Tim Paterson - renamed. Tim Paterson made QDOS (Quick and Dirty Operating System) to handle the 16-bit 8086 CPU. CP/M at the time only supported 8-bit processors. Digital Research took too long in developing CP/M-86 and Tim Paterson who was trying to sell 8086 CPU boards with Seattle Computers had no OS to sell them with. To quote Paterson "I just took his [Gary Kildall's] printed documentation [for CP/M] and did something that did the same thing." (Kildall accused Paterson of "ripping off" CP/M). To be more precise, the goal of QDOS was that it would be easy to adapt programs that ran on CP/M on the 8080 so they could be run on the 8086. So it takes CP/M functions and it responds in the same way. But it's not simply a clone, it also greatly improved things in file and disk management. So I think MS DOS fits the description of descendant very well. —Preceding unsigned comment added by 85.145.53.27 (talk) 22:39, 27 October 2007 (UTC)
- In the RSX-11 article Windows NT descrobed as to be descendant of RSX-11. I think it is much more meaningful to count it a descendant of CP/M than RSX.--Certh 16:02, 12 November 2007 (UTC)
- I don't think so. It's well-known that Cutler had a good deal to do with the development of RSX-11, VMS, and NT. It's not surprising then that all three show similarities. Frotz 22:33, 13 November 2007 (UTC)
File names and extensions
This is nitpicking, but the current article says "File names consisted of up to 8 characters, a period, then up to three characters as a file name extension." If I recall correctly, the name was eight characters (padded by spaces, not NUL terminated), and each file also had a three character extension (to the name). There was a convention that commands allowed you to write the name and extension together, separated by a period, but the period wasn't part of the name. In a way this was more like the Mac's hidden type and creator codes. Nowadays the period has literally become part of the name, and (alas) the information about the kind of information in a file has become conflated with what it's called. RPTB1 (talk) 15:18, 10 January 2008 (UTC)
- Well, the directory on disk did not store the "." character in the file name but aside from that, there was practically no way to access a file without using the ., if the file had an extension. Andy Johnson-Laird in the "Programmer's CP/M Handbook" confirms that the file name stored on disk was 8+3 characters and that unused characters are filled with spaces, not NUL. I don't have a live cP/M system handy to test this but as I recall but if you wanted to run (or copy or move or delete) WS.COM, you could type WS or WS.COM but not WSCOM - so in that sense the period was a part of the file name even if it was not stored in the disk directory. --Wtshymanski (talk) 18:00, 10 January 2008 (UTC)
- Yes, that's how I recall it, and how I see it. Dbfirs 20:48, 2 March 2010 (UTC)
Z-80 Co-processor expansion boards
There should be some discussion of the various Z-80 Co-processor boards that were available for various popular home computer systems. I never used one and I've never used CP/M but it seems an important detail to include these into the history.
I particularly recall Z-80 boards for the Apple II series, which was likely to be extremely weird to use since the normal Apple II disks used GCR encoding, which was utterly incompatible with other home computer systems that used MFM recording. This may be another good example of how unusual disk formats hobbled the CP/M market.
They weren't a coprocessor working in conjunction with the main system CPU but instead tended to operate as a complete replacement to the main processor. I have not been able to determine if any of these Z-80 boards were truly capable of co-processing, which is running a CP/M program while the main CPU is running, and potentially passing data and commands back and forth between the Z-80 and the main system processor.
DMahalko (talk) 02:36, 22 October 2008 (UTC)
Software
Does a comprehensive list of CP/M software titles exist? 2fort5r (talk) 19:03, 22 January 2009 (UTC)
FAT vs Extents
MS DOS file allocation table is a linked list of disk "clusters" (bigger than a sector), stored in 12 (later, 16) bits) in a dedicated region of the disk. CP/M used "extents" which were a listing of allocation blocks in order, repeated in the directory as many times as needed until the entire file was mapped. These are conceptually quite different. I read somewhere that FAT was derived from the file-system used by Microsoft's free-standing disk BASICs - the kind where the BASIC language system *is* the operating system. These apparently used the FAT system, although I expect they weren't necessarily an MS DOS compatible disk format. In any case, saying that FAT is like CP/M's extents is a bit like saying a snowmobile is like a motorcycle. Some similarities, sure, but things are very different where the rubber meets the road. --Wtshymanski (talk) 15:13, 2 March 2010 (UTC)
- Perhaps the difference between a scooter and a motorbike? Is it just the linking that distinguishes FATs from extents? (I'm not an expert in either bikes or filesystems.) Dbfirs 20:39, 2 March 2010 (UTC)
- The File Allocation Table article confirms that FAT comes from freestanding disk BASIC. My analogy was meant to indicate a difference in mechanics, not in scale. If you were to do a hex dump of a CP/M directory it would look like and be formatted quite differently from an MS DOS directory and FAT. It's solving the same problem in two very different ways. In any case, FATs didn't exist in CP/M 80 and so could not have been "borrowed" from CP/M for MS DOS. --Wtshymanski (talk) 22:25, 2 March 2010 (UTC)
- But they're both just lists. I would guess that the FAT linking idea came from the usual BASIC line linking. I've done a hex dump of a CP/M file table long ago. I can't remember now just what it looked like, but it was certainly simpler. I was more familiar with DFS & ADFS. The only patents that Microsoft have for FAT are for their way of implementing long filenames. I would be surprised if they invented the linked-list file system, but they certainly made it popular. Dbfirs 23:53, 2 March 2010 (UTC)
- The File Allocation Table article confirms that FAT comes from freestanding disk BASIC. My analogy was meant to indicate a difference in mechanics, not in scale. If you were to do a hex dump of a CP/M directory it would look like and be formatted quite differently from an MS DOS directory and FAT. It's solving the same problem in two very different ways. In any case, FATs didn't exist in CP/M 80 and so could not have been "borrowed" from CP/M for MS DOS. --Wtshymanski (talk) 22:25, 2 March 2010 (UTC)
Transient Program Area
Im missing any mention of the concept of Transient Program Area size. The architectural differences between CP/M machines meant that some machines (even fully stocked with RAM) could only achieve a small TPA such as 48K, while others could have much larger TPA's almost up to the maximum of 64K. As CP/M machines often contrasted in little else, a smart, memory saving architecture was often a big distinguishing and thus selling point. Mahjongg (talk) 10:57, 27 May 2010 (UTC)
Obscure reference to person or company Echelon
In January 1987, Richard Conn decided to stop developing ZCPR, and Echelon asked Jay Sage (who already had a privately enhanced ZCPR 3.1) to continue work on ZCPR. Thus, ZCPR 3.3 was developed and released. ZCPR33 no longer supported the 8080 series of microprocessors, and added the most features of any upgrade in the ZCPR line.
Nowhere else in the article is "Echelon" mentioned. Who is "Echelon" ?