the entire OS would work. This significantly reduced the development time needed to support new machines, and was one of the main reasons for CP/M's widespread use. Today this sort of abstraction is common to most OSs (a hardware abstraction layer), but at the time of CP/M's birth, OSs were typically intended to run on only one machine platform, and multilayer designs were considered unnecessary. Console Command Processor The Console Command Processor, or CCP, accepted input from the keyboard and conveyed results to the terminal. CP/M itself would work with either a printing terminal or a video terminal. All CP/M commands had to be typed in on the command line. The console would most often display the A> prompt, to indicate the current default disk drive. When used with a video terminal, this would usually be followed by a blinking cursor supplied by the terminal. The CCP would await input from the user. A CCP internal command, of the form drive letter followed by a colon, could be used to select the default drive. For example, typing B: and pressing enter at the command prompt would change the default drive to B, and the command prompt would then become B> to indicate this change. CP/M's command-line interface was patterned after the operating systems from Digital Equipment, such as RT-11 for the PDP-11 and OS/8 for the PDP-8. Commands took the form of a keyword followed by a list of parameters separated by spaces or special characters. Similar to a Unix shell builtin, if an internal command was recognized, it was carried out by the CCP itself. Otherwise it would attempt to find an executable file on the currently logged disk drive and (in later versions) user area, load it, and pass it any additional parameters from the command line. These were referred to as "transient" programs. On completion, CP/M would reload the part of the CCP that had been overwritten by application programs — this allowed transient programs a larger memory space. The commands themselves could sometimes be obscure. For instance, the command to duplicate files was named PIP (Peripheral-Interchange-Program), the name of the old DEC utility used for that purpose. The format of parameters given to a program was not standardized, so that there was no single option character that differentiated options from file names. Different programs could and did use different characters. The CP/M Console Command Processor includes