Autor Wątek: /IORQ i /IORQULA  (Przeczytany 5201 razy)

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
/IORQ i /IORQULA
« dnia: 2018.10.12, 13:39:54 »
Hej,

Mam pewien problem z /IORQULA (/IORQGE), poniewaz potrzebuje odtworzyc ten sygnal, jesli nie wystepuje na zlaczu krawedziowym.
Poprawcie mnie jesli sie myle:

- /IORQ jest wyjsciem z Z80
- /IORQULA jest wejsciem do ULA'i
- /IORQULA ma stan niski tylko wtedy kiedy /IORQ i A0 sa w stanie niskim
- /IORQULA w stanie niskim wlaczy odczyty z portu 0xFE przez ULA, o ile w tym samym czasie dostanie /RD w stanie niskim.

Czy zewnetrzne odtworzenie /IORQULA ze stanow /IORQ i A0 na bramce TTL bedzie rownowazne z tym co pojawia sie na /IORQULA?

Probuje zmajstrowac sobie zewnetrzna klawiature, bez udzialu sygnalu /IORQULA. Dlaczego? Aby wykorzystac ja takze w ZX81 i Jupiterze, a nie tylko w ZX Spectrum.
« Ostatnia zmiana: 2018.10.12, 13:47:23 wysłana przez Klaud »
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: /IORQ i /IORQULA
« Odpowiedź #1 dnia: 2018.10.12, 14:01:11 »
ULA 48K ma tylko jeden pin - /IOREQ (pin 33). Logika z dodaniem A0 jest realizowana tranzystorem lub rezystor + dioda, ale i bez tego by działało - grunt, to móc "wyłączyć" adresowanie I/O w ULA właśnie tym pinem. Jeśli chce się być zgodnym w 100% z oryginałem - to A0 powinno być brane pod uwagę.
W Maxach 48/128 jest to niepotrzebnie przekombinowane, co kosztuje utratę 2 pinów CPLD.

Twoje rozumowanie jest prawidłowe, choć zapomniałeś, że do portu ULA można też zapisywać :) Ale rozumiem, że w przypadku klawiatury się to nie zdarza.
/IORQULA = /IORQGE = !/IORQ * !A0

Ale cokolwiek sobie zrealizujesz w interfejsie, musisz pamiętać, by wystawiać stan wysoki na złącze krawędziowe (styk A-13).

Jeszcze jedna uwaga. Szyna danych CPU jest oddzielona od szyny danych ULA rezystorami 470 om (to dobrze), ale w innych konstrukcjach może to być 74LS245 (to źle). Interfejs wpinany do złącza krawędziowego ma dostęp do szyny CPU, tak więc ma wyższy priorytet przy wymuszaniu stanów na liniach danych - więc teoretycznie można całkowicie olać, co ULA wtedy wystawia, bo zostanie to po drugiej stronie rezystorów. Jedna w przypadku klawiatury, gdzie sygnały idą przez jakieś rezystancje oraz diody, Twój interfejs może dawać napięcia (na liniach danych) zbyt blisko progów TTL i dodanie do tego stanu przeciwnego przez rezystor 470 om spowoduje, że interfejs nie działa jak powinien (oczywiście zablokowanie adresacji I/O ULA rozwiązuje problem, bo mamy stan wysokiej impedancji po stronie ULA). Jeśli zamiast rezystorów jest bufor na TTL - to w ogóle umarł w butach :) Ale nie wiem, czy i jakie mszyny mają LS245 zamiast rezystorów - na pewno timexy mają to przewidziane na PCB.
« Ostatnia zmiana: 2018.10.12, 18:49:06 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: /IORQ i /IORQULA
« Odpowiedź #2 dnia: 2018.10.12, 14:49:57 »
Dzięki.

A co do Timexow to wiem, w nich są bufory na LS244 i LS245. Do takich konstrukcji należą tez rosyjskie klony, ale one są poza kręgiem moich zainteresowań.

A13 w stanie wysokim jest do załatwienia.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: /IORQ i /IORQULA
« Odpowiedź #3 dnia: 2018.10.12, 14:54:45 »
LS244 jest do joysticka, przynajmniej w TC2048. Wszystkie 2048, które mam, mają również rezystory zamiast 245 (choć druk przewiduje instalację 245).

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: /IORQ i /IORQULA
« Odpowiedź #4 dnia: 2018.10.12, 15:37:02 »
Ale czekaj. Czy wystawienie A13 w stan wysokim na zlaczu nie spowoduje bledow w odczycie z klawiatury? Nie bedzie konfliktu z tym co chce CPU (skanowanie klawiatury po 8 bitach portu 0xFE, zmieniajac stan na niski na liniach A8 do A15)?

Kiedy czasowo ma pojawic sie to A13=1?
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: /IORQ i /IORQULA
« Odpowiedź #5 dnia: 2018.10.12, 18:27:06 »
EDIT: Nie czytać, bo bzdury napisałem :)

Hmm, nie rozumiem. Co ma wystawiać wysoki stan na A13, jeśli nie CPU?
ULA nie wymusza stanów na liniach adresowych, a tylko je "konsumuje".
« Ostatnia zmiana: 2018.10.12, 18:48:20 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: /IORQ i /IORQULA
« Odpowiedź #6 dnia: 2018.10.12, 18:32:56 »

Ale cokolwiek sobie zrealizujesz w interfejsie, musisz pamiętać, by wystawiać stan wysoki na złącze krawędziowe (A13).

Chyba czegoś nie zrozumiałem.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: /IORQ i /IORQULA
« Odpowiedź #7 dnia: 2018.10.12, 18:43:09 »
OK, dwuznaczność taka :)

Ale cokolwiek sobie zrealizujesz w interfejsie, musisz pamiętać, by wystawiać stan wysoki na złącze krawędziowe (A13).

Nie chodziło mi o linię adresową A13 (o czym w międzyczasie zapomniałem).
Chodzi o edge connector, strona A (bottom) styk nr 13 = /IORQGE.
W sensie, że jak nawet sobie zsyntetyzujesz w interfejsie /IORQULA = !A0 & !/IORQ, to jest to sygnał lokalny, niepowiązany z ULA. Czyli musisz go zanegować i puścić na złącze krawędziowe, pozycja A (bottom) nr 13, by powiedzieć ULI "nic nie rób, tera ja!".

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: /IORQ i /IORQULA
« Odpowiedź #8 dnia: 2018.10.12, 19:25:22 »
No to teraz qmam :)

Ot takie coś sobie wymyśliłem.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: /IORQ i /IORQULA
« Odpowiedź #9 dnia: 2018.10.12, 19:28:32 »
Śliczne!
Tylko pamiętaj, by /IORQGE ciągnąć do jedynki tranzystorem, albo co najmniej przez diodę.

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: /IORQ i /IORQULA
« Odpowiedź #10 dnia: 2018.10.12, 19:31:41 »
Na logikę klejącą przyjdzie czas ;) Albo zamiast 74LS02 dam 74LS33.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: /IORQ i /IORQULA
« Odpowiedź #11 dnia: 2018.10.12, 19:45:31 »
LS33 to raczej niewiele pomoże. Jeszcze open collector dałby radę, by przyjąć na swoim wyjściu prąd zwarcia do +5V, gdy na wyjściu bramki jest stan niski.
Najprościej dać diodę, tak jak np. w TI-of-TTL.

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: /IORQ i /IORQULA
« Odpowiedź #12 dnia: 2018.10.12, 19:57:24 »
LS33 jest właśnie typu open-collector :)

KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: /IORQ i /IORQULA
« Odpowiedź #13 dnia: 2018.10.12, 21:32:21 »
Aaaa, fakt :)