Komputer 8-bitowy

Komputery retro, konsole do gier itd.

Moderatorzy: gsmok, tszczesn, Romekd, Einherjer, OTLamp

Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Tomasz Gumny pisze: wt, 23 sierpnia 2022, 10:31 Powinna gdzieś być, jeśli się nie zbiła przy przeprowadzkach. Poszukam. W weekend będę w Poznaniu, to mogę pożyczyć. Czym programujesz?
Programuję za pomocą TL866. Nie wiem czy w piątek sam będę w Poznaniu, ale chętnie Ci wyślę te EPROMy (i znaczek powrotny), jeślu by była taka możliwość.
staszeks
2500...3124 posty
2500...3124 posty
Posty: 2945
Rejestracja: sob, 18 września 2004, 19:38
Lokalizacja: Bielsko-Biała

Re: Komputer 8-bitowy

Post autor: staszeks »

Jeżeli z kolegą nie wyjdzie to, ja mogę pomóc na zasadzie, przysyłasz, wsadzam do kasownika, wyjmuje pakuję i wysyłam na Twój koszt.
Ponosisz tylko koszty przesyłki.
sam sobie w życiu
jakoś nie radzę
więc biuro porad
dla innych prowadzę
/Sztaudynger/
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Dziękuję, Staszek, Tomek już mi użyczył swojej lampy i udało mi się wykasować wszystkie moje EPROMy z okienkiem. Wielkie podziękowania dla Tomka. Te stare EPROMy są potrzebne do karty graficznej, która, jak pisałem wcześniej ma buga w softwarze powodującego zniekształcenie pierwszej linii znaków.

Udało mi się też dodać do komputera wsparcie dla klawiatury PS2. Klawiatura taka komunikuje się po prostu za pomocą transmisji szeregowej, z jednym bitem stopu i jednym bitem parzystości, i dostarcza własnego zegara. Od strony sprzętowej sprowadza się to więc do połączenia klawiatury z DARTem, jedynie trzeba odwrócić sygnał zegarowy, bo DART spodziewa się wyzwalania zboczem narastającym a zegar klawiatury jest aktywny na zboczu opadającym.

Dodałem także do płyty głównej standardowe gniazdo dysku IDE40, do którego zwykłą taśmą znaną z pecetów podłączyłem dysk Compact Flash, dzięki czemu nie jest już potrzebna zewnętrzna karta z dyskiem.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Oto zdjęcie dysku CF podłączonego do płyty głównej standardową "szmatą":
IMG_20220911_163742038.jpg
Obecnie buduję drugi egzemplarz komputera, mający tylko 32KB ROMu i 32KB RAMu i wspierający jedynie klawiaturę PS2. Docelowo będzie miał kartę graficzną VGA, podczas gdy pierwszy egzemplarz otrzyma kartę PAL.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Wydaje mi się, że popełniłem potworny błąd projektując dekodowanie adresów urządzeń We/Wy. Dla przykładu pokażę schemat dekodowania przełączania banków pamięci, które, jak pamiętamy, jest aktywowane liniami A5 i IORQ. Obie te linie muszą być w stanie niskim jednocześnie, co dzieje się podczas wykonywania instrukcji OUT jeśli adres portu wynosi 11011111b:
acknowledge.png
To czego nie wziąłem pod uwagę, to że warunek ten może zająć także podczas cyklu potwierdzenia przerwania (interrupt acknowledge). W procesorze Z80 nie ma wolnych nóżek aby jedną poświęcić wyłącznie na potwierdzanie przerwania, konstruktorzy procesora użyli więc do tego celu pinu M1 i IORQ, które w innym przypadku nie są nigdy aktywne jednocześnie. W czasie potwierdzenia przerwania linia IORQ jest aktywna, na szynie adresowej pojawia się wartość licznika programu (czyli w zasadzie, z punktu widzenia urządzeń We/Wy, wartość losowa), a na szynie danych wektor przerwania. W moim komputerze jedyne urządzenie używające przerwań to klawiatura, a wektor tego przerwania to 00h. Oznacza to, że obsługa przerwania klawiatury może "niechcący" zapisać wartość 00h do rejestru banków pamięci. Póki co w czasie testów komputera nie zauważyłem żeby tak się działo, ale wydaje mi się jedyny tego powód to że adres procedury odczytu z klawiatury akurat zawiera ustawiony bit A5.

Podobny problem jest ze sterowaniem buzzerem. Tutaj problem jest również niezauważalny, a to zapewne dlatego, że naciśnięcie klawisza powoduje "kliknięcie" buzzerem (szybkie włączenie i wyłączenie) co maskuje jakąkolwiek przypadkową wartość wpisaną do przerzutnika sterującego buzzerem.

Jeszcze gorzej jest w przypadku cyklu potwierdzania przerwania niemaskowalnego, bo tam równieć linia RD procesora staje się aktywna. Trochę nie rozumiem czemu to nie powoduje żadnych obserwowalnych problemów, mimo że się dzieje 50 razy na sekundę.

Nie mam niestety za bardzo miejsca na płytce aby dodać jeszcze jeden czip który by dekodował linię M1, ale mam jeden zapasowy inwerter, wymyśliłem więc taki oto trick:
acknowledge2.png
Awatar użytkownika
Marek7HBV
3125...6249 postów
3125...6249 postów
Posty: 3933
Rejestracja: wt, 1 grudnia 2015, 19:26

Re: Komputer 8-bitowy

Post autor: Marek7HBV »

Nie ma się tym za bardzo przejmować-w okienkach są tysiące :lol: takich powiązań i najwyżej wystąpi ,,nieczekiwany wyjątek,, :cry: . :D
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Komputer 8-bitowy

Post autor: Tomasz Gumny »

W czasie potwierdzenia przerwania linia IORQ jest aktywna, na szynie adresowej pojawia się wartość licznika programu (czyli w zasadzie, z punktu widzenia urządzeń We/Wy, wartość losowa),
Czy naprawdę nie dałoby się sprawić, żeby na szynie danych pojawiał się "nieszkodliwy" adres?
Tomek
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Raczej nie. Dokumentacja procesora nie specyfikuje czy to co się pojawia na szynie adresowej to licznik programu w momencie wystąpienia przerwania czy w momencie obsługi przerwania. W tym drugim przypadku można by było jakąś sztuczką programową sprawić żeby ten adres miał wszystkie bity dekodujące urządzenia We/Wy ustawione (czyli nieaktywne), ale logicznie mi się wydaje, że musi to być adres gdzie procesor się znajduje w momencie otrzymania przerwania - przecież wtedy procesor jeszcze nie zna adresu procedury obsługi przerwania, po to potwierdza przerwanie żeby otrzymać wektor obsługi.

Mój plan w tym momencie to obsłuchać komputer sondą żeby się dowiedzieć czemu działa choć nie powinien i na pewno się podzielę wnioskami.
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Komputer 8-bitowy

Post autor: Tomasz Gumny »

Zdaje się, że klawiaturę odpytujesz w przerwaniu niemaskowalnym. W cyklu przyjęcia tego przerwania nie widzę aktywnego IORQ. Jest za to nieszkodliwa kombinacja MREQ i RD.
Tomek
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Zgoda, przerwanie niemaskowalne nie będzie problemem, ale klawiaturę odczytuję przerwaniem maskowalnym.
Przerwanie maskowalne jest używane jako przerwanie synchronizacji pionowej.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Mój pomysł za bardzo nie działa, wygląda na to że zbocze opadające na M1 (na anodzie diody) chwilowo ściąga wejście bramki OR do stanu niskiego (ale nie za każdym razem?), mimo że IORQ jest cał czas wysokie. Pewnie to jakaś bezwładność diody?
acknowledge.png
Załączniki
acknowledge.png
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Komputer 8-bitowy

Post autor: Tomasz Gumny »

Zapewne pojemność diody w połączeniu z pociągnięciem że "słabego" stanu wysokiego na IORQ w dodatku przez rezystor. Jaki dałeś rezystor, diodę i ile trwa szpilka?
Może lepszym rozwiązaniem byłaby logika na tranzystorach?
Tomek
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Szerokość impulsu podana przez Logica to 0.125us, ale to po prostu szerokość jednej próbki, przy częstotliwości próbkowania 8MHz. Rezystor ma 1k, czyli pojemność diody wystarczy że by była zbliżona do 1pF.
Zaznaczam, że pozostałe układy We/Wy (oprócz przełączania banków), czyli klawiatura, buzzer, dysk i UART działają poprawnie, gdyż one dekodują też linie RD/WR. Problem dotyczy jedynie przełączania banków.
Chyba po prostu wepchnę gdzieś jeszcze na płytkę jeden układ scalony, albo w ogóle zrezygnuję z przełączania banków, którego w ogóle nie chciałem mieć i dostałem "przypadkiem", lub raczej w wyniku szeregu błędnych decyzji.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Zapomniałem napisać: dioda Schottky.
staszeks
2500...3124 posty
2500...3124 posty
Posty: 2945
Rejestracja: sob, 18 września 2004, 19:38
Lokalizacja: Bielsko-Biała

Re: Komputer 8-bitowy

Post autor: staszeks »

Plącze się u mnie po półkach kilka książek o mikroprocesorach.
Być może je masz albo sąa dostępne w sieci.
jeżeli nie a uważasz, że jest tam coś przydatnego to kilka stron mógłbym w wolnych chwilach odskanować.
1. Modułowe systemy mikrokomputerowe
praca zbiorowa WN-T 1984
Załączniki
Obraz (2).jpg
Obraz (3).jpg
Obraz.jpg
sam sobie w życiu
jakoś nie radzę
więc biuro porad
dla innych prowadzę
/Sztaudynger/
ODPOWIEDZ