I. rész

Miután sikeresen kiveséztük a DOS-t lépjünk tovább és tekintsünk egy réteggel mélyebbre a számítógép belső világába.

A PC BIOS

A BIOS (Basic Input/Output System - alapvető ki-/beviteli rendszer) - mint neve is mutatja - a legelemibb ki-/beviteli funkciókat ellátó szoftver, amely minden PC-ben megtalálható. (Igazából a BIOS-okat nem is szoftvernek, hanem firmware-nek szokták hívni, mert olyan szoros egységet képeznek az alaplap hardverével.) A PC-kben több fajta BIOS is megtalálható. A rendszer BIOS-on kívül az EGA vagy fejlettebb video-rendszert tartalmazó gépekben egy video BIOS is található ami a megjelenítő egység vezérlését végzi. A bővítő kártyák is rendelkezhetnek BIOS-okkal, amik speciális egységek vezérlését végzik (pl. LAN adapter - Boot eprom ; SCSI vezérlő - SCSI BIOS, stb.). Ezeken kívül minden rendszer tartalmaz egy billentyűzet-vezérlő BIOS-t (Keyboard Controller BIOS) is a billentyűzet-illesztőben.

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: Minden teszt megkezdése előtt a diagnosztikai porta a tesztnek megfelelő kódot ír ki. Ez a kód egy 16-bites (word) szám, melynek felső 8 bitje az egységet azonosítja, míg az alsó nyolc bitje a teszt eredményét tartalmazza (00h - ha a teszt sikeres volt).

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
Offset
Méret
Leírás
00h
2
AA55h (bővítő ROM szignatúra) 
02h
1
a ROM blokk hossza 512 bájtos egységekben 
03h
n
BIOS program-kód (0003h az inicializációs kód belépési pontja) 
A rendszer-BIOS a bővítéseket az AA55h szignatúra alapján és a megadott hosszúságú kód 8 biten vett összegének (összeg modulo 256) 0-val való összehasonlításával ismeri fel. Ha a POST rutin érvényes fejlécet talál a megadott tartományban, akkor egy távoli ugrással (call far) a belépési pontra adja a vezérlést. A bővítő-BIOS inicalizációs rutinja az egység alaphelyzetbe állítása és a megfelelő megszakításvektorok esetleges átirányítása után visszaadja a vezérlést a POST rutinnak, ami tovább folytatja a bővítések keresését.

- STING -
eMail:PC-XUser@IDG.HU, Subject: "RProg rovat"