Wróciłem ostatnio do jednego z moich starych projektów, komputerka retro na polskim procesorze MCY7880. Jego pierwotna wersja została zmontowana na płytkach uniwersalnych, z zastosowaniem dużej ilości kynaru.
W międzyczasie zacząłem projektować bardziej finalną wersję, zmontowaną na dwóch (finalnie trzech) płytkach drukowanych (ręcznie trawionych, jednostronnych, z dużą liczbą kynarowych mostków po stronie elementów).
Po odpaleniu okazało się jednak, że występują pewne problemy. TinyBsic zgłasza się na porcie szeregowym. Jednak zazwyczaj komputer zawiesza się już po otrzymaniu pojedynczego znaku (i odesłaniu echa). Czasem jednak (bardzo rzadko) udawało mi się trafić na moment, kiedy komputer pracował na tyle długo, że udawało mi się wbić kawałek kodu w BASIC-u. Nigdy jednak nie pracował na tyle długo, żebym był w stanie wprowadzić choćby wypisywanie czegoś w pętli - komputer wieszał się zanim zdążyłem wykonać "RUN".
Najwyraźniej problem jest związany z aktywnością użytkownika, bo jeśli nie będę robił nic po resecie, to komputer sam z siebie się nie zawiesi. Będzie czekał na wysłanie pierwszego znaku i (zazwyczaj) zawiesi się właśnie dopiero po odesłaniu echa.
Początkowo sądziłem, że wina może leżeć po stronie zbyt cienkich kabli zasilających. Jednak po ich wyminie na znacznie grubsze problem wciąż występuje.
Komputerek składa się z dwóch płytek. Jedna zawiera procesor, bufory szyny adresowej, pamięci RAM oraz ROM, dekoder adresów, a także jeden port wyjściowy za pomoc którego można migać dwiema diodami. Jeśli odpalam tę pojedynczą płytkę z jakimś prostym programem do migania diodami - wszystko zdaje się działać stabilnie. Problemy najwyraźniej pojawiają się po podpięciu drugiej płytki, która zwiera peryferia (DMA, RTC, UART 8251, timer 8253, kontroler klawiatury
8242, kontroler przerwań 8259), przy próbie odpalenia TinyBasic'a.Czy możliwe, że winę za taki stan rzeczy ponoszą układy z rodziny 74HCT, zastosowane w dekoderach adresów i innej "pomocniczej" logice? Wydawało mi się, że są one zgodne ze starą elektroniką z czasów TTL, ale może jednak NMOS-y od CEMI nie bardzo będą z nimi współpracowały? Bo chyba pamięci SRAM na 100ns nie będą zbyt wolne dla systemu na 8080...
Ktoś ma jakieś sugestie co do dalszego debugowania? Powinienem się czemuś przyjrzeć za pomoc analizatora stanów logicznych lub oscyloskopu?