forum speccy.pl

ZX Spectrum => HARDWARE => NAPRAWY => Wątek zaczęty przez: marmazzaa w 2022.12.01, 11:42:59

Tytuł: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana 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ę ?
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: pear w 2022.12.01, 14:23:46
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.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: perinoid w 2022.12.01, 14:26:46
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.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: marmazzaa w 2022.12.01, 17:31:48
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.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: KWF w 2022.12.01, 17:39:05
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.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: marmazzaa w 2022.12.01, 17:54:16
208
73
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: marmazzaa w 2022.12.04, 17:53:04
Cześć, macie jeszcze jakieś sugestie ?
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: trojacek w 2022.12.04, 18:45:43
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?
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: KWF w 2022.12.05, 08:38:47
@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:
* - 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.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: Waldek w 2022.12.05, 09:27:06
@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).
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: trojacek w 2022.12.05, 09:31:28
@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?
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: marmazzaa w 2022.12.05, 20:43:09
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:
Cytuj
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.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: m0b w 2022.12.05, 21:03:52
To modyfikacja przetwornicy. Może być fabryczna.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: Maryjan w 2022.12.05, 23:02:15
Jest fabryczna.
To Issue 3B.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: m0b w 2022.12.06, 00:54:30
Zgodnie z tematem to 4A :)

marmazzaa: u Ciebie nie widać modyfikacji pod EPROM, dodaj te dwie diody i rezystor zgodnie z opisem na retroleum.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: Maryjan w 2022.12.06, 12:26:46
To przepraszam. Bo ta na zdjęciu powyżej, to 3B.
4A wygląda jak poniżej.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: m0b w 2022.12.06, 12:52:02
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 ...
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: Maryjan w 2022.12.06, 14:40:41
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ą.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: pear w 2022.12.06, 14:45:15
Na pierwszym zdjęciu tego wątku jest płyta 4A zmontowana według schematu 4B.
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: Maryjan w 2022.12.06, 17:19:58
No i się wyjaśniło :)
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: marmazzaa w 2022.12.08, 09:54:13
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!
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: KWF w 2022.12.08, 10:58:37
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
Tytuł: Odp: [48k issue 4A] Problem z interfejsem Kempston
Wiadomość wysłana przez: marmazzaa w 2022.12.08, 14:27:22
Testuje bez interfejsu.

Ciekawe bo kolejne wywołanie programu daje już zawsze
255
254