CP/M

CP/M
VyvíjíDigital Research, Inc. / Gary Kildall
Rodina OSCP/M
Aktuální verze3.1 / 1982
Podporované platformyIntel 8080, Intel 8085, Zilog Z80, Intel 8086, Motorola 68000
Typ jádraMonolitické jádro
Výchozí uživatelské rozhraníPříkazový řádek
Licencepůvodně proprietární, nyní pod licencí podobnou BSD
StavHistorický
Oficiální webwww.digitalresearch.biz/CPM.HTM

CP/M (původně Control Program/Monitor, později změněno na Control Program for Microcomputers) je jednouživatelský jednoúlohový operační systém pro mikropočítačeosmibitovými mikroprocesory Intel 8080/85, který vytvořil Gary Kildall z firmy Digital Research, Inc v roce 1974. Existovala i jeho rozšíření pro více než 64 kilobajtů paměti, víceuživatelské varianty i varianty pro 16bitové procesory.

Systém CP/M a počítače se sběrnicí S-100 bus vyvinuté podle vzoru počítače Altair 8800 představovaly raný „průmyslový standard“ mikropočítačů, a tato platforma byla od konce 70. let do poloviny 80. let 20. století často dodávána různými výrobci mikropočítačů.

Historie

Autorem systému CP/M je Gary Kildall, který začal tento systém vytvářet pro společnost Intel a po neshodách s touto společností ho tvořil dále na vlastní pěst.[1] Prototyp systému schopný pracovat s řadičem disketových jednotek Digital Systems vzbudil pozitivní ohlas. Protože ale existovaly různé mikropočítačové sestavy, Gary Kildall rozdělil systém na část technicky nezávislou a část technicky závislou, kterou jako jedinou bylo nutné přizpůsobit technickému vybavení mikropočítačové sestavy. První zveřejněná verze systému CP/M byla verze 1.3, verze 1.4 už uměla pracovat s řadičem disketových jednotek IBM.

Se vznikem pevných disků vznikla verze 2.2, která v technicky závislé části obsahovala tabulky vlastností pevných disků. Tato verze byla nejrozšířenější verzí v bývalém Československu, známá pod označením Mikros.

Verze 3.1 uměla ovládat stránkovanou paměť. Kromě standardní varianty CP/M existovala i varianta CP/M umožňující spouštění více úloh (Concurrent CP/M), CP/M s možností přístupu více uživatelů současně (MP/M) a varianta umožňující využití sdílených síťových prostředků (CP/NET).

Minimální technické vybavení

Minimální požadavky systému CP/M na technické vybavení jsou následující:

  • Mikroprocesor Intel 8080 (8085) nebo Zilog Z80
  • Nejméně 16 KiB paměti RAM začínající na adrese 0
  • Alespoň jedna mechanika pružného disku
  • Možnost zavedení OS z prvního sektoru diskety
  • Terminál používající znakovou sadu ASCII

Originální systém CP/M, který prodávala firma Digital Research používal mikroprocesor Intel 8080. Výrobci systémů kompatibilních s CP/M upravovali části systému pro své vlastní kombinace paměti, diskových jednotek, a terminálů. CP/M také běží na systémech s mikroprocesorem Zilog Z80, protože strojový kód Z80 je rozšířením strojového kódu 8080. Zatímco systém od Digital Research používal pouze instrukce pro Intel 8080, mnoho systémů pro Z80 používalo instrukce pro Z80, takže tyto programy na počítačích s procesory Intel nefungovaly.

CP/M používá 7bitovou znakovou sadu ASCII. Použití kódů 128–255 není standardizováno. Počítače Osborne je používaly pro podtržené znaky, počítače Kaypro pro řecké znaky. Mezinárodní systémy CP/M obvykle používaly normu ISO 646 pro lokalizované národní znakové sady, které místo používání kódů 128–255 nahrazují některé ASCII znaky národními znaky.

Struktura operačního systému

Operační systém CP/M se skládá ze tří základních součástí:

  • Basic Input/Output System – BIOS
  • Basic Disk Operating System – BDOS
  • Console Command Processor – CCP

BIOS a BDOS byly rezidentní – trvale zavedeny do paměti, zatímco CCP byl tranzientní – mohl být přepsán spouštěným programem. Pokud k tomu došlo, byl CCP po ukončení programu znovu načten z disku. Systém byl dodáván i s několika tranzientními pomocnými programy, které byly uloženy jako soubory s příponou .COM na disku.

Modul BIOS obsahoval podprogramy pro obsluhu vstupních a výstupních zařízení, jako například funkce pro čtení znaku z klávesnice, výpis znaku na obrazovku, čtení sektoru z diskety a zápis sektoru na disketu. Tato část byla závislá na technickém vybavení počítače.

Modul BDOS implementoval systém souborů a abstrakce pro vstupní a výstupní operace s využitím funkcí poskytovaných modulem BIOS.

Naproti tomu BDOS, CCP a standardní tranzientní příkazy byly (v ideálním případě) nezávislé na technickém vybavení. Díky omezeným adresovacím možnostem použitých procesorů bylo však nutné přeinstalovat systém při změně velikosti operační paměti. Nainstalovaný systém (BIOS, BDOS a CCP) byl uloženy v rezervovaných oblastech na systémovém disku, odkud je po zapnutí počítače zavaděč systému (zpravidla uložený v paměti ROM) načetl z diskety v jednotce A:.

V porovnání s moderními operačními systémy byl CP/M velmi primitivní, zejména kvůli velmi omezenému rozsahu operační paměti. Ve verzi 1.0 neuměl detekovat, že uživatel vyměnil disketu, takže mohlo snadno dojít k přepsání dat na disketě. Ve verzi 1.1 a 1.2 způsobil pokus o zápis na vyměněnou disketu kritickou chybu a bylo nutné restartovat systém, takže došlo ke ztrátě dat, které chtěl uživatel uložit.

Nejsložitější část CP/M byla izolována v BDOS, a v menší míře v CCP a tranzientních příkazech. Při přenosu systému na nový hardware stačilo přepsat pouze relativně jednoduché hardwarově závislé funkce v BIOSu, což značně zkracovalo dobu potřebnou pro přenos systému na nový hardware a přispělo k velkému rozšíření systému.

Console Command Processor

Obrazovka systému CP/M

Console Command Processor (CCP) zobrazuje písmeno aktuální diskové jednotky a znak „větší než“ (například A>) jako výzvu systému, načítá příkazy zadávané uživatelem na klávesnici, buď je přímo provádí nebo pro jejich provedení spustí tranzientní program a zobrazuje výsledky na terminálu. Jako terminál se používal buď elektrický psací stroj nebo obrazovkový displej.

Interní příkazy prováděné přímo programem CCP:

PříkazPoužití
A:změní aktuální diskovou jednotku
ERAzruší soubor
DIRvypíše obsah adresáře
RENpřejmenuje soubor
SAVEuloží zadaný počet stránek (256 bytů) paměti od adresy 100h do souboru
TYPEvypíše obsah souboru na obrazovku

Externí příkazy dostupné v CP/M jako samostatné programy zaváděné do TPA:[2]

PříkazPoužití
ASMpřeloží program v jazyce symbolických adres do strojového kódu
DDTspustí ladicí program (debugger)
DUMPvypíše obsah souboru v hexadecimálním formátu
EDtextový editor
LOADnačte soubor ve formátu kódu počítače HEX a vytvoří spustitelný soubor, který lze načíst do paměti
MOVCPMpřizpůsobí systém CP/M pro konkrétní velikost paměti RAM
PIPkopíruje soubory mezi disky a zařízeními (Peripheral Interchange Program)
STATzobrazí volné místo (v bajtech) na aktuálním disku, poskytuje statistické informace o určitých souborech a zobrazí nebo změní přidělení zařízení
SUBMITspustí dávkový soubor
SYSGENvytvoří zaváděcí disk systému CP/M

Systém souborů

Každá disková jednotka byla identifikována písmenem a dvojtečkou (A:, B:, atd.).

CP/M nemělo adresáře. Jména souborů mohou mít až 8 znaků následovaných tečkou a max. 3 znaky přípony. Přípona se používá pro určení typu souboru. Programy mají příponu .COM a textové soubory měly příponu .TXT. Plné jméno souboru mohlo být například A:CCP.COM nebo A:README00.TXT. Tento formát jmen byl beze změny převzat do operačního systém MS-DOS a PC-DOS. Ve verzi MS-DOS/PC-DOS 2.0 byl doplněn jmény adresářů.

Velikost souboru byla udržována jako počet 128bytových záznamů (odpovídajících sektorům na osmipalcových disketách). Neexistence přesné délky souborů v bytech se obcházela v textových souborech použitím znaků konce souboru (ASCII SUB, hexadecimal 1A, control-Z). PomocíCtrl +Z bylo možné docílit i zkrácení souboru.

Udržování časů modifikace souboru bylo podporováno pouze v některých pozdějších variantách CP/M.

Chybějící adresářovou strukturu obcházela CP/M verze 2.2 pomocí až 16 uživatelských oblastí na disku. Pro přepínání mezi uživateli slouží příkaz USER x, kde x je číslo 0 až 15.

Transient program area

Oblast paměti od adresy 256 (šestnáctkově 0100) a začátkem modulu BDOS se nazývá transient program area (TPA) se používá pro zavádění aplikačních programů. Procesory Z80 a 8080 mohou adresovat 64 kibibytů paměti, ale ne u všech počítačů byla paměť této velikosti k dispozici. Některé počítače také mají v adresním prostoru další paměť jako BIOS ROM, nebo videopaměť. Díky tomu měly různé počítače různě velkou oblast TPA. Některé pozdější počítače měly více než 64 KiB paměti a používaly techniku přepínání stránek paměti. CP/M 3.0 umožňuje, aby v přepínané části paměti byly i některé části BDOSu.

Požadavky operačního systému

Operační systém CP/M požaduje paměť RAM už od adresy 0000. Počítače, které nebyly navrženy pro spouštění operačního systému CP/M měly většinou v těchto místech paměť ROM a tak byly nutné úpravy. Pro textový výstup bylo požadováno 80 znaků na řádku. U počítačů, které měly standardně jenom 40 znaků na řádku, se toto řešilo vlastními ovladači umožňující zobrazovat písmo s poloviční šířkou znaků. Zvláštní řešení bylo použito u CP/M pro Sinclair ZX Spectrum +3. Jelikož počítače ZX Spectrum měly pouze 32 znaků na řádek, bylo u ZX Spectra +3 možné využít jeho obou videoRAM. Pomocí první videoRAM se zobrazovaly znaky 1–64, pomocí druhé videoRAM se zobrazovaly znaky 16–80. Protože takovéto řešení omezovalo čtení souvislého textu, nebylo aktivováno automaticky, ale pomocí příkazu. Klávesami pak bylo možné přepínat mezi částmi obrazovky.

Jeden ze způsobů, jak zajistit paměť RAM od adresy 0000, je navrhnout počítač tak, aby obsahoval v celém adresním prostoru procesoru paměť RAM. Protože ale takový počítač sám o sobě není možné spustit, je nutné po spuštění počítače dočasně odpojit procesor od sběrnice a operační systém CP/M nahrát do paměti z vnějšího paměťového média pomocí pomocného procesoru.[3]

Struktura operačního systému

Existovalo několik nekompatibilních architektur počítačů (Sinclair ZX Spectrum, Sharp, Atari, Amstrad-Schneider), kdy každá architektura měla jinak ovládaný hardware (klávesnice, joysticky, videopaměť), jinou organizaci paměti (umístění pamětí RAM a ROM v adresovatelném rozsahu procesoru, připojování paměti většího rozsahu než je adresovatelný rozsah procesoru a podobně) a nekompatibilní periférie. Nekompatibilita periférií nebyla jenom mezi různými architekturami, ale i v rámci jedné architektury. Např. pro počítač Sinclair ZX Spectrum existuje několik různých disketových systému (Beta Disk Interface, Disciple, +D, Opus Discovery, Wafadrive, systém použitý v počítačích ZX Spectrum +3, Didaktik 40/80, Dataputer, Timex FDD3000, Kempston Disc Interface, Byte Drive 500, …). Operační systém CP/M pak umožňoval psát programy použitelné na různých architekturách a ve spojení s různými perifériemi. Samozřejmě existovaly i jiné procesory např. MOS Technology 6510 použitý v Commodore C64. Pro tyto procesory operační systém CP/M neexistoval, proto Commodore C128 obsahoval 2 procesory: MOS Technology 8502 (novější verze procesoru 6510, pro režimy C64 a C128) a Z80 (pro režim CP/M). Pro počítače Apple II, který byl založen na procesoru MOS Technology 6502, existovala speciální karta pro provoz operačního systému CP/M s procesorem Z80.

Paměťová média

Operační systém CP/M umí obsloužit až 16 připojených externích paměťových jednotek (disketové jednotky, pevné disky, RAM disky). Jednotky byly označeny písmeny A:P:. Média měla pouze kořenový adresář. Aby byla možná jistá strukturovanost uložených dat, bylo možné data ukládat pod čísly uživatelů 0–15 (jako by na jednom médiu existovalo 16 kořenových adresářů a v každém byly uloženy jiné soubory). Bylo možné používat média až do velikosti 32 MiB, přičemž velikost souboru mohla být až 16 MiB (verze CP/M pro Sinclair ZX Spectrum +3 mohla používat média až do velikosti 16 MiB, přičemž velikost souboru mohla být až 8 MiB), což v té době znamenalo ještě dostatečnou rezervu, neboť kapacita disket byla obvykle 360 nebo 720 KiB (dvojitá hustota, Double Density, DD), resp. 1,2 nebo 1,4 MiB při použití záznamu o vysoké hustotě (High Density – HD). Existovala i verze CP/M pracující se ZX Microdrive.

Programy

Odkazy

Externí odkazy

Reference

  1. LAMAČ, Jiří. Operační systém CP/M 2.2. Praha: [s.n.], 1989. Dostupné online. Kapitola 2.2 Vznik CP/M. 
  2. CP/M Operating System Manual [online]. Pacific Grove, California: Digital Research, 1983 [cit. 2019-01-18]. Dostupné online. 
  3. Combining a Z80 and an ATmega644P to boot CP/M. Ben Ryves Journal [online]. 14th June 2010. Dostupné online. 

Literatura

  • Kvaksoft. CP/M díl čtvrtý. ZX Magazín. 1998, čís. 3/98, s. 14–16. 
  • Žabenský, P. Operační systém CP/M popáté. ZX Magazín. 1999, čís. 4/98–1/99, s. 14–15. 

Média použitá na této stránce

CPM.png
CP/M screenshot