[ Pobierz całość w formacie PDF ]
ługiwaniu się zegarami i przekazywaniu sterowania innym prog-
ramom. Dostęp do podprogramów systemowych odbywa się na dwa
sposoby: za pośrednictwem skoków do adresów w ROM lub za poś-
rednictwem rejestrów-cieni w RAM.
--- 176 ---
Podsystem wejścia-wyjścia. OS zapewnia programiście szero-
kie możliwości korzystania z urządzeń zewnętrznych. Omówimy
je w punkcie 9.8.
Programowanie w czasie rzeczywistym. Wyposażenie OS skła-
da się tu przede wszystkim z zegarów systemowych, sprzętowych,
liczących czas w tempie od pół mikrosekundy do paru sekund,
oraz programowych odliczających pięćdziesiąte części sekundy.
Zbiory znaków. CHARSET1 i CHARSET2 można wykorzystać
bezpośrednio lub redefiniować w RAM.
Pakiet zmienno-pozycyjny. Podprogramy wykorzystują aryt-
metykę BCD do wykonywania wielu funkcji. Omówimy je w punkcie
9.9.
9.7 Przerwania
Podczas wykonywania programu zachodzą zdarzenia wymagają-
ce natychmiastowej reakcji 6502 i komputera. Należy do nich
wprowadzanie danych z klawiatury,współpraca ze stacją dyskie-
tek, odświeżanie ładunków w pamięci wykonywane co ułamek se-
kundy przez specjalny układ i wiele innych zdarzeń. Na wszyst-
kie takie sytuacje w 6502 przewidziano wywołanie p r z e r-
w a ń. W chwili przerwania wykonanie bieżącego programu ulega
czasowemu wstrzymaniu, a wywoływany jest specjalny program ob-
sługi przerwania. Po jego wykonaniu sterowanie przekazywane
jest na powrót programowi, który był wykonywany przed przerwa-
niem.
6502 przewiduje przerwania trzech typów:
- IRQ (interrupt request) - na żądanie użytkownika wek-
tor zawierający adres programu ich obsługi znajduje się pod
FFFE hex;
- NMI (non maskable interrupt) - niemaskowalne czyli w
zasadzie ustanawiane przez system. Wektor programu obsługi
znajduje się pod FFFA hex;
- RESET - przerwanie zimnego lub gorącego startu, wywoły-
wane w szczególności przez naciśnięcie klawisza RESET. Wektor
odczytujemy pod FFFC.
Duża część przerwań wywoływana jest przez układy wewnęt-
--- 177 ---
rzne komputera bez udziału programującego. Jednakże może on
również wykorzystać przerwania do własnych potrzeb.
Zasadniczy mechanizm ich obsługi tworzy 6502 z pomocą
trzech rozkazów: SEI, CLI i RTI oraz wspomnianych adresów na
szczycie ROM.
SEI - set interrupt disable - ustawia znacznik I w rejest-
rze stanu procesora P. Powoduje to, że od tej chwili wszelkie
przerwania IRQ są z a b r o n i o n e. Dlaczego stosuje się
ten krok? Po to, by wykonywane w owej chwili przez program
czynności związane z ustanowieniem i wykonaniem nowego przer-
wania nie mogły być zakłócone przez jakiekolwiek inne niespo-
dziewane przerwanie.
Odwrotną czynność, to znaczy włączenie działającego w
komputerze systemu przerwań wykonuje rozkaz CLI - clear inter-
rupt disable . Kasuje on znacznik I.
Dla zrozumienia działania RTI konieczna jest dodatkowa
informacja. Otóż przy każdym wywołaniu programu obsługi przer-
wania 6502 automatycznie umieszcza na stosie wartości liczni-
ka programu PCH i PCL, tak jak to czyni JSR, ale dodatkowo
wstawia na stos także stan rejestru P s p r z e d przerwa-
nia. Tak więc w rejestrze P czasowo wstawionym na stos znacz-
nik zakazu przerwań jest skasowany. Dodajmy tu, że w wielu
przypadkach celowe jest przechowanie na stosie również wartoś-
ci A, X i Y sprzed przerwania, co np. przy wywołaniu pustego
przerwania pionowego automatycznie wykonuje OS, a w wielu in-
nych wypadkach powinniśmy uczynić my.
Program obsługi przerwania kończyć trzeba rozkazem RTI,
który odtwarza dawne rejestry P i PC.
Tak przedstawia się ogólny mechanizm przerwań, jaki two-
rzy mikroprocesor 6502. Jest to, oczywiście, dopiero ogólną
ramą, w którą OS Atari wpisuje szereg bardzo użytecznych dla
programującego przerwań.
9.7.1 Rodzaje przerwań w Atari
Jak użytkownik może wykorzystać mechanizm przerwań? Od-
powiedz nie jest prosta wobec zróżnicowania przerwań i nieco
odmiennych dróg ich obsługi. Najogólniej mówiąc, należy spo-
--- 178 ---
wodować, by komputer zaczął wykonywać nasz program obsługi
przerwania zamiast standardowego. Z reguły wymaga to stosowa-
nia języka maszynowego.
W Atari, podobnie jak we wszystkich komputerach opartych
na 6502,istnieją trzy typy przerwań: NMI, RESET i IRQ. Stosu-
nkowo najmniej jest do powiedzenia o drugim z nich. Układy
komputera dowiadują się o nim, gdy włączamy komputer, naciska-
my klawisz RESET lub wywołujemy program zimnego bądz gorącego
startu. OS uruchamia wówczas program obsługi tego przerwania,
który przewiduje bardzo liczne czynności związane z przygoto-
waniem komputera do pracy. RESET nie ma wektora, do którego
moglibyśmy wpisać nasz program obsługi. Natomiast duże znacze-
nie ma wektor C-D (12-13 dec). Jeżeli wpiszemy tu adres
startu naszego programu, to po RESET nastąpi ponowne jego uru-
chomienie.
RESET należy do kategorii przerwań NMI i podobnie jak
dwa pozostałe obsługiwany jest przez ANTIC.
Przerwania niemaskowalne są zgodnie z nazwą takimi, któ-
rych nie można zamaskować czyli powstrzymać. Mają one najwyż-
szy priorytet. W przypadku RESET jest to oczywiste, nie można
pracować na komputerze, który nie jest do tego gotów. Dwa po-
zostałe przerwania NMI wiążą się z równie konieczną czynnoś-
cią wyprowadzania obrazu na ekran. Są to przerwania: listy
obrazu (display list interrupt - DLI) i synchronizacji piono-
wej czyli pustego przerwania pionowego (vertical blank inter-
rupt - VBI). Są one wywoływane przez system w regularnych od-
stępach czasu.
Możliwość wykorzystania obu przerwań wynika z tego, że w
pierwszym pozostaje kilkadziesiąt cykli, a w drugim nawet do [ Pobierz całość w formacie PDF ]
zanotowane.pl doc.pisz.pl pdf.pisz.pl aikidobyd.xlx.pl
ługiwaniu się zegarami i przekazywaniu sterowania innym prog-
ramom. Dostęp do podprogramów systemowych odbywa się na dwa
sposoby: za pośrednictwem skoków do adresów w ROM lub za poś-
rednictwem rejestrów-cieni w RAM.
--- 176 ---
Podsystem wejścia-wyjścia. OS zapewnia programiście szero-
kie możliwości korzystania z urządzeń zewnętrznych. Omówimy
je w punkcie 9.8.
Programowanie w czasie rzeczywistym. Wyposażenie OS skła-
da się tu przede wszystkim z zegarów systemowych, sprzętowych,
liczących czas w tempie od pół mikrosekundy do paru sekund,
oraz programowych odliczających pięćdziesiąte części sekundy.
Zbiory znaków. CHARSET1 i CHARSET2 można wykorzystać
bezpośrednio lub redefiniować w RAM.
Pakiet zmienno-pozycyjny. Podprogramy wykorzystują aryt-
metykę BCD do wykonywania wielu funkcji. Omówimy je w punkcie
9.9.
9.7 Przerwania
Podczas wykonywania programu zachodzą zdarzenia wymagają-
ce natychmiastowej reakcji 6502 i komputera. Należy do nich
wprowadzanie danych z klawiatury,współpraca ze stacją dyskie-
tek, odświeżanie ładunków w pamięci wykonywane co ułamek se-
kundy przez specjalny układ i wiele innych zdarzeń. Na wszyst-
kie takie sytuacje w 6502 przewidziano wywołanie p r z e r-
w a ń. W chwili przerwania wykonanie bieżącego programu ulega
czasowemu wstrzymaniu, a wywoływany jest specjalny program ob-
sługi przerwania. Po jego wykonaniu sterowanie przekazywane
jest na powrót programowi, który był wykonywany przed przerwa-
niem.
6502 przewiduje przerwania trzech typów:
- IRQ (interrupt request) - na żądanie użytkownika wek-
tor zawierający adres programu ich obsługi znajduje się pod
FFFE hex;
- NMI (non maskable interrupt) - niemaskowalne czyli w
zasadzie ustanawiane przez system. Wektor programu obsługi
znajduje się pod FFFA hex;
- RESET - przerwanie zimnego lub gorącego startu, wywoły-
wane w szczególności przez naciśnięcie klawisza RESET. Wektor
odczytujemy pod FFFC.
Duża część przerwań wywoływana jest przez układy wewnęt-
--- 177 ---
rzne komputera bez udziału programującego. Jednakże może on
również wykorzystać przerwania do własnych potrzeb.
Zasadniczy mechanizm ich obsługi tworzy 6502 z pomocą
trzech rozkazów: SEI, CLI i RTI oraz wspomnianych adresów na
szczycie ROM.
SEI - set interrupt disable - ustawia znacznik I w rejest-
rze stanu procesora P. Powoduje to, że od tej chwili wszelkie
przerwania IRQ są z a b r o n i o n e. Dlaczego stosuje się
ten krok? Po to, by wykonywane w owej chwili przez program
czynności związane z ustanowieniem i wykonaniem nowego przer-
wania nie mogły być zakłócone przez jakiekolwiek inne niespo-
dziewane przerwanie.
Odwrotną czynność, to znaczy włączenie działającego w
komputerze systemu przerwań wykonuje rozkaz CLI - clear inter-
rupt disable . Kasuje on znacznik I.
Dla zrozumienia działania RTI konieczna jest dodatkowa
informacja. Otóż przy każdym wywołaniu programu obsługi przer-
wania 6502 automatycznie umieszcza na stosie wartości liczni-
ka programu PCH i PCL, tak jak to czyni JSR, ale dodatkowo
wstawia na stos także stan rejestru P s p r z e d przerwa-
nia. Tak więc w rejestrze P czasowo wstawionym na stos znacz-
nik zakazu przerwań jest skasowany. Dodajmy tu, że w wielu
przypadkach celowe jest przechowanie na stosie również wartoś-
ci A, X i Y sprzed przerwania, co np. przy wywołaniu pustego
przerwania pionowego automatycznie wykonuje OS, a w wielu in-
nych wypadkach powinniśmy uczynić my.
Program obsługi przerwania kończyć trzeba rozkazem RTI,
który odtwarza dawne rejestry P i PC.
Tak przedstawia się ogólny mechanizm przerwań, jaki two-
rzy mikroprocesor 6502. Jest to, oczywiście, dopiero ogólną
ramą, w którą OS Atari wpisuje szereg bardzo użytecznych dla
programującego przerwań.
9.7.1 Rodzaje przerwań w Atari
Jak użytkownik może wykorzystać mechanizm przerwań? Od-
powiedz nie jest prosta wobec zróżnicowania przerwań i nieco
odmiennych dróg ich obsługi. Najogólniej mówiąc, należy spo-
--- 178 ---
wodować, by komputer zaczął wykonywać nasz program obsługi
przerwania zamiast standardowego. Z reguły wymaga to stosowa-
nia języka maszynowego.
W Atari, podobnie jak we wszystkich komputerach opartych
na 6502,istnieją trzy typy przerwań: NMI, RESET i IRQ. Stosu-
nkowo najmniej jest do powiedzenia o drugim z nich. Układy
komputera dowiadują się o nim, gdy włączamy komputer, naciska-
my klawisz RESET lub wywołujemy program zimnego bądz gorącego
startu. OS uruchamia wówczas program obsługi tego przerwania,
który przewiduje bardzo liczne czynności związane z przygoto-
waniem komputera do pracy. RESET nie ma wektora, do którego
moglibyśmy wpisać nasz program obsługi. Natomiast duże znacze-
nie ma wektor C-D (12-13 dec). Jeżeli wpiszemy tu adres
startu naszego programu, to po RESET nastąpi ponowne jego uru-
chomienie.
RESET należy do kategorii przerwań NMI i podobnie jak
dwa pozostałe obsługiwany jest przez ANTIC.
Przerwania niemaskowalne są zgodnie z nazwą takimi, któ-
rych nie można zamaskować czyli powstrzymać. Mają one najwyż-
szy priorytet. W przypadku RESET jest to oczywiste, nie można
pracować na komputerze, który nie jest do tego gotów. Dwa po-
zostałe przerwania NMI wiążą się z równie konieczną czynnoś-
cią wyprowadzania obrazu na ekran. Są to przerwania: listy
obrazu (display list interrupt - DLI) i synchronizacji piono-
wej czyli pustego przerwania pionowego (vertical blank inter-
rupt - VBI). Są one wywoływane przez system w regularnych od-
stępach czasu.
Możliwość wykorzystania obu przerwań wynika z tego, że w
pierwszym pozostaje kilkadziesiąt cykli, a w drugim nawet do [ Pobierz całość w formacie PDF ]