CP/M

Da Wikipedia, l'enciclopedia libera.
CP/M
Uno screenshot del CP/M
Uno screenshot del CP/M
Sviluppatore Digital Research/Gary Kildall
Release iniziale 1.0 (1974)
Release corrente 3.1 (1982)
Tipo di kernel Kernel monolitico
Piattaforme supportate Intel 8080/8085, Zilog Z80, Zilog Z8000, Intel 8086, Motorola 68000
Licenza software proprietario

Il CP/M (sigla di Control Program for Microprocessor), è un sistema operativo per micro e personal computer pubblicato dalla Digital Research, Inc. di Gary Kildall nel 1974. Sviluppato inizialmente per l'Intel 8080, girava anche sul compatibile Zilog Z80 e sull'evoluzione dell'8080, l'Intel 8085; negli anni ottanta del XX secolo fu rilasciato anche per altre CPU, come l'Intel 8086 ed il Motorola 68000. L'insieme formato dal CP/M e da computer con il Bus S-100, realizzato per primo sul MITS Altair, ha costituito di fatto il primo vero e proprio "industry standard" per l'informatica, utilizzato diffusamente nella seconda metà degli anni settanta e nei primi anni ottanta, fino all'avvento del PC IBM.

Il sistema operativo era così diffuso che per molte macchine erano offerte schede per rendere il computer compatibile con il CP/M, ad esempio la Microsoft Z80 Card per l'Apple II o la CP/M Cartridge per il popolare Commodore 64.[1] Il Commodore 128 integrava la CPU Zilog Z80 per cui era in grado nativamente di caricare ed eseguire il CP/M ed i programmi scritti per questo sistema.

Descrizione[modifica | modifica wikitesto]

L'innovazione chiave introdotta dal CP/M fu quella di rendere indipendente il sistema operativo dall'hardware del computer su cui girava mediante l'uso di livelli di astrazione dove il CP/M accedeva all'hardware usando un livello software più basso chiamato BIOS (Basic Input Output System). In questo modo gli sviluppatori poterono scrivere una sola versione del sistema operativo che poteva girare su qualsiasi macchina per la quale era disponibile l'apposito BIOS.[2]

Il livello superiore costituiva il sistema operativo vero e proprio ed era diviso a sua volta in due parti principali: il CCP (Command Control Processor), l'interfaccia a riga di comando che interpretava i comandi, ed il BDOS (Basic Disk Operating System), che si occupava delle funzionalità di sistema.[3]

CCP[modifica | modifica wikitesto]

L'interfaccia del CCP derivava dai sistemi operativi della Digital Equipment, quali l'RSTS/E per il PDP-11. Il CCP si occupava di interpretare i comandi, che in genere erano formati da una keyword (parola chiave) seguita da un elenco di parametri separati da spazi o da caratteri speciali. I nomi dei comandi, a volte, non erano molto comprensibili e indicativi dell'operazione che svolgevano: è il caso, ad esempio del comando per copiare i file che si chiamava PIP (Peripheral-Interchange-Program).[3]

BDOS[modifica | modifica wikitesto]

Il BDOS si occupava di trasformare le istruzioni ricevute dal CCP in istruzioni di un livello ancora più basso, come "apri il file XXX", che erano poi eseguite dal BIOS. Il BDOS era composto da circa 40 istruzioni base per interagire con il disco e con le periferiche seriali collegate alla macchina. I programmi potevano accedere a queste funzioni mediante una "tabella dei salti" (jump table), una porzione della memoria contenente gli indirizzi dove erano memorizzate le funzioni offerte dal BDOS.[3]

BIOS[modifica | modifica wikitesto]

Il BIOS eseguiva i comandi ricevuti dal BDOS grazie a circa 20 funzioni base, come ad esempio i comandi per il posizionamento delle testine sui dischi e la lettura di un settore del disco. Ad esempio se l'utente digitava un comando che accedeva ad un file, il CCP per primo inviava al BDOS la richiesta di accedere a quel file, che a sua volta si occupava di trasformarlo in funzionalità di sistema, quali "apri il file", inviati al BIOS. Per illustrare il flusso dei comandi, si può prendere in esame il comando PIP già menzionato. Quando nel CCP veniva inserito un comando PIP, esso veniva suddiviso in una serie di istruzioni per il BDOS, simili a "trova il file foo.txt, aprilo, crea un nuovo file col nome bar.txt...". I comandi del BDOS a loro volta venivano inviati al BIOS come stringhe di istruzioni ancora più semplici, del tipo "seleziona il disco, muovi la testina del disco a questo settore, leggi i dati in modalità raw da settore..." ecc.[3]

Grazie al BIOS era possibile effettuare il porting del CP/M verso una differente piattaforma hardware con un lavoro minimo, limitato all'adattamento dei semplici comandi contenuti nel BIOS a quella particolare macchina, senza riscrivere il resto del sistema operativo. Ciò ridusse in maniera significativa i tempi di sviluppo necessari per supportare nuove macchine, costituendo una delle ragioni principali della diffusione del CP/M.[3][2] Al giorno d'oggi questo tipo di astrazione è comune alla maggior parte dei sistemi operativi ma, al momento della nascita del CP/M, ciascun sistema era progettato specificamente per girare su una piattaforma specifica e un design multilayer era considerato non necessario.

Storia[modifica | modifica wikitesto]

L'inizio e l'apice della diffusione del CP/M[modifica | modifica wikitesto]

Il CP/M in origine era distribuito su floppy disk da 8 pollici, girava sulla CPU Intel 8080 (e sul compatibile e popolare Zilog Z80). In seguito, con il passaggio al formato da 5 pollici e ¼ il CP/M si adeguò—sfortunatamente ogni azienda realizzò un proprio formato sui dischi da 5¼ e ciò rese lo scambio dei dischi più difficile. I programmi scritti per il CP/M erano comunque completamente portabili tra diverse macchine con la stessa CPU; ciò lo rese popolare e fu scritto per il CP/M molto più software di quanto non fosse stato mai scritto su sistemi operativi strettamente dipendenti dall'hardware.

Centinaia di diverse marche di macchine permettevano di caricare il CP/M, alcuni esempi degni di nota, oltre al già menzionato Altair, l'IMSAI 8080, l'Altos, i portabili Osborne 1 e Kaypro, persino l'Apple II quando veniva installata la Microsoft SoftCard, una scheda opzionale con il processore Z80. Il sistema con il CP/M probabilmente più venduto è stato il Commodore 128, sebbene in pochi realmente hanno utilizzato le caratteristiche proprie del CP/M su tale home computer.

WordStar, uno dei primi programmi di videoscrittura ad essere utilizzato diffusamente, e il dBASE, il primo software popolare per la gestione dei database per piccoli computer, ma anche programmi grafici come il primo Autocad, furono originariamente scritti per il CP/M. I compilatori Basic più utilizzati furono inizialmente il CBASIC e successivamente l'MBASIC il primo prodotto dell'allora sconosciuta Microsoft.

Il mondo a 16 bit[modifica | modifica wikitesto]

Versioni del CP/M sono state realizzate per alcune CPU a 16 bit, ma richiedevano che i programmi applicativi fossero ricompilati per le nuove CPU, o, se erano scritti in linguaggio assembly, di essere praticamente riscritti da capo. Uno dei primi fu il CP/M-86 per l'Intel 8086, che fu seguito molto presto dal CP/M-68k per il Motorola 68000. A questo punto il CP/M a 8 bit venne rinominato CP/M-80 per evitare confusione.

Il CP/M-68k è stato utilizzato praticamente solo nella versione per Atari ST del GEM, l'interfaccia grafica dell'Atari TOS. Il CP/M-86 aveva il potenziale per diventare il sistema operativo standard per i nuovi PC IBM, ma non fu raggiunto l'accordo, per le richieste economiche che IBM non accettò. Questo spinse la società a rivolgersi alla Microsoft. Da un clone di una parte del CP/M, chiamato QDOS della Seattle Computer Products, fu creato il sistema operativo PC-DOS/MS-DOS che divenne il sistema operativo "ufficiale" del PC IBM e degli innumerevoli compatibili PC-IBM immessi sul mercato negli anni successivi. La Digital Research, Inc minacciò di far causa a IBM e Microsoft e quindi IBM consentì di vendere anche il CP/M-86 come sistema operativo per i suoi computer. Ma il prezzo cinque volte più elevato rispetto all' MS-DOS spinse la maggior parte degli acquirenti verso il prodotto Microsoft.[4]

L'MS-DOS prevale[modifica | modifica wikitesto]

Molti dei concetti di base e dei meccanismi interni delle prime versioni dell'MS-DOS erano copiati esattamente da quelli del CP/M. Strutture interne quali quelle per la gestione dei file di dati erano identiche, entrambi si riferivano alle unità a disco con una lettera (A:, B:, etc.). La principale innovazione del MS-DOS fu il file system moderno basato su FAT unico per tutti e non diversi tipi come in CP/M. Un certo grado di similitudine fu senz'altro voluto, soprattutto per semplificare il porting del software scritto su CP/M, come il WordStar e il dBase. Tuttavia, le ultime innovazioni introdotte nelle versioni più mature del CP/M — quale ad esempio il supporto per aree utente separate sullo stesso disco — non furono mai portate nell'MS-DOS.

L'interfaccia utente dell'MS-DOS, tuttavia, è un po' più user-friendly. Si confronti, ad esempio, il comando di copia semplice del CP/M, PIP:

PIP <file di destinazione>=<file di origine>

con la sintassi più intuitiva del comando del DOS COPY:

COPY <fine di origine> <file di destinazione>

Esso fu usato anche nel CP/M come comando esterno, come lo fu il comando XCOPY dell'MS-DOS.

Il CP/M perse posizioni sul mercato man mano che il mondo del microcomputer migrava verso le piattaforme basate sul PC-IBM compatibili già venduti con MS-DOS, senza mai riguadagnare in seguito la popolarità di cui aveva goduto inizialmente. Le ultime versioni del CP/M-86 avevano fatto passi avanti significativi in termini di prestazioni e di facilità di utilizzo, tanto da essere considerato da alcuni, nel corso degli anni 1980 enormemente migliore dell'MS-DOS stesso, dato che era multiutente e multitasking come gli UNIX. Per riguadagnare nel marketing, il CP/M-86 venne sostituito con il DR-DOS dalla DR.

Note[modifica | modifica wikitesto]

  1. ^ CP/M-Cartridge for the C64, Ruud's Commodore Site. URL consultato il 12/05/2015.
  2. ^ a b Storia del CP/M, Storiainformatica.it. URL consultato il 12/05/2015.
  3. ^ a b c d e The architecture of CP/M, CP/M Howto (tramite WebArchive). URL consultato il 12/05/2015.
  4. ^ I cinque (non)eventi che cambiarono l'IT, Punto-Informatico.it, 23 marzo 2009. URL consultato il 23 marzo 2009.

Bibliografia[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
Controllo di autorità VIAF: (EN181931038 · LCCN: (ENn92062232 · GND: (DE4010668-8