Wprowadzenie

16 KB program monitora w Spectrum jest złożonym programem w kodzie maszynowym Z80. Jego ogólna struktura jest bardzo zrozumiała, ponieważ dzieli się on na trzy główne części:

  1. Procedury wejścia/wyjścia.
  2. Interpreter języka BASIC.
  3. Obsługa wyrażeń.

Jednakże te bloki składowe są zbyt duże, aby dało się je łatwo przedstawić i dlatego w tym artykule program monitora jest omawiany w dziesięciu częściach. Teraz omówimy krótko każdą z tych części.

Procedury restartu i tablice.

Na początku programu monitora znajdują się różne procedury "restartu", które wywołuje się jednobajtową instrukcją RST. Wszystkie punkty restartu są wykorzystywane. Na przykład punkt restartu 0008 jest używany przy raportowaniu błędów składniowych w czasie wykonywania się programu.

Tablice w tej części programu monitora przechowują rozwinięte formy nazw instrukcji i funkcji - tzw. symbole oraz kody klawiszy.

Procedura klawiatury.

Klawiatura jest przeszukiwana co 1/50 sekundy (model brytyjski, w modelu amerykańskim jest to 1/60 sekundy), a procedura klawiatury zwraca wymagany kod znaku. Wszystkie klawisze "powtarzają", jeśli zostaną chwilę przytrzymane w stanie wciśniętym, co procedura klawiatury bierze pod uwagę.

Procedury głośnika.

Spectrum posiada wbudowany pojedynczy głośniczek, a nuta jest tworzona przez rytmiczne używanie odpowiedniej instrukcji OUT. W procedurze sterującej podjęto wiele starań, aby zapewnić stałość tonu przez cały czas jego trwania.

Procedury obsługujące magnetofon kasetowy.

Bardzo źle się stało, iż w ZX 81 tak niewiele z programu monitora było przeznaczone do obsługi magnetofonu. Jednakże w Spectrum występuje obszerny blok kodu, umożliwiający wysoki standard pracy z magnetofonem, co jest jedną z najbardziej udanych cech tej maszyny.
Programy w języku BASIC oraz bloki danych są traktowane w ten sam sposób przez wyposażanie ich w "blok nagłówka" (siedemnaście bajtów), który zostaje zapisany najpierw. "Nagłówek" opisuje "blok danych", który został zapisany za nim. Jedną z wad tego systemu jest brak możliwości jakiegokolwiek zabezpieczenia programów.

Procedury obsługi ekranu i drukarki

Wszystkie pozostałe procedury wejścia/wyjścia Spectrum są dostępne poprzez "obszary informacji o kanałach i strumieniach".

W standardowym Spectrum "wejście" możliwe jest tylko z klawiatury, lecz "wyjście" można skierować na drukarkę, do górnej części ekranu telewizyjnego lub do dolnej.

Główna procedura "wejścia" w tej części programu monitora nazywa się EDITOR i pozwala użytkownikowi wprowadzać znaki do dolnej części ekranu.

Procedura PRINT-OUT jest raczej wolna, ponieważ wykorzystuje się ją przy wszelkich sytuacjach. Na przykład, dodanie pojedynczego bajtu do "obszaru wyświetlania" wywołuje rozpatrzenie bieżącego stanu OVER i INVERSE przy każdej okazji.

Procedury wykonawcze.

W tej części programu monitora występuje procedura INITIALISATION oraz "główna pętla wykonawcza" interpretera języka BASIC.

W języku BASIC Spectrum wiersz zwrócony przez procedurę EDITOR zostaje sprawdzony pod katem poprawności składni, a następnie zachowany w obszarze programu, jeśli posiadał na początku numer, albo "wykonany" w przypadku przeciwnym. To wykonanie może z kolei prowadzić do zajęcia się dalszymi poleceniami. (Najbardziej widoczne jest to w przypadku - RUN.)

Interpretacja wierszy języka BASIC oraz rozkazów.

Ta część programu monitora zajmuje się wierszem BASIC jako zbiorem poleceń oraz dalej każdym z tych poleceń jako rozpoczynających się od określonego rozkazu. Dla każdego rozkazu jest odpowiednia procedura w języku maszynowym, której wykonanie wpływa na "interpretację".

Obliczanie wyrażeń.

Spectrum zawiera najbardziej wszechstronną metodę wyznaczania wartości wyrażeń dla wielu typów zmiennych, funkcji i operacji. Znów ta część monitora jest dosyć wolna, z uwagi na obsługiwanie wszystkich możliwych sytuacji.

Szczególnie dobrze zarządzana jest obsługa łańcuchów znakowych. Wszystkie proste łańcuchy są obsługiwane "dynamicznie", a ich stare kopie zostają usunięte, gdy już przestają być potrzebne. Oznacza to, że nie ma potrzeby "zbierania śmieci".

Procedury arytmetyczne.

Spectrum ma dwie postacie liczb. Wartości całkowite w zakresie od -65535 do +65535 są w postaci "zintegrowanej" lub "krótkiej", natomiast pozostałe liczby są w postacie zmiennoprzecinkowej na pięciu bajtach.

Niestety, obecna wersja monitora jest popsuta przez dwa błędy w tej części.

  1. Jest błąd przy dzieleniu, gdzie zostaje zgubiony 34-ty bit wyniku.
  2. Wartość -65536 zostaje czasem zapamiętana w postaci "krótkiej", a innym razem w postaci zmiennoprzecinkowej, co prowadzi do kłopotów.

Kalkulator zmiennoprzecinkowy.

Procedura CALCULATOR obsługuje liczby i łańcuchy wraz z operacjami na nich za pomocą "literałów". W ten sposób można uważać, że w procedurze CALCULATOR jest wewnętrzny język "operujący na stosie".

Ta część programu monitora zawiera procedury dla wszystkich funkcji matematycznych. Przybliżenia SIN x, EXP x, LN x i ATN x są otrzymywane przez rozwinięcia wielomianów Czebyszewa, a pełne szczegóły na ten temat znajdziesz w końcowych rozdziałach.

W całości 16KB program monitora oferuje bardzo szeroki wachlarz rozkazów i funkcji języka BASIC. Jednakże, programistom zawsze brakowało miejsca i dlatego program ten został napisany raczej z myślą o małej zajętości pamięci niż o szybkości działania.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.