CP/M

Izvor: Wikipedija
CP/M
Snimak ekrana s CP/M 2.2
IzdavačDigital Research
PlatformaIntel 8080,Intel 8085,Intel 8086, Zilog Z80, Zilog Z8000, Motorola 68000, i mnogi drugi
ŽanrOperacijski sustav
Internetska
stranica
Digital Research official CP/M page

CP/M je skraćenica engleske složenice Control Program for Microcomputers i ime je za operacijski sustav kojeg je bila razvila američka tvrtka Digital Research. CP/M je bio jako raširen u kasnim 70-im i 80-im godinama 20. stoljeća. CP/M je bio je prvi proglašen industrijskim standardom za operacijske sustave.

Arhitektura[uredi | uredi kôd]

CP/M-ova osnovna inovacija bilo je rasčlanjivanje operacijskog sustava na četiri osnovna funkcijska dijela[1]:

  • CPP (CP/M) (naredbeni preradnik) - ASCII zaslon
  • BDOS (basic disk operating system - osnovni operacijski sustav za diskove i datoteke)
  • BIOS (Basic I/O system - osnovni sustav za ulazno/izlazne jedinice)
  • TPA (transient program area) - tranzitivno programsko područje je mjesto koje drži programme koji su učitani od strane CPP-a

Rastavljanjem CP/M na četiri osnovne abstrakcije omogućilo je da se CP/M proširi na mnoga računala; tvorci novog računarskog sistema nisu više trebali više razviti novi operacijski sustav, već su samo trebali napisati BIOS, dok su ostale dvije komponente CPP i BDOS samo je bilo potrebno ponovno prevesti s programom-prevodiocem. Ideje iz CP/M-a poslužile su za razvoj operacijskog sustava 86-DOS koji je kasnije postao Microsoft MS-DOS.

CP/M bio je jednostavan i učinkovit sistem koji nije zahtijevao mnogo od resursa nekog sistema. Bez BIOSa koji je bio različit na svakom stroju, ostale komponente kao zauzimale su: BDOS 3.584 bajta memorije, dok je CPP oduzimao 2.048 bajta radne memorije. CP/M je za BIOS imao određeno 3.584 bajta memorije, cijeli CP/M uzevši u obzir u nultu stranicu stajao bi unutar 9.316 bajta, što je relatvno malo s obizrom na dužnosti koje je operacijski sustav mogao obavljati.

Naredbeni preradnik ili CPP[uredi | uredi kôd]

Zadatak naredbenog preradnika (komandnog processora) (engleski: Console Command Processor, ili CCP) bilo je čitanje pritisnutih s tipkovnice ii pisanje inih na zaslon terminal. U isto vrijeme kada je čitao pritisnute tipke s tipkovnice i prenosio je rezultate tog čitanja prema izlaznoj jedinici, uspjevao je i pretvarati te pritisnute znakove u naredbe, ako bi one bile tako utipkane. Kod pokretanja operacijskog sustava, konzola bi prikazala sljedeći upit na zaslonu:

A>

Iza toga upita stajalo bi obično trepereći pokazivač koji je bio znak korisniku ili korisnici sistema da je operacijski sustav spreman da primi naredbu ili ulaz od korisnika sistema. Znakovi A> označavalo je trenutnu radnu jedinicu ili disk. Ako je neki system imao više jedinica prebacivanje na tu jedinicu ili disk vršio bi se pisanjem imena diska npr. ako bi korisnik upisao B: i poslije toga pritisnuli tipku za novi red (Enter, ili Return, Novi red) tada bi Sistemi koji su imali više jedinica, tada bi se ispis na lijevoj strain zaslona promijenio u B>, i svaka nova naredbena linija počela bi s B>

Izgled CP/M-ovog korisničkog sučelja

Dizajn naredbenog sučelja CP/Ma i način rada bio je sličan operacijskim sistemima koja su tada bila popularna na miniračunalima kao kao RT-11 za DEC PDP-11 ili OS/8 za DEC PDP-8, i koja su kasnije nasljeđena u operacijskim sustavima kao UNIX ili MS-DOS.

Naredbe[uredi | uredi kôd]

Narebe nisu bile osjetljive s obzirom na malo ili veliko slovo.

Naredba Uporaba
DIR DIR <filespec>
ERA ERA <filespec>
REN REN <filespec1>=<filespec2>
SAVE SAVE <mem stranice> <datoteka> mem-strance su broj 256 bajtnih stranica po
USER USER <korisnik> korisnik je broj od 0 do 15

BDOS[uredi | uredi kôd]

Za opširniji članak pogledaj članak: BDOS

BDOS je sadržavao 40 osnovnih funkcija koje su rabili korisnički programi, i koje su rabili ostali dijelovi operacijskog sistema za pristup resorsima sistema kao disketne jedinice, serijski međusklopovi, zaslon i slično. Funkcije su bile dostupne preko sistemskih poziva koje su bili pokazivači u memoriji računala koji je držao BDOS preko kojih su izvršavane podrutine. Nakon izvršavanja ovih podrutina, BDOS bi se vratio nazad u program koji je pozvao njegovo izvršavanje. BDOSova svrha je bila u stvari standardna ulazno izlazna biblioteka podrutina za sve CP/M programe.

Logičke jedinice[uredi | uredi kôd]

U CP/M u postoje četiri logičke jedinice koje su jedino dostupne aplikacijskim programima. One su

Ime Opaska
CON Konzola, rabi se za čitanje tipkovnice i pisanja na zaslon
LST Logički pisač
RDR Logička jedinica za čitanje s diskete ili krutog diska
PUN Logička jedinica za zapisivanje na disketu ili kruti disk

Programi nisu imali izravni pristup ulazno izlaznim jedinicama već su trebale rabiti CP/Mov API. Primjerice ako je program trebao uzeti upit od korisnika preko tipkovnice, program je trebao koristiti logičku jedinicu CON, dok za ispis se rabio LST. Programi su mogli skrenuti izlaz za LST na CON, i tako je bilo moguće raditi preinake prije nego što se izlaz preusmjerio na fizički pisač.

BIOS[uredi | uredi kôd]

Opširniji članak: BIOS

BIOS je strojno ovisni dio operacijskog sustava koji je bio uveden kao novina kroz CP/M, i vrsta je abstrakcije koja je bila vrlo važna za razvoj računarstva. Ideja oko BIOSa bila je unikatna u tome što za svaki stroj je bilo potrebno samo promijeniti BIOS i CP/M bi trebao raditi na ciljnom stroju. U BIOSu su se nalazile sve rutine koje su vezale strojevni dio s operacijskim sustavom: tipkovnica, zaslon, disketne jedinice, ostale ulazno/izlazne jedinice, tvrdi diskovi i slično. BIOS je obično započinjao sa skokovima na razne potprograme, i program za BIOS za inačicu CP/M v1.3 izgledao je ovako:

JMP BOOT    ;-3: Potprogram za hladni start
JMP WBOOT   ; 0: Potprogram za topli start
JMP CONST   ; 3: Status konzole
JMP CONIN   ; 6: Ulaz konzole
JMP CONOUT  ; 9: Izlaz konzole
JMP LIST    ;12: Izlaz za pisač
JMP PUNCH   ;15: Izlaz za bušenu vrpcu
JMP READER  ;18: Ulaz za bušenu vrpcu
JMP HOME    ;21: Pomakni glavu diskete na nultu liniju
JMP SELDSK  ;24: Izaberi disketnu jedinicu
JMP SETTRK  ;27: Postavi broj linije
JMP SETSEC  ;30: Postavi broj sektora
JMP SETDMA  ;33: Postavi adresu za DMA Set DMA address
JMP READ    ;36: Čitaj sektor
JMP WRITE   ;39: Piši sector

TPA[uredi | uredi kôd]

Sklopovni model[uredi | uredi kôd]

Da bi se mogao shvatiti organizacija i arhitektura CP/M-a potrebno je uzeti u obzir minimalnu odnosno osnovnu konfiguraciju koja je bila dostadna da bi operacijski sustav mogao pokrenuti. Tokom 70-tih za minimalni 8-bitni CP/M sustav bilo je potrebno imati sljedeće komponente:

  • Terminal koji radi s ASCII zakovima
  • Mikropreradnik Intel 8080
  • Najmanje 16 KB osnovne memorije (glavne memorije)
  • Način pokretanja računala s prvog sektora disketne jedinice
  • Jednu disketnu jedinicu

Jedini sklopovni sustav za CP/M koje je podržavala tvrtka Digital Research took 1970-tih bili su sistemi koji su rabili mikropreradnik Intel 8080. Sve druge tvrtke koje su proizvodile CP/M kompatibilne sustave za druge mikroprocesore trebale su same mijenjati i napisati sami dijelove CP/M operacijskog sustava za taj mikroprocesor i također su trebali napisati programsku podršku za sve drugo sklopovlje koje su htjeli rabiti. Iako ovo zvuči kao preobiman zadatak, Digital Research jer posao prepravljanja olakšao zbog toga što je CP/M imao tri osnovne abstrakcije: CPP, BDOS, i BIOS od kojih su CPP i BDOS bili dijelovi koje nije bilo trebalo toliko prepravljati i većinu promjena za tvrtke koje su proizvodile CP/M kompatibilna računala događala u BIOS-u, tj. u programima koji su imali izravni dodir sa sklopovljem. Digital Research je također pružala pomoć onim tvrtkama koje su trebale napisati svoj BIOS uz naplatu. Zbog relativne kompatibilnosti mikropreadnika Zilog Z80 s Intelovim 8080, prebacivanje CP/M-a bilo je jednostavno isto zbog toga što tvrtka Digital Research u izvornom kodu jezgre (BDOS, CCP, osnovne transientne naredbe) nije sadržavao nikakve naredbe koje su bile osobite za Z80.

Grafika[uredi | uredi kôd]

U prvotnim inačicama CP/M-a grafičke sposobnosti nisu bile visoko na listi, pa je u prvotnim inačicama potpora je bila prisutna samo za znakovni mod. Isto tako u kasnim 70-tim nije bilo puno tvrtki koje su proizvodile proširenja za CP/M sisteme. Tek u 80-tim dolazi do pojave podrške grafike u CP/M i to preko biblioteke rutina i programa koja se skupno zvala Graphical Environment Manager odnosno skraćeno GEM.

Memorijska karta[uredi | uredi kôd]

Kao standard za CP/M Digital Research je imao sljedeću standardnu memorijsku kartu

Heks Adresa Sadržaj
$F200-$FFFF BIOS
$E400-$F1FF BDOS
$DC00-$E3FF CCP
$0100-$DBFF TPA ili memorija za programe
$0000-$00FF Nulta stranica

Za mnoge sisteme osnovni program za pokretanje stroja bio je sadržan u sistemskom ROMu, jer primjerice Intel 8080 zahtjeva da program započne na adresi 0, dok recimo CP/M ima zahtjev da RAM započinje od lokacije 0. Za strarije strojeve, pokretanje stroja se vršilo ručno preko konzole s raznim tipkama preko kojih se ručno ubacivale naredbe za pokretanje.

Nulta stranica[uredi | uredi kôd]

U 8-bitnim CP/M sistemima nulta stranica je zauzimala privih 265 bajta memorije stroja. Ovaj dio memorije rabio se za komunikaciju u operacijskom sistemu.

Heks Adresa Širina (bajtovi) Opaska
$00-$02 3 Sadrži narebu za skok na BIOS obično kod za JMP (1 bajt) i prvu adresu BIOSa $F400(2 bajta)
$03 1 Bajt za ulaz izlaz, rabio se s ponovno raspoređivanje priključenih uređaja
$04 1 Bajt koji u prva donja četiri bita sadrži broj aktivne disketne jedinice (maks 16, raspon 0 do 15), i u 4 gornja bita broj aktivnog korisnika (maks 16, raspon 0 do 15)
$05-$07 2 Naredba na skok na prvu adresu BDOSa JMP $E400
$08-$3A 51 Vektori za pononvo pokretanje i za prekide koje rabi mikropreradnik
$3B-$4F 15 Rezervirano
$50 1 Disketna jedinica s koje se učitao CP/M rabi se za inačicu v3.0
$51-$52 2 Adresa za lozinku za prvi FCB (upravni blok datoteke) (CP/M v3.0)
$53 1 Dužina lozinke za prvi FCB (CP/M v3.0)
$54-$55 1 Adresa za lozinku za drugi FCB (CP/M v3.0)
$56 1 Dužina lozinke za drugi FCB (CP/M v3.0)
$57-$5B 5 Rezervirano
$5C-$6B 16 Rabi se za FCB 1
$6C-$7F 19 Rabi se za FCB 2 (prebrisan ako je FCB 1 otvoren)
$80 1 Broj znakova koji čekaju u naredbenom repu
$81-$FF 1 Naredbeni rep, svi znakovi iza imena programa

Datotečni sustav[uredi | uredi kôd]

Po današnjim standardima (2016.) CP/M datotečni sustav bio je ograničen i bio je odraz tehnologije kasnih 70-tih i ranih 80-tih godina. U prvoj inačici CP/M je podržavao je diskove čiji obujam nije mogao preći preko 8 Mb. Kasnije inačice omogućavale su podršku za veće diskove. CP/M imao je za to vrijeme genijalan sistem čuvanja resorsa na disketama; tako je primjerice prilikom učitavanja diskete, nakon što učita direktorij počinje izračunavati broj slobodnih blokova na nekoj disketi, i kao rezutat tog izračunavanja je bitovid (bitmap) od 23 bajta za disketu od 180 kb, koji CP/M drži u memoriji sistema. Ovako CP/M nije trošio niti jedan blok na disketnoj jedinici za spremanje podataka o slobodnim bajtovima, isto tako sistemu nije potrebno konstantno pozivati sistemske programe koji provjeravaju konsistentnost diskete ili disketne jedinice. Ovo nepisanje slobodnih blokova na disketu imalo je nedostatak koji je zahtijevao od korisnika da osvježi disketu prije nego što je bila izvađena iz disketne jedinice. Ako korisnik nije ovo napravio-la, moglo je doći do korupcije diskete.

CP/M-u je imao samo jedan direktorij, koji je sadržavao upise s fiksnim 32 bajtne. Upisi su imali je sljedeći oblik:

Širina (bajtovi) Sadržaj
1 SS (status). Vrijednosti 0-postoji, 0E5h - obrisan, 80h - skrveno (samo za inačicu v1.4)
8 Ime datoteke
3 tip datoteke
1 Extent (produžetak) rabi se za datoteke preko 16 kb, vrijednosti od 0 do 31 ovo omogućava datoteke s maksimalnom veličinom od 512 kb
1 S1, nije korišteno vrijednost 0
1 S2, nije korišteno vrijednost 0
1 RC, broj upisa (records) svaki upis jednak je 128 bajta, ako je RC jednak 80h tada je ovaj produžetak pun, i mora se stvoriti novi unos u direktorij, i povećati broj koji se nalazi u produžetku za 1
16 Broj 1 kb blokova, na primjer ako je datoteka ima veličinu od 4kb data AL može imati vrijednost 06h08h09h05h00h00h00h00h00h00h00h00h00h00h00h00h. Brojevi označavaju broj bloka a disketi, a 00h označava blok nije dodijeljen u datoteci. Maksimalna broj blokova koji se može dodati je 16, što znači da veličina datoteke je 16 kb

Veličina datoteke u CP/M-u bila je ograničena na 16 kb, no da bi prešli preko tog problema, dizajneri su počeli rabiti bajt za produžetak koji je omogućavao nizanje 16 kb datoteka u red jedan za drugim. Svaka tako produžena datoteka bila je uvedena u direktoriju diskete ili jedinice tvrdog diska. Svaka takva datoteka bila je posebno unešena u direktorij diskete ili disketne jedinice.[2]

Tip datoteke Opaska
ASM Izvorni kod u assembleru
BAK Preslika datoteke koja se uređivala
BAS Izvorni kod u BASICu
COB Izvroni kod u COBOLu
DAT Datoteka u ASCII formatu

Povijest, razvoj i inačice[uredi | uredi kôd]

Dok je radio na svome magisteriju na Fakultetu u Washingtonu 1968. godine Gary Kindall je za svoj magisterijski rad stvarao sustav za spremanje podataka na diskovima. Nakon završnog magisterijskog rada četiri godine kasnije na 1972. istom fakultetu obranio doktorat znanosti na temi programa prevoditelja XPL koji je bio razvijen na osnovu jezika ALGOL. Nakon što je završio svoj doktorat, 1973. godine Gary Kindall prelazi u tvrtku Intel, gdje razvija programe prevodioce, alatke. Od alatki je najpopularniji i najpoznatiji programski jezik PL/M.

Inačice v1.x[uredi | uredi kôd]

Dok radio je za tvrtku Intel Kindall je razvio prvu inačicu operacijskog sustava CP/M razvio je između 1973. i 1974. godine kao operacijski sustav za računalo Intel Intellec-8 koji je bio opremljen s 8 colnom disketnom jedinicom od tvrtke Shugart Associates. Operacijski sustav bio je napisan u programskom jeziku PL/M kojeg je razvio Kindall dok je radio u Intelu, a prilikom njegovog razvoja Kindal je dobio a inspiraciju da napiše za operacijski system. Iste godine Kindall je osnovao tvrtku Intergalactic Digitital Research Inc. koja je kasnije bila preimenovana u Digtital Research Inc. (skraćenica DR ili DRI).

Oglas za CP/M iz 1978. godine

Pri stvaranju CP/M-a Kindall je bio nadahnut s operacijskim sustavom TOPS-10 koji je radio na sistemuDECsystem-10, no razumio je da za prihvaćanje računala u širem polju je potreban ozbiljni operacijski sustav, alatke i porgramska podrška. Kindall bio je svjestan da će nova 8-bitna računala napraviti promjenu u cijeloj industriji i da je pitanje koje se treba riješiti jest postojanje operacijskog sustava koji bi pokretala nova računala ili hobi računala. Kindall je smatrao da će programsko okružije i operacijski sustav imati presudni utjecaj u pomicanju i razvoju nove industrije. Svoju prvu inačicu v1.0 Kindall je ponudio Intelu jer ga je razvio za Intel Intellec-8, no upravitelji Intela nisu nisu imali neka zanimanja za proizvodnju i prodaju gotovih računarskih sistema.

Nakon što je Intel odbio njegovu ideju, Kindall je krenuo svojim putem jer je vjerovao da će se nova računala proširiti i biti dostupna svakome. Dne 1975. tvrtka IMSAI kupila je od Kindalla inačicu v1.2 za svoje računalo IMSAI 8080 u kit inačici, a 1976. godine IMSAI je angažirao Kindalla da razvije bolju inačicu tvorničku inačicu IMSAI 8080 za cijenu od USD$25.000 (USD$105,551.85 u 2016.[3]). Kindall je uspio razviti novu inačicu v1.3 skupa sa svojim studentom Glenom Ewingom. Ime operacijskog sustava jest skraćenica složenice Control Program/Monitor, no kasnije 1977. godine je ovo začenje bilo promjenuto u Control Program for Microcoputers.

Nakon pojave CP/Ma na IMSAI 8080, zanimanje se podiglo za novi operacijski sustav i posao je krenuo jer su nova računala koja su bila napravljena rabeći model sabirnice S-100 s mikropreradnicima Intel 8080, Intel 8085 i Zilog Z80 su počela prepraljivati tržište. Pošto je CP/M bio zasnovan na tim skopovskim principima, i od novih tvrtki zahtijevali su samo male preinake u BIOSu, cijeli posao i rizik oko razvoja novog sistema bio je smanjen i doveden na minimum. Ovo je uzrokovalo brzo prihvaćanje na tržištu. Mnogi poduzetnici započeli su s razvojem i prodajom programske podrške za računala koja su rabile CP/M i za njih nisu bile potrebne preinake jer softver na jednoj CP/M stroju mogao se s jako malim preinakama rabiti na nekom drugom stroju ili preinake nisu bile uopće potrebne.

Inačica v2.2[uredi | uredi kôd]

DEC VT-180 s CP/M

Inačica v3.0[uredi | uredi kôd]

Grafičko sučelje za CP/M[uredi | uredi kôd]

Oglas za grafičko sučelje za CP/M iz 1982.

16-bitne inačice[uredi | uredi kôd]

Tokom 1980-tih godina pojavila su se 16-bitni mikropreradnici od raznih tvrtki (Motorola 68000, Intel 8086, Zilog Z8000 i drugi). Iako su 16-bitni mikroprocesori veće bili dostupni Digital Research je najavila 16-bitnu inačicu svog operacijskog sustava CP/M, no finalni produkt je kasnio. Ovo kašnjenje je frustriralo neke proizvođače opreme kao Seattle Computer Products koja je razila svoj klon CP/M-a 86-DOS. Mnogi su mislili da će IBM PC 1980. godine biti pogonjen s CP/M-86, no zbog nemogućnosti da dođu u dogovor s Gary Kindallom krajem 1980. godine, IBM se okrenuo Bill Gatesu i Microsoftu za novi operacijski system PC DOS, koji je u stvari bio inačica 86-DOS kojeg je Microsoft kupila od Seattle Computer Products koja je imala svoju inačicu spremnu krajem 1980.

Kada je Digital Research izbacila na tržište svoju prvu inačicu CP/M-86 1982. godine, starije 8-bitne inačice odmah su dobile retronim CP/M-80 i postojao je takmac u PC DOSu. Iako je došao kasnije mnogi u industriji smatrali su da je CP/M-86 bolji proizvod, ali bio je mnogo skuplji (USD$240) od PC DOSa koji je stajao USD$40. Digital Research učinio je što je mogao što se tiče programske podrške za prijašnju generaciju operacijskog sustava. Svi stariji programi napisani za 8-bitne inačice trebali su se prevesti na novi operacijski sustav. Na primjer svi programi koji su bili napisani u assemleru za 8080 mogle su se prevesti u assembler za 8086 pomoću alatke XLT86 kojeg je razvio Digital Research 1981. godine.

Neke tvrtke kao recimo Digital Research proizvodila su računala koja su imala i po dva mikropreradnika, koji su svi mogli raditi u isto vrijeme. DEC Rainbow 100 bio je jedan od takvih računala. Iskra Delta Triglav je otšla jedan korak dalje gdje je podržavao tri mikropreradnika, i tri operacijska sustava u isto vrijema.

DEC Rainbow CP/M

Prva inačica računala Atari ST bio je pogonjen s CP/M-86 za Motorolu 68000 koja je imala ime CP/M-68k, kao i grafičko sučelje GEM od Digital Researcha.

Kraj[uredi | uredi kôd]

Ubrzo poslije sredine 1984., CP/M gubi primat na tržištu i poslije toga nestaje kao važniji operacijski sustav 1991. godine kada je bila prodana tvrki Novell 1991. godine.

Problemi s disk formatima, skopovljem i prenosivosti[uredi | uredi kôd]

Inačice[uredi | uredi kôd]

  • v1.0 do v1.4
  • v2.2
  • v3.1
  • v4.1
  • CP/M-86
  • MP/M

[[

Datoteka:C128cpmboot.jpg|thumb|Sistemska CP/M disketa za računalo Commodre 128]]

Programska podrška[uredi | uredi kôd]

Pojava CP/M-a kao standardnog operacijskog sustava imao je velik utjecaj na razvijanje industrije za programsku podršku. Mnoge tvrtke i pojedinci sada su imali platformu koja je omogućavala prodaju aplikacija bez većih ili nikakvih preinaka. Zbog dobro dokumentiranih poziva u operacijskom sustavu i dobrog programskog stoga (za to vrijeme) omogućavalo je stvaranje i demokratiziranje programske podrške koja je tada samo postojala na mini računalima i većim složenijim sistemima. Kroz CP/M pojavila su sljedeće aplikacije koje su imale utjecaj na razvoj korisničih i ostalih aplikacija:

Pojavom CP/M-a isto tako započeo je veći pokret u izdavanju slobodne programske podrške preko organizacije Lifeboat Associates.

Poznata računala s CP/M operativnim sustavom[uredi | uredi kôd]

Prožetiji popis računala možete pronaći u članku: Popis računala s operacijskim sustavom CP/M

Emulatori[uredi | uredi kôd]

Postoji razna programska podrška za novije operacijske sustave koje omogućavaju emulaciju operacijskog sistema CP/M.

Izvori[uredi | uredi kôd]

  1. Arhivirana kopija. Inačica izvorne stranice arhivirana 15. veljače 2021. Pristupljeno 10. lipnja 2016.CS1 održavanje: arhivirana kopija u naslovu (link)
  2. http://members.iinet.net.au/~daveb/cpm/format14.html
  3. http://www.usinflationcalculator.com/ Inflacijski kalkulator za USD$

Vanjske poveznice[uredi | uredi kôd]