Praca krokowa z Z180.

  Okazało się, że Z180 jest bardziej skomplikowany, niż myślałem - zmiany wprowadzone w zeszłym tygodniu nie wystarczyły. W dokumentacji znalazłem jeszcze kilka rejestrów, które mogą mieć znaczenie.

Z180 - DRAM refresh
Odświeżanie pamięci generuje dodatkowe takty TW.


RCR - Refresh Control Register.


Po RESET odświeżanie dynamicznej RAM jest włączone i dodaje dodatkowe TW. Z80 robił to bez wpływu na pracę procesora. Ponieważ mamy RAM statyczną, nie jest nam ta funkcja potrzebna i możemy ją wyłączyć.

OMCR - Z80 I/O mode
Zmianę należy wprowadzić przed pierwszą instrukcją we/wy.


OMCR - Operation Mode Control Register.


Należy wyzerować bit IOC, żeby włączyć pracę zgodną z układami rodziny Z80, np. CTC.

DCNTL - additional WAIT states
Wyłączamy zbędne cykle TW.


DCNTL - DMA/WAIT Control Register.


Od tego rejestru zależy liczba TW dodawanych do każdego dostępu do pamięci oraz zewnętrznych układów we/wy. Po RESET ustawiane są maksymalne wartości, które umożliwiają pracę z wolnymi peryferiami przy taktowaniu procesora wysokimi częstotliwościami. W CA80 standardowo CLK = 4 MHz, więc nie potrzebujemy żadnych TW. 

DCNTL - Z180
Dodatkowe cykle WAIT prawie dwukrotnie spowalniają wykonanie programu.


Po wprowadzeniu zmian, przyszedł czas na testy. Okazało się, że wprowadzanie dodatkowych cykli w rozkazie ADD HL,BC (zamiast NOP) jest niepotrzebne - wystarczy zmienić stałą TC0 na 9.

Z180 setup routine
Program rozruchowy Z180 dla CA80.


Ten krótki program, to "nakładka" na oryginalny monitor CA80. Wprowadzone przez Pana Gardynika cztery zera na początku przydały się do umieszczenia tam tymczasowo rozkazu skoku. W czasie rozruchu komputera jednorazowo zostaje wykonany dodatkowy kod, który dostosuje "nowy" procesor do naszych potrzeb, zmieni jeden bajt w monitorze (stałą TC0) i na koniec usunie skok spod adresu 0 - zatrze ślady.


Wszystkie pliki, które należy umieścić na karcie SD, są w repozytorium.

Komentarze

Popularne posty z tego bloga

Uruchamiamy CA80 na RCbus.

Magnetofon CA80.