Projekt posuwa się do przodu. Na ten moment gotowy jest soft po stronie klienta (obecnie to PC), które dekoduje obraz ZX (.scr) i potrafi go wyświetlić (różne opcje skalowania, sztucznego interlace'u i antyaliasingu). Jeśli udałoby się poprawnie zaimplementować podsłuchiwanie pamięci, to przy okazji powstałby dość tani (aczkolwiek wymagający komputera lub RPI) konwerter HDMI do wyświetlenia zawartości ekranu ZX w oknie na PC lub na TV/monitorze.
Obecnie korzystam z Teensy 3.1 do podsłuchiwania szyny ZX Spectrum i pojawił się problem. O ile wydaje mi się, że sygnały RD/WR i MEMREQ odkodowuję poprawnie, o tyle po odczytaniu szyny adresowej dostaję bzdury, a raczej nie to, czego się spodziewałem.
Przykładowo, po uruchomieniu programu BASIC, który POKEuje adres 16384 nigdy nie widzę go po odkodowaniu szyny adresowej przy niskim sygnale WR i MEMREQ. Teensy działa z taktowaniem 96Mhz więc (teoretycznie) powinno się wyrobić z odkodowaniem adresu, w trakcie kiedy Z80 próbuje zapisać dane.
Szynę odkodowuję zgodnie ze algorytmem: A0-bit najmniej istotny, bit A15 << 15. Co może iść nie tak? ZX podczas "jałowej" pracy - czyli uruchomiony kursor BASICa wygląda jakby próbował pisać w wysokie adresy RAM (45-60 KB), nie wykrywam poprawnie zapisu do pamięci video podczas komendy CLS i tak dalej, widzę zapisy do obszaru adresowego ROMu co jest już chyba całkiem bez sensu. Pomyślałem, że może część z tych zapisów to obsługa IO, więc dodałem detekcję IOREQ ale nie poprawiło niczego.
Jedyny pomysł jaki mam na ten moment (po wielu próbach) to ustawianie niskiego stanu WAIT podczas dekodowania adresu (może część bitów zdąży się zmienić podczas odczytywania pinów?)
A może jest prostszy sposób odczytywania pamięci bez konieczności ciasnego dopasowania timingów bezpośrednio z układów pamięci?