forum speccy.pl
ZX Spectrum => HARDWARE => NAPRAWY => Wątek zaczęty przez: marmazzaa w 2022.12.01, 11:42:59
-
Cześć,
wróciłem do problemów z działaniem interfejsu kempston (cały czas aktywny ruch w prawo). Okazało się że problem występuje nawet przy odpiętym interfejsie i uruchomieniu gry.
Podmieniłem na ULA na sprawdzony - bez zmian. Wreszcie wpaliłem ROM diagnostyczny od Retroleum i wypluł taki oto komunikat:
*** ALERT <KEY STUCK>**
Port 254 - %11011101
Nie jest to problem związany z klawiaturą - jest tak samo bez niej.
Zatem któryś z układów wpięty w szynę danych jest zatrzaśnięty w stanie wysokim, dobrze myślę ?
-
Miałem kiedyś przypadek, że przyciśnięta była od spodu płyty przydługa końcówka rezystora podciągającego linie klawiatury do sąsiadującej z nim nogi od ULA. Są zlokalizowane bardzo blisko siebie.
-
Sprawdź, czy nie masz jakiegoś syfu w gnieździe klawiatury, od spodu płyty albo na płycie zwierającego ścieżki. Może to jest aż tak proste.
-
Dzięki za odpowiedzi.
Przyjrzałem się płycie od góry i spodu. ULA, ROM i 2 "dolne" pamięci są w podstawkach. Poza kilkoma podejrzanymi ścieżkami w okolicy RAMu nie znalazłem od spodu nic niezwykłego.
Klawiatura działa bez zastrzeżeń, również ładowanie zarówno z taśmy jak i z Just nano SD działa znakomicie. Problem dotyczy jedynie samoczynnej aktywacji joysticka w prawo poprzez interfejs kempston.
Jak zaznaczyłem wcześniej - nawet bez wpiętego interfejsu kempston prawy kierunek jest stale wciśnięty.
-
Jakie wartość otrzymujesz po wykonaniu programu:
10 PRINT IN 31
20 PRINT IN 254
RUN
Bez podłączonego czegokolwiek do złącza krawędziowego oraz wejścia/wyjścia magnetofonowego.
-
208
73
-
Cześć, macie jeszcze jakieś sugestie ?
-
Odpaliłem emulator, bo tak było szybciej, i IN 254 daje mi zawsze wynik 95 (bez wciśniętych klawiszy).
Czy ten komputer w ogóle odpala do basica?
-
@trojacek: Właśnie udowodniłeś, że emulator którego używasz, nie odzwierciedla zachowania sprzętu w 100% :D
Moim zdaniem, jedynymi sensownymi i prawidłowymi odpowiedziami na wywołanie IN 254, przy braku sygnału na wejściu magnetofonu oraz zwarcia na klawiaturze, są: 191 lub 255.
Dlaczego?
Zapiszmy binarnie otrzymane odpowiedzi:
Dec = 7654 3210b
95 = 0101 1111 (emulator)
191 = 1011 1111 (hardware)
255 = 1111 1111 (hardware)
Przy odczycie z portu 254 stany poszczególnych bitów pojawiające na szynie danych zostały przypisane następująco:
- D0...D4 - klawiatura
- D5 - bez znaczenia (*)
- D6 - wejście EAR (**)
- D7 - bez znaczenia (*)
* - bez znaczenia, czyli 1 lub 0.
** - w zależności od wersji ZX Spectrum (ULA), może być 0 lub 1.
I na tym można by zakończyć dywagacje, ponieważ wartości bitów D5 i D7 nie mają znaczenia, więc wszystkie 3 wartości wydają się prawidłowe. ALE w ZX Spectrum szyna danych (cała) jest podciągnięta do stanu wysokiego poprzez rezystory (R9-R16). Dlatego D5 i D7 będą w stanie wysokim (1), a nie niskim (0), jak w przypadku odpowiedz emulatora. Reasumując, na wywołane IN 254 i braku urządzeń siejących po szynie danych, powinniśmy otrzymać:
1x11 1111 czyli 191 lub 255.
Joy w standardzie Kempstona:
Przy odczycie z portu 31 (IN 31) i braku czegokolwiek siejącego po szynie danych, jedyną poprawną odpowiedzią jest 255. Wyjaśnienie dlaczego tak jest, jest powyżej.
Jeśli w systemie obecny jest Kempston, w jego stanie bezczynnym (żadne z kierunków ani FIRE nie są aktywne) odczytana wartość wyniesie 0. A wynika to z jego konstrukcji.
Dlatego uważam, że wszystkie inne odpowiedzi, niż przywołane powyżej, są błędne.
-
@KWF: Zgadzam się z Tobą, :)
ja również widzę 0 na IN 31 i wartość 255 na IN 254 (na Spectrum 48 i Harlequinie 128).
-
@trojacek: Właśnie udowodniłeś, że emulator którego używasz, nie odzwierciedla zachowania sprzętu w 100% :D
No chyba wręcz przeciwnie :)
Zapomniałem, że moja defaultowa konfiguracja w Fuse to TC2048+divIDE.
Jak przełączyłem na Spectrum 48K bez interfejsów, to wychodzi 191 :)
Tak czy siak, jak napisałeś, istotne dane są na liniach D0..D4. A tu mamy:
208
73
I nie wygląda mi to dobrze. Bo jeśli IN 254 = 73, to binarnie będzie to %01001001 - bardzo daleko od 191 lub 255.
Stąd moje pytanie, czy ten komputer zgłasza się jak powinien, bo nie wydaje mi się to możliwe, ale:
problem występuje nawet przy odpiętym interfejsie i uruchomieniu gry.
No i mnie to frapuje, skoro gra się daje załadować... Chyba, że z ROM?
-
Cześć,
Zwróciłem więc uwagę na ROM wsadzony do mojego egzemplarza. Ktoś zmodował płytę aby działała z EPROMem.
Znalazłem w internecie ciekawy opis, mianowicie:
Essentially, you need to make an OR gate, its inputs being /ROM_CS and /MREQ and the output going to EPROM pin 20. The OR gate can be a simple diode and resistor affair, Schottky diodes are recommended (EG: BAT85) as they have a lower voltage drop than plain silicon diodes but the ubiquitous 1N4148s have been known to work. A value of 10K for the resistor should be fine. (Note: I have seen Spectrum motherboards where the ROM has been replaced with an EPROM sometime in the past, but pin 20 has simply been connected to /ROM_CS without forming an OR gate with /MREQ – This is bad: The Spectrum appears to work normally but there will be a keyboard issue if a program reads from port $00fe (EG: to detect any key press in one operation) – ROM data will be put on the databus during the read, overruling that supplied by the ULA from the keyboard.
Źródło:
http://blog.retroleum.co.uk/electronics-articles/how-to-replace-the-rom-of-a-zx-spectrum-with-an-eprom/ (http://blog.retroleum.co.uk/electronics-articles/how-to-replace-the-rom-of-a-zx-spectrum-with-an-eprom/)
Moja płyta ma podobną modyfikację w postaci dwóch diod w okolicy głośnika, nie wiem jednak czy jest to fabryczny mod nie związany w ogóle z podmianą ROMu na EPROM.
-
To modyfikacja przetwornicy. Może być fabryczna.
-
Jest fabryczna.
To Issue 3B.
-
Zgodnie z tematem to 4A :)
marmazzaa: u Ciebie nie widać modyfikacji pod EPROM, dodaj te dwie diody i rezystor zgodnie z opisem na retroleum.
-
To przepraszam. Bo ta na zdjęciu powyżej, to 3B.
4A wygląda jak poniżej.
-
Wiem, że się czepiam, ale pierwsze zdjęcie to na pewno nie 3B - widać choćby po zworkach przy cewce. Ale w związku z tym ciekaw jestem tej przeróbki przetwornicy. Czy takie robiono fabrycznie, czy to radosna twórczość kogoś kto wymieniał TR4? W sumie przetwornice w issue 4A/B zawierały już poprawki ...
-
Większość plyt które naprawiałem z taką modyfikacją diodową to były płyty 3B.
Ale możliwe, że i w 4A coś takiego miało miejsce.
W płytach ZX 48k nigdy nic nie wiadomo, szczególnie z przetwornicą.
-
Na pierwszym zdjęciu tego wątku jest płyta 4A zmontowana według schematu 4B.
-
No i się wyjaśniło :)
-
Cześć,
wykonałem modyfikację pod EPROM.
Aktualnie po wpisaniu kodu:
10 PRINT IN 31
20 PRINT IN 254
RUN
Pojawia się
56
255
Więc nie do końca tak jak pisaliście. Ale najważniejsze - Kempston działa jak trzeba!
-
56 to odczyt z podpietym interfejsem Kempstona czy bez niego? W sumie dla obu przypadkow jest jest zly i uwazam, ze nadal masz gdzies usterke.
56 = %0011 1000
-
Testuje bez interfejsu.
Ciekawe bo kolejne wywołanie programu daje już zawsze
255
254