YABUS

Uniwersalne złącze YABUS
definicja i dokumentacja

Standard złącza YABUS opracował Jarosław Adamski, najświeższe informacja zawsze są na stronie http://www.yarek.com

YABUS został zaprojektowany jako interfejs łączący szeroką gamę urządzeń peryferyjnych z róznymi komputerami. Wśród wielu zastosowań jest możliwość podłączania do ZX Spectrum (lub do FDD3000) dodatkowych modułów pamięci, programatorów EPROM, modułów wejść/wyjść, przetworników ADC i DAC i wielu innych urządzeń. Obecnie jedynym znanym mi producentem modułów współpracujących z szyną YABUS jest Jarek Adamski, który opracował YABUS. Na pewno warto zainteresować się tym nieoficjalnym standardem, ponieważ moduły YAMOD mogą był podłączane przez tą szynę do różnych komputerów, nie tylko ZX Spectrum. Na rysunku po prawej stronie widać płytkę z dwoma złączami YABUS z naniesionym opisem sygnałów.

(28kB)

Opis sygnałów:

GNDmasa, dwie nóżki
+5Vzasilanie, dwie nóżki
+12Vzasilanie (np. dla RS232 lub programatora EPROM)
-12Vzasilanie (dla RS232)
A0...A15linie adresowe, wyjścia, buforowane lub nie
D0...D7linie danych, wejścia/wyjścia, buforowane lub nie
/P0.../P7dekodowane A5..A7 dla A4=1, wyjścia
/RDread device strobe, wyjście, /IORQ + /RD dla Z80
/WRwrite device strobe, wyjście, /IORQ + /WR dla Z80
/RESwejście/wyjście RESET
/SELdevice acknowledge (wyłącza wewnętrzne porty we/wy), wejście
/DMAżądanie DMA, wejście, nie zawsze podłączone do DMA
/INTżądanie przerwania, wejście
4 nóżki są zarezerwowane dla przyszłych wersji rozszerzenia.

Urządzenia podłączane do YABUS są nazywane YAMOD

Sygnały /P0.../P7 są po to, by uprościć konstrukcję modułów YAMOD. Gdy A4=1 dekodowane są linie adresowe A5...A7, a wynik jest wystawiany na liniach /P0.../P7. W module wystarczy więc zwykły 8-bitowy komparator, by dekodować adres. Np. /P0 = 0 tylko dla adresów xx1x (hex), /P1 dla xx3x (hex), /P2 dla xx5x (hex) itd. do /P7 =0 dla adresów xxFx (hex), gdzie x jest dowolną liczbą 0...F (hex).
Podsumowując, gdy moduł YAMOD zostanie aktywowany przez wyzerowanie jednej z linii /Pn powinien jeszcze zdekodować linie adresowe A0..A3, by ustalić jeden adres. Jak widać, linie A0..A7 są dekodowane w taki sposób, że A4 oznacza odwołanie do modułu YAMOD, linie A5..A7 wybierają jedną z 16 grup modułów, zaś konkretny moduł dekoduje już tylko 4 linie adresowe. Dzięki takiemu, trochę pogmatwanemu, sposobowi adresowania każdy z modułów ma uproszczony dekoder adresów. Autor zastrzega, że moduł na etapie projektowania należy przyporządkować do jednej z 16 grup:
#10..#1E nie przydzielone
#30..#3E interfejsy na bazie 8255 (np. YAMOD.EPROG)
#50..#57 łącza szeregowe na 8250 (wybór starszym bajtem)
#58..#5E łącza równoległe na 8211 (wybór starszym bajtem)
#70..#77 kontroler dyskietek na 765A
#90..#9F nie przydzielone
#B0..#BF multiplekser dysku twardego YAMOD.ATBUS
#D0..#D3 przełączanie pamięci (typu Z88 - sekcje po 16kB)
#D4..#DE nie przydzielone
#F0..#FF rozszerzenia pamięci i interfejsy sprzętowo zależne

Gdy adres zostanie poprawnie zdekodowany, linia /SEL musi być ustawiona na 0 (low), zaś dla portów tylko do zapisu musi być ustawiona w stan wysokiej impedancji (Z), by dla /RD=0 nie blokować portów tylko do zapisu o tym samym adresie w innym module.

Na koniec mała uwaga do schematu - na rysunku oprócz samego złącza YABUS jest również moduł pamięci "zxmem 006".

(18kB)
Schemat złącza YABUS i modułu pamięci zxmem 006.