Ok, kolejny update. Pomiędzy tymi danymi występuje istotna zależność. Wygląda na to, że co drugi bajt z sektora MBR jest pomijany przy odczycie. Gdy zabraknie danych, do bufora trafiają niewłaściwe wartości.
Zaczynam zastanawiać się czy faktycznie stary trop z fałszywymi aktywacjami na linii CF_CS nie był poprawny. Oryginalnie miałem tam niskie szpilki, związane ze stanami nieustalonymi na początku cyklu, gdy 74HCT573 stawał się "przezroczysty" dla sygnałów na liniach AD0..AD7, które przez chwilę miały stany nieustalone. Zastosowanie 74HCT574 (zatrzaskiwanego zanegowanym sygnałem ALE) nie rozwiązało tego problemu do końca, bo jeszcze jednej rzeczy nie wziąłem pod uwagę - sygnał IO/M (który w tej chwili jest używany do odblokowywania dekoderów adresów) zmienia swój stan na samym początku cyklu pracy CPU, czyli jeszcze przed zatrzaśnięciem młodszego bajtu adresu w 574. Tak więc przez krótką chwilę dochodzi do sytuacji, kiedy w rejestrze mamy jeszcze starą wartość, ale dekoder adresów I/O zdąży zostać odblokowany wysokim stanem IO/M.
Byłem przekonany, że taka sytuacja nie powinna wpływać na działanie karty, bo te fałszywe niskie stany na linii CS nie są skorelowane z aktywnością RW/RD. Na działanie innych peryferiów najwyraźniej nie ma to wpływu. Jednak po obejrzeniu zawartości bufora znów zaczynam mieć wątpliwości. Może jednak jakiś wskaźnik adresu wewnątrz karty jest inkrementowany fałszywym sygnałem na linii CS?
Chyba z ciekawości spróbuję zatrzaskiwać IO/M w 7474 za pomocą zanegowanego sygnału ALE i dopiero tak wygenerowanym sygnałem odblokowywać dekodery adresów. Wtedy powinienem mieć pewność, że aktywność na liniach CS pojawi się dopiero wtedy, gdy w 574 będzie znajdowała się poprawna i stabilna połówka adresu.
To, albo faktycznie słabo prowadzona masa miesza w działaniu karty. Ale żeby wyniki były aż tak powtarzalne?