CP/M

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
CP/M
Web: www.digitalresearch.biz/CPM.HTM
Vyvíjí: Digital Research, Inc. / Gary Kildall
Rodina OS: CP/M
Aktuální verze: 3.1 / 1982
Podporované platformy: Intel 8080, Intel 8085, Zilog Z80, Intel 8086, Motorola 68000
Typ kernelu: Monolitické jádro
Implicitní uživatelské rozhraní: Příkazový řádek
Licence: původně proprietární, nyní pod licencí podobnou BSD
Stav: Historický

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. Existovala i jeho rozšíření pro více než 64 kilobytů 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[editovat | editovat zdroj]

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.[1]

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í[editovat | editovat zdroj]

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

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á 7-bitovou 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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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.

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

A: změna aktuální diskové jednotky
ERA zrušení souboru
DIR výpis obsahu adresáře
REN přejmenování souboru
SAVE uložení obsahu paměti do souboru
TYPE výpis obsahu souboru na obrazovku

Systém souborů[editovat | editovat zdroj]

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 128-bytový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[editovat | editovat zdroj]

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 kilobytů 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 KB 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[editovat | editovat zdroj]

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 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.[2]

Struktura operačního systému[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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: 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 MB, přičemž velikost souboru mohla být až 16 MB (verze CP/M pro Sinclair ZX Spectrum +3 mohla používat média až do velikosti 16 MB, přičemž velikost souboru mohla být až 8 MB), což v té době znamenalo ještě dostatečnou rezervu, neboť kapacita disket byla obvykle 360 nebo 720 kB (dvojitá hustota, double density, DD), resp. 1,2 nebo 1,4 MB při použití záznamu o vysoké hustotě (High Density - HD). Existovala i verze CP/M pracující se ZX Microdrive.

Programy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. a b LAMAČ, Jiří. Operační systém CP/M 2.2. Praha : [s.n.], 1989. Dostupné online. Kapitola 2.2 Vznik CP/M.  
  2. Combining a Z80 and an ATmega644P to boot CP/M. Ben Ryves Journal [online]. 14th June 2010. Dostupné online.  

Literatura[editovat | editovat zdroj]