SO instrukcja 3


Instrukcja laboratoryjna
Systemy operacyjne
sem. 1
wiczenie trzecie
Temat: Obsługa urządzeń zewnętrznych
Opracował:
mgr inż. Arkadiusz Chrobot
1. Wstęp
Programista tworzący aplikacje działające pod kontrolą dowolnego systemu
operacyjnego (o ile nie jest to bardzo prymitywny system) nie musi znać
szczegółów związanych z obsługą sprzętu, na którym jego program będzie
uruchamiany. Wystarczy, że będzie umiał skorzystać z funkcji systemowych,
które realizują to zadanie. Dzięki temu kod jego programów staje się bardziej
przenośny, a praca systemu komputerowego, na którym wykonywane są te
programy, bardziej stabilna. W innej sytuacji znajduje się oczywiście
informatyk tworzący oprogramowanie systemowe. Jego zadaniem jest
stworzenie najbardziej uniwersalnych i odpornych na błędy procedur obsługi
urządzeń. Zadanie to komplikuje się, jeśli system ma współpracować ze
sprzętem tego samego rodzaju, ale pochodzącym od wielu różnych producentów
i nie posiadającym standardowego sposobu obsługi. W takim wypadku
programista systemowy może stworzyć abstrakcyjną warstwę1 z dokładnie
zdefiniowanym interfejsem, której przeznaczeniem jest obsługa urządzeń
wejścia  wyjścia. Producent urządzenia, który zna specyfikację takiego
interfejsu może dostarczyć własne podprogramy obsługi swojego urządzenia
(sterowniki). Jedną z większych zalet systemu DOS, a zarazem jedną z
największych jego wad jest możliwość bezpośredniej obsługi sprzętu przez
programy użytkownika. Tę własność można wykorzystać w celu poznania zasad
obsługiwania niektórych z tych urządzeń.
2. Pamięć ekran
Pamięć karty graficznej (lub jej fragment) jest odwzorowany we fragmencie
pamięci RAM komputera. Oznacza to, że zapisanie jakiejkolwiek wartości do
tego obszaru RAM spowoduje bezpośredni zapis tych wartości do pamięci karty
graficznej. W przypadku trybu tekstowego dla większości kart graficznych
obszar ten zaczyna się od adresu B800:0000h2, natomiast jego wielkość zależna
jest od trybu tekstowego, w jakim w danej chwili karta pracuje. Opis jednego
znaku, który jest wyświetlany na ekranie zajmuje w tej pamięci dwa bajty:
pierwszy jest kodem ASCII wyświetlanego znaku, natomiast drugi jest
wartością atrybutu tego znaku. W przypadku trybu graficznego zarówno
początek bufora w pamięci, jak i jego wielkość oraz organizacja wewnętrzna
zależą od rodzaju karty.
1 Przykładem takiej warstwy jest wirtualny system plików występujący w niektórych systemach
uniksowych.
2 Wyjątkiem jest karta graficzna Hercules, dla której ten obszar zaczyna się od adresu
B000:0000h.
2
3. Bufor klawiatury
W pamięci RAM znajduje się również obszar, gdzie zapamiętywane są dane
przesyłane przez sterownik klawiatury. Obszar ten ma wielkość 32 bajtów i
zaczyna się od adresu 0040:001Eh. Jest on zorganizowany w postaci struktury
cyklicznej, dlatego skojarzone są z nim dwie zmienne dwu bajtowe o adresach
0040:001Ah i 0040:001Ch oznaczające odpowiednio początek i koniec bufora
klawiatury. Za każdym razem, kiedy użytkownik naciśnie klawisz do tego
bufora wpisywane są dwa bajty: kod klawisza i kod ASCII.
4. Porty klawiatury
W komputerach kompatybilnych z IBM PC istnieją dwa dwukierunkowe porty,
dzięki którym można programować, w sposób bezpośredni sterownik
klawiatury. Port 64h jest portem sterującym, natomiast port 60h jest portem
buforowym. Zapisując do pierwszego portu umieszczamy dane w rejestrze
sterującym, natomiast odczytując go odczytujemy rejestr stanu. Podobnie,
odczytując port 60h odczytujemy bufor wejściowy, a zapisując zapisujemy do
bufora wyjściowego. Zanim odczytamy bufor wejściowy należy się upewnić, że
dane, których oczekujemy rzeczywiście zostały tam nadesłane. Robimy to
badając bity: pierwszy i piąty rejestru stanu. Rozkazy do sterownika klawiatury
wysyłamy za pośrednictwem portu 64h. Dane, jeśli tego wymaga rozkaz są
wysyłane przez port 60h. Zanim je jednak wyślemy musimy sprawdzić, czy
możemy zapisać do wymienionego wcześniej portu. Robimy to badając stan
pierwszego (licząc od zera) bitu rejestru stanu. Ważniejsze z rozkazów
sterownika to: AAH  obszerny test klawiatury (jeśli zakończy się pomyślnie to
zostanie zwrócona wartość 55h w buforze wejściowym), FFH  diagnostyka
klawiatury (wynik pomyślny to AAH), EDH -sterowanie diodami świecącymi
(wymaga wysłania bajta, którego najmłodsze trzy bity określają stan diod), F3H
 ustalanie opóznienia i prędkości autorepetycji (sterownik wysyła
potwierdzenie i oczekuje bajta definiującego wymienione wielkości), ADH 
zablokowanie klawiatury i AEH  odblokowanie klawiatury.
5. Zadania
1. [1 punkty] Napisz program, który odwołując się bezpośrednio do pamięci
karty graficznej w trybie tekstowym zaprezentuje na ekranie monitora
prostą animację.
2. [2 punkty] Napisz program, który będzie wypisywał na ekran, na bieżąco
zawartość bufora klawiatury i stan jego wskazników.
3
3. [1 punkty] Napisz program, który będzie zapalał cyklicznie diody na
klawiaturze do czasu naciśnięcia przez użytkownika klawisza  Enter , a
następnie wydrukuje na ekran wynik testu klawiatury.
4


Wyszukiwarka

Podobne podstrony:
SO instrukcja 1
SO instrukcja 4
SO instrukcja 5
SO instrukcja 6
instrukcja prezentacja2
instrukcja bhp przy obsludze euro grilla
DS1000PL Instrukcja
Blaupunkt CR5WH Alarm Clock Radio instrukcja EN i PL
Instrukcja do cwiczenia 4 Pomiary oscyloskopowe
Instrukcja F (2010)
Instrukcja Programowania Zelio Logic 2 wersja polska
Instrukcja kociol MODERATOR 75 200kW pl

więcej podobnych podstron