Autor Wątek: Klawiatura PS2 do ZX48,+  (Przeczytany 12043 razy)

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #15 dnia: 2017.03.14, 11:17:57 »
Teoretycznie dobrze myślisz, ale...

Wewnętrznie ULA wykrywa operacje I/O i jeśli równocześnie trwa odczyt dolnego RAMu przez ULA to wstrzymuje procesor pomiędzy drugim a trzecim cyklem rozkazu I/O. Podłączenie zewnętrznej klawiatury, której dekoder nie bierze pod uwagę tych informacji może powodować, że klawiatura będzie się gryzła z ULA - wystawianie danych na szyny (choćby te wewnętrzne do podłączania klawiatury) przez zewnętrzną klawiaturę w niewłaściwym miejscu w czasie odczytu ekranu może powodować kaszanę na ekranie.

Detekcja tego, co w tym projekcie nazywa się /RDFE a w ULA-Book /PortRD wymaga dostępu do /IORQTW3 - ten sygnał nie jest dostępny na zewnątrz i właściwie nie da się go sensownie odtworzyć. Żeby to zrobić trzeba by śledzić stan linii zegarowej do procesora i na podstawie /IORQ i A0 oraz zegara zgadywać czy w danym momencie nastąpiło wstrzymanie czy nie.

We wschodnich klonach z logiką na TTLach nie ma problemu - stosowne sygnały można po prostu wyjąć z układu. Z prawdziwym Spectrum nie jest do końca tak ładnie i dekodowanie bez uwzględnienia contention może powodować problemy. Trudno ocenić jak poważne i jak często, ale nie jestem pewien czy takie wpinanie się prosto w klawiaturę będzie dawało w pełni stabilne efekty.

Choć oczywiście może jest zupełnie inaczej i proste dekodowanie wg A0, RD i IORQ wystarczy i całość będzie działała wystarczająco stabilnie ;)

silenter

  • *****
  • Wiadomości: 1337
  • Miejsce pobytu:
    Warszawa/Radzymin
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #16 dnia: 2017.03.14, 14:37:57 »
ja to bym wziął atmegę, parę kluczy 4066 i wpiął się w złącze klawiatury żadnych przerawań adresów itp.
128k +2 UK issue 1, JS128, FDD3000 in restoration, ZAXON MGT +D, PEAR AmpY, Pear ExEar :), PEAR TI-OF-TTL+FDD35, co to tu robi??? => 2xCDTV&A500

https://soundcloud.com/silenter

https://www.youtube.com/channel/UCKZhL7Lq1zUDDnRDTJKhN4A

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #17 dnia: 2017.03.14, 14:56:45 »
Tak jest zrobiony zastępnik membrany plusa zrobiony przez Pokemona (chodzi o 4066, nie o Atmegę).
Zewnętrzne interfejsy nie mają problemu z ULA, bo tak czy siak wstrzymany jest sam procesor, a interfejs wystawia dane na szynę główną (CPU), a nie lokalną (ULA - lower RAM). Jedyny minus, takie interfejsy nie działają z Timexami (trzeba nieco przerobić komputer, pisał o tym Yarek na swojej stronie).

gregoryi

  • ****
  • Wiadomości: 288
  • Miejsce pobytu:
    Opole
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #18 dnia: 2017.03.14, 15:34:37 »
Myślałem nad takim rozwiązaniem, ale tak na prawdę to nie jest parę kluczy.
Każdy 4066 to 4 klucze a potrzebne jest 40.
Wychodzi, że dziesięć IC i tak będzie potrzebne i tak.
Atmega i jeden IC z NAND to 2 plus peryferia do nich.
Wielkość płytki w przypadku chęci schowania do obudowy ma znaczenie, oczywiście opcjonalne.

Jak znajdę trochę czasu, popróbuję złożyć to na NANDzie i Atmedze, zobaczymy co z tego wyjdzie.
ZX Spectrum 16, ZX Spectrum 48, ZX Spectrum 128 +2 Grey, ZX Spectrum 128 +3, Amstrad 6128, Commodore 64C, Amiga 600, Klony - Harlequin 48 Rev G, Harlequin 128 Rev 2D, Just Speecy 128, ZX Nuvo 128

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #19 dnia: 2017.03.14, 20:30:50 »
40 kluczy? To bardzo zły pomysł, tak się raczej nie projektuje.
Skoro chcesz użyć atmegi, to linie A8-A15 czytaj przez nieużywany port, a steruj tylko 5 kluczami (a nawet bezpośrednio wyjściami drugiego portu atmegi). Resztę załatwia soft. 

gregoryi

  • ****
  • Wiadomości: 288
  • Miejsce pobytu:
    Opole
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #20 dnia: 2017.03.14, 20:46:06 »
Właśnie takie rozwiązanie jak podałeś jest w tym projekcie.
Tylko mam dylemat co właściwie odpowiada za odczyt klawisza(y), linie A8-A15 czy ULA, czy jednocześnie linie A8-A15 i ULA?

W sumie klawisz powoduje zwarcie między wyjściami ULI a liniami adresowymi.
Czy w Atmedze jest możliwość zrobienia (programowo), tak że jeden port podłączyć do drugiego na zasadzie zwarcia, myślę, że nie?
ZX Spectrum 16, ZX Spectrum 48, ZX Spectrum 128 +2 Grey, ZX Spectrum 128 +3, Amstrad 6128, Commodore 64C, Amiga 600, Klony - Harlequin 48 Rev G, Harlequin 128 Rev 2D, Just Speecy 128, ZX Nuvo 128

zaxon

  • *****
  • Wiadomości: 4695
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #21 dnia: 2017.03.14, 20:57:30 »
A ja tak z ciekawosci sie zapytam, po co podlaczac klawiature od PC do ZX? No oprocz pokazania ze sie da  :D
Siedem kilo smalcu,gesich jajek kopa,zeby moc to polknac tegiego trza chlopa. GG 3456993

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #22 dnia: 2017.03.14, 21:14:53 »
Linie A8-A15 "wystawia" procesor (a konkretnie, niski stan na jednej  nich). Wciśnięty klawisz powoduje zwarcie między linią adresową a wejściami ULA, która odczytuje, czy coś jest zwarte (czyli ma stan niski).  I tak dla każdej kolejnej linii adresowej, aż do sprawdzenia każdego rzędu.
Polecam lekturę "Przewodnika po ZX Spectrum", tam to jest ładnie wyjaśnione.
Atmega nie ma nic zwierać, tylko wystawiać odpowiedni stan w odpowiedniej chwili.

gregoryi

  • ****
  • Wiadomości: 288
  • Miejsce pobytu:
    Opole
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #23 dnia: 2017.03.14, 21:29:32 »
Przewodnik po ZX Spectrum przeczytałem cały co prawda dawno temu i mogłem pominąć ten dział ze względu na ówczesny brak zainteresowania.

Ja wiem, że podłączanie klawiatury z PC nie jest idealnym rozwiązaniem, ba nawet powiedziałbym nie zbyt dobrym.
Tylko, że ceny dzisiejszych np obudów z nietestowanymi klawiszami sięgają niebotycznych cen.
Klawiatura PS2, Atmega, dodatki to naprawdę niewielki koszt w porównaniu do cen obudów.

Jedyna zaletą jaką znalazłem w tym projekcie dla mnie to możliwość używania kursorów jako "QAOP", czy emulacja kursorów (joysticka).
Wszyscy robią zajefajne projekty, może ja wymyśliłbym coś co zadziała i przyda się komuś w późniejszym czasie.
ZX Spectrum 16, ZX Spectrum 48, ZX Spectrum 128 +2 Grey, ZX Spectrum 128 +3, Amstrad 6128, Commodore 64C, Amiga 600, Klony - Harlequin 48 Rev G, Harlequin 128 Rev 2D, Just Speecy 128, ZX Nuvo 128

zaxon

  • *****
  • Wiadomości: 4695
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #24 dnia: 2017.03.14, 21:41:56 »
No tak ale nadal nie rozumiem w czym ci taki interfejs pomoze? Do testowania plyt od ZX ? Mam jedna gore od gumiaka, rok temu zalozylem membrane od Richa, podlaczam i odlaczam  to czasami 20 razy dziennie jak robie plyty JS128 i nadal bez problemu dziala.
Podlaczenie klawiszy od PC? Bojdu, mam tak w Evo , co sie czlowiek nacuduje zeby load"" wpisac. Nalepki kleic ?

Czy chodzi o to ze masz plyte do ZX i nic poza tym?
Siedem kilo smalcu,gesich jajek kopa,zeby moc to polknac tegiego trza chlopa. GG 3456993

gregoryi

  • ****
  • Wiadomości: 288
  • Miejsce pobytu:
    Opole
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #25 dnia: 2017.03.14, 21:47:33 »
W zasadzie tak, mam płykę 48 i leży niewykorzystana.
ZX Spectrum 16, ZX Spectrum 48, ZX Spectrum 128 +2 Grey, ZX Spectrum 128 +3, Amstrad 6128, Commodore 64C, Amiga 600, Klony - Harlequin 48 Rev G, Harlequin 128 Rev 2D, Just Speecy 128, ZX Nuvo 128

flypeter

  • ****
  • Wiadomości: 415
  • Miejsce pobytu:
    KUJ-POM
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #26 dnia: 2017.03.14, 21:53:43 »
Jakis rok temu mialem sama plytke od ZX81 i planowalem podl klawiature od PC, jednak bezposrednio bez interfejsu. Mam taka mala klawiature od serwera z lat 90-tych, oparta na plytce drukowanej nie na folii. Chcialem wyciac zbedna czesc, reszte polaczen przerobic zgodnie z matryca oryginalnej klawiatury, wyrzucic kontroler i podlaczyc pajakiem do plyty zx81. Temat umarl gdyz dorwalem cala obudowe ze sprawna folia klawiatury.
ZX81, ZX 48k/+/128+2/2A/+3, QL, TC 2048, UK2086, Harlequin | Atari 8/16-bit | Commodore 8/16-bit | CPC | MSX | TI99/4 | Acorn Electron, BBC Master Compact | Mac Classic, PowerMac 6100, Apple II+ | Elwro 800 Junior | Meritum | Robotron A5105 | Oric-1 | 8088/80286/80386/80486/Pentium I-IV

Gryzor

  • *****
  • Wiadomości: 2010
  • Miejsce pobytu:
    Warszawa
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #27 dnia: 2017.03.15, 10:08:22 »
No nie wiem, dla mnie powodow to jest calkiem sporo:
- koszt folii wcale nie jest maly, a klawiatur PS/2 jest bez liku za grosze
- do testowania plyt
- do grania i pisania
- nie cierpie klawiatury od Plusa, a te sa najdrozsze
- mozna teoretycznie dodawac nowe funkcje np. Reset albo makra np. Load jednym klawiszem.

Co do nalepek, to na +2 tez nie ma wszystkich opisow  :D

gregoryi

  • ****
  • Wiadomości: 288
  • Miejsce pobytu:
    Opole
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #28 dnia: 2017.03.16, 23:50:22 »
Dziś z przerwami usiadłem nad zadaniem.
Wrzuciłem program do Arduino, działa (PS2KeyboardEXT)
Podłączyłem porty 7 i 8 pod klawisz ENTER.
1.
Niestety nie mogłem w żaden sposób wywołać go.
Doświadczalnie pomierzyłem napięcia na stykach klawiatury ZX'a.
Rozwarte:
Linia D(0-4) - niecałe 5V (4,89).
Linia A(8-15) - 0V
Zwarte:
0,9V czyli logiczne 0.
Mam przez to rozumieć, że jak zewrę styki klawiatury to logiczne 0 ma pojawić się na np. KB1 i A8

Jak robię to w ardunio:

port 7 i 8 ustawiam jako INPUT (złącz klawiatury).

jeżeli zostanie wykryty klawisz na PS2
port 7 i 8 ustawiam jako OUTPUT, LOW
czeka 25 ms (właśnie nie wiem jak długo mam czekać)
port 7 i 8 ustawiam jako INPUT

i to nie działa.

2.
Zrobiłem podobnie tylko zamiast bezpośredniego podłączenia do złączy klawiaturowych
podłączyłem prze CD4066.
Klawisz zadziałał od strzału.
Problemem okazał się tylko czas, przez jaki symulacja klawisza w tym przypadku ENTER'a miała go zwierać.
Wybrałem 25ms, oczywiście testowo.

Jak robię to w ardunio:

port 8 ustawiam jako OUTPUT, LOW (klucz CD4066)

jeżeli zostanie wykryty klawisz na PS2
port 8 ustawiam jako OUTPUT, HIGH (uruchamiam klucz)
czeka 25 ms
port 8 ustawiam jako OUTPUT, LOW (wyłączam klucz)

i to działa niedoskonale ale działa.

W przypadku bezpośredniego podłączenia portów do złącz (przypadek 1), nie jestem pewien czy aby dobrze robię to.
ZX Spectrum 16, ZX Spectrum 48, ZX Spectrum 128 +2 Grey, ZX Spectrum 128 +3, Amstrad 6128, Commodore 64C, Amiga 600, Klony - Harlequin 48 Rev G, Harlequin 128 Rev 2D, Just Speecy 128, ZX Nuvo 128

jackfinch

  • ****
  • Wiadomości: 426
  • Miejsce pobytu:
    uk
Odp: Klawiatura PS2 do ZX48,+
« Odpowiedź #29 dnia: 2017.03.17, 00:11:55 »
Witam

A czy tego projektu nie dałoby się przerobić jako wewnętrzny interfejs?
Zbudowany na Amtel AVR ATtiny45 i XC9572 Xilinx.
http://www.jrok.com/project/speckey/spec_key.html

Pozdrawiam