CP/M

Wikipediasta
Siirry navigaatioon Siirry hakuun
CP/M
Hakemistolistausten tuloksia ja komentokehote
Hakemistolistausten tuloksia ja komentokehote
Kehittäjä Digital Research
Ohjelmointikielet PL/M
Toiminnallinen tila Ei tuettu
Julkaistu 1976
Viimeisin vakaa versio 3.1 (1983)
Tuetut kielet englanti
Ytimen tyyppi Monoliittinen
Suoritintuki Intel 8080, Zilog Z80
Käyttöliittymä komentorivi
Lähdekoodimalli Aluksi suljettu, nykyisin avoin
Lisenssi Aluksi kaupallinen, nykyisin BSD-tyyppinen
Aiheesta muualla
Verkkosivusto

CP/M (lyhenne nimestä Control Program/Monitor ja myöhemmin Control Program for Microcomputers) on Digital Researchin Gary Kildallin kehittämä käyttöjärjestelmä, joka oli ”teollisuusstandardi” 1970-luvun loppupuolelta 1980-luvun lopulle.

Kehitys[muokkaa | muokkaa wikitekstiä]

Kildall kehitti CP/M:n vuonna 1974 kehittämällään korkeamman tason PL/M-kielellä Intellec-8-tietokoneelle.[1] Kaupallisena käyttöjärjestelmänä se oli saatavilla vuonna 1976.[1] CP/M oli dominoiva markkinoilla IBM PC:n julkaisuun saakka.[1]

Käyttöjärjestelmässä on piirteitä Digital Equipment Corporationin PDP-10:ssä käytetystä TOPS-10 -käyttöjärjestelmästä.[2]

Vuonna 1981 käyttöjärjestelmää käytettiin 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 yhteyttä Kildalliin, jonka CP/M oli tuohon aikanaan menestyneimpiä käyttöjärjestelmiä.[4] Neuvottelut CP/M:n lisensoimiseksi tulevaan IBM PC -tietokoneeseen kuitenkin kariutuivat ja IBM hankki käyttöjärjestelmän Microsoftilta.[4]

Microsoft osti Seattle Computer Productsilta (SCP) QDOSin, jonka ohjelmointirajapinta oli kopioitu CP/M:stä.[5][6] QDOSin yhtenä kriteerinä oli tukea CP/M:lle tehtyjä ohjelmia.[7] Microsoft lisäsi QDOSiin CP/M:n piirteitä, jotka tekivät siitä enemmän CP/M:n kaltaisen ja se julkaistiin PC-DOS- (IBM PC:n mukana) sekä MS-DOS-nimellä.[5][8]

PL/M[muokkaa | muokkaa wikitekstiä]

PL/M (Programming Language for Microcomputers) oli Kildallin vuonna 1972 kehittämä ohjelmointikieli, joka perustui IBM:n PL/I-kieleen.[1][9] Kildall tarjosi vuonna 1974 CP/M:ää Intelille, joka ei ollut siitä kiinnostunut mutta osti PL/M:n.[9]

Rakenne[muokkaa | muokkaa wikitekstiä]

8-bittinen CP/M-käyttöjärjestelmä koostuu kolmesta osasta:

  • komentotulkki CCP, Console Command Processor
  • levykäyttöjärjestelmä BDOS, Basic Disc Operating System
  • syöttö- ja tulostusjärjestelmä BIOS, Basic I/O System.[10]

BIOS on laitteistoriippuvainen ja se piti kirjoittaa kulloisellekin laitteistolle sopivaksi, loppuosa käyttöjärjestelmästä on laitteistoriippumaton. BIOS sisältää 17 funktiota[10] (CP/M-versiossa 2.2), joita käytetään mm. näppäimistön lukuun, merkin tulostukseen näytölle ja sektorin kirjoittamiseen ja lukuun levykkeeltä. Tietokoneen käynnistyessä BIOS lataa käyttöjärjestelmän muut osat levykkeeltä. BDOS sisältää toiminnot tiedostojen käsittelyyn, näytölle kirjoittamiseen ja tulostamiseen. CP/M käsittelee laitteistoa vain BIOS-kutsujen kautta, eli kun BIOS oli kirjoitettu uudelle laitteelle, käyttöjärjestelmä toimi siinä. CP/M:n versiossa 2.2 käyttöjärjestelmän koko on 3 584 tavua. Sen lisäksi komentotulkki vie vielä noin kaksi kilotavua. Ohjelmien käynnistämisen lisäksi käyttöjärjestelmässä on 38 funktiokutsua[10] lähinnä tiedostojen käsittelyyn.

Muistin alkupään 256 tavua on varattu suorittimen keskeytysvektoreille, muutamille muuttujille ja käynnistettävän ohjelman komentorivipuskuriksi. Aluetta seuraa ohjelmille ja datalle tarkoitettu alue TPA (Transient Program Area), joka rajoittuu muistin yläpäähän ladattuihin BIOSiin ja BDOSiin (joista käytetään yhteisnimikettä FDOS).[10]

Laitteistot[muokkaa | muokkaa wikitekstiä]

CP/M:stä oli versiot useille eri suoritinarkkitehtuureille. Intel 8080 -yhteensopivaa suoritinta, erityisesti Zilog Z80:aa käyttävissä mikrotietokoneissa se oli suosittu. CP/M tuki kaikkiaan 64 kB keskusmuistia. Suosittu alkuaikojen järjestelmä perustui 8080-suorittimeen, 4 kB muistiin ja yhteen 8 tuuman levykeasemaan. Myöhemmissä tietokoneissa oli tyypillisesti Zilog Z80, 64 kB muistia ja kaksi 360 kB, 5¼ tuuman levykeasemaa. Kalleimmissa malleissa toinen levykeasemista oli korvattu yleensä 10 MB kovalevyasemalla. Myös 3½-tuumaisia, kapasiteetiltaan isompia levykkeitä (”korppuja”) oli käytössä.

CP/M oli käytössä jopa satojen eri valmistajien tietokoneissa. Suosituimpia olivat Altair, IMSAI 8080, Osbornen ja Kaypron kannettavat sekä MSX-kotitietokoneet. Jopa Apple II:een sai Z80-kortin, jolla pystyi ajamaan CP/M-ohjelmia.

Tiedostojärjestelmä[muokkaa | muokkaa wikitekstiä]

CP/M:n tiedostojärjestelmässä levykkeellä on vain yksi hakemisto.[10] Hakemiston koko on kiinteä.

Hakemisto on taulukko 32 tavun tietueita. Tiedoston nimi koostuu 8+3 merkistä, kuten myöhemmässä MS-DOS-käyttöjärjestelmässäkin. Tiedoston nimen lisäksi hakemistotietue sisältää käyttäjäkoodin, 128-tavuisten levylohkojen määrän ja 16 tavua levylohkojen numeroita. Tilanvarausta varten puolestaan levy on jaettu 1 kB lohkoihin, ja tiedoston hakemistotietue sisältää tiedon siitä, mitkä lohkot kuuluvat tiedostoon.

Tiedoston kokoa tavuina ei tallenneta, joten tiedostoa käsittelevän ohjelman täytyy pitää huolta siitä, ettei se lue tiedoston lopun ohi. Käytännön nyrkkisäännöksi muodostui päättää tekstitiedostot ohjauskoodilla control-Z (ASCII: SUB tai 0x1A).

Tiedostojärjestelmä ei pidä yllä tietoa levykkeen vapaista lohkoista. Levynvaihdon yhteydessä käyttöjärjestelmä lukee koko hakemiston läpi ja muodostaa bittikartan, johon on merkitty tiedostoille varatut ja käytettävissä olevat alueet.

Koska yksi hakemistotietue voi osoittaa vain 16 lohkoa, 16  kB suuremmat tiedostot vaativat usean hakemistotietueen. Tähän käytetään hakemistotietueen extends-kenttää, joka kertoo, monesko tiedostolle varattu tietue on kyseessä.

Lisäksi CP/M:n hakemisto sisältää käyttäjäkentän, jonka avulla tiedostoja voi ryhmitellä. Käyttöjärjestelmä listaa ainoastaan ne tiedostot, joiden käyttäjä-kenttä on saman kuin nykyinen käyttäjänumero. Käyttäjää vaihdetaan komentotulkin komennolla USER x, jossa x on luku 0–15. Eräät valmistajat lisäsivät tähän salasanakyselyn, mutta peruskäyttöjärjestelmässä käyttäjänvaihtoon ei sisältynyt mitään tietoturvaa, vaan käyttäjää voi vaihtaa ilman salasanoja.

Komentotulkki (CCP) ja apuohjelmat[muokkaa | muokkaa wikitekstiä]

Tietokoneen käynnistyttyä se jää komentotulkin ”A>”-kehotteeseen, josta voi käynnistää ohjelmia tai käsitellä tiedostoja sisäänrakennettujen komentojen ja erillisten apuohjelmien avulla. Komentotulkki sisältää komennot:

  • ERA - tiedoston tuhoaminen
  • DIR - hakemistolistaus
  • REN - tiedoston uudelleennimeäminen
  • SAVE - muistin tallentaminen levykkeelle
  • TYPE - tiedoston tulostaminen näytölle
  • USER - käyttäjäalueen vaihtaminen.

Muut toimet tehdään ulkoisilla apuohjelmilla, joista ehkä tärkein on PIP (nimi tulee DEC PDP-6:n Peripheral Interchange Program -ohjelmasta), jolla voi kopioida tiedostoja eri laitteiden välillä - yhtä lailla levykkeeltä levykkeelle, näppäimistöltä levykkeelle kuin levykkeeltä tulostimellekin: PIP LST:=tiedosto.txt[10]

Ohjelmistot[muokkaa | muokkaa wikitekstiä]

Ohjelmat toimitettiin ensi alkuun 8 tuuman levykkeellä, jolle vakiintui kaikissa tietokoneissa toimiva formaatti. Myöhemmin siirryttiin käyttämään 5¼-tuumaisia levykkeitä, mutta yhteisen standardin puuttuessa yhden valmistajan koneessa formatoituja levykkeitä ei yleensä voinut lukea toisten valmistajien koneilla. Poikkeuksiakin oli, esimerkiksi Osborne 1 pystyi käsittelemään muita formaatteja levyasematunnuksen perusteella.

Suosittuja CP/M:n ohjelmia olivat tekstinkäsittelyohjelmat Magic Wand ja WordStar, dBASE-tietokanta, KAMAS, Turbo Pascal sekä taulukkolaskentaohjelmat Multiplan ja SuperCalc. Ilmainen XMODEM mahdollisti modeemin käytön ja tiedostosiirrot.

Lisäksi CP/M sisältää perustyökalut konekieliseen ohjelmointiin (ASM, LOAD, DDT ja ED).[10]

16-bittiset versiot[muokkaa | muokkaa wikitekstiä]

Digital Research kehitti 16-bittisille suorittimille omat versiot CP/M:stä: CP/M-86 Intel 8086:lle, CP/M-68k Motorola 68000:lle ja CP/M-8000 Zilog Z8000:lle.

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. a b c d David Laws: Early Digital Research CP/M Source Code computerhistory.org. 1.10.2014. Viitattu 24.12.2019. (englanniksi)
  2. Herbert R. Johnson: CP/M and Digital Research Inc. (DRI) History retrotechnology.com. 30.7.2014. Viitattu 20.6.2019. (englanniksi)
  3. Gary Kildall and Collegial Entrepreneurship – Internet Archive
  4. a b c Mary Bellis: How MS-DOS Put Microsoft on the Map thoughtco.com. 13.2.2019. Viitattu 20.6.2019. (englanniksi)
  5. a b Jimmy Maher: The complete history of the IBM PC, part two: The DOS empire strikes 31.7.2017. Ars Technica. Viitattu 23.6.2019. (englanniksi)
  6. Andrew Orlowski: MS-DOS paternity suit settled 30.7.2007. The Register. Viitattu 23.6.2019. (englanniksi)
  7. Tony Smith: Microsoft's MS-DOS is 30 today 27.7.2011. The Register. Viitattu 23.6.2019. (englanniksi)
  8. Tony Smith: Microsoft's MS-DOS is 30 today (sivu 2) 27.7.2011. The Register. Viitattu 23.6.2019. (englanniksi)
  9. a b A Short History of CP/M landley.net. Viitattu 24.12.2019. (englanniksi)
  10. a b c d e f g CP/M Operating System Manual, 3rd edition (PDF) 1983. Yhdysvallat: Digital Research. Viitattu 2.8.2013. (englanniksi)

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]