Ohjelmistot
Ohjelmat toimitettiin 8'-levykkeellä, jolle vakiintyi yhteensopiva 'jakeluformaatti', joka toimi kaikissa tietokoneissa. Myös 5¼'-levykkeitä käytettiin, mutta niille ei ollut yleistä standardia, eivätkä yhden valmistajan koneessa formatoidut levykkeet toimineet toisten valmistajien koneissa.
CP/M oli käytössä jopa sadoissa eri valmistajien tietokoneissa. Suosituimpia olivat Altair, IMSAI 8080, Osborne 1 ja Kaypron kannettavat ja MSX. Luultavasti myydyin CP/M:ää ajava kone oli Commodore 128, jota harva käyttäjä kuitenkaan ajoi CP/M-tilassa. Jopa Apple II:een sai Z80-kortin, jolla pystyi ajamaan CP/M-ohjelmia.
Suosittuja CP/M:n ohjelmia olivat tekstinkäsittelyohjelma WordStar, dBASE-tietokanta, KAMAS, Turbo Pascal ja Multiplan. Suosittu ilmainen XMODEM mahdollisti modeemin käytön ja tiedostojen latauksen.
Tiedostojärjestelmä
CP/M:n tiedostojärjestelmässä levykkeellä on vain yksi hakemisto. Hakemiston koko on kiinteä. Tiedostojärjestelmä ei ollut välttämättä yhteensopiva eri koneiden välillä, joten tiedostojen siirrettävyys voi kärsiä.
Hakemisto on taulukko 32 tavun tietueita. Tiedoston nimelle on varattu tilaa 8+3 merkkiä. Nämä ominaisuudet kopioitiin myöhemmin MS-DOS-käyttöjärjestelmään. Tiedoston nimen lisäksi hakemistotietue sisältää käyttäjäkoodin, tiedoston viemien levylohkojen määrän ja 16 tavua levylohkojen numeroita. Lohkojen määrä sisältää tiedon siitä, montako 128-tavuista lohkoa tiedosto vie levyltä. Tilanvarausta varten puolestaan levy on jaettu 1 kB lohkoihin, ja tiedoston hakemistotietue sisältää tiedon siitä, mitkä lohkot kuuluvat tiedostoon.
Tiedoston kokoa ei ole tallennettu mihinkään, 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), jonka jälkeen ohjelmat tiesivät tiedoston loppuvan.
Tiedostojärjestelmä ei pidä yllä tietoa siitä, mitkä levykkeen lohkot ovat vapaita, vaan kun käyttöjärjestelmä käynnistyy, se lukee koko hakemiston läpi ja muodostaa bittikartan, johon on merkitty tiedostoille varatut ja käytettävissä olevat alueet. Käytettäessä 180 kB levykettä tämä bittikartta on 23 tavua pitkä, mutta sitä ei tallenneta levykkeelle, ja näin säästetään yksi lohko.
Tiedoston suurin mahdollinen koko olisi 16 kB, koska yksi hakemistotietue voi osoittaa vain 16 lohkoa, mutta suunnittelijat pitivät tätä epäkäytännöllisenä, joten yli 16 kB:n tiedostot käyttävät useamman 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. Käyttöjärjestelmä ei sisällä hakemistoja, mutta tiedostoja voi ryhmitellä ryhmiin sen avulla. Käyttöjärjestelmä listaa ainoastaan ne tiedostot, joiden käyttäjä-kenttä on saman kuin nykyinen käyttäjänumero. Käyttäjää vaihdettiin 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 tms. Ominaisuus oli kuitenkin apuna tiedostoja ryhmiteltäessä.
16-bittiset versiot
CP/M:stä kirjoitettiin myöhemmin versioita 16-bittisille suorittimille. Ohjelmat oli kuitenkin kirjoitettava alusta asti uudelleen, koska ne olivat assemblyaa. Yksi ensimmäisistä versioista oli CP/M-86 Intel 8086 -suorittimille ja sitä seurasi CP/M-68k Motorola 68000:lle. Myös Zilog Z8000:lle oli CP/M-8000.
Lähteitä