# CP/M

CP/M (Control Program/Monitor o Control Program for Microcomputers: programa de control per a microordinadors) és un sistema operatiu de disc creat originalment per Gary Kildall de Digital Research, Inc. per a microordinadors basats en els microprocessadors Intel 8080/85. Va estar inicialment limitat per a ús monousuari/monotasca en processadors de 8 bits i amb poc més de 64 KiB de memòria RAM, tot i que en versions posteriors es van afegir capacitats d'ús multiusuari/multitasca i van ser convertides per a UCPs de 16 bits.
La combinació de CP/M i ordinadors personals amb el bus S-100 iniciada amb l'Altair 8800 del MITS, va ser un dels primers estàndards industrials per a microordinadors, i era àmpliament utilitzada des de la dècada del 1970 fins a la meitat dels anys 1980. Reduint dràsticament la quantitat de programació necessària per instal·lar un aplicatiu en un ordinador d'un nou fabricant, el CP/M va incrementar tant el mercat de programari com de maquinari.

## Model de maquinari

Un sistema CP/M mínim de 8 bits sol contenir els següents components:
* Un terminal d'ordinador amb el conjunt de caràcters ASCII
* Un microprocessador Intel 8080 (i posteriorment, 8085 o Z80)
* Almenys 16 KiB de RAM
* Un medi per a iniciar la càrrega del primer sector d'un disquet en la memòria
* Almenys una unitat de disc
L'únic maquinari suportat pel CP/M, en la versió distribuïda per la Digital Research, era l'Intel 8080 Development System. Fabricants de sistemes CP/M compatibles, adaptaven parts del sistema operatiu per a les seves pròpies combinacions de memòria instal·lada, unitats de disc i consola d'entrada. El CP/M també podia ser executat en sistemes basats en el processador Zilog Z80, ja que el Z80 era capaç d'executar codi 8080. Encara que el CP/M no fos capaç d'executar cap de les instruccions específiques del Z80, moltes aplicacions van ser programades per a màquines CP/M basades en el Z80.
En moltes màquines, el «bootstrap» era un programa mínim emmagatzemat en ROM; en d'altres, aquest programa havia de ser inserit directament en la memòria a través d'un panell frontal cada cop que carregava el sistema operatiu.
El CP/M usava un conjunt ASCII de 7 bits (128 caràcters). Els altres 128 caràcters possibles per un conjunt de 8 bits, no eren estandarditzats. Per exemple, un model Kaypro els utilitzava per a emmagatzemar caràcters de l'alfabet grec, mentre que les màquines Osborne, utilitzaven el vuitè bit per a indicar un caràcter subratllat. Els sistemes CP/M internacionals freqüentment usaven la norma ISO 646 per a adaptar conjunts de caràcters, substituint determinats caràcters ASCII per caràcters dels idiomes locals, en comptes d'afegir-los a més del límit de 7 bits.

## Components del sistema operatiu

En les versions de 8 bits, el nucli del CP/M estava dividit en tres components: el processador d'ordres de la consola (o CCP), el sistema operatiu de disc bàsic (o BDOS) i el sistema bàsic d'entrada/sortida (o BIOS). El CCP i BDOS eren els mateixos en totes les instal·lacions d'una revisió comuna del CP/M, però la part del BIOS sempre s'adaptava a un maquinari específic. Afegir memòria a un ordinador, per exemple, significava que el sistema CP/M s'havia de reinstal·lar. Un cop instal·lat, el sistema operatiu s'emmagatzemava en espais reservats al començament de qualsevol disc que s'utilitzaria per inicialitzar el sistema. En la inicialització, el carregador d'arrencada carregava el sistema operatiu a partir del disquet en la disquetera A:.
Pels estàndards moderns, el CP/M era primitiu a causa de les restriccions extremes a la grandària dels programes. Amb la versió 1.0 no es podia detectar un canvi de disquet. Si un usuari canviava discs sense que manualment rellegís el directori de fitxers, el sistema escriuria sobre el disc nou utilitzant la informació del directori del disc antic, destruint les dades emmagatzemades al nou disquet. A partir de les versions 1.1 o 1.2, aquest problema va ser reduït: si algú canviava discs sense llegir el directori del disc nou i intentava escriure-hi, el sistema operatiu indicaria l'avís d'error, evitant sobreescriure, però exigint una rearrencada (que no durava més que uns pocs segons, però que implicava la pèrdua de totes les dades en memòria).
La majoria de la complexitat del CP/M s'aïllava en el BDOS, i en més petita extensió, en el CCP. Significava que en portar el limitat nombre d'ordres simples del BIOS a una plataforma de maquinari en particular, el sistema operatiu sencer treballaria. Això significativament reduïa el temps de desenvolupament de programes necessari per donar suport a màquines noves, i era una de les raons principals per l'ús estès de CP/M. Avui, aquesta classe d'abstracció és comuna a la majoria dels sistemes operatius, però al temps del naixement del CP/M, els S.O. estaven pensats típicament per executar a només una plataforma de maquinari, i els sistemes multiplataforma es consideraven innecessaris.

### Processador d'ordres de la consola

El Processador d'Ordres de la Consola (Console Command Processor o CCP en anglès), accepta l'entrada des del teclat i transmet els resultats al terminal. El CP/M pot funcionar amb un terminal d'impressió o de vídeo. Totes les ordres del CP/M són escrites a l'intèrpret d'ordres. La consola mostra sovint en pantalla la lletra A>, per indicar la unitat de disc per defecte actual. Quan s'utilitza amb un terminal de vídeo, es mostra acompanyat d'un cursor parpellejant subministrat pel terminal que indica que el CCP espera les entrades de l'usuari.
Una interna del CCP, la lletra de la unitat seguida de dos punts, permet seleccionar la unitat per defecte. Per exemple, si s'escriu B: i es prem la tecla Enter en la línia d'ordres, es canviaria la unitat per defecte a la B, i el mateix intèrpret mostraria aquest canvi.
La línia d'ordres del CP/M va ser estandarditzada pels sistemes operatius de Digital Equipment, com el RT-11 pel PDP-11 i l'OS/8 pel PDP-8. Les ordres van prendre la forma de paraules clau seguides d'una llista de paràmetres separats per espais o caràcters especials. Si el CCP reconeix una ordre interna, la duu a terme. En cas contrari, tracta de trobar el fitxer executable al disc o a l'espai d'usuari (en versions posteriors), per carregar-lo i passar-li tots els paràmetres addicionals de la línia d'ordres. Aquests programes foren anomenats programes transitoris (o "transient" en anglès). En acabar, el CP/M carrega de nou la part del CCP que havia estat sobreescrita pels programes transitoris, cosa que permet una major memòria per aquests programes.
Les ordres eren de vegades confuses. Per exemple, la instrucció per duplicar fitxers era PIP (Programa d'Intercanvi entre Perifèrics o en anglès Peripheral-Interchange-Program), el nom de l'antiga utilitat DEC utilitzada per aquest propòsit. El format dels paràmetres del programa no es va estandarditzar, de manera que no hi havia una única "opció de caràcter" que diferenciàs les opcions del nom del fitxer.

#### Ordres internes

Les ordres internes són integrades al processador d'ordres (CCP) i es carreguen a la memòria RAM durant la inicialització del sistema.
| Ordre | Descripció |
| DIR | Llista els noms de fitxers a la unitat de disc actual. |
| unitat: | Canvia la unitat de disc (A: per defecte). |
| ERA fitxer | Esborra els fitxers especificats. |
| TYPE fitxer | Mostra el contingut d'un fitxer a la unitat de disc. |
| fitxer | Executa un fitxer .COM. |
| SAVE n fitxer.com | Guarda el contingut de la memòria en un fitxer. |
| USER n | Canvia l'espai d'usuari (0-15). |
| REN nounom.nnn=nomvell.nnn | Canvia el nom del fitxer especificat. |

#### Ordres externes

Les ordres externes (o transitòries) són emmagatzemades en fitxers a les unitats de disc (o disc dur) per a la utilització posterior.
| Ordre | Descripció |
| ASM | Fa la càrrega de l'assemblador del CP/M i munta el programa especificat des del disc. |
| DDT | Fa la càrrega del depurador del CP/M i comença l'execució. |
| DUMP | Bolca el contingut d'un fitxer en hexadecimal. |
| ED | Carrega i executa l'editor de text del CP/M. |
| LOAD | Carrega el fitxer en format de codi màquina Intel HEX i produeix un fitxer executable que pot ser carregat en la memòria. Aquest programa es converteix en un nou ordre sota el CCP. |
| MOVCPM | Regenera el sistema CP/M per a una mida de memòria RAM específica. |
| PIP | Fa la càrrega del programa Peripheral Interchange Program per operacions de transferència entre perifèrics i discs. |
| STAT | Mostra l'espai d'emmagatzematge restant (en bytes) del disc actual, ofereix informació estadística sobre determinats fitxers, i mostra o altera l'assignació de dispositius. |
| SUBMIT | Processa un fitxer d'ordres de tractament per lots. |
| SYSGEN | Crea un disc d'arrencada CP/M. |

### Sistema operatiu de disc

El sistema operatiu bàsic de disc (Basic Disk Operating System o BDOS en anglès) proporciona accés a operacions com obrir un fitxer, la sortida de la consola o la impressió. Els programes carreguen els registres del processador amb un codi de funció per a l'operació i les adreces dels paràmetres o buffers de memòria, i demanen una ubicació fixa en la memòria. Atès que l'adreça és la mateixa independentment de la quantitat de memòria en el sistema, els programes s'executen de la mateixa manera per a qualsevol tipus o configuració de maquinari.

### Sistema bàsic d'entrada/sortida

El sistema bàsic d'entrada/sortida (Basic Input Output System o BIOS en anglès), proporciona accés a les funcions de nivell més baix requerides pel sistema operatiu. S'inclouen la lectura o l'escriptura de caràcters individuals a la terminal del sistema i llegir o escriure un sector de dades del disc. El BDOS controla part de la memòria intermèdia de les dades des del disc, però anteriorment al CP/M 3.0, se suposa una mida de sector de disc fixat en 128 Bytes, com el que s'utilitza en els disquets de 8 polzades de densitat individual. Atès que la majoria de formats de disc de 5,25 polzades utilitzen grans sectors, el bloqueig i el desbloqueig com també la gestió d'una àrea de memòria d'un disc ho realitzava un model de codi específic a la BIOS.
La personalització era necessària perquè les opcions del maquinari no es van veure limitades per la compatibilitat amb qualsevol estàndard famós. Per exemple, alguns fabricants utilitzaven el terminal d'ordinador independentment, mentre que altres versions incorporaven un sistema integrat de visualització de vídeo. Els ports sèrie per impressores i mòdems poden utilitzar diferents tipus de xips UART, i les adreces dels ports no eren fixos. Algunes màquines utilitzen memòria mapejada d'E/S en lloc de l'espai de direccions d'E/S del 8080. Totes aquestes variacions en el maquinari s'oculten en altres mòduls del sistema mitjançant l'ús de la BIOS, que s'utilitza els punts d'entrada estàndard per als serveis necessaris per executar el CP/M com un caràcter d'E/S o l'accés a un bloc de disc. Com que el suport a la comunicació serial a un mòdem era molt rudimentari en la BIOS o pot haver estat absent del tot, era una pràctica comuna per a programes CP/M que utilitzen mòdems amb una superposició d'usuari instal·lada que conté tot el codi necessari per accedir a un determinat port sèrie de la màquina.

### Sistema de fitxers

Els noms dels fitxers constaven de fins a vuit caràcters, seguits d'un punt i una extensió de nom de fitxer de fins a tres caràcters (format «8.3» de noms de fitxer). L'extensió generalment identificava el tipus de fitxer. Per exemple, .COM indicava un fitxer binari executable, i .TXT indicava un fitxer que contenia text ASCII.
Cada unitat de disc s'identificava per una lletra d'unitat. Normalment, les dues unitats de disc s'identificaven com les unitats A: i B:. Per fer referència a un fitxer en una unitat específica, la lletra de la unitat s'anteposava al nom de fitxer, separada per dos punts, per exemple, A:FITXER.TXT. Sense la lletra d'unitat com a prefix, el valor predeterminat era utilitzar els fitxers de la unitat actual (per exemple, un programa que s'executa a la unitat B, accedirà als fitxers a la unitat B excepte que els noms de fitxer vagin precedits d'una lletra d'unitat).
La mida del fitxer s'especificava com el nombre de registres de 128 bytes (directament corresponents als sectors del disc en unitats de 8 polzades) ocupats per un fitxer al disc. No hi havia una manera estàndard d'especificar les mides exactes de fitxers en bytes. El sistema operatiu mantenia la mida actualitzada d'un fitxer al bloc de control de fitxers (FCB). Atès que moltes aplicacions (com ara editors de text) tracten els fitxers com a seqüències de caràcters, més que com a seqüències de registres, per convenció, els fitxers de text acabaven amb un caràcter control-Z (ASCII SUB, hexadecimal 1A). Determinar el final d'un fitxer de text, per tant, consistia a examinar l'últim registre del fitxer per buscar el control-Z de terminació. Això també volia dir que la inserció d'un caràcter control-Z enmig d'un fitxer, generalment tenia l'efecte de truncar el contingut del text del fitxer.
No hi havia suport per a la modificació de la data dels fitxers (marques horàries), encara que algunes versions posteriors de CP/M van afegir aquesta característica com una extensió.
El CP/M 2.2 no tenia subdirectoris en l'estructura de fitxers, però hi havia 16 «espais d'usuari» per organitzar els fitxers en un disc. El concepte d'espai d'usuari va fer de la versió monousuari de CP/M més compatible amb sistemes MP/M multiusuaris. UN pedaç comú per al CP/M i les seves versions derivades era fer que un espai fos accessible per a l'usuari independentment de l'espai d'usuari configurat. Una nova ordre, «USER», permetia a l'usuari canviar aquesta àrea a un valor entre 0 i 15. USER 0 era el valor predeterminat. Si es canviava a un altre usuari, per exemple USER 1, el contingut desat al disc per aquest usuari només estaria disponible per a l'usuari 1; USER 2 no seria capaç de visualitzar-lo o accedir-hi. Com que CP/M era un sistema operatiu monousuari, la instrucció USER tenia poca seguretat; res impedia a qualsevol usuari d'accedir a qualsevol dels altres 16 espais d'usuari. La funció d'espai d'usuari va ser possiblement de poca utilitat en disquets, però fou més útil per organitzar els fitxers a les màquines equipades amb grans discs durs.

#### Alguns tipus de fitxers CP/M

| Extensió | Significat |
| ASM | Codi font d'assemblador |
| PRN | Fitxer d'impressió |
| HEX | Codi màquina |
| BAS | Codi font BASIC |
| INT | Codi intermedi |
| COM | Fitxer executable |
| PLI | Codi font PL/I |
| REL | Mòdul reubicable |
| TEX | Fitxer font TeX |
| BAK | Còpia de seguretat (ED) |
| SYM | Fitxer de símbols SID |
| $$$ | Fitxer temporal |

### Memòria lliure per a programes

La memòria lliure per a programes (Transient program area o TPA en anglès) era la memòria disponible pels programes del CP/M per llegir i escriure entre l'adreça de memòria 0100 hexadecimal i les adreces de memòria més baixes del BDOS conegudes com a transient program area (TPA). Tot i que tots els processadors Z80 i 8080 podien utilitzar 64 kilobytes de memòria, la quantitat disponible per als programes podia variar en funció del disseny de l'equip en particular. Alguns equips utilitzen una gran part de l'espai d'adreces per altres tasques com ara la memòria ROM de la BIOS o de la pantalla de vídeo. Així, alguns sistemes tenien més memòria disponible per a TPA que d'altres. L'intercanvi de memòria (o Bank switching en anglès) era una tècnica comuna que possibilitava que els sistemes tenguessin un gran TPA utilitzant memòries de la ROM i de vídeo, si era necessari. El CP/M 3.0 també permetia a parts del BDOS estar al banc d'intercanvi de memòria.

## Versions de CP/M

| Data | Versió |
| 1973 | CP/M 1.0 |
| - | CP/M 1.4 |
| 1979 | CP/M 2.0 |
| - | CP/M 2.2 |
| 1982 | CP/M 3.0 (8 bits) |
| - | CP/M 3.1 (16 bits) |

## Història
### L'inici i l'auge de CP/M
#### El nom

En el 1974, el CP/M era un projecte personal de Gary Kildall, sota el nom de Control Program/Monitor. Durant la conversió del CP/M per a producte comercial, els documents de registre de marca registrada arxivats el novembre de 1977, ho declaraven sota el nom de Control Program for Microcomputers. El nom il·lustra l'esquema de la nomenclatura predominant en l'època, com en els PL/M (Programming Language for Microcomputers) per a l'Intel i PL/P (Programming Language for Prime) per a Prime Computer, desenvolupats per Kildall, que suggereixen el PL/I i el sistema operatiu CP/CMS de l'IBM, els quals en Kildall els va utilitzar quan va treballar en la Naval Postgraduate School, i que també, com el TOPS-10, posseïen semblances clares amb la interfície d'usuari i el sistema de fitxers del CP/M.
Aquest canvi de nom de CP/M formava part d'un esforç més ampli d'en Kildall i de la seva esposa i sòcia, Dorothy McEwen, per a convertir el projecte personal d'en Kildall, de CP/M i PL/M, en una empresa comercial. Els Kildall astutament pretenien establir la marca Digital Research i les seves línies de productes com a sinònim de «microordinador» en la ment dels consumidors, de la mateixa forma que posteriorment, IBM i Microsoft van obtenir èxit en transformar l'expressió «ordinador personal» en sinònim dels productes oferts per ambdues empreses. Més tard, la raó social Intergalactic Digital Research, Inc. va ser alterada per a Digital Research, Inc.

#### Portabilitat

El CP/M va ser descrit com un «bus de programari», permetent que múltiples programes interaccionessin amb diversos maquinaris de forma estandarditzada. Els programes escrits per al CP/M eren típicament portables entre màquines diferents, generalment exigint només l'especificació de les seqüències d'escapament per al control de la pantalla i impressora. Aquesta portabilitat va fer que el CP/M fos molt popular, i molt més programari va ser programat per al CP/M que per a sistemes operatius que podien ser executats en una única marca de maquinari. Una restricció a la portabilitat, és que determinats programes usaven el conjunt d'instruccions del processador Z80, els quals no podien ser executats en processadors 8080 o 8085.
Moltes marques diferents de màquines van utilitzar el CP/M, amb alguns exemples notables com l'Altair, l'IMSAI 8080, l'Osborne 1, els portables Kaypro i els microordinadors MSX. Fins i tot, l'Apple II podria funcionar amb el CP/M quan s'instal·la una targeta Z80 extra. El sistema CP/M estàndard compatible va ajudar a realitzar el rècord de vendes de tots els temps amb probablement el Commodore 128 com a maquinari, tot i que poques persones de fet van utilitzar completament les habilitats del CP/M. Al Regne Unit, el CP/M era també disponible per a BBC Micro, quan estava equipat amb un coprocessador Z80. A més, va funcionar amb el famós sistema processador de paraules Amstrad PCW i era disponible per a la sèrie Amstrad CPC i models posteriors del ZX Spectrum.

#### Aplicacions

WordStar, un dels primers processadors de textos d'àmplia utilització, i dBase, un programa de base de dades pioner i famós per a microordinadors, van ser programats originalment per a CP/M. Un dels primers programes outliners, «KAMAS» (Knowledge and Mind Amplification System), també va ser programat per a CP/M, encara que més tard va ser reescrit per a MS-DOS. Turbo Pascal, versió anterior del Delphi de Borland, i Multiplan, versió anterior del Microsoft Excel, també van sorgir en el CP/M, molt abans que les versions per a MS-DOS estiguessin disponibles. L'AutoCAD, programa de CAD d'Autodesk, també es va estrenar en CP/M. El gran nombre de compiladors i intèrprets per a llenguatges de programació populars en l'època (com BASIC i FORTRAN), estaven disponibles, i entre ells, diversos dels primers productes de Microsoft. Diversos jocs d'aventura basats en text van ser portats, com per exemple el Colossal Cave Adventure, i altres exemples pioners de ficció interactiva. Lifeboat Associates va començar a recollir i distribuir programari «lliure», programat per usuaris. Un dels primers va ser XMODEM, que permetia la comunicació via mòdem i línia telefònica.

#### Gràfics

Tot i que els sistemes S100 amb capacitat gràfica van existir des de la comercialització del bus S-100, CP/M no ha proporcionat cap mena de suport estàndard de gràfics fins a la publicació de CP/M 3.0 amb GSX (Graphic System eXtension o «Extensió Gràfica del Sistema»). A causa de la petita memòria disponible, els gràfics mai van ser una característica comuna associada amb el sistema operatiu CP/M de 8 bits. La majoria dels sistemes només va poder mostrar gràfics rudimentaris d'art ASCII i diagrames en mode text o mitjançant un conjunt de caràcters personalitzat.

#### Formats de discs

Mentre que el format de disc flexible de densitat simple de 8 polzades (anomenat «format de distribució») es va estandarditzar, diversos formats de 5¼ polzades s'utilitzaven en funció de les característiques dels sistemes i en certa manera, de les opcions dels dissenyadors. El CP/M va proporcionar opcions de suport per a controlar la mida de les zones reservades i directoris en el disc, i l'assignació entre sectors lògics (com els utilitzats pels programes de CP/M) i sectors físics assignats al disc. Hi havia diverses maneres de personalitzar aquests paràmetres per a cada sistema, però una vegada que s'havien creat, no hi havia manera normalitzada a un sistema per carregar els paràmetres d'un disc formatat en un altre sistema. Cap fabricant va prevaler en l'era d'ús del 5¼ polzades al CP/M, i els formats de disc no eren transportables entre els fabricants de maquinari. Un fabricant de programari havia de preparar una versió independent del programa per a cada marca de maquinari en el qual havia de funcionar. En el cas d'alguns fabricants (Kaypro n'és un exemple), no hi havia ni tan sols l'estandardització entre els diferents models de l'empresa. Per aquest motiu, els programes de transcripció de formats de disc, que van permetre a una màquina llegir molts formats diferents, es van fer populars i van reduir la confusió. D'altra banda, existien programes com el Kermit que permetia la transferència de dades i programes d'una màquina a l'altra utilitzant els ports sèrie que la majoria de les màquines de CP/M tenien. El mercat fragmentat de CP/M, que va exigir que els distribuïdors la disposició de formats múltiples de discs o la inversió en equips de duplicació en diversos formats, en comparació amb els formats de discs més estandarditzats de l'IBM PC, va ser un factor que va contribuir a la ràpida obsolescència del CP/M després de 1981.

### Decadència i fi
#### El món dels 16 bits

Posteriorment també es produïren versions de CP/M per a algunes CPUs de 16 bits, encara les aplicacions s'havien de recompilar per a les noves CPUs o, si havien estat programades en llenguatge d'assemblador, havien de ser en gran part reescrites des de zero.
Una de les primeres va ser el CP/M-86 per l'Intel 8086, que aviat va ser seguida per CP/M-68k per al Motorola 68000. En aquest punt, el CP/M original de 8 bits es va fer conegut pel retrònim CP/M-80 per evitar confusió. Hi va haver també una portabilitat al Zilog Z8000, anomenat CP/M-8000.
CP/M-68k va ser utilitzat inicialment en l'ordinador Atari ST, però Atari va decidir utilitzar un nou DOS anomenat GEMDOS. També es va utilitzar en el Sord M68 i ordinadors M68MX. S'esperava que el CP/M-86 fos el sistema operatiu estàndard dels nous IBM PC, però DRI i IBM van ser incapaços de negociar els termes de desenvolupament i condicions de llicència. Així, IBM va tractar amb Microsoft que li va vendre un sistema operatiu basat en un «clon» del CP/M, el 86-DOS. Encara que el CP/M-86 es va convertir en una bona opció per als IBM PC, després que DRI amenacés amb accions legals, mai no va superar el sistema de Microsoft.
Quan Digital Equipment Corporation va alliberar el Rainbow 100 per competir amb l'IBM, ho feu amb CP/M-80 amb un xip Z80 i amb CP/M-86 o MS-DOS amb un microprocessador 8088. Les CPUs Z80 i 8088 funcionaven concurrentment. Un dels avantatges del Rainbow és que podria seguir funcionant amb programari CP/M de 8 bits mentre els usuaris es traslladaven al món de 16 bits de l'MS-DOS.

#### MS-DOS ocupa el poder

La primera versió de l'MS-DOS tenia certa semblança amb el CP/M-86, però ràpidament es van divergir després de la primera versió. Molts dels conceptes bàsics i mecanismes interns de les primeres versions de l'MS-DOS s'assemblaven al CP/M. Les estructures de dades de manipulació de fitxers eren idèntics, i tots dos es referien a les unitats de disc amb una lletra (A:, B:, etc.). Aquesta semblança va facilitar la portabilitat del programari més exitós del CP/M com el WordStar i el dBase. Tanmateix, el concepte CP/M d'espais separats per als fitxers d'usuari en el mateix disc mai va ser portat a l'MS-DOS. La principal innovació de l'MS-DOS era el seu sistema de fitxers, FAT. Com que MS-DOS tenia accés a més memòria (pocs IBM PC es van vendre amb menys de 64 KB de memòria, mentre que CP/M podia arribar a funcionar, com a màxim, en 16 KB), més ordres anaven apareixent per a la seva línia d'ordres, fent MS-DOS una mica més ràpid i més fàcil d'usar en màquines basades en disc.
El CP/M va perdre ràpidament la quota de mercat mentre aquest es traslladava a la plataforma PC, i mai no va recuperar la seva antiga popularitat. Byte Magazine, a l'època una de les revistes líders de la indústria editorial per a microordinadors, va deixar de cobrir productes CP/M pocs anys després del llançament de l'IBM PC. Per exemple, el 1983 encara hi havia uns quants anuncis de targetes S100 i articles sobre programari per al CP/M, però el 1987 aquests ja no es trobaven a la revista.
Versions posteriors de CP/M-86 van fer passos significatius en el rendiment i facilitat d'ús i es van fer compatibles amb MS-DOS. Per reflectir aquesta compatibilitat es va canviar el nom, i CP/M-86 es va convertir en DOS Plus, que al seu torn es va convertir en DR-DOS.

#### Adéu al CP/M

Tot i les previsions optimistes, el CP/M no va «estar aquí per quedar-se». Fins i tot, després de l'anunci que IBM faria de l'MS-DOS el seu sistema operatiu estàndard per l'IBM-PC, se suposava que la base instal·lada d'usuaris de CP/M, estimada en 1,5 milions de persones a principis del 1983, encara era massa gran per no ser tinguda en compte. Això no obstant, la gran majoria dels sistemes CP/M en aquest moment estava composta per màquines de 8 bits, que cada dia es tornaven més i més obsoletes. La decisió d'IBM de donar prioritat a l'MS-DOS podria no haver estat decisiva per al destí final de CP/M, però sens dubte l'aparició de la indústria dels IBM PC compatibles, que va copiar el maquinari d'IBM i va adoptar massivament el sistema operatiu de Microsoft, va ser un cop decisiu (fins i tot per la mateixa IBM, que anys més tard deixaria el camp dels ordinadors personals).
La tria de l'MS-DOS (o PC-DOS) es va basar en dues raons senzilles: cost i portabilitat. En teoria, CP/M-86 podria haver-se convertit en el sistema operatiu estàndard per l'IBM PC, encara que va ser llançat mesos després de l'MS-DOS. No obstant això, en la compra d'un ordinador personal amb una unitat de disc, IBM va oferir l'IBM PC-DOS 1.0 per 39,95 US$ i per a tots els interessats, CP/M-86 per 240 US$. Per la diferència de preu, es van vendre més unitats de l'IBM PC-DOS que CP/M-86. Addicionalment, els desenvolupadors van trobar més fàcil fer versions d'aplicacions CP/M per a MS-DOS que per a CP/M-86. A més, les màquines de 16 bits tenien memòries més grans i CPUs més ràpides, i l'MS-DOS ho aprofitava de manera molt més eficient. Aviat hi va haver «aplicacions assassines» que varen funcionar només a l'MS-DOS i que mai foren portades per a CP/M-86. Una va ser el Lotus 1-2-3, que significà per l'IBM PC el que havia estat VisiCalc per l'Apple II.

### L'herència del CP/M

Encara que CP/M fou abandonat com a sistema operatiu per a ús professional, alguns grups d'entusiastes van continuar desenvolupant versions millorades del producte, com el ZCPR (Z80 Command Processor Replacement), que va tenir la primera versió alliberada el 2 de febrer de 1982 i l'última (3.3 o Z33) el gener de 1987. Aquesta versió final, això no obstant, no va oferir més suport per microprocessadors de 8 bits compatibles amb el 8080. Un producte similar per al Commodore C128, el ZCCP, estava encara en desenvolupament a l'inici dels anys 1990.
Avui, les versions posteriors directes (o no tan directes) del sistema operatiu de DRI encara es poden trobar per ús comercial, el més important dels quals és el DR-DOS. Un parent proper és el sistema operatiu IBM 4690, l'origen del qual es remunta al FlexOS de Digital Research.

## Referències

* ↑ «Inconvenients dels sistemes existents». [Consulta: 16 novembre 2008].
* ↑ Núria Almiron. «De Vannevar Bush a la WWW» (en castellà). Arxivat de l'original el 2016-03-03. [Consulta: 16 novembre 2008].
* ↑ Jordi Contreras. «Sistemes operatius». Arxivat de l'original el 2009-03-01. [Consulta: 16 novembre 2008].
* ↑ Roman Czyborra. «ISO-646: First attempts to internationalize the 7bit code» (en anglès), 1998. [Consulta: 18 novembre 2008].
* 1 2 3 4 5 6 7 8 9 Oscar Vermeulen. «CP/M Internals» (en anglès), 2003. Arxivat de l'original el 2010-01-11. [Consulta: 19 novembre 2008].
* ↑ «File Names» (en anglès). [Consulta: 12 febrer 2010].
* 1 2 «CP/M Builtin Commands» (en anglès). discordia.org.uk. [Consulta: 28 gener 2009].
* ↑ «CP/M 2.2 disc formats» (en anglès). Arxivat de l'original el 2012-01-29. [Consulta: 12 febrer 2010].
* ↑ «Understanding disk images for the CP/M emulation» (en anglès). Arxivat de l'original el 2010-09-29. [Consulta: 12 febrer 2010]. «Under CP/M 3 and MP/M 2 you can execute the programs from other user areas with i:program, because this OS's honor the SYS attribute for files in user area 0 appropriate. CP/M 2 doesn't support this, which makes it uncomfortable to use user areas under this OS.»
* ↑ CP/M Operating System (anglès)
* ↑ «The origin of CP/M's name» (en anglès). Arxivat de l'original el 2007-10-11. [Consulta: 16 gener 2009].
* ↑ Herbert R. Johnson. «Early CP/M, PL/M and DRI history» (en anglès), 08-03-2012. [Consulta: 10 març 2012].
* ↑ «CP/M and Digital Research Inc. (DRI) History» (en anglès). [Consulta: 16 gener 2009]. «CP/M became the «software bus» for the new Intel-based microcomputers of the 1970's and well into the 1980's.»
* 1 2 3 4 5 Thom Hogan. «From backyard to big time; the history of CP-M» (en anglès). Creative Computing, vol. 9, no. 11, novembre 1983. Arxivat de l'original el 2012-05-24. [Consulta: 16 gener 2009].
* ↑ «Commodore and CP/M» (en anglès). Arxivat de l'original el 2007-03-08. [Consulta: 14 maig 2009].
* ↑ «Confira 10 sistemas operacionais que ficaram no passado da computação» (en portuguès). ComputerWorld, 27-03-2009. Arxivat de l'original el 2009-04-13. [Consulta: 27 gener 2010].
* ↑ Peter Dassow. «Graphics with CP/M (and the Commodore 128)» (en anglès). [Consulta: 6 febrer 2010].
* ↑ Andy Johnson-Laird. The Programmer's CP/M Handbook, capítol 3. Osborne-McGraw Hill, Berkeley, California (1983). ISBN 0-88134-103-7
* ↑ «CP/M Kermit» (en anglès). Columbia University. [Consulta: 6 febrer 2010].
* ↑ «CP/M-8000» (en anglès).
* 1 2 Herb Johnson. «Why was CP/M Important?» (en anglès), 2009. [Consulta: 8 febrer 2010].
* ↑ «The DEC Rainbow 100» (en anglès). [Consulta: 8 febrer 2010].
* ↑ «CP/M alive, well, and growing in the VAD channel» (en anglès). InfoWorld, 17-06-1985. [Consulta: 9 febrer 2010]. «Despite value-added dealers' efforts, Morrow executives don't believe that CP/M machines will stick around very long. "It is going to trend down, and there is nothing that can be done to stop it", says Berghorn. "Probably the memory limitation is the deficiency".(…)"That is probably the biggest killer… You can't [use] Lotus 1-2-3 with CP/M. That probably dictade it demise."»
* ↑ Nancy Groth. «Kaypro is Retreating On CP/M» (en anglès). InfoWorld, 10-02-1986. [Consulta: 9 febrer 2010]. «The popularity of CP/M-based machines dwindled as less viable software applications were written and faster machines were released, according to analysts. "The market for CP/M machines is dead", said Evan Moltz, director of micro services at International Data Corp. (IDC), in Framingham, Massachusetts.»
* ↑ R. Chapman, Merrill. In search of stupidity: over 20 years of high-tech marketing disasters (en anglès). Apress, 2006, p. 31. ISBN 1590597214 [Consulta: 10 febrer 2010]. «CP/M-86 upon its release cost $240.00, a price close to that paid by puchasers of the 8-bit CP/M»
* ↑ Leven Antov. «Short History of MS-DOS» (en anglès), 1996. [Consulta: 10 febrer 2010].
* ↑ «123 file extension» (en anglès). [Consulta: 10 febrer 2010]. «Lotus 1-2-3 was IBM PC's first killer application; its huge popularity in mid-1980s contributed significantly to the success of IBM PC in the corporate environment.»
* ↑ Ted Silveira. «The Wonderful World of ZCPR3» (en anglès). Morrow Owner's Review. [Consulta: 16 febrer 2010].
* ↑ Craig Taylor. «ZCCP Documentation, Version 1.0» (en anglès). C=Hacking, 07-03-1993. [Consulta: 16 febrer 2010].
* ↑ «DR-DOS 7.03» (en anglès). DRDOS. Arxivat de l'original el 2008-12-21. [Consulta: 2 març 2010].
* ↑ Melissa Calvo i Jim Forbes. «IBM to Use a DRI Operating System» (en anglès). InfoWorld, 10-02-1986. [Consulta: 18 febrer 2010].

## Bibliografia

* Zaks, Rodnay. The CP/M Handbook With MP/M. SYBEX Inc, 1980. ISBN 0-89588-048-2.
* Conn, Richard. ZCPR3, The Manual. ISBN 0-918432-59-6.
* comp.os.cpm PMF (també present en aquesta web relacionada amb Digital Research)
* Z-System Corner: Desè aniversari del ZCPR - part del The Computer Journal, qüestió 54

## Vegeu també

* Llista de màquines que funcionen amb CP/M
* MP/M
* Bank switching

## Enllaços externs

* Pàgina oficial de CP/M a Digital Research (anglès)
* Codis font en assembly de totes les versions de CP/M (anglès)
* CP/M collection is back online with an Open Source licence(anglès)
* Pàgina amb diversos emuladors per a CP/M(anglès)
* YAZE-AG - Yet Another Z80 Emulator by AG (V 2.20.1) (emulador Z-80 amb CP/M)(anglès)