| |||
Bár a PC-kben több BIOS is található, a ROM BIOS szó alatt általában specifikusan a rendszer-BIOS-t (a továbbiakban BIOS) szokás érteni. A BIOS nem más, mint inicializációs rutinok és primitív eszközmeghajtók gyűjteménye. A BIOS elsődleges feladata - szoftver-megszakításokon keresztül - olyan funkciók nyújtása, melyek segítségével egyszerű műveletek végezhetők el, mint olvasás vagy írás a merevlemezre, a hajlékonylemezes meghajtóra vagy a képernyőre. Ezen rutinok jelentősége absztraktságukban rejlik: olyan eszköz-független szolgáltatásokat bocsátanak az operációs rendszer és a programok rendelkezésére, melyek a rendszerben installált konkrét eszköz típusától függetlenül, minden környezetben egységes módon teszik lehetővé a minden egység által támogatott, de amúgy különböző módon kiváltható funkciók elérését. A gyakorlatban ez azt jelenti, hogy például a video-megjelenítő típusától függetlenül, ugyanazzal a BIOS funkcióhívással lehet egy karaktert kiírni a képernyőre, annak ellenére, hogy például a különböző adapterek video-memóriája eltérő címeken helyezkedik el, így közvetlen elérésük esetén nem lehetne - ebből a szempontból - egységesen kezelni őket.
E technika részint jelentősen csökkenti az alkalmazások méretét - hiszen azokat nem kell felkészíteni az összes ismert, de esetleg eltérő programozású egység kezelésére - másrészt lehetőséget biztosít a rendszer, az alkalmazások számára "láthatatlan" bővítésére, átalakítására, esetlegesen emulációk közbeiktatására. Többek között ennek köszönhető, hogy még a legújabb SVGA kártyákon és SCSI illesztésű merevlemezeken is (nagyrészt) hibátlanul futnak a BIOS rutinokat használó olyan alkalmazások is, melyek megalkotásakor még csak hajlékonylemezes meghajtók és Hercules illesztők léteztek. A BIOS rutinok használatának azonban ára van. Egyrészt - az absztrakció lényegéből adódóan - elérhetetlenné válnak az egységek specialitásai, másrészt - többek között az előző következményeként - a BIOS szervzirutinok legtöbbje meglehetősen lassú a közvetlen programozással elérhető sebességhez képést. Így minden egyes program esetében egyedi mérlegelés tárgyát kell, hogy képezze a BIOS rutinok vagy a közvetlen programozás alkalmazásának kérdése. Általánosságban elmondható, hogy a nem különösebben sebességkritikus feladatok esetén célszerűbb - többek közt a kompatibilitás érdekében - a BIOS szervizrutinokra támaszkodni és csak akkor a hardver közvetlen programozásához folyamodni , ha a BIOS rutinok alkalmazása nem vezet elfogadható sebességhez vagy nem teszi lehetővé az egység által nyújott és az alkalmazás által megkövetelt speciális szolgáltatások elérését.
Az újabb alaplapokon a BIOS általában ún. Flash-EPROM-ban van tárolva. A Flash-EPROM elektornikus úton - meglehetősen gyorsan - törölhető és újraírható memória-egység. Ezen BIOS-ok előnye, hogy időközben megjelenő újabb változataik a ROM modul fizikai kicserlésése helyett egy egyszerű segédprogram segítségével betölthetők.
A RENDSZER INDÍTÁSÁNAK MENETE
A számítógép bekapcsolása vagy hidegindítása (RESET) után a processzor a vezérlést a 0FFFF0h fizikai címre adja. A memória ezen területére a ROM-BIOS van betükrözve. A ROM-BIOS POST (Power-On Self Test - bekapcsolási önteszt) ezek után a következő műveleteket végzi el:- letiltja a megszakításokat (köztük az NMI-t is, mert a memóriacellák bitjei véletlenszerűen állítódnak be a reset után, és ez azok elérésekor "paritáshibát" okozhat),
- teszteli a flageket és a CPU egyéb regisztereit,
- ellenőrzi a ROM-BIOS ellenőrzöösszegét (checksum),
- engedélyezi a megszakításokat,
- inicializálja és teszteli a DMA vezérlőt,
- ellenőrzi a memória első 64KB-ját (a megszakítás-vektor táblázat miatt),
- inicalizálja és teszteli a megszakítás-vezérlőt és beállítja a 10h-17h BIOS megszakításokat,
- rendszer-konfiguárció (megjelenítő, memória, stb) megállapítása,
- inicalizálja és teszteli a CRT-kontrollert, a video-memóriát és a video-BIOS-t,
- inicalizálja és teszteli a programozható időzítőt,
- inicalizálja, teszteli majd engedélyezi a billentyűzetet,
- beállítja a hardver megszakítás-vektorokat,
- memória tesztelése (kivéve, ha a CMOS-ban a reset word értéke 1234h),
- a C8000h-EFFFFh közti területen ROM-bővítéseket keres és ha talál elindítja azokat,
- inicalizálja és teszteli a floppy- és merevlemezes meghajtó(ka)t, ha van(nak),
- megkeresi és inicializálja a soros és párhuzamos illesztőket,
- engedélyezi az NMI-t,
- az első hajlékony- vagy merevlemezes meghajtóról megpróbálja betölteni a boot-szektort ill. a partíciós táblát,
- ha ez nem sikerül, akkor egy INT 18h-val megpróbáljani elindítani a ROM-BASIC-et.
BŐVÍTŐ ROM-OK
A bővítőkártyákon elhelyezhető ROM egységek lehetőségét biztosítanak a BIOS rutinjainak az adott egység igényei szerinti kiegészítésére vagy átalakítására. A bővítő ROM-okat a rendszer-BIOS a POST során keresi meg és inicializálja. A ROM-ok a C0000h-DFFFFFh memória-tartományban helyezkedhetnek el. Minden ROM BIOS egy egységes fejlécet tartalmaz, melynek felépítése a következő:| RomHeader |
|
|
|
|
|
|
AA55h (bővítő ROM szignatúra) | |
|
|
|
a ROM blokk hossza 512 bájtos egységekben | |
|
|
|
BIOS program-kód (0003h az inicializációs kód belépési pontja) |


