Wróciłem ostatnio to własnych projektów retro i próbuję uruchomić kolejny komputerek pracujący pod kontrolą CP/M. Projekt jest do pewnego momentu oparty na moim wcześniejszym projekcie na 8080, gdzie również miałem problemy z kartą CF (opisywany
tutaj). Tym razem jednak zastosowałem procesor 8085.
Generalnie na chwilę obecną działa wszystko za wyjątkiem właśnie wspomnianej karty CF. Jestem w stanie odpalić TinyBasic i wykonywać w nim programy. Działają peryferia, a to pozwala mi sądzić, że dekodowanie adresów również pracuje poprawnie. Niestety nie jestem w stanie odczytać danych z karty. Jakaś komunikacja pomiędzy nią i systemem występuje, bo po uruchomieniu komputera, podczas inicjacji karty na chwilę zapala się dioda aktywności. Niestety, ani nazwa karty ani MBR nie zostają odczytane poprawnie. Kod sterownika karty jest sprawdzony, bo pochodzi z wcześniejszego komputera na 8080.
Połączenia wyglądają następująco:
Linie D0..D7 są buforowane za pomocą 74HCT245. Kierunek bufora określa linia RD (nieopóźniona), a jego aktywację przeprowadza sygnał CF_CS z dekodera adresów I/O. Dekoder jest bramkowany linią IO_M, więc nie będzie dochodziło do aktywacji bufora podczas odczytów z pamięci. Generalnie układ połączeń bufora pochodzi z komputera na 8080, gdzie nie tylko działał bez problemu, ale rozwiązał problemy z kartą. Próbowałem podłączyć kartę z pominięciem bufora, ale problem nie zniknął.
Linie RD oraz WR dla karty są opóźnione o jeden cykl zegara (praktyka zalecana przy interfejsowaniu kart CF ze starymi procesorami). Na oscyloskopie faktycznie widać, że linie przechodzą w stan niski nieco później od linii systemowych, ale wracaja do wysokiego w tym samym momencie. Czyli działają tak, jak powinny.
Opóźnienie jest zrealizowane za pomocą układu GAL16V8A, za pomocą następujących równań:
DCFRDFF.R = RD
DELCFRD = DCFRDFF # RD
DCFWRFF.R = WR
DELCFWR = DCFWRFF # WR
Żeby nie było niejasności - próbowałem też używać karty ze zwykłymi sygnałami RD/WR, bez opóźnień. Nic to nie zmieniło.
Sygnał CS karty pochodzi z dekodera adresów - to ten sam sygnał, który odblokowuje bufor.
Mam dwa egzemplarze tego komputerka. Problem występuje na każdym z nich. Próbowałem też podmieniać procesor na inne egzemplarze, w tym w wersji CMOS. Nic nie pomaga.
Ktoś ma jakiś pomysł gdzie mógłbym szukać przyczyny takiego stanu rzeczy?