Kada danas uključimo moderni računar, čini se kao da se sve dešava magično: pojavljuje se logo proizvođača, operativni sistem se učitava i za nekoliko sekundi radna površina je spremna. Međutim, ispod ove prividne jednostavnosti krije se duga historija koja počinje sa... IBM Personal Computer i njegov originalni BIOS. Dio firmvera koji je ne samo oživio hardver, već je i označio rođenje kloniranih računara i cijelog PC ekosistema kakav danas poznajemo.
U sljedećim redovima istražit ćemo kako je BIOS IBM PC-a radio. Ispitat ćemo šta je radio od trenutka uključivanja mašine, zašto je IBM mislio da će im to omogućiti da zadrže kontrolu nad standardom i kako je taj monopol razbijen. Usput ćemo pogledati ulogu koju je Microsoft odigrao, kako su se pojavili kompatibilni računari i zašto je taj naizgled privremeni IBM-ov dizajn postao globalni standard.
Šta se dešava kada uključite IBM PC: prava uloga BIOS-a
Kada uključite originalni IBM PC, praktično ništa u sistemu nije "živo": Ni RAM memorija nije inicijalizirana, niti grafička kartica reagira, niti je tastatura spremnaA još manje DMA kontroler, kontroler prekida ili programabilni tajmer. Jedine stvari koje zapravo rade su Intel 8088 CPU i mogućnost čitanja sadržaja ROM memorije.
Po dizajnu, 8088 počinje izvršavati instrukcije na fizičkoj memorijskoj adresi koja je ekvivalentna FFFF:0000hNa toj poziciji, unutar sistemskog ROM-a, IBM je smjestio instrukciju za skok (JMP) koja preusmjerava izvršenje na početak koda za samotestiranje, poznatog Samotestiranje po uključenju (POST)Od tada, računar počinje da se budi, dio po dio.
POST je, prije svega, odgovoran za provjeru samog procesora, provjeru integriteta ROM-a koji sadrži BIOS i ROM-ova koji sadrže IBM kaseta BASICTakođer, provjerite i prebrojite dostupnu RAM memoriju. Osim toga, Inicijalizira glavna integrirana kola sistema jedno po jedno.
Kako POST napreduje, BIOS rezervira i popunjava određena područja s malo memorije sa tabele podataka i interna radna područjaTek kada ove adrese ispravno pokazuju na svoje obrađivače i kada se aktiviraju prekidi CPU-a, može se reći da je BIOS "oživljava" i počinje nuditi svoje usluge na bilo koji softver koji se pokreće nakon toga.
Nakon što su provjere završene i nisu otkrivene kritične greške, BIOS izvršava drugi glavni blok koda za pokretanje: Utovarivač s remenom za čizme (BSL). Onaj koji je odgovoran za pokretanje procesa učitavanja operativnog sistema ili, ako to nije moguće, BASIC-a u ROM-u.

Od POST-a do pokretanja sistema: kako je radio Boot Strap Loader
Boot Strap Loader IBM PC-ja bio je relativno mali, ali ključni dio koda. Morao sam pronaći valjani uređaj za pokretanje i prenijeti kontrolu na njega.Prvo je provjeravao da li postoji valjana disketna jedinica sa umetnutim diskom. Ako bi je pronašao, pokušao bi pročitati svoj prvi fizički sektor, poznati boot sektor.
Sadržaj tog sektora je kopiran na vrlo specifičnu memorijsku adresu, 0000:7C00h (LOK_POKRETANJA)BIOS bi zatim prešao na tu adresu, ostavljajući sljedeću fazu procesa pokretanja u rukama tog malog bootloadera. Ako disketa nije pronađena, ako pogon ne postoji ili ako čitanje iz bilo kojeg razloga ne uspije, BIOS bi pribjegao svom planu B: pokretanje IBM kasete BASIC-a koja je rezidentna u ROM-u, koji je prikazao svoj ekran dobrodošlice spreman za unos komandi.
Ovo ponašanje je označavalo jasnu razliku u odnosu na mnoge kasnije klonove. Mnogim kompatibilnim verzijama je nedostajao BASIC u ROM-u, tako da ako nisu mogli učitati boot sektor, ono što su prikazivali bilo je jednostavno poruka o grešci kao što je „Nema uređaja za pokretanje“bez da korisniku ponudi hitnog BASIC interpretera.
Na disketama formatiranim pomoću PC DOS-a, prvi sektor kojem je BIOS pristupao sadržavao je mali program koji je razlikovao sistemski disk od diska s podacima. Ako se radilo o disku s podacima, prikazivao je poruku; ako se radilo o sistemskom disku, počeo je učitavati bitne DOS datoteke u memoriju i izvršavati kod koji je... Operativni sistem je upravo završio s pokretanjem.Ova kritična komponenta je na kraju postala meta mehanizama za zaštitu od kopiranja. A kasnije i brojnih virusa boot sektora koji su se učitali prije svega ostalog. Ostali su u memoriji, spremni da zaraze druge diskete..
BIOS servisi: prekidi, ulaz/izlaz i interne tabele
Pored pokretanja sistema, BIOS IBM PC-ja je pružao skup standardnih ulazno/izlaznih funkcija dostupnih putem softverskih prekida. Rani programi i operativni sistemi su mogli pozivati ove funkcije da... čitati s tastature, pisati na ekran, upravljati štampačem, pristupiti disketnim jedinicama ili komunicirati putem serijskog porta RS-232, između ostalih zadataka.
Metod pristupa je bio vrlo jednostavan. Program je učitavao potrebne parametre u registre procesora (AX, BX, CX, DX, itd.) i izvršavao instrukciju. INT ngdje je n bio broj prekida BIOS-a. 8088 je konsultovao vektorsku tabelu, prešao na odgovarajuću rutinu i, nakon završetka poziva, BIOS je vraćao kontrolu programu, ponekad vraćajući i rezultate u registrima.
Paralelno s tim, BIOS je morao upravljati s nekoliko hardverskih prekida koji dolaze iz 8259 kontrolera: tajmer (IRQ0), tastatura (IRQ1) i kontroler disketne jedinice (IRQ6) Ovi su bili najrelevantniji. Prevodili su se u vektore prekida 08h, 09h i 0Eh respektivno, a BIOS je već imao pripremljene programe za ažuriranje brojača sistemskog vremena, obradu pritisaka tipki ili odgovor na događaje ulazno/izlaznih operacija diskete.
Pored servisnih poziva i hardverskih drajvera, BIOS je sistemu pružao niz tabele parametara i područja podataka u maloj RAM memorijiJedan posebno važan blok nalazio se između segmenata 0040:0000 i 0040:00FF, gdje su, između ostalog, pohranjeni podaci o konfiguraciji serijskog i paralelnog porta, statusu tastature i njenom kružnom baferu od 16 znakova, aktivnim video informacijama, podacima o kaseti i brojaču takta (na 18,2 Hz) koji se koristi za izračunavanje vremena.

IBM PC skup znakova, memorija i otvorena arhitektura
Još jedan ključni aspekt naslijeđa BIOS-a i IBM PC-a bila je standardizacija prošireni ASCII skup znakovaPočevši sa 7-bitnim ASCII (0-127), IBM je definirao prošireni 8-bitni skup (0-255). To je uključivalo akcentovane znakove, grčke simbole, matematičke simbole i poznate pseudografske znakove za crtanje kvadrata, sjena i traka na ekranu.
U tekstualnim režimima, MDA i CGA grafičke kartice su imale vlastite ROM-ove sa znakovima koji su sadržavali svih 256 simbola. U grafičkim režimima, za prvih 128 kodova korištena je tabela uzoraka bit po bit, smještena unutar BIOS ROM-a. Standardni kontrolni znakovi (0–31) korišteni su kao vidljivi grafički simboli, kao što su lica, strelice i blokovi koje su mnogi DOS programi koristili za svoje interfejse.
A mapa memorije? Procesor 8088 mogao je adresirati do 1 MiB (20 bita). IBM je rezervisao gornji dio, od A0000h do FFFFFh, za ROM i video memoriju, ostavljajući... prvih 640 KiB (00000h-9FFFFh) za upotrebljivu RAM memoriju od strane DOS-a i aplikacija. Unutar tog prvog megabajta, područje F6000h-FDFFFh je dodijeljeno BASIC-u u ROM-u, a FE000h-FFFFFh BIOS-u. Ovaj dizajn će godinama definirati poznatu barijeru od 640 KB za PC.
Taj gornji prostor rezerviran za ROM i adapter memoriju ubrzo je postao zajedničko tlo za nove grafičke kartice (Hercules, EGA, itd.), ROM-ove za proširenje (na primjer, kontroleri tvrdog diska) i, kasnije, za mehanizme EMS proširena memorija, koja je mijenjala "prozore" dodatne memorije u tim prazninama u adresnoj mapi kako bi se zaobišla ograničenja DOS-a u realnom režimu.
IBM, tehnička transparentnost i greška koja je otvorila vrata klonovima
IBM nije samo lansirao PC 1981. godine, već je hardver pratio i izuzetno detaljnom tehničkom dokumentacijom. Technical Reference IBM 5150 i noviji modeli uključivali su kompletne elektronske šeme i detaljan opis svakog kola, mape memorije. I, što je najvažnije, rastavljena i anotirana lista ROM BIOS-a.
Ova transparentnost je bila mač sa dvije oštrice. S jedne strane, programerima hardvera je bilo lakše kreirati potpuno kompatibilne kartice za proširenje za nekoliko sedmica. S druge strane, bilo je vrlo primamljivo... kopirano direktno iz BIOS koda ili njegove interne struktureIBM se oslanjao na svoju armiju advokata kako bi zaustavio sve klonove koji su bili "previše slični". Neko vrijeme, strah od pravne bitke odvraćao je mnoge kandidate.
Međutim, interes za ponudu IBM PC kompatibilnih mašina nastavio je rasti. 1982. godine, Columbia Data Products MPC 1600, koji mnogi smatraju prvim PC-jem u potpunosti kompatibilnim s IBM-ovim BIOS-om. Godine 1983. Compaq Portablekoji će postati najpoznatiji klon prve generacije. U međuvremenu, projekti poput MPX-16 Stevea Ciarcije demonstrirali su kako izgraditi 16-bitne računare sa PC kompatibilnim slotovima, gotovo kao obrazovni alat.
Ovi rani proizvođači suočili su se s delikatnim izazovom. Trebali su kako bi se precizno reproduciralo ponašanje BIOS-aMeđutim, iz pravnih razloga nisu mogli kopirati ni jednu liniju njegovog koda. Mnogi koji su to pokušali direktno suočili su se s tužbama od strane IBM-a koje su ih prisilile da povuku svoje proizvode ili potpuno redizajniraju firmver.
Tehnika „čiste sobe“ i legalno kloniranje BIOS-a
Suočene s ovom situacijom, neke kompanije su pribjegle vrlo specifičnoj pravnoj i tehničkoj strategiji: "Dizajn čistih soba"Osnovna ideja je bila jednostavna, ali zahtjevna. Sastojala se od potpunog odvajanja tima koji je analizirao IBM BIOS od tima koji je prepisivao kompatibilni firmver.
U praksi, početna grupa inženjera, koja je mogla temeljito proučiti IBM-ov kod i njegovo ponašanje, posvetila se dokumentiranju Šta je svaki prekid radio, koje vrijednosti je vraćao, kako je reagovao u graničnim slučajevimaitd. Odatle su generirali neutralnu specifikaciju funkcionalnih zahtjeva, potpuno čistu od fragmenata koda, internih imena ili identičnih struktura.
Drugi tim, koji legalno nije mogao imati kontakt s kodom ili IBM-ovim tehničkim referencama, bio je odgovoran, na osnovu te specifikacije, za napisati novi BIOS, sa drugačijim internim dizajnom, ali sa istim "vanjskim ponašanjem"Kada je rezultat bio dovoljno kompatibilan, sa pravnog stanovišta smatran je "čistim" klonom.
Ovaj pristup, relativno nov u to vrijeme, postao je popularan nakon slučajeva poput onog CompaqCompaq Portable, lansiran 1983. godine, bio je prvi potpuno kompatibilan računar bez IBM BIOS-a. Iako se raspravlja o tome da li je Columbia Data Products prvi postigao potpuno legalno kloniranje, Compaq je postao... IBM-ov najveći rival na tržištu računaraTime se pokazuje da se arhitektura može replicirati bez plaćanja licenci.
IBM, Microsoft i domino efekat otvaranja BIOS-a
Dok se IBM-ova kontrola nad BIOS-om raspadala, druga kompanija je iz toga iznikla izuzetno ojačana: MicrosoftOd samog početka, IBM je postigao sporazum sa Billom Gatesom prema kojem je operativni sistem koji se koristi u PC-ju, PC-DOSLicencirano je pod određenim uslovima. To je omogućilo Microsoftu prodati gotovo identičnu verziju (MS-DOS) drugim kompatibilnim proizvođačima.
Porijeklo DOS-a također ima svoju pozadinsku priču. Microsoft je kupio operativni sistem pod nazivom QDOS/86-DOS po niskoj cijeni. Razvio ga je Seattle Computer Products i bio je zasnovan na CP/M API-ju kompanije Digital Research. Nakon što je prilagodio i poboljšao kod uz pomoć njegovog autora, Tima Patersona, Microsoft ga je preimenovao u MS-DOS. Zatim su ponudili PC-DOS varijantu kompaniji IBM. Istovremeno, zadržali su pravo da licenciraju MS-DOS bilo kojem drugom proizvođaču koji to zatraži.
Kada su Compaq, Columbia, azijski proizvođači i mnogi drugi počeli imati BIOS-e usklađene sa zakonskom regulativom, prirodna kombinacija je bila taj BIOS plus MS-DOSNa taj način, IBM je izgubio monopol na PC arhitekturu. Istovremeno, Microsoft je postao pravi vlasnik softverskog "poda" na kojem su se zasnivali gotovo svi proizvođači.
Masovni porast kompatibilnih računara, pad cijena, širenje klonova i jednostavnost kopiranja softvera... Sve je to dovelo do širenja PC računara po kancelarijama i domovima širom svijeta. Rezultat je bila konsolidacija onoga što će postati poznato kao partnerstvo PC-računar. “Wintel” (Windows + Intel). S obzirom na to da Microsoft i proizvođači x86 računara decenijama dominiraju tržištem desktop računara.
U međuvremenu, IBM je pokušao povratiti kontrolu uvođenjem nove MCA (Micro Channel Architecture) magistrale u svoju PS/2 liniju. Ova magistrala je zahtijevala licence. Međutim, industrija se uglavnom odlučila nastaviti s... ISA magistrala naslijeđena od PC/XT i AT računaraPokušaj povratka zatvorenoj arhitekturi nije uspio. Stoga je de facto standard ostao onaj koji je rođen kao otvoren 1981. godine.
Od klasičnog BIOS-a do modernog doba: tehničko i kulturno naslijeđe
Iako danas više govorimo o UEFI-ju nego o BIOS-u, mnogi koncepti uvedeni s IBM PC-jem ostaju. Ideja o rezidentnom firmveru koji... Inicijalizira hardver, izvršava POST, uspostavlja standardni servisni interfejs, a zatim predaje kontrolu učitavaču operativnog sistema. I dalje važi. U stvari, to je osnova za pokretanje bilo kojeg modernog računara.
Slično tome, naslijeđe BIOS prekida, mapa memorije ispod prvog megabajta, historijski I/O portovi (COM1, LPT1, itd.) i mnoge konvencije x86 arhitekture održavane su decenijama iz razloga... povratna kompatibilnostČak i danas, mnogi BIOS/UEFI-ji nude "legacy" slojeve kompatibilnosti koji emuliraju ponašanja naslijeđena od 5150 tako da stariji operativni sistemi ili određeni instaleri mogu funkcionirati bez problema.
Iz ekonomske i kulturne perspektive, priča o IBM-ovom BIOS-u i njegovom kloniranju u čiste sobe vjerovatno je jedna od epizoda koje većina je favorizirala otvaranje i standardizaciju tržišta PC-aBez tog pravno čistog prekida s IBM-ovom kontrolom, današnji pejzaž ličnih računara bio bi daleko fragmentiraniji i vlasničkiji, gdje bi svaki veliki proizvođač održavao vlastitu zatvorenu platformu.
Gledajući unatrag, BIOS IBM PC-a je bio mnogo više od samog firmvera za pokretanje. Bio je to tehnički i pravni ključ koji je definirao standard za kompatibilni personalni računarNiz tehničkih i ugovornih odluka objašnjava zašto danas o "PC-u" govorimo gotovo kao sinonimu za lični računar. I zašto su stotine proizvođača uspjele izgraditi, na toj otvorenoj osnovi, ogroman ekosistem koji se nastavlja razvijati.
