atarionline.pl Komputer Hermes 64 - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthorKaz
    • CommentTime26 Oct 2022 zmieniony
     
    Komputer naszego kolegi EdWina:

    (pełny tekst i wszystkie zdjęcia pod linkiem:
    ->link<- )

    Komputer zaprojektowany i skonstruowany w 1987 roku przez Edwina Wierszelisa, który wówczas był uczniem szkoły średniej i bardzo chciał mieć komputer. (...) Hermes jest kompatybilny z ZX-Spectrum, choć nie zawiera ani jednej części Spectrum. Konstrukcja jest całkowicie oryginalna, za wyjątkiem:
    - Modulatora TV (generatorek w.cz) - wykorzystano fragment schematu generatora obrazów kontrolnych, opublikowanego w jednym z numerów "Młodego Technika"
    - Zasilacz główny (+5V) z impulsową stabilizacją bazowany jest na projekcie opublikowanym prawdopodobnie w "Radioelektroniku". Na pewno na tym źródle opierają się schematy zasilacza dodatkowych napięć +12V i -12V. Te napięcia nie są wykorzystywane w obecnej konstrukcji. Były przewidzane dla jakichś dodatkowych rozszerzeń typu RS-232, niektórych rodzajów pamięci czy enkodera koloru. Ciekawostką konstrukcyjną jest wykorzystanie w charakterze zasilaczy układów scalonych przeznaczonych dla wzmacniaczy głośnikowych. Taka koncepcja Dual-Use Technology z "Radioelektronika" (...)
    - Schemat generatora dźwięku na bazie układu AY-3-8910 jest jego standardową implementacją z jakiegoś czasopisma. Są tylko projekty płytek, sam schemat pozostał do odnalezienia albo odtworzenia z płytki.
    - Hermes używa zmodyfikowanego ROM ZX-Spectrum. Modyfikacje są dla wygody - inny font, dłuższe beepy klawiszy, czarne tło i poprawiony "błąd NMI" ZX-Spectrum. Może pracować z oryginalnym ROM i można w nim aktywować taki tryb pracy.

    Wszystkie funkcje realizowane są za pomocą układów TTL małej skali integracji i elementów dyskretnych. Nie ma układów specjalizowanych takich jak ULA. Wyjątkiem są:
    - Procesor Z80A - jak w Spectrum, tu użyto D780A firmy NEC
    - Pamięci RAM 4164 (8 szt.)
    - Pamięci EPROM. W minimalnej konfiguracji 2x 2764 (8KB każdy). Obecnie zamiast jednej z nich jest 27128 (16KB).

    Dodatkowe funkcje:
    - Interfejs Kempston Joystick
    - Możliwość przeniesienia pamięci obrazu do jednej z trzech alternatywnych lokalizacji
    - Możliwość podmiany ostatnich 16 KB RAM na bank schowany pod pamięcią ROM
    - Emulacja ROM = możliwość odsłonięcia "dolnych" 16 KB RAM i zablokowania zapisu do nich. Jest to wykorzystane do przełączenia Hermesa na oryginalny ROM ZX-Spectrum. W dodatkowej pamięci EPROM jest zapisany skompresowany obraz różnic między ROM ZX-Spectrum a HeROS (Hermes Resident Operating System :-) oraz procedura odpakowująca go do dodatkowego RAM. Po jej uruchomieniu komputer zgłasza się standardowym komunikatem (c) 1982 Sinclair Research Ltd na białym tle.
    - Układ dźwiękowy AY-3-8910. Programowo zgodny z generatorem dźwięku w ZX-Spectrum 128+. Niektóre gry, np. Cybernoid, uruchomione na Hermesie używają tego generatora, mimo iż nie jest to Spectrum 128.

    Kompatybilność z ZX-Spectrum: bardzo duża. Dzięki sprawniejszemu zarządzaniu dostępem do pamięci RAM Hermes jest minimalnie szybszy od ZX-Spectrum, mimo iż procesor pracuje z takim samym zegarem. Spotkałem jedną grę która nie chciała na nim działać i jedną, która wymagała koniecznie trybu ROM ZX-Spectrum. Do gry Arkanoid (v1) po analizie czemu ta gra nie działa, została wykonana hardwarowa modyfikacja emulująca jeden szczegół konstrukcyjny ZX-Spectrum. Arkanoid nie będzie działał na Juniorze.

    Rozbudowa

    Bazowa wersja powstała w roku 1987. Później (1989) Hermes otrzymał lepszą obudowę, zasilacz i nową płytę backplane. Ze względu na dłuższe przewody kolumn klawiatur, diody łączące kolumy z liniami adresowymi A8..A15 zostały zastąpione buforami 7407 na dodatkowej, małej płyteczce. Pozostała brzydka obudowa, klawiatura na desce i szereg nie podłączonych gniazd. Komputer działał, więc nie było potrzeby go dalej usprawniać. :-) W ramach ostatniej rozbudowy Hermes dostał generator dźwięku na układzie AY-3-8910.

    (...)

    Proces produkcji płytek

    Płytki na laminacie dwustronnym były malowane ręcznie. Najpierw na podstawie schematu był tworzony projekt obu warstw w skali 2:1. Laminat był przycinany, po czym przy pomocy linijki odmierzano na nim położenie otworów (wg siatki 100 mils - 2.54 mm, 5.08, 7.62 itd). Otwory były wiercone, po czym taka płytka z otworami (ale nie wytrawiona) służyła do odbicia otworów na dwóch nowych rysunkach, tym razem w skali 1:1. Następnie rysunek ścieżek był przerysowywany na podstawie projektu 2:1. Ścieżki czerwone (górna warstwa) były dobrze widoczne. Te znajdujące się na spodzie były przerysowywane w odbiciu lustrzanym po umieszczeniu projektu na podświetlonej szybie malowanej na czerwono. Ścieżki poszczególnych warstw były trasowane przy pomocy rylca, co ułatwiało późniejsze prowadzenie piórka z farbą. Flamastrów do PCB wtedy nie było. Jako farbka służył czerwony lakier do paznokci, do którego dodano jedną kroplę tuszu z długopisu. Wkład długopisu był opróżniany a kulka z końcówki wyjmowana. Do oczyszczonego denaturatem wkładu był potem zasysany przygotowany wcześniej lakier i tym malowano. Rozdzielczość takiej malowanej płytki była mała, toteż w fazie projektowania wykluczono możliwość prowadzenia ścieżek między podłączonymi w tej samej warstwie padami układu scalonego. Trawienie: roztwór perhydrolu, wody i kwasu solnego. Topnik: kalafonia na denaturacie (skład podobny do współczesnego TK-83). Układy musiały być lutowane również po "górnej" stronie, bo otwory nie były metalizowane. Z tego samego powodu przelotki (ang. via) nie były mile widziane. Stosowano natomiast mostki na szyny zasilające oraz linie danych RAM. Płyta backplane (jednostronna) ma tylko ścieżki doprowadzające zasilanie i ślepe pady do złącz modułów. Połączenia logiczne między padami są robione za pomocą drucików, podobnie jak np. w Odrze, ale lutowanych. Z tego powodu płyt nie można zamieniać. (...)
    • 2: CommentAuthormono
    • CommentTime26 Oct 2022 zmieniony
     
    Zadziwiające. Szczególnie ciekawi mnie AY zrobiony na TTL-ach :)
    • 3:
       
      CommentAuthorPeri Noid
    • CommentTime26 Oct 2022
     
    O ja cię!
    • 4: CommentAuthorseban
    • CommentTime26 Oct 2022
     
    REWELACJA! :) Świetny projekt! Podziwiam kunszt konstruktora, zapał i realizację takiego projektu w tamtych czasach!

    No i naprawdę fajnie że te materiały zostały opublikowane w sieci! Dzięki WIELKIE! :D
    • 5:
       
      CommentAuthorjhusak
    • CommentTime26 Oct 2022
     
    Czad :) Niesamowite, że ludzie bez dzisiejszego internetu byli w stanie takie coś ogarnąć od zera (no, pewnie studia elektroniczne były) Patent z wyświetlaniem czerwonych (dobrze widocznych i niebieskich ścieżek przez szybę malowaną na czerwono - świetny; podejrzewam, że szeroko stosowany wśród elektroników, bo Eagle ma taki sam zestaw kolorów domyślnie - czerwony - górna warstwa, niebieski - dolna.

    Niestety, nie doceniamy ludzi tworzących w czasach, gdy naprawdę trzeba było wytężyć mózgownicę, aby sobie ułatwić pracę. Mania wielkości człowieka wynika z bajek, które mu opowiadają...
    • 6: CommentAuthorseban
    • CommentTime26 Oct 2022 zmieniony
     
    Przejrzałem bardzo pobieżnie udostępnione schematy, na schemacie "Display RAM Controller": ->link<-

    Widać połączone sygnały ~RAS/~CAS chyba nie powinno tak być? albo ja czegoś nie rozumiem :) Widać że były jakieś poprawki nanoszone więc pewnie zakradł się tam jakiś drobny błąd.

    Fajnie jest popatrzeć na czyjąś robotę gdzie praktycznie całe ULA zrobiono z TTL-ek i to w dodatku pomyślane w taki sposób aby ograniczyć ich ilość do niezbędnego minimum :)

    A zasilacz w którym wykorzystano UL1402 (scalony wzmacniając m.cz.) jak wzmacniacz "błędu" i driver dla tranzystora mocy jest bardzo pomysłowe :)

    Im dłużej patrzę na ten schemat tym więcej takich "perełek" znajduję! Cieszy mnie bardzo że ta konstrukcja została uratowana od zapomnienia i ujrzała światło dzienne.

    To pokazuje że w czasach gdy "nie było niczego", trzeba było sobie radzić z tym co było akurat pod ręką i to trzeba było sobie radzić w bardzo kreatywny sposób.
    • 7:
       
      CommentAuthorKaz
    • CommentTime26 Oct 2022
     
    Przed chwilą rozmawiałem z EdWinem, bo staram się go namówić na dłuższą rozmowę wspominkową o historii życia i jego projektach. Ma już przygotowany pomysł pokazania Hermesa i historii jego powstania (w tym przeszkód i sposobów ich rozwiązania). Rozpisane na kilka odcinków nagrania wideo :). Bądźmy dobrej myśli :)

    A tu jest link do wywiadu z EdWinem:
    ->link<-

    Jest tam wspomniane również o Hermesie, do którego części zostały wzięte m.in. ze spalonego automatu arcade Zaxxon :D
    • 8: CommentAuthorEdWin
    • CommentTime26 Oct 2022 zmieniony
     
    Nie ma błędu! :-) To naprawdę tak jest zrobione.

    Powinno być tak: najpierw -RAS idzie w dół (jest aktywowany), chwilkę potem jest przełączany multiplekser adresów, a jeszcze chwilkę potem jest aktywowany -CAS. Był problem z ową "chwilką". Długo po uruchomieniu Hermesa dowiedziałem się, że stosuje się w tym celu prostą linię opóźniającą, którą można zbudować z kilku bramek. Ale przy projektowaniu DRC tej sztuczki nie znałem (albo wydawała mi się niesportowa ;-) i myślałem jak to rozwiązać cyfrowo. Niestety, z dostępnych sygnałów nie dało się poskładać sensownej sekwencji, która wyrobiłaby się w wymaganym czasie*. Wiedząc z grubsza (albo raczej spekulując :-) jak jest zbudowana taka pamięć, kombinowałem tak: w takiej pamięci pewnie jest rejestr wyzwalany zboczem -RAS, który łapie adres wiersza (ośmiobitowy) i przekazuje do układu wykonującego odczyt i odświeżanie. W ten sposób odczytywany (i odświeżany) jest cały 256-bitowy** wiersz. Sygnałem -CAS aktywowany jest multiplekser, który kieruje na wyjście pamięci bit wskazywany przez aktualny stan wejść adresów. Multiplekser jest normalną logiką kombinacyjną (bez rejestrów) więc w tym momencie liczy się tylko to, aby dać pamięci dość czasu na ustalenie się stanu odczytanej komórki pamięci na wyjściu.

    Temat męczył mnie tak mocno, że się w końcu pochorowałem i przez tydzień leżałem w łóżku z gorączką, analizując cykle dostępu Z-80 w książce "Mikroprocesor w pytaniach i odpowiedziach". W końcu zrealizowałem to jak wyżej. Ale nie byłem pewien na 100% czy to zadziała. Na zdjęciu Hermesa widać, że płytka DRC (największa, a właściwie najdłuższa) ma takie uniwersalne pole z mnóstwem dziurek i zarysem uniwersalnych ścieżek. To było pole ratunkowe na wypadek konieczności wprowadzenia jakichś partyzanckich zmian już po wykonaniu płytki.

    Rozwiązanie z jednoczesnym przełączaniem RAS i MUX nadal jest odrobinę ryzykowne, bo gdyby MUX zdążył przełączyć adres szybciej niż rejestr RAS go złapie, to do pamięci może trafić niewłaściwy adres. Tam jest inwerter (NOR) wprowadzający niewielkie opóźnienie między MUX a -RAS -CAS i on pewnie ratuje sytuację. ;-)

    ____
    * Hermes wykonuje dostęp do pamięci przy każdym takcie zegara Z-80. Dostępy 0 i 2 są przeznaczone dla procesora, dostęp 1 ładuje rejestr pikseli, dostęp 3 ładuje rejestr atrybutów. "Rozrząd" wykonuje układ "LS138" widoczny na schemacie DRC. W czasie tych 4 dostępów na ekranie rysowane jest 8 pikseli (jeden znak). Gdy nie jest wyświetlany obraz, wszystkie cykle należą do CPU (0,2,0,2,...).

    ** w pamięciach 64K dla Z-80 odświeżane musiałoby być 512 bitów, co jest związanie z długością rejestru "R" (refresh) procesora, która wynosi 7 bitów. Potrzebne były pamięci z "7-bitowym odświeżaniem". Ale jeśli zastosowano takie z 8-bitowym, to mogłoby wyjaśnić nietypowy rozmiar "górnej" pamięci ZX-Spectrum 48. Ona miała 32 KB, mimo iż używane tam układy były w zasadzie sprawnymi 64KB. Ta pamięć w ZX-Spectrum jest odświeżana przez procesor. W Hermesie, Juniorze i innych konstrukcjach cała pamięć jest odświeżana przy okazji wyświetlania grafiki. Wówczas długość rejestru "R" nie ma znaczenia.
    • 9: CommentAuthorseban
    • CommentTime26 Oct 2022
     
    Hejka!

    Bardzo, ale to bardzo Ci dziękuję za tak obszerne i szczegółowe wyjaśnienia! Przyznaję że Twoje konstrukcja i zastosowane w niej pomysły zaskakują bardzo pozytywnie! Widać jak wiele godzin pracy i myślenia w to włożyłeś! Możliwość przyjrzenia się tej konstrukcji to niesamowita frajda! :)
    • 10: CommentAuthorseban
    • CommentTime26 Oct 2022 zmieniony
     
    ... del ...
    • 11: CommentAuthorEdWin
    • CommentTime26 Oct 2022
     
    Hejka,

    Z tego główkowania wychodzą ciekawe wnioski przydatne gdzie indziej. Np. że utrzymując -RAS=-CAS=0 można prawdopodobnie zmienić adres i odczytać inny bit z tego samego wiersza pamięci, nie wykonując pełnego cyklu dostępu do pamięci. Nie próbowałem, ale koło 2000 roku trafiłem na wzmianki że w PC stosuje się rozwiązanie z pojedynczym zboczem -RAS i kilkoma zboczami -CAS do odczytania wielu adresów naraz.

    Generalnie jest to wiedza herme(nomen omen :-)tyczna, zupełnie niepotrzebna dla 99.999% rozmówców. Dlatego Twoje pytanie tak cieszy. :-)

    Takim rozwiązaniem "patentowalnym" jest to że co drugi cykl CPU (0, 2) DRC odczytuje bajt z adresu RAM wskazywanego aktualnie na szynie do rejestru LS373. Większość tych odczytów jest zbędna, ale jeśli CPU będzie akurat potrzebował tych danych, to ma je od razu dostępne. To jest wypracowane wskutek tego tygodnia chorowania (na zwolnieniu lekarskim byłem de facto dwa tyg.) i "lektury" wykresów z cyklami z książki Sachy i Rydzewskiego (którą wciąż ją mam). CPU daje za mało czasu na zorganizowanie odczytu, więc te dane są przygotowywane "na wszelki wypadek" i dostępne od razu. Rozwiązane powoduje, że przy odczycie RAM nie są nigdy generowane wait-states, mimo iż grafika pracuje w najlepsze. Wait states pojawiają się sporadycznie przy zapisach (prawdopodobnie i tak rzadziej niż w np. Juniorze czy ZX-Spectrum), natomiast zupełny brak spowalniania odczytu powoduje, że można emulować ROM bez straty prędkości.

    Moglibyśmy omawiać te szczególiki publicznie (może kogoś jeszcze coś oświeci ;-) ale to jest forum Atari. W ogóle nie powinienem się tu odzywać. ;-)))

    /E.
    • 12:
       
      CommentAuthorjhusak
    • CommentTime27 Oct 2022 zmieniony
     
    Ale my - Atarowcy - nie jesteśmy tacy herme:)tyczni :) Mnie to bardzo interesuje, bo to historia, a historią się zajmujemy i komputerami Atari. Czasem się o SIDA pokłócimy, ale Atari też potrafi w sidy, czy to programowo, czy hardware'owo.

    Amigi też nam nie są obce jako bezpośrednie hardware'owe kontynuatory Atari 8-bit.
    • 13: CommentAuthorEdWin
    • CommentTime27 Oct 2022
     
    W przedwczorajszym wywiadzie pan Andrzej Sirko (konstruktor Cobry) zauważył, że 6502 ma prostszy cykl dostępu do pamięci i na nim łatwiej byłoby rozdzielić dostęp do RAM pomiędzy CPU i obraz. Przy projekcie Hermesa rzeczywiście zazdrościłem konstrukcjom bazującym na 6502 tej elegancji. Ale Atari 800XL czy C-64 były zbyt skomplikowane i za mało je znałem, aby dało się je "podrobić" za pomocą układów TTL i posiadanej technologii. Ostatecznie udało się pogodzić dostępy do pamięci i jak widać, nie wymagało to tak dużego "pedałowania" jak AS powiedział. :-)

    Uwagę odnośnie Amigi zauważyłem i zmilczam. ;-P
    • 14: CommentAuthorZenon
    • CommentTime27 Oct 2022
     
    Jak najbardziej interesujące. Gdyby jeszcze wykresy były, co i jak było by widać jak to śmiga. Są na świecie rzecze o których tłum nie wie, ale szczególarze wiedzieć chcą.
    • 15:
       
      CommentAuthorpancio
    • CommentTime27 Oct 2022
     
    Piękna rzecz taki "jedyny egzemplarz na Świecie". Gratuluje i chętnie posłuchałbym o kulisach powstawania projektu... Może jakieś Zumowisko?
    • 16: CommentAuthorEdWin
    • CommentTime27 Oct 2022
     
    @Zenon: istotnie, wykresy przydadzą się. Gdy znajdę chwilkę to zeskanuję z książki i dodam do strony, bo tam jest parę detali o których warto powiedzieć.

    @pancio: możliwe, ale najpierw chciałbym uruchomić Hermesa. Najlepiej pokazać go na żywo. On istnieje i jest w niezłym stanie, ale gdy sprawdzałem 2 miesiące temu to stał na resecie. Usterka nie wygląda na jakąś trudną, ale dostęp do płytek podczas pracy jest utrudniony ze względu na modułową budowę. Najgorsza byłaby konieczność naprawy backplane, bo tam są dziesiątki cienkich drucików. Nie jest to kynar, tylko miedziane przewody teletechniczne 0.6mm. Po prawie 35 latach mogą być kruche i podatne na ułamanie przy próbie rozłożenia.
    • 17:
       
      CommentAuthorBca
    • CommentTime27 Oct 2022
     
    wow
    • 18: CommentAuthorplinius
    • CommentTime28 Oct 2022
     
    @EdWin

    Gratuluję pomysłów i wykonania. Może chcesz zrobić kopię? Proponuję, bo boję się, że projekt przepadnie. Jakby zaprojektować płytę, dokładną kopię Twojego pomysłu, aby tak jak Cobrę1 ludzie mogli sobie sami składać, to by uratowało Hermesa od zapomnienia
    • 19: CommentAuthorKWF
    • CommentTime28 Oct 2022
     
    @EdWin

    Bardzo ciekawy komputer i cała idea wykonania go w formie modułowej. Dla mnie to taki protoplasta RC2014.

    Trzymam kciuki za ponowne uruchomienie tej maszyny i czekam na wieści z placu boju.

    Swoją drogą propozycja kol. @pliniusa, aby odtworzyć Twoją maszynę, jest jak najbardziej godna rozważenia i ją popieram. A z tego co widziałem na dostępnych schematach, to moduł DRC będzie największym wyzwaniem oraz największy gabarytowo.
    • 20:
       
      CommentAuthormav
    • CommentTime28 Oct 2022
     
    Niesamowite!
    • 21: CommentAuthorEdWin
    • CommentTime28 Oct 2022 zmieniony
     
    Intencja udostępnienia i odtworzenia jest. Tylko że nie jestem emerytem mającym mnóstwo wolnego czasu... :-/

    Musicie zobaczyć zdjęcia płytek wykonane współcześnie. Tam jest kilka poprawek, 2..3 może. Jedna jest zrobiona po to aby Arkanoid "1" działał, jedna bodaj poprawia obsługę przerwań.

    Do moich potrzeb to wystarczało, bo chciałem po prostu mieć komputer. Doskonały nie musiał być. Współcześnie wykonana wersja "dla Ludu" ;-) powinna mieć pewne poprawki. Plan byłby taki:

    Zmiana 1:

    Zaprojektowałbym płytkę DRC np. w KiCAD, w postaci modułu do oryginalnego Hermesa (czyli ze złączem krawędziowym) z następującymi zmianami:
    - multiplekser pixeli (74151) powinien być zastąpiony przez przyzwoity rejestr przesuwny np. 74165 taktowany zegarem C-1* (7MHz).
    - układy pamięci DRAM 4164 są obecnie trudne do zdobycia. Prościej byłoby je zastąpić dwoma układami SRAM 61256 (32KB każdy). Ale tu się zaczynają specyficzne "schody". Co prawda to wyeliminowałoby część multipleksera adresów, ale spowodowałoby konieczność wprowadzenia dodatkowej logiki przełączającej kierunek szyny danych RAM. RAM 4164 ma rozdzielone wejścia data-in i data out. Hermes z tego korzysta. Tak że dostęp do RAM z szyną dwukierunkową będzie bardziej skomplikowany. Przy zastosowaniu DRAM 4x64KB (4464) byłoby jeszcze gorzej, bo tam jest dwukierunkowo i z multipleksowaniem adresów. IMO opcja z SRAM wydaje się jedyną sensowną.

    Zmiana 2:

    Nowa płytka CC powinna mieć nieco zmienioną logikę wyznaczającą położenie impulsu synchronizacji poziomej - obecnie nadawany on jest nieco zbyt późno, przez co "PAPER" jest przesunięty w lewo. W pionie (przy licznikach linii) być może powinna być podobna poprawka, żeby przesunąć ramkę nieco w dół. Poza tym trzeba by dodać nieco bramek i generować impulsy wygaszania (ang. "front porch", "back porch" w analogowym sygnale video). Hermes ich nie generuje, co daje taki efekt, że na niektórych monitorach obraz ciemnieje po ustawieniu jasnego bordera. To wynika z zasady działania analogowych telewizorów, które wzmacniają sygnał wizji bez składowej stałej i odtwarzają ją dopiero po wzmocnieniu, na wejściu kineskopu. Od telewizora (monitora) zależy, czy będzie brał tzw. poziom czerni z impulsu synchro (i wtedy Hermes wygrywa) czy z wygaszania (Hermes leży). W Elwro 800 Junior takie niuanse są zaprogramowane w dodatkowym EPROM "TV" (2716, 2KB), ale IMO robota przy budowie poprawnego sygnału wizji jest zbyt prosta aby dawać do niej trudną do zdobycia i wymagającą programowania pamięć. Wystarczy kilka bramek. Najlepiej dekoder 74145 i kilka zworek, żeby można było wypróbować różne kombinacje.

    Zmiana 3:

    Układ przyjęcia przerwania (zespół bramek 7402 i tranzystor na dole schematu CPU) można zrobić bardziej elegancko, na np. połówce 7474, tak żeby to było wyzwalane zboczem. Obecnie tam jest niepotrzebnie przerzutnik R-S z filtrem różniczkowym.

    Dopiero po zaprojektowaniu tak poprawionych modułów i sprawdzeniu ich w oryginalnym Hermesie, pomyślelibyśmy o wersji jednopłytkowej. Płytka byłaby duża, wielkości tej do Juniora, choć patrząc na przykład "konkurencyjnego" Harlequina, dałoby się to pewnie upchnąć w obudowie wielkości ZX-Spectrum. Ale oni tam chyba używają płytki mającej 4 warstwy lub więcej, bo nie wyobrażam sobie, jak pomieścili ścieżki na dwóch warstwach.

    W ramach sportów ekstremalnych ;-) , mogłaby powstać wersja SMD (tak jak ktoś to zrobił w COBRZE) albo patriotyczna wersja CEMI, stosująca układy polskiej produkcji. O ile jakieś były. Np. 2x 7475 zamiast 74373 itp.

    BTW Hermes korzysta z 56-stykowych złącz które nie są zgodne z żadnym znanym mi standardem zachodnim. Występują w radzieckich kalkulatorach Iskra 111 z 1970s. Takie coś miałem wtedy pod ręką do rozebrania. Nie sądze żeby te złącza były do zdobycia teraz.

    ____
    * C-1 - (C minus jeden) przyjąłem nomenklaturę, że C0 (C zero) to zegar CPU (3.5MHz), C1 jest podzielony /2 (1.75MHz) itd. "C-1" jest o stopień wyżej. Cała konstrukcja pracuje synchronicznie. Z wyjątkiem rejestru przyjęcia przerwania i oczywiście liczników, tam praktycznie nie ma maszyn stanu. Wszystko obsługuje logika kombinacyjna.
    • 22: CommentAuthorEdWin
    • CommentTime28 Oct 2022 zmieniony
     
    Jeszcze o jednym "patentowalnym" rozwiązaniu z Hermesa, które może się przydać komuś chcącemu "czerpać" z tej konstrukcji: w analogicznych konstrukcjach (np. Junior) do adresowania pamięci obrazu stosuje się liczniki synchroniczne (np. 74161). Gdy zwykły licznik asynchroniczny się "przekręca" (np. 011111111 -> 100000000) potrzeba trochę czasu aż wszystkie bity przybiorą nowy stan. Zanim to nastąpi, na wyjściu licznika pojawiają się niepożądane kombinacje (np. 011100000). Licznik synchroniczny gwarantuje, że nowa kombinacja pojawi się na wyjściu od razu taka jak należy. Ale przez to jest bardziej skomplikowany zarówno sam licznik jak i posługiwanie się nim.

    W Hermesie powyższy problem nie występuje. Są stosowane zwykłe liczniki (7493 itp.) połączone w łańcuch. Jest to możliwe dzięki wspomnianej wcześniej metodzie dzielenia dostępu do RAM między wyświetlanie a procesor. W czterotaktowym "makrocyklu" (0..3) cykle 0 i 2 są przeznaczone na dostęp procesora. Przeniesienia następują w cyklu 0. Wówczas dostęp do pamięci ma procesor i te chwilowe stany nie mają znaczenia. Cykl trwa 286 ns, więc jeśli będą zastosowane nawet niezbyt szybkie liczniki, w których ustalenie każdego bitu zajmie powiedzmy, aż 10 ns, to w łańcuchu 9-ciu takich liczników wszystko się ładnie ustali po max. 90 ns. Gdy trzeba będzie odczytać komórkę pamięci obrazu, wszystkie bity adresu będą "już dawno" właściwe. :-)

    NB: Z-80 wczytuje dane 2.5 cykla zegara od momentu wystawienia adresu. Jeśli więc mu je będziemy odczytywać (profilaktycznie, do rejestru) co drugi takt, to one będa gotowe zawsze na czas, bez wstrzymywania za pomocą wait state. Przy czym bardzo ważne tu jest, aby makrocykl zaczynał się w połowie taktu zegara CPU (czyli on jest przesunięty w fazie o 180 stopni) bo tylko wtedy moment wystawienia adresu przez CPU "zgrywa się" z makrocyklem w taki sposób, aby dane były odczytane na czas. To jest trzecie "patentowalne" rozwiązanie z Hermesa, które wymagało wnikliwego przechorowania ;-) wykresów z cyklami dostępu Z80 do pamięci.
    • 23: CommentAuthorKWF
    • CommentTime28 Oct 2022 zmieniony
     
    @EdWin

    Harlequin 48 i pochodne (Harlequin 128K, TC2048 na układach logicznych, ZX Nuvo i cała reszta rodziny) spokojnie mieszczą się na formatce płyty gumiaka i PCB mają dwuwarstwowe. :)
    • 24: CommentAuthorseban
    • CommentTime28 Oct 2022
     
    @EdWin: Jeszcze raz dzięki za tak szczegółowe opisy! Mógłbym to czytać godzinami. Tzn. jakbyś napisał elaborat na 100 stron ze wszystkimi szczegółami dotyczącymi tej konstrukcji, to czytałbym jak pasjonującą książkę.

    Zastanawiałem się jak działa Twoje czytanie danych dla Z-80 z wyprzedzeniem i nie mogłem zrozumieć do czasu aż nie wspomniałeś o tym w "NB".

    Wszystkie Twoje patentowe rozwiązania są fenomenalne :) A patent na asynchroniczne liczniki mistrzostwo.

    No i właśnie też mi się bardzo spodobało to że masz rozdzielone DI/DO w kostkach DRAM. Zazwyczaj widzi się te linie połączone razem. Może z raz w życiu widziałem że ktoś wykorzystał to taki sposób że miał rozdzielone linie DI/DO.

    No i chwilę mi zajęło jak za pomocą '151 i reszty dookoła robisz sobie pixel-data-out :)
    • 25: CommentAuthorEdWin
    • CommentTime28 Oct 2022 zmieniony
     
    @seban: No właśnie to pixel-data-out na multiplexerze 74151 jest pierwszą rzeczą do zmiany (p. Zmiana1) , bo "patent" z dodatkowym czasem na przekręcanie się liczników w tym miejscu akurat nie działa. Mimo iż pracują tu tylko 3 bity (C0..C2), przeniesienia licznika są widoczne w postaci pikseli o nierównej szerokości. Skutki widać trochę na zdjęciu ekranu z wczytującą się grą Exolon (?). Na tle planet i w paru innych miejscach widać pionowe linie wysokie na 8 pikseli lub ich wielokrotność. Po uruchomieniu Hermesa okazało się, że piksele są nierówne, ale jeszcze bardziej przykre były cienkie pionowe linie na znakach, spowodowane przeniesieniami licznika sterującego multiplekserem. Dodałem więc prosty układ całkujący (rezystor 220R i kondensator 100pF) i te linie znikły, ale powstało dodatkowe opóźnienie na sygnale pikseli. Zwykle ono nie przeszkadza, ale w przypadku tego obrazka tak. W ZX-Spectrum możesz mieć tylko dwa kolory (PAPER i INK) w polu znaku (8x8). Czasem aby zapewnić płynne przejście kolorów, na sąsiednim znaku kolory PAPER<->INK są zamienione. Takiej zmiany nie powinno być widać, bo równocześnie piksele w jednym ze znaków są odwrócone. Ale tu mamy to dodatkowe opóźnienie wprowadzone przez filtr i ono jest tylko w torze pixeli. Piksele niedokładnie zbiegają się z atrybutami i powstają linie psujące obrazek. :-(

    Problem nierównych pikseli został "rozwiązany" przez zmianę fontu na taki o grubszych rysach, wzorowany bodaj na Amstradzie. Oryginalny font ZX-Spectrum wygląda na Hermesie nieładnie.

    Dlaczego dałem tam 74151 i licznik? Bo wiedziałem jak taki układ się zachowa. Użycie 74165 (rejestr przesuwny PISO) wymagałoby dokładnego opisu zachowania takiego układu, a to nie były czasy że mogłeś sobie ściągnąć PDF z dokumentacją i zobaczyć wszystkie tabelki i wykresy. Miałem książkę "Elektronika Łatwiejsza Niż Przypuszczasz - Układy Cyfrowe" i tam na końcu jest minikatalog układów TTL z serii SN74 (a także ważniejszych CMOS z rodziny CD4000). Do każdego układu jest tylko schemat końcówek i jednozdaniowy opis. To było za mało. Owszem, można by układ zbadać, ale w tym celu musiałbym wykonać specjalną płytkę albo sporego "pająka" z przełącznikami i filtrami gwarantującymi pojedyncze zbocza impulsów. Bo przełączniki "iskrzą", a badany układ jest sekwencyjny i szybki, więc zamiast jednego impulsu mogłem mieć nieokreślone kilkaset. Podstawki były trudne do zdobycia, a płytki uniwersalne (ang. "breadboard") niedostępne. Chyba nawet nie wiedziałem że takie coś istnieje. Tak że wolałem rozwiązanie łatwiejsze i dające większe szanse na powodzenie. Na tym etapie nie było pewności, czy całość będzie działać.

    Hermes nosi ślady różnych ograniczeń i "obiektywnych trudności" czasów, w jakich powstał. Dziś tak nie róbcie. :-)
    • 26: CommentAuthorZenon
    • CommentTime28 Oct 2022
     
    Napisano powyżej:
    "Hermes nosi ślady różnych ograniczeń i "obiektywnych trudności" czasów, w jakich powstał. Dziś tak nie róbcie. :-)"

    No, ale dzięki temu ma życie w sobie, nie jest bezdusznym robotem. Rzut okiem i widać że żyje i łatwo w środku "pogrzebolić", nie licząc oczywiście optyliarda rozłączeń które po drodze trzeba zrobić.
    • 27: CommentAuthorEdWin
    • CommentTime28 Oct 2022 zmieniony
     
    Tu jest skan z książki "Mikroprocesor w pytaniach i odpowiedziach" Sachy i Rydzewskiego. Pokazuje cykle dostępu do pamięci Z-80. Trochę go pokolorowałem, aby pokazać jak się mają cykle CPU do cykli DRC. Dwa niebieskie i dwa różowe składają się na jeden "makrocykl". Nie zaznaczyłem które są dla grafiki a które dla CPU, bo to jest losowe. Tak samo jak losowe jest, gdzie przypadnie cykl 0.

    Z tego rysunku można wywnioskować, że wspomniane wyżej przesunięcie cykli CPU o pół taktu zegara nie ma znaczenia przy odczycie, ale przy zapisie pozwoliło wyeliminować część logiki generującej sygnał -WAIT. Waitstate jest konieczny, jeśli zapis wypadnie na niewłaściwym cyklu DRC. Na skanie schematu DRC widoczne są ślady wygumkowania przerzutnika RS zbudowanego na dwóch bramkach NAND. Obok siedzi jedna czterowejściowa bramka NAND. -WAIT jest generowany dla zapisów, ale bramka nie używa sygnału -WR, bo jest za krótki. Zapis jest wnioskowany z innych sygnałów. -WAIT jest generowany gdy są spełnione jednocześnie cztery warunki (licząc wejścia bramki NAND od góry):
    - zapis ma się odbyć w cyklu przeznaczonym na dostęp do pamięci grafiki,
    - operacja dotyczy pamięci RAM (-RAMS=0, ten sygnał pochodzi z dekodera adresów na płytce CPU)
    - nie jest to odczyt (-RD=1)
    - nie jest to cykl odświeżania pamięci (-RFSH=1)

    Do tego ostatniego przydałby się dodatkowy rysunek pokazujący cykl odświeżania (Z-80 wykonuje go zawsze po pobraniu instrukcji, razem z odświeżaniem zajmuje mu to 4 cykle) ale pewnie uwierzycie "na słowo". Polecam książkę, jest świetna.

    NB: jednym z warunków do wygenerowania -RAMS=0 (RAM Select) jest aktywny sygnał procesora -MREQ=0. MREQ oznacza dostęp do pamięci. Z-80 ma oddzielną przestrzeń adresową dla urządzeń wejścia/wyjścia, oddzielny sygnał do tego (-IORQ) i cykl wymagający oddzielnego wykresu. To go odróżnia od Motorolek w Atari, które mają I/O mapowane na pamięć.
    • 28:
       
      CommentAuthorYosh
    • CommentTime18 Nov 2022
     
    Magia! Podziwiam.
    • 29:
       
      CommentAuthorKaz
    • CommentTime20 Nov 2022 zmieniony
     
    EdWin - no to widzisz, jest masa chętnych na materiał o Hermesie, także tutaj: ->link<-

    A dla pamięci wklejam tu filmik z EdWinem (ale opowiadającym ad hoc o Elwro).

    • 30: CommentAuthorKWF
    • CommentTime22 Nov 2022 zmieniony
     
    @Kaz: dzięki za link do wywiadu.

    Przerysowane schematy @EdWina w KiCADzie są tu: ->link<-

    Schmaty są na razie bez modułu DRC i w wersji zgrubnej wymagającej sprawdzenia i porównana z oryginałam.
    • 31:
       
      CommentAuthorKaz
    • CommentTime22 Nov 2022
     
    KWF - proszę uprzejmie. A tu jeszcze sobie zostawię taki linczek, z fantami EdWina dla MKHI: ->link<-