Dostosowanie monitora CA80 do procesora Z180.

  CA80 z podmienionym procesorem będzie działał poprawnie, jednak czasem wystąpią małe kłopoty. Pierwszy polega na różnicy taktowania, ponieważ zastosowałem pewne uproszczenie schematu, w celu umożliwienia współpracy z generatorem podłączonym do złącza systemowego.

CA180-mini
CA180-mini.

 

Pierwsze testy robiłem na "starym" oryginalnym CA80, do którego wpinałem różne wersje Z180 przez przewód emulacyjny. Potem zrobiłem wersję "hybryda", która była połączona z Z80-MBC2 poprzez złącze ZS. Wersja CA180-mini jest wypadkową wcześniejszych prób, więc stąd wynika problem. W "normalnych" komputerach CLK jest generowany przez procesor i następnie dzielony przez 2 w celu osiągnięcia wypełnienia 50%. Dopiero ten sygnał jest rozprowadzony do pozostałych podzespołów jako PHI. Konstruktorzy Z180 przewidzieli również zastosowanie innych generatorów o lepszych parametrach i umożliwili wyłączenie wstępnego dzielnika. Wtedy PHI = CLK i właśnie to musimy zrobić na początku. Potrzebna będzie dokumentacja Z180, w której znajdziemy rejestr odpowiedzialny za PHI. 

Z180 CCR
Wszystkie bity po RESET są wyzerowane.


Drugi kłopot, to szybciej działający procesor. Czas wykonywania instrukcji znajdziemy w tej samej dokumentacji. Porównamy je z czasami dla Z80.   W monitorze CA80 wiele procesów zależy od szybkości procesora, np. obsługa magnetofonu. Ale kilka procent niewiele tu zmienia i prawdopodobnie odczyt z taśm nagranych ze standardowym procesorem będzie bezbłędny ( system manchester jest odporny na zakłócenia - opis MIK05 str. 61.).  Bardziej wrażliwa jest obsługa pracy krokowej, gdzie Z80CTC generuje przerwanie w trakcie wykonywania pierwszego rozkazu programu użytkownika. Przygotowanie procesora powinno trwać 158 taktów CLK, a Z180 wykona to zadanie w ciągu 139 taktów. Zanim CTC wygeneruje przerwanie wykona się jeszcze kilka rozkazów... Jak to zmienić nie ingerując w program monitora? Niestety jest to niemożliwe, ale spróbujmy zrobić to jak najbardziej elegancko.

Z180 vs Z80
Czas wejścia do programu użytkownika
Z180 instructions
Czasy wykonywania instrukcji Z180.

Z80 NOP
NOP dla Z80 trwa 1 takt dłużej.


Pierwsza nasuwa się modyfikacja stałej zliczania CTC. Możemy ją zmniejszyć o jeden, co skróci liczenie do 144 taktów ( preskaler 16 ). Jest to jeszcze zbyt dużo, bo najkrótsze rozkazy trwają zaledwie trzy takty zegara ( w Z80 cztery ), co spowoduje przeskakiwanie po dwa lub trzy rozkazy. Na szczęście Pan Gardynik również musiał dopasować liczbę taktów i użył dodatkowego rozkazu NOP, czyli dodał cztery takty. Niestety NOP w Z180 trwa tylko trzy, a nie ma miejsca na dodanie kolejnego. Potrzebujemy dodatkowych trzech lub czterech taktów... Pozostaje zamiana NOP na inny rozkaz, ale nie może on ingerować w program. Musimy wybrać rozkaz jednobajtowy, który nie zmienia stosu, nie wpisuje nic do pamięci i trwa 7 taktów CLK. Po zawężeniu zakresu poszukiwań znalazł się kandydat: ADD HL,BC. Rejestry HL i tak zaraz będą modyfikowane, więc w niczym to nie przeszkadza, a szczęśliwym zbiegiem okoliczności kod rozkazu jest równy TC0-1 czyli 9, więc możemy tę samą wartość wpisać w dwa miejsca. Teraz pozostaje sprawdzić, czy to rozwiązanie działa.

Obliczenia dla Z180
Propozycja zmian programu pracy krokowej.

 

Porównanie fragmentu kodu Z80 vs Z180
Drobne zmiany nie powodujące zwiększenia długości programu.

Program ustawiający parametry PHI
Zmiany są możliwe gdy monitor jest w RAM.

Komentarze

Popularne posty z tego bloga

Uruchamiamy CA80 na RCbus.

Magnetofon CA80.