CP/M
(lyhenne nimesta
Control Program/Monitor
ja myohemmin
Control Program for Microcomputers
) on
Digital Researchin
Gary Kildallin
kehittama
kayttojarjestelma
, joka oli ”teollisuusstandardi” 1970-luvun loppupuolelta 1980-luvun lopulle.
Kildall kehitti CP/M:n vuonna 1974 kehittamallaan korkeamman tason
PL/M
-kielella
Intellec-8
-tietokoneelle.
[1]
Kaupallisena kayttojarjestelmana se oli saatavilla vuonna 1976.
[1]
CP/M oli dominoiva markkinoilla
IBM PC:n
julkaisuun saakka.
[1]
Kayttojarjestelmassa on piirteita
Digital Equipment Corporationin
PDP-10:ssa
kaytetysta
TOPS-10
-kayttojarjestelmasta.
[2]
Vuonna 1981 kayttojarjestelmaa kaytettiin yli 3 000:lla laitteistokonfiguraatiolla ja se tuotti Digital Researchille tuloja 6 miljoonaa
Yhdysvaltain dollaria
.
[3]
CP/M myi yli 600 000 kappaletta.
[4]
IBM
otti yhteytta Kildalliin, jonka CP/M oli tuohon aikanaan menestyneimpia kayttojarjestelmia.
[4]
Neuvottelut CP/M:n lisensoimiseksi tulevaan
IBM PC
-tietokoneeseen kuitenkin kariutuivat ja IBM hankki kayttojarjestelman
Microsoftilta
.
[4]
Microsoft osti
Seattle Computer Productsilta
(SCP)
QDOSin
, jonka
ohjelmointirajapinta
oli kopioitu CP/M:sta.
[5]
[6]
QDOSin yhtena kriteerina oli tukea CP/M:lle tehtyja ohjelmia.
[7]
Microsoft lisasi QDOSiin CP/M:n piirteita, jotka tekivat siita enemman CP/M:n kaltaisen ja se julkaistiin
PC-DOS
- (IBM PC:n mukana) seka
MS-DOS
-nimella.
[5]
[8]
PL/M (
Programming Language for Microcomputers
) oli Kildallin vuonna 1972 kehittama ohjelmointikieli, joka perustui IBM:n
PL/I
-kieleen.
[1]
[9]
Kildall tarjosi vuonna 1974 CP/M:aa Intelille, joka ei ollut siita kiinnostunut mutta osti PL/M:n.
[9]
8-bittinen CP/M-kayttojarjestelma koostuu kolmesta osasta:
- komentotulkki
CCP,
Console Command Processor
- levykayttojarjestelma BDOS,
Basic Disc Operating System
- syotto- ja tulostusjarjestelma BIOS,
Basic I/O System
.
[10]
BIOS on laitteistoriippuvainen ja se piti kirjoittaa kulloisellekin laitteistolle sopivaksi, loppuosa kayttojarjestelmasta on laitteistoriippumaton. BIOS sisaltaa 17 funktiota
[10]
(CP/M-versiossa 2.2), joita kaytetaan mm. nappaimiston lukuun, merkin tulostukseen naytolle ja sektorin kirjoittamiseen ja lukuun
levykkeelta
. Tietokoneen kaynnistyessa BIOS lataa kayttojarjestelman muut osat levykkeelta. BDOS sisaltaa toiminnot
tiedostojen
kasittelyyn, naytolle kirjoittamiseen ja tulostamiseen. CP/M kasittelee laitteistoa vain BIOS-kutsujen kautta, eli kun BIOS oli kirjoitettu uudelle laitteelle, kayttojarjestelma toimi siina. CP/M:n versiossa 2.2 kayttojarjestelman koko on 3 584 tavua. Sen lisaksi komentotulkki vie viela noin kaksi kilotavua. Ohjelmien kaynnistamisen lisaksi kayttojarjestelmassa on 38 funktiokutsua
[10]
lahinna tiedostojen kasittelyyn.
Muistin alkupaan 256 tavua on varattu suorittimen
keskeytysvektoreille
, muutamille muuttujille ja kaynnistettavan ohjelman komentorivipuskuriksi. Aluetta seuraa ohjelmille ja datalle tarkoitettu alue TPA (
Transient Program Area
), joka rajoittuu muistin ylapaahan ladattuihin BIOSiin ja BDOSiin (joista kaytetaan yhteisnimiketta FDOS).
[10]
CP/M:sta oli versiot useille eri
suoritinarkkitehtuureille
.
Intel 8080
-yhteensopivaa suoritinta, erityisesti
Zilog Z80:aa
kayttavissa
mikrotietokoneissa
se oli suosittu. CP/M tuki kaikkiaan 64 kB keskusmuistia. Suosittu alkuaikojen jarjestelma perustui 8080-suorittimeen, 4 kB muistiin ja yhteen 8 tuuman levykeasemaan. Myohemmissa tietokoneissa oli tyypillisesti Zilog Z80, 64 kB muistia ja kaksi 360 kB, 5¼ tuuman levykeasemaa. Kalleimmissa malleissa toinen levykeasemista oli korvattu yleensa 10 MB kovalevyasemalla. Myos 3½-tuumaisia, kapasiteetiltaan isompia
levykkeita
(”korppuja”) oli kaytossa.
CP/M oli kaytossa jopa satojen eri valmistajien tietokoneissa. Suosituimpia olivat
Altair
,
IMSAI 8080
,
Osbornen
ja
Kaypron
kannettavat seka
MSX-kotitietokoneet
. Jopa
Apple II:een
sai Z80-kortin, jolla pystyi ajamaan CP/M-ohjelmia.
CP/M:n
tiedostojarjestelmassa
levykkeella on vain yksi
hakemisto
.
[10]
Hakemiston koko on kiintea.
Hakemisto on taulukko 32 tavun tietueita. Tiedoston nimi koostuu 8+3 merkista, kuten myohemmassa
MS-DOS
-kayttojarjestelmassakin. Tiedoston nimen lisaksi hakemistotietue sisaltaa kayttajakoodin, 128-tavuisten levylohkojen maaran ja 16 tavua levylohkojen numeroita. Tilanvarausta varten puolestaan levy on jaettu 1 kB lohkoihin, ja tiedoston hakemistotietue sisaltaa tiedon siita, mitka lohkot kuuluvat tiedostoon.
Tiedoston kokoa tavuina ei tallenneta, joten tiedostoa kasittelevan ohjelman taytyy pitaa huolta siita, ettei se lue tiedoston lopun ohi. Kaytannon nyrkkisaannoksi muodostui paattaa tekstitiedostot ohjauskoodilla control-Z (
ASCII
: SUB tai 0x1A).
Tiedostojarjestelma ei pida ylla tietoa levykkeen vapaista lohkoista. Levynvaihdon yhteydessa kayttojarjestelma lukee koko hakemiston lapi ja muodostaa bittikartan, johon on merkitty tiedostoille varatut ja kaytettavissa olevat alueet.
Koska yksi hakemistotietue voi osoittaa vain 16 lohkoa, 16 kB suuremmat tiedostot vaativat usean hakemistotietueen. Tahan kaytetaan hakemistotietueen extends-kenttaa, joka kertoo, monesko tiedostolle varattu tietue on kyseessa.
Lisaksi CP/M:n hakemisto sisaltaa kayttajakentan, jonka avulla tiedostoja voi ryhmitella. Kayttojarjestelma listaa ainoastaan ne tiedostot, joiden kayttaja-kentta on saman kuin nykyinen kayttajanumero. Kayttajaa vaihdetaan komentotulkin komennolla
USER x
, jossa x on luku 0?15. Eraat valmistajat lisasivat tahan salasanakyselyn, mutta peruskayttojarjestelmassa kayttajanvaihtoon ei sisaltynyt mitaan tietoturvaa, vaan kayttajaa voi vaihtaa ilman salasanoja.
Tietokoneen kaynnistyttya se jaa komentotulkin ”A>”-kehotteeseen, josta voi kaynnistaa ohjelmia tai kasitella tiedostoja sisaanrakennettujen komentojen ja erillisten apuohjelmien avulla. Komentotulkki sisaltaa komennot:
ERA
- tiedoston tuhoaminen
DIR
- hakemistolistaus
REN
- tiedoston uudelleennimeaminen
SAVE
- muistin tallentaminen levykkeelle
TYPE
- tiedoston tulostaminen naytolle
USER
- kayttajaalueen vaihtaminen.
Muut toimet tehdaan ulkoisilla apuohjelmilla, joista ehka tarkein on
PIP
(nimi tulee
DEC
PDP-6:n
Peripheral Interchange Program
-ohjelmasta), jolla voi kopioida tiedostoja eri laitteiden valilla - yhta lailla levykkeelta levykkeelle, nappaimistolta levykkeelle kuin levykkeelta tulostimellekin:
PIP LST:=tiedosto.txt
[10]
Ohjelmat toimitettiin ensi alkuun 8 tuuman levykkeella, jolle vakiintui kaikissa tietokoneissa toimiva formaatti. Myohemmin siirryttiin kayttamaan 5¼-tuumaisia levykkeita, mutta yhteisen standardin puuttuessa yhden valmistajan koneessa formatoituja levykkeita ei yleensa voinut lukea toisten valmistajien koneilla. Poikkeuksiakin oli, esimerkiksi
Osborne 1
pystyi kasittelemaan muita formaatteja levyasematunnuksen perusteella.
Suosittuja CP/M:n ohjelmia olivat tekstinkasittelyohjelmat
Magic Wand
ja
WordStar
,
dBASE-tietokanta
, KAMAS,
Turbo Pascal
seka taulukkolaskentaohjelmat
Multiplan
ja
SuperCalc
. Ilmainen XMODEM mahdollisti modeemin kayton ja tiedostosiirrot.
Lisaksi CP/M sisaltaa perustyokalut konekieliseen ohjelmointiin (ASM, LOAD, DDT ja ED).
[10]
Digital Research kehitti 16-bittisille suorittimille omat versiot CP/M:sta:
CP/M-86
Intel 8086:lle
,
CP/M-68k
Motorola 68000:lle
ja
CP/M-8000
Zilog Z8000:lle
.