UR-4 (paralelní port s 8255A)

Úvod

Integrovaný obvod 8255 je mezi Spectristy docela známý a oblíbený, jedná se o osmibitový paralelní port, schopný pracovat ve třech režimech. Poskytuje 3 osmibitové nastavitelné brány, z nichž jednu, bránu C, je možné rozdělit na polovinu (4 bity vstup, 4 bity výstup). V ZX Spectru se používá k připojení Kempston Joysticku, Amiga myši, prakticky všech tiskáren s paralelním rozhraním, různých D/A a A/D převodníků, speciálních zařízení jako je snímač obrazu z TV, robotických hraček a podobně. Kompatibilní interface s UR-4 je obsažen v počítači Didaktik Gama, disketových řadičích Didaktik 40 a Didaktik 80, MB02, Dataputer Quick atd...

foto

Konstrukce interface je velice jednoduchá. Skládá se z malého plošného spoje na němž většinu plochy zabírá MHB8255 v DIL 40 provedení, tlačítko reset, konektor pro Joystick a pár podpůrných IO. Podrobněji viz schéma. Větrací otvory v plastu naznačují, že by se stabilizátor 7805 mohl zahřívat, ale neděje se tak. Pokud nepřipojíte hodně žravou periferii napájenou přímo z UR-4, tak zůstává studený.

foto foto foto foto

Původní tovární výrobek neměl MHB8255 v patici, tu jsem doplnil až při opravě a výměně poškozené MHB8255. Vedle na fotce je položená CP82C55AZ od firmy Intersil v CMOS provedení. Má trochu jiné vlastnosti než MHB8255 z Tesly, přesto lze použít. Žlutý vodič od sběrnice na FRB konektor připojuje -5V potřebných pro můj A/D převodník.

Všimněte si zkráceného konektoru sběrnice. S UR-4 se počítalo, jako s úplně poslední periferií v řadě a výrobce prostě osadil konektor jen tak dlouhý, jak bylo nezbytně nutné.

foto

Na posledním snímku je UR-4 připojená k průchozí roztrojce spolu s DivIDE 57c a rozšířením RAM. V této UR-4 je navíc přibastlené NMI tlačítko a LED zobrazující stav joysticku, power a reset. Kdysi dávno jsem to tak považoval za užitečné a už to uvnitř zůstalo.

Schéma zapojení UR-4

schéma zapojení

Zapojení je velmi jednoduché, bohužel, adresace není úplná, jak bývalo v době výroby zvykem. Adresa A7 musí být v log. 0 spolu s /IORQ, adresami A5 a A6 se pak volí jeden ze čtyř registrů 8255. Adresy A0 až A4 by pak z důvodů kompatibility měly být v log. 1. 8255 tedy lze adresovat na portech 31, 63, 95 a 127, nedoporučuji používat jiné adresy.

Kolize s Betadiskem je řešena jeho deskou DOSu s průchozí sběrnicí, která pozastavuje signál /IORQ periferiím připojeným v jeho zadním konektoru sběrnice, pokud je aktivní. Provozoval jsem UR-4 spolu s Betadiskem spoustu let a tato dvě zařízení spolu pracují zcela bez potíží.

Rozmístění signálů na výstupním konektoru

Rozmístění signálů UR-4, ale i Didaktiku Gama a D40, které je hodně podobné, bohužel, ne zcela shodné. Písmeno A, B, C znamená bránu A = 31, B = 63 a C = 95, následující číslo je číslo bitu.

pinDidaktik 40/80Didaktik GamaUR-4-UR-4Didaktik GamaDidaktik 40/80pin
2A1A1A1A0A0A01
4A3A3A3A2A2A23
6A5A5A5A4A4A45
8A7A7A7A6A6A67
10B1B1B1B0B0B09
12B3B3B3B2B2B211
14B5B5B5B4B4B413
16B7B7B7B6B6B615
18C2C2C2C3C3C317
20C4C4C4C1C1C119
22C7C7C7C5C5C521
24GNDGNDGNDC6C6C623
26OUT 0OUT 0nezapojen (-5V*)C0IN 0IN 025
28OUT 1OUT 1nezapojenGNDIN 1IN 127
30PC 0OUT 2+5V (7805)GNDIN 2+5V29

Pozor, u Didaktiku Gama je C0 využit pro stránkování paměti. Já jsem si pro jistotu do svého DG přidal možnost toto stránkování vypnout a tím jsem získal možnost na interní 8255 připojit nejenom tiskárny a joystick, ale i 3 kanálový D/A převodník a přehrávat skladby určené pro ZX Spectrum 48k. Schéma a osazení Didaktiku Gama lze najít zde.

Signály označené IN a OUT s číslem jsou vstupy a výstupy invertorů, které lze použít třeba při připojování tiskárny k inverzi signálu Strobe v zapojení Special Didaktik dle Proximy. Nejčastější zapojení tiskáren lze najít příručce Ultra LX/LQ, nebo zde v článku o připojení tiskáren Epson i v mém článku o připojení tiskáren HP Deskjet.

konektor Didaktik Gama, D40konektor UR-4
nákres konektoru DGnákres konektoru UR-4

foto foto

  • -5V jsem zapojil v UR-4 na nevyužitý vývod, protože jsem je potřeboval u A/D převodníku. Toto je napětí ze sběrnice ZX Spectra, které je využito převodníkem jen jako referenční, odběr zanedbatelný.
  • u řadičů D40, D80 a počítače Didaktiku Gama je mezi vývody 24, 26 (respektive 23, 25) zářez/klíč, podobně jako u konektoru sběrnice
  • u Didaktiku Gama C0 vyvedena, používá se ke stránkování paměti (prostor 32768 - 65535, dvě 32k stránky)

Odlišnosti jsou tedy jen u vývodů 25 až 30, ale i tak docela nepříjemně komplikují kompatibilitu periferií.

Zapojení konektoru CANNON 9pin. pro Joystick a Amiga myš

S UR-4 narozdíl od mnoha jiných interface kompatibilních s Kempstonem bez problémů funguje Amiga myš a autofire na joysticku. Obojí potřebuje spínání proti GND (sepnuto v logické 0) a 5V napájení.

vývodbitKempston joystickAmiga Myš
13nahoruosa Y2 (YB)
22dolůosa X1 (XA)
31vlevoosa Y1 (YA)
40vpravoosa X2 (XB)
56  
64tlačítko 1tlačítko 1 (levé)
7+5V+5V
8GNDGND
95  

Na vývod 9 by mohlo být připojeno 2. tlačítko joysticku, nebo myši, na vývod 5 by mohlo být připojeno prostřední tlačítko myši. Ale tyto vývody nejsou v továrním provedení UR-4 zapojené. Kompletní zapojení konektoru viz článek o Amiga myši.

obrázek konektoru Canon 9p.

Nákres ukazuje číslování vývodů při pohledu na konektor v UR-4.

Ovládání 8255

8255 má tři osmibitové brány, které lze využívat samostatně jako vstupní, výstupní, nebo podle nastaveného režimu. Režimy jsou tři, podrobněji dále.

  • port 31 - brána A pro zápis i čtení celých 8 bitů
  • port 63 - brána B pro zápis i čtení celých 8 bitů
  • port 95 - brána C pro zápis i čtení, 8 botů i napůl po 4 bitech, zvláštní význam bitů v režimech 1 a 2
  • port 127 - řídící port (CWR control word), u MHB8255 jen zápis, nelze číst, u CMOS verzí lze i číst

Po resetu jsou všechny brány v modu 0 jako vstupní. NMOS MHB8255 vrací při čtení portů 0, resp. šum z okolí, protože vstupy jsou docela citlivé (dotykem se na nich může objevit log. 1). Proto taky dobře funguje zapojení joysticku přes invertory oddělené 22kΩ. Proto port joysticku potřebuje pulldown na všech vstupech, jinak by mohlo docházet k náhodnému ovládání v programech pracujích s joystickem bez možnosti vypnutí. CMOS verze vrací 255, samé log, 1 a je potřeba použít mnohem menší pulldown odpor, což komplikuje současné připojení joysticku a periferie, nestačí rezistor s velkým odporem, je třeba použít vhodný oddělovač sběrnice. Na druhou stranu software provádějící automatickou detekci by měl vyhodnocením bitu 7 usoudit, že Kempston interface není přítomen a port 31 ignorovat.

Základní řídící slovo 8255

Nastavení, brány jako vstup se provádí zápisem 1 na příslušnou pozici (bit slova CWR), 0 nastavuje bránu jako výstup. Týká se řádků s písmenem brány označených I/O.

bitvýznam
0brána C I/O (bity 0-3)
1brána B I/O
2volba režimu brány B (0=mode 0, 1=mode 1)
3brána C I/O (bity 4-7)
4brána A I/O
5volba režimu brány A (00=mode 0, 01=mode 1, 1x=mode 2)
6
7zde musí být 1

Řídící slovo 8255 pro bitové operace na portu C (95)

bitvýznam
0nastavení jestli se má bit nastavit (1), nebo nulovat (0)
1číslo nastavovaného bitu
2
3
4bez významu
5
6
7zde musí být 0

Režim 0 / mode 0

Režim 0 je nejjednodušší a nejčastěji využívaný režim. V tomto režimu lze přímo zapisovat na brány A (31), B (63), C (95), nebo z nich číst aktuální stav bitů jednou instrukcí in, nebo out. Při prostém čtení, např. při čtení stavu joysticku z portu A (31) není potřeba ani inicializace zápisem na port 127.

Aby bylo možné do brány zapisovat, musí být nastavena jako výstupní. Všechny brány jako výstup se nastaví příkazem OUT 127,128 (tímto se inicializuje např. tříkanálový D/A převodník, občas nutno provést ručně při načítání snapshotu), naopak vše jako vstup příkazem OUT 127,155. Všechny možnosti jsou v následující tabulce.

binárnědekadickyvýznam
10000000128A = outB = outCL = outCH = out
10000001129A = outB = outCL = in CH = out
10000010130A = outB = in CL = outCH = out
10000011131A = outB = in CL = in CH = out
10001000136A = outB = outCL = outCH = in
10001001137A = outB = outCL = in CH = in
10001010138A = outB = in CL = outCH = in
10001011139A = outB = in CL = in CH = in
10010000144A = in B = outCL = outCH = out
10010001145A = in B = outCL = in CH = out
10010010146A = in B = in CL = outCH = out
10010011147A = in B = in CL = in CH = out
10011000152A = in B = outCL = outCH = in
10011001153A = in B = outCL = in CH = in
10011010154A = in B = in CL = outCH = in
10011011155A = in B = in CL = in CH = in

OUT označuje bránu jako výstupní, CL označuje dolní půlku brány C (bity 0 - 3), CH horní půlku (bity 4 - 7).

Režim 1 / mode 1 (handshaking)

V tomto režimu může pracovat brána A a B, bity z brány C se používají jako řídící signály pro přenos bran A a B.

Brána C v modu 1 viz. tabulka

bitOUTPUTINPUT
0INTRbINTRb
1STROBEbACKb
2ACKbSTROBEb
3INTRaINTRa
4nepoužitSTROBEa
5nepoužitACKa
6ACKanepoužit
7STROBEanepoužit

Režim 2 / mode 2

V tomto režimu pracuje jedině brána A, tato by se měla chovat stejně jako v modu 1, ale obousměrně. Po zapsání dat na bránu A se nejdříve přijme byte z periferie a potom se periferii pošle zapsaný byte. Signály se aktivují se stejnou posloupností jako v modu 1.

Brána C v modu 2 viz. tabulka

bitvýznam
0-2nevyužito
3INTR
4STROBE (z periferie)
5ACK (z 8255)
6ACK (z periferie)
7STROBE (z 8255)

Signály STROBE a ACK jsou negované.

Technické údaje o UR-4 (z manuálu výrobce)

  • Osazení: 7805 (5V/1A), MHB8255A, 74LS04, konektor pro připojení na sběrnici spectra, cannon 9pin., FRB 30 pin.
  • Rozměry: 26,5x83x103mm
  • Napájení: 7,5V až 15V (co zvládne stabilizátor 7805, doporučuju tak 10V)
  • Odběr: 130mA
  • Dovolená zátěž výstupů: 1 log. jednotka TTL (při Iol=1,7mA výst. napětí U<0,45V, při Iol=-200µA výst. napětí U>2,4V)
  • Hmotnost: max. 120g

Download

Zdroje: ZX magazín (tabulky ovládání 8255), manuál UR-4, katalog výrobce Tesla, datasheety dalších výrobců čipu atd...

Opravené chyby a změny

  • 2008-01-20 - doplněny dvě fotografie rozhraní UR-4.
  • 2008-05-02 - vybral jsem jiné fotografie za lepšího světla
  • 2010-11-12 - Opraveno rozmístění vstupů a výstupů invertorů v paralelním rozhraní Didaktiku Gama (upozornil K.Ondráček).
  • 2014-11-09 - Kompletně revidováno, doplněny fotografie, přepsána značná část textu.

[ Zpět na hlavní stránku ]

Cygnusova stránka o ZX Spectru a kompatibilních počítačích byla napsána (přepsána) výhradně pomocí svobodného Open Source softwaru. V případě že naleznete chybu, nebo byste rádi cokoliv co se ZX Spectrem souvisí, neváhejte mi napsat na některý z mých emailů, nebo pracovně do zaměstnání. Stručně o mém webu se můžete dočíst zde.