Autor Wątek: [48k issue 4A] Problem z interfejsem Kempston  (Przeczytany 2858 razy)

marmazzaa

  • *
  • Wiadomości: 18
[48k issue 4A] Problem z interfejsem Kempston
« dnia: 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ę ?

pear

  • *****
  • Wiadomości: 5509
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #1 dnia: 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.
ZX/Enterprise/CPC/Robotron/C128D

perinoid

  • ***
  • Wiadomości: 192
  • Miejsce pobytu:
    Warszawa
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #2 dnia: 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.
Zielono mi... w temacie Spectrum. Ale zawsze się można douczyć.

marmazzaa

  • *
  • Wiadomości: 18
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #3 dnia: 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.

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #4 dnia: 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.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

marmazzaa

  • *
  • Wiadomości: 18
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #5 dnia: 2022.12.01, 17:54:16 »
208
73

marmazzaa

  • *
  • Wiadomości: 18
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #6 dnia: 2022.12.04, 17:53:04 »
Cześć, macie jeszcze jakieś sugestie ?

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #7 dnia: 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?
« Ostatnia zmiana: 2022.12.04, 19:36:45 wysłana przez trojacek »

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #8 dnia: 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:
  • 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
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

Waldek

  • ***
  • Wiadomości: 156
  • Miejsce pobytu:
    Łużyce
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #9 dnia: 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).

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #10 dnia: 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?
« Ostatnia zmiana: 2022.12.05, 10:02:39 wysłana przez trojacek »

marmazzaa

  • *
  • Wiadomości: 18
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #11 dnia: 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/

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.

m0b

  • *****
  • Wiadomości: 801
  • Miejsce pobytu:
    Warszawa
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #12 dnia: 2022.12.05, 21:03:52 »
To modyfikacja przetwornicy. Może być fabryczna.

Maryjan

  • *****
  • Wiadomości: 6650
  • Miejsce pobytu:
    Skarżysko-Kam.
  • Scotch whiskey and West Highland Terrier
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #13 dnia: 2022.12.05, 23:02:15 »
Jest fabryczna.
To Issue 3B.
"Co miałem powiedzieć - przeczytałem..." Nikodem Dyzma

m0b

  • *****
  • Wiadomości: 801
  • Miejsce pobytu:
    Warszawa
Odp: [48k issue 4A] Problem z interfejsem Kempston
« Odpowiedź #14 dnia: 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.
« Ostatnia zmiana: 2022.12.06, 01:00:55 wysłana przez m0b »