to get the file

Transkrypt

to get the file
Instrukcja laboratoryjna
Systemy operacyjne
sem. 1
Ćwiczenie trzecie (dwa zajęcia)
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ę 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 nieposiadają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ć do poznania zasad obsługiwania niektórych z tych urządzeń.
2. Pamięć ekranu
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 również 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:0000h, 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
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
cyklicznego bufora klawiatury (wskazuje pierwszy znak do odebrania) i koniec
cyklicznego bufora klawiatury (wskazuje pierwsze wolne miejsce na
nadchodzący znak). Za każdym razem, kiedy użytkownik naciśnie klawisz do
tego bufora wpisywane są dwa bajty: kod klawisza i kod ASCII.
4. Mysz
Mysz w systemie MS-DOS jest obsługiwana za pomocą przerwania 33h.
Procedura obsługi tego przerwania dostarczana jest jako sterownik myszy przez
jej producenta. Jeśli dostawca myszy nie zaopatrzył jej w sterownik, stosowana
jest domyślna procedura obsługi będąca częścią systemu MS-DOS. Zapewnia
ona między innymi takie funkcje, jak: inicjalizacja myszy, wyświetlenie/ukrycie
kursora, odczytanie stanu przycisków i położenia myszy, odczytanie informacji
o naciśnięciu przycisków myszy.
Więcej informacji na temat obsługi urządzeń wejścia-wyjścia można znaleźć
w rozdziałach 14 i 15 książki „DOS 5 od środka” oraz w rozdziale 14 książki
„Anatomia PC”.
5. Zadania
Podczas pierwszych zajęć należy przynajmniej zrealizować drugie zadanie. Na
drugich zajęciach pozostałe.
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ę (np. przesuwający się kolorowy prostokąt).
2. [2 punkty] Napisz program, który będzie wypisywał na ekran, na bieżąco
zawartość bufora klawiatury i stan jego wskaźników.
3. [1 punkty] Napisz program, który będzie pokazywał kursor myszy oraz
podawał na bieżąco informacje o jego współrzędnych oraz o stanie
przycisków myszy.
3

Podobne dokumenty