„Starożytne” procesory

Kącik dla elektroniki retro - układy, urządzenia, podzespoły, literatura itp.
tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » piątek 25 lis 2022, 21:27

Tak, są to ciekawe i mało popularne układy - aż dziw, bo były obecne w kilku popularnych komputerach domowych. Żadne z dostępnych SBC nie spełnia oczekiwań, by się bliżej zapoznać z tą architekturą. Warte poświęcenia uwagi jest rozwinięcie 6502 - W65C816 który na podobieństwo do Z280 może pracować w trybie 16-bitowym. Bliższym do M6800 jest mało znany u nas HD63C09(E)P, który też można znaleźć za niewielkie pieniądze za wielkim murem. Oba leżą sobie grzecznie w mojej wiecznej poczekalni, może kiedyś znajdę na nie czas lub zdobędę PCB do sensownego SBC, ale z tym jest słabo.

PS. Jest polska literatura na temat tego procesora: "Mikroprocesor 6502 i jego rodzina" H.Kruszyński, K.Kulpa, seria mikrokomputery wydawnictwa Sigma.

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1256
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: „Starożytne” procesory

Postautor: gaweł » piątek 25 lis 2022, 21:47

Zegar pisze:Wygląda w środku "motorolowato", ...


No bo historia lubi się powtarzać. Rozłam w Intel ekipy, która wycmoniła 8080 jest dosyć znany. Podobnie zdarzyło się w stajni Motoroli. Zespół opracowujący MC6800 się podzielił i część odeszła "na swoje". Tak powstała MOS Technology, toteż ich procki są bardzo podobne do procków Motoroli (tak jak Z80 jest podobny do i8080). Procki MOS Technology były stosowane w wielu komuterkach domowych (ATARI, COMMODORE a nawet w APPLE).

Chętnie nawiążę współpracę w temacie i na początek zaoferuję literaturę.
Data catalog, 1982 (MOS).pdf

MCS6500 - microcomputer family hardware manual, 1976 (MOS).pdf

MCS6500 - microcomputer family programming manual, 1976 (MOS).pdf


PS
Mogę mieć tego trochę więcej, ale przy moim "burdelu" na dysku, czasami trudno jest jest coś znaleźć. Muszę to w końcu uporządkować i zebrać w jednym miejscu.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
Zegar
User
User
Posty: 312
Rejestracja: wtorek 02 lip 2019, 14:42

Re: „Starożytne” procesory

Postautor: Zegar » piątek 25 lis 2022, 22:04

tapy pisze:"Mikroprocesor 6502 i jego rodzina" H.Kruszyński, K.Kulpa, seria mikrokomputery wydawnictwa Sigma.

Dzięki. Kupiłem na Aledrogo. :lol:
Najciekawsza płytka, jaką znalazłem: https://www.tindie.com/products/ancient ... or-rc2014/
Niestety wycofana ze sprzedaży na Tindie... Dostępna tu: https://oshpark.com/profiles/ancientcomputing/page/1 ale cena zwala z nóg. Dostępna jest do niej dokumentacja wraz z projektem w Eagle, ale trochę ją podrasuję i zrobię w KiCAD-zie. Może jutro...
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
Zegar
User
User
Posty: 312
Rejestracja: wtorek 02 lip 2019, 14:42

Re: „Starożytne” procesory

Postautor: Zegar » piątek 25 lis 2022, 22:08

gaweł pisze:Mogę mieć tego trochę więcej...

Dziękuję, na razie wystarczy. :D Zanim przebrnę przez te pozycje, zrobi się wiosna. Trzeba jeszcze robić inne rzeczy. :lol:
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » piątek 25 lis 2022, 23:30

Jest parę modułów do RC2014 dla tych procesorów 6808 i 6809, lecz szukam czegoś w postaci SBC, coś na podobieństwo czeskich Kilo/Bravo lub te japońskie SBC, lecz każdy ma to "coś" co mnie zniechęca. Jak znudzi mi się RC2014 ;) to coś zbuduję, ale dopiero jak skończą mi się pomysły (właśnie powstał mój 15 moduł do tego standardu i w kolejce kolejne 15...) :D

Awatar użytkownika
Zegar
User
User
Posty: 312
Rejestracja: wtorek 02 lip 2019, 14:42

Re: „Starożytne” procesory

Postautor: Zegar » niedziela 27 lis 2022, 20:40

Jak powiedziałem, tak zrobiłem. :D Nie wiem, czy dobrze, ale starałem się. Chciałem dodać switche do wyboru strony adresów I/O, ale odpuściłem. Nieznacznie zmodyfikowałem schemat płytki, o której wspominałem (bezczelnie wykorzystałem).
6502_RC2014.png

6502_RC2014.png

6502_RC2014.pdf

Polskojęzyczną książkę znalazłem w sieci i też zapożyczyłem... Na papierową nie chciało mi się czekać, więc wykorzystałem wolny czas.

http://atari.myftp.org/tekst_h/Mikropro ... odzina.pdf

Niestety spodziewałem się lepszej treści. Przeczytałem prawie całą i jestem zawiedziony. Nie dość, że są błędy drukarskie (zamiast schematu o podłączaniu ROM jest RAM), rzucają się w oczy błędy merytoryczne:
6502_err1.png

Chyba że za mało wiem o algebrze Boola.
Spodziewałem się przykładów programów, a zamiast nich znalazłem:
6502_sugestia.png

Mimo to myślę, że trochę się nauczyłem, chociaż z początku żałowałem wydanych 65 złotych.

W sieci znalazłem świetny podręcznik programowania:

https://ia600703.us.archive.org/30/item ... 02_OCR.pdf

PDF bardzo dobrej jakości. Działa wyszukiwanie, więc nie jest to tylko skan starego papieru.
Wiedziałem, że Motorola różni się od Intela czy Ziloga, ale żeby aż tak! Trzeba zweryfikować całą wiedzę o programowaniu i przestawić się na inny tryb rozumowania. Na pierwszy rzut oka kompletny odjazd... Jak sobie poradzić bez rejestrów szesnastobitowych? W ogóle jak żyć z trzema rejestrami... Jednak da się. Adresowanie indeksowe wydaje się być dużo lepsze niż w Z80. Filozofia całkowicie odwrotna - indeks jest ośmiobitowy, a baza szesnasto. Rozkazy krótsze i szybsze, ale nie ma na razie na czym poćwiczyć. ;)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » niedziela 27 lis 2022, 21:23

Zdecydowanie ładniejsza płytka niż oryginał i te które ja tu poprzednio zapodałem. Gratuluję! Jednak się da zrobić ładne PCB bez tworzenia SBC... tu jednak widać przewagę konstrukcji modułowych.
Mój pożegnalny moduł z pamięciami 62256 doskonale się tu sprawdzi (bez standardowego wyłączania ROM i programowego przełączania jego połówek; chociaż, dla chcącego... ;) ) i do pełni szczęścia potrzebny będzie tylko moduł transmisji szeregowej, w tym przypadku najlepiej na ACIA (MC68B50) i mamy cały kompletny komputer do poznawania nowej architektury. :)

ROMRAM.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Zegar
User
User
Posty: 312
Rejestracja: wtorek 02 lip 2019, 14:42

Re: „Starożytne” procesory

Postautor: Zegar » niedziela 27 lis 2022, 21:47

tapy pisze:Zdecydowanie ładniejsza płytka niż oryginał...

Dzięki za pochwałę, ale to nie konkurs piękności. ;) Zależało mi na przerwaniach, a zwłaszcza NMI i dlatego ośmieliłem się ukraść schemat i go poprawić.

tapy pisze:...do pełni szczęścia potrzebny będzie tylko moduł transmisji szeregowej, w tym przypadku najlepiej na ACIA (MC68B50) i mamy cały kompletny komputer do poznawania nowej architektury. :)

Nie planowałem iść tą drogą. Większość MBC czy RC2014 opiera się o CP/M lub inny system operacyjny. Chciałem cofnąć się jeszcze dalej, żeby poczuć klimat nowej przygody, jaka przydarzyła mi się w technikum. Nie będzie to takie samo przeżycie, ale spróbuję. Jeżeli płytka zadziała, podłączę do niej klawiaturę i wyświetlacz CA80 (nie byłbym sobą, gdybym nie spróbował). Jako pamięć wykorzystam albo Twoją bez CPU, albo inną, bo niewiele potrzeba. Napiszę mały monitor, który umożliwi "wklepywanie" kodu z kartki... Rozmarzyłem się. :lol:
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » niedziela 27 lis 2022, 22:13

Zegar pisze:Dzięki za pochwałę, ale to nie konkurs piękności.

Tu nie chodzi o grację i powab ;) , a o kulturę techniczną. Nie przemawiają do mnie PCB w którym układy są ułożone we wszelkich możliwych kierunkach, rozsypane jak klocki lego...

Zegar pisze: Napiszę mały monitor, który umożliwi "wklepywanie" kodu z kartki... Rozmarzyłem się. :lol:

To prawdziwy hardcore, ja z biegiem czasu stałem się bardziej leniwy, nawet oprogramowanie pod CP/M piszę na PC, w wygodnym edytorze, kompiluję w zwirtualizowanym środowisku tego systemu (natywne jego narzędzia, to jedyny relikt) i przesyłam na sprzęt. :D

Jak potrzeba coś z mojego portfolio RC2014, to zawsze możemy się wymienić, nie ma sensu wywarzać otwartych drzwi.

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » piątek 02 gru 2022, 00:54

Dorobiłem do kompletu moduł obsługujący procesory MC6809E i HD63C09EP, gdyż te z bez literki E, posiadające układ oscylatora są namiętnie przemalowywane i trudno je dostać oryginalne. Jak logikę kleju użyłem GAL16V8 ponieważ te procesory takowane są w dość specyficzny sposób, a nie chciałem zbytnio rozbudować ten moduł (wymagałoby to użycia trzech układów scalonych).
HD63C09.png

Układ będzie współpracował z wcześniej przedstawionym modułem ROM/RAM oraz kartą transmisji szeregowej na 16C550. Wedle zapewnień osób wspomagających mnie przy tym projekcie, po dodaniu modułu CF będzie można tam uruchomić Flex, Cubix, DOS65 i NitrOS/9, ale te nazwy są dla mnie równie obce jak architektura tego procesora. Nic, przyjdzie czas na naukę. ;)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » piątek 16 gru 2022, 18:15

Płytki już dotarły, szybciej niż krajowa przesyłka z generatorami kwarcowymi 12MHz. :D
W wolnych chwilach(?!) przyjdzie czas na zapoznanie się z tą 40 letnią "nowością" ;)
HD63C09EP.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » niedziela 18 gru 2022, 23:49

Myślę, że to na chwilę obecną jest koniec mojej przygody z tym procesorem. Poczeka na lepsze czasy, gdy będę dysponował czasem. Teraz wracam do procesorów Ziloga, bo tam jest długa kolejka jak na naszych drogach, gdy zima niespodziewanie i z wielkim zaskoczeniem dla drogowców sypnie śniegiem w grudniu ;)
basic1.png
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Zegar
User
User
Posty: 312
Rejestracja: wtorek 02 lip 2019, 14:42

Re: „Starożytne” procesory

Postautor: Zegar » poniedziałek 19 gru 2022, 05:34

tapy pisze:Myślę, że to na chwilę obecną jest koniec mojej przygody z tym procesorem.

Jak dobrze mieć przetestowany program! Szast - prast i sprawdzone. :like:
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » poniedziałek 26 gru 2022, 20:48

Zegar pisze:Jak dobrze mieć przetestowany program! Szast - prast i sprawdzone.

W tym przypadku, to nie było wielkie wyzwanie - dostosować konsolę do używanego przez mnie układu transmisji szeregowej.

Zrobiłem drobny test wydajności i wygląda na to że, 3MHz HD63C09 jest równoważny 8MHz Z80, tylko nie wiem w jakim trybie pracował ten HD63C09, w swoim natywnym czy emulacji MC6809, bo jeszcze nie doszedłem jak się to przełącza, a z tego co jest napisane na wiki różnice w wydajności pomiędzy tymi trybami dochodzą do 30% (więc może okazać się jeszcze szybszy).

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » piątek 30 gru 2022, 01:14

Nie miała baba kłopotu... Moduł HD63C09 może nie jest tym, czym bym się zajął na dłużej, ale przypomniał mi on pewien koncept, który chodzi za mną od dawna - most łączący różne architektury.
images.png

Do tego celu idealnie nadaje się 74x646 i postanowiłem sprawdzić, czy da się to upchnąć na standardowym PCB standardu RC2014. Wygląda, że się da i może coś z tego powstanie jak znajdę chwilę czasu, bo temat jest bardzo ciekawy jako wyzwanie. Na przedstawionym rysunku widać, że zmieści się całość (procesor HD63C09, pamięć RAM 64kB w wąskiej obudowie, ROM, rzeczony 74HCT646 i sklejone to w całość układem CPLD EPM7032/64, w zależności ile komórek będzie to wymagało). Równie dobrze może to być całkiem inny procesor, padło na tego bo jakieś szczątkowe doświadczenie z nim już mam. Od obu stron (Z80 i "obcego") będzie to widziane jako urządzenie I/O z jednobajtowym buforem i dwoma bitami statusu - dane z pierwszego/drugiego uP zostały zapisane w buforze oraz pierwszy/drugi uP odczytał to co zapisał drugi/pierwszy.
HDModule.jpg

Wygląda, że trafił mi się nowy, niespodziewany temat... ech. :shock:
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1256
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: „Starożytne” procesory

Postautor: gaweł » piątek 03 lut 2023, 20:59

tapy pisze:pewien koncept, który chodzi za mną od dawna - most łączący różne architektury.


tapy pisze:Do tego celu idealnie nadaje się 74x646 i postanowiłem sprawdzić


Również tą koncepcją rozpatrywałem, ale wtedy ten układ był tylko na kartach mojego katalogu Texas'a i nie bardzo było, gdzie go kupić.


Współpraca między różnymi
systemami… już kiedyś robiłem rozkimy
na ten temat, sprawdziłem kilka rozwiązań.
Teraz podzielę się spostrzeżeniami,
koncepcjami i wiedzą.


Kolejka FIFO

fifo_000.jpg


Sensownym rozwiązaniem było użycie rejestru równoległego (typu 74HC574 lub podobnego), gdzie wpis danych jednocześnie generował przerwanie do drugiego systemu (bazując na 74HC74). Drugi, odczytywał (odczyt gasił wystawione przerwanie) i generował przerwanie w drugą stroną, że dane zostały odczytane. Rozwiązanie to ma jedną wadę, ponieważ transmisja jest po jednym bajcie, to trudno określić, kiedy już jest koniec danych. Próbowałem zawrzeć w pierwszym bajcie przesyłanego pakietu danych jego długość, by „przeciwnik” miał szanse się skumać, że to już koniec. Ale tu również jest drobny problem, bo nie zawsze z góry wiadomo jak długi będzie pakiet, trzeba odebrać cały i go przybuforować. Także coś takiego nie do końca zdaje egzamin. Stanęło na tym, że zostało zużyte drugie przerwanie zewnętrzne do przesłania wiadomości, że to już jest koniec.
Problemem innej kategorii jest to, że w sytuacji, gdzie procki pracują z różną prędkością, to jeden z nich trochę marnotrawi swój czas procesora. Ideałem staje się kolejkowanie danych. Z tego względu zainteresowałem się scalonymi rejestrami FIFO. Udało mi się zdobyć kilka układów Cypress’a CY7C425 (asynchroniczny FIFO, 1k*9bit). Jakoś tak się potoczyły koleje, że układy przeleżały w szufladzie jakieś 20 lat, więc może w końcu nadszedł dla nich czas.
Dzisiaj w necie znaleziona dokumentacja od CY7C425 jest praktycznie nieczytelna, ale wiadomo, że układ jest zgodny z IDT7202 (produkcji IDT). Tam przynajmniej dokumentacja daje się przeczytać. No więc CY7C425 (lub jak kto woli IDT7202) to asynchroniczny bufor FIFO o pojemności 1024*9 bit z niezależnym zapisem i odczytem oraz sygnalizacją stanu: pusta kolejka i pełna kolejka. Nóżki są następujące:
fifo_001.png

Na okoliczność użycia układu w obudowie PLCC, dorobiłem do własnego wyposażenia kolejny detal: przejściówkę z PLCC 32 na DIP 32.
fifo_002.jpg

Takie przejściówki w płycie SolderLess słabo się przyjmują, bo „strasznie się rozpychają”. Zrobiłem taką „dwuwarstwową”, gdzie dolna ma rzędy nóżek do płyty SolderLess bardziej wewnątrz, co daje szanse na wetknięcie druta.
fifo_003.jpg

Zbudowałem sobie układ próbny do badań „napiechotnych”, bo wtedy dają się dostrzec potencjalne problemy. Schemat to:
fifo_004.png

Początkowo miałem przycisk z układem gaszenia klawiszowych dzwonków, ale by sprawdzić, czy zapali flagę zapełnienia całej pamięci konieczne jest wygenerowanie 1024 impulsów. Trochę przeceniłem swoją cierpliwość i doszedłem do wniosku, że to coś nie najlepsze rozwiązanie.
fifo_005.jpg

Zamieniłem przycisk z jego obsługą na generator na 555 (tak by dawał jakieś 200Hz). Nawet w takich przypadkach zapełnienie całości zajmuje tak trochę czasu.
fifo_006.png

Układ musi mieć wejście XI (na rysunku nóżkologii) uglebione, co znaczy, że pracuje samodzielnie.
No działa na razie zgodnie ze swoim przeznaczeniem. Przycisk Reset #RS zapala flagę sygnalizującą pustą kolejkę (sygnał #EF i dioda LED zielona).
fifo_007.jpg

Podanie na wejście #W sygnału z generatora realizuje zapisy i po jakimś czasie zapala się dioda LED żółta sygnalizująca zapełnienie kolejki (sygnał #FF).
fifo_008.jpg

Jak grzebnąłem „drutem glebowym” po wejściu #R (czyli zrobiłem kilka nieautoryzowanych, trudno zgadnąć ile odczytów), zgasła dioda zapełnienia kolejki.
Na razie to tyle z testów napiechotnych, bo dalej trzeba zaprząc procka do pracy, bo sam wszystkiego nie zrobię.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » piątek 03 lut 2023, 23:34

To prawda, jednobajtowy bufor ma swoje ograniczenia i zdecydowanie ten problem rozwiązuje użycie asynchronicznego FIFO lub pamięci dual-port.

Jak jesteśmy już w temacie mostów pomiędzy systemami, to warto też zwrócić uwagę na dostępne jeszcze układy Z8038 FIO Ziloga posiadające wewnętrzny 128 bajtowy bufor wraz z całym otoczeniem ułatwiającym realizację takiego celu.
FIO.jpg

Dla sympatyków Z80 jest jeszcze jedna bardzo interesująca opcja, która leży u mnie w poczekalni - Z80182 ZIP. Jest to procesor klasy Z180 z interface udającym UART 16C450 dla systemu nadrzędnego, co umożliwia jego łatwe wdrożenie w dowolnej architekturze, która jest w stanie obsłużyć taki układ transmisji szeregowej.
zip.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1256
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: „Starożytne” procesory

Postautor: gaweł » niedziela 05 lut 2023, 10:50

W temacie współpracy różnych systemów...

Pamięci RAM dual port:
dpram.jpg


Również czekają by się włączyć do pracy, chociaż te były przewidziane do łączenia procków z układami generacji obrazu (kiedyś na monitor CRT, teraz bardziej na LCD). Już kiedyś popełniłem układ do wyświetlania na telewizor i na własne oczy się przekonałem, że wymyślona wtedy metoda rozwiązywania konfliktów na dostęp do danych była do d...y. No ale każe doświadczenie jest cenne, jeżeli wyciąga się z niego wnioski, więcej tak nie zrobię :D .
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
jarekz
Posty: 6
Rejestracja: niedziela 29 gru 2019, 21:07

Re: „Starożytne” procesory

Postautor: jarekz » poniedziałek 06 lut 2023, 18:09

gaweł pisze:MC146805E2
(...) wspomniana Motorola dała światu procka MC6800 na jego bazie stworzyła całą rodzinę układów. Można się zastanawiać, czy przykładowo układ MC6802 zaliczyć jeszcze do klasycznych mikroprocesorów czy już zakwalifikować do grupy mikrokontrolerów (...)


Skoro o Motoroli mowa:
IMG_20230206_174931.jpg

W styczniu uruchomiłem ten mały systemik, oparty na MC6803. Procesory Motoroli zawsze mi się podobały, o wiele bardziej niż Intele czy Zilogi.
A w szufladzie czeka MC68008. Programowanie go w asemblerze to prawdziwa uczta dla szarych komórek. Przedsmak już kiedyś miałem na komputerze Sinclair QL...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » poniedziałek 06 lut 2023, 19:27

jarekz pisze:W styczniu uruchomiłem ten mały systemik, oparty na MC6803.

Podziwiam za cierpliwość tego typu montażu, choć sam swego czasu w podobnej technologii budowałem swe projekty (specjalny drut, wyglądający jak nawojowy, ale pokryty lakierem który można było szybko usunąć kropelką cyny, obecnie prawie nie do dostania). Te projekty mają swoją zaletę, nie łatwo się z nimi rozstać z powodu nakładu pracy przy ich powstawaniu i dlatego częściej mają lepiej dopracowany software. :)

To prawda, procesory Motorola są mniej u nas znane, a szkoda - po krótkim z nimi się zapoznaniu widzę ogromny potencjał w nich drzemiący. Podobny los spotkał 8085, który jest traktowany jak gorszy Z80, a okazuje się, że to marketing Intela zabił ten procesor nie ujawniając jego tajemnic (8088 musiał się sprzedać). Krętą drogą toczą się losy produktów.

Również dołączę coś do zestawu "starożytnych" procesorów - Zilog Z280 (inaczej Z800, bo na jego projekcie powstała 280-ka). Potokowa jednostka z możliwością pracy w trybie 8 lub 16 bit, z pamięcią cache, MMU z ochroną pamięci, tryb użytkownika i systemu, 4 kanały DMA i liczniki, port szeregowy. ISA zgodna z Z80, choć mająca wiele dodatkowych instrukcji.
Z280bst.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Zegar
User
User
Posty: 312
Rejestracja: wtorek 02 lip 2019, 14:42

Re: „Starożytne” procesory

Postautor: Zegar » poniedziałek 06 lut 2023, 20:25

jarekz pisze:Procesory Motoroli zawsze mi się podobały, o wiele bardziej niż Intele czy Zilogi.

Też mi się podobają, jednak tkwię przy Zilogu. Ale plany są. 68000 wróci na moje biurko, bo pierwsze podejście było w 1986 roku w stylu Twojego dzieła. Niestety nie dokończony dałem koledze. "Karaluch" był piękny - fioletowy ze złotym dekielkiem. Takiego z pewnością już nie będę miał...

Teraz bawię się czymś takim:
CA80_mini_180.jpg

IMG_20230206_200315.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1256
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: „Starożytne” procesory

Postautor: gaweł » poniedziałek 06 lut 2023, 20:33

No super Tapy, też mam w planach kilka takich wynalazków, tylko jest jeden problem... w czasem. Co by tu zrobić, by doba była dłuższa?


Prace bardziej zaawansowane

Nadszedł czas na zaprzestanie partyzantki i wzięcie się za bardziej rzetelne działania. Te „napiechotne” może są i dobre, ale nie do wszystkiego się nadają. Weźmy sobie wypełnienie pamięci 1k różnymi danymi. Można wklepać, ale ile to się człowiek „napoci”, ile razy się pomyli (i znowu wszystko od początku). No może dosyć tego…
Do pracy został zaprzęgnięty procek (w tym konkretnym przypadku ATMEGA32).
fifo_101.jpg

Kiedyś zrobiłem sobie takie Mojeino (w dobie różnych Arduino, ja też mam swoje ...ino). No więc do portu A przyłączyłem wejście szyny danych w pamięci FIFO, port C staje się wyjściem danych z pamięci FIFO i w porcie D jest kilka sygnałów sterujących. By wszystko było elastyczne, to poczyniłem odpowiednie definicje:

Kod: Zaznacz cały

#define OutDataBusPort                  PORTA
#define OutDataBusDirPort               DDRA

#define InDataBusPort                   PINC
#define InDataBusDirPort                DDRC

#define FlagsPort                       PIND
#define CtrlPort                        PORTD
#define CtrlDirPort                     DDRD

#define FIFO_ResetPin                   2
#define FIFO_WritePin                   3
#define FIFO_ReadPin                    4
#define FIFO_FullFlagPin                5
#define FIFO_EmptyFlagPin               6


Kod: Zaznacz cały

static void EnvirInit ( void )
{
  uint8_t PortData ;
  /*-------------------------------------------------------------------------*/
  LEDDirPort = 0xFF ;
  LEDPort = 0 ;
  OutDataBusDirPort = 0xFF ;
  InDataBusDirPort = 0 ;
  PortData = (1<< FIFO_ResetPin)|(1<< FIFO_WritePin)|(1<< FIFO_ReadPin) ;
  CtrlDirPort = PortData ;
  CtrlPort = PortData ;
} /* EnvirInit */


Programik ma swoje swoje drobne menu (wyświetlane na starcie) i dalej z seriala można zapodać swoje życzenie.
Środowisko badawcze stało się drobną modyfikacją poprzedniego:
fifo_102.jpg

Programik, mało skomplikowany. Operacja zapisu:

Kod: Zaznacz cały

static void WriteToFIFO ( uint8_t TraceMode )
{
  uint8_t FIFOData ;
  uint8_t Flags ;
  uint16_t Loop ;
  /*-------------------------------------------------------------------------*/
  FIFOData = 0 ;
  Loop = 0 ;
  for ( ; ; )
  {
    if ( TraceMode )
    {
      SendSerial ( 'z' ) ;
      SendSerial ( '=' ) ;
      SendByteHex ( Loop >> 8 ) ;
      SendByteHex ( Loop & 0xFF ) ;
      SendSerial ( ',' ) ;
      SendByteHex ( FIFOData ) ;
      SendNewLine ( ) ;
    } /* if */ ;
    Loop ++ ;
    OutDataBusPort = FIFOData ;
    CtrlPort &= ~ ( 1 << FIFO_WritePin ) ;
    nop ( ) ;
    nop ( ) ;
    nop ( ) ;
    nop ( ) ;
    CtrlPort |= ( 1 << FIFO_WritePin ) ;
    FIFOData ++ ;
    Flags = FlagsPort & ( 1 << FIFO_FullFlagPin ) ;
    if ( ! Flags )
   {
      SendSerialFlashTxt ( ( uint16_t ) FFFlagDetectTxt ) ;
     break ;
    } /* if */ ;
  } /* for */ ;
} /* WriteToFIFO */

Via serial wysyłane są dane określające „adres” w pamięci (choć tu trudno mówić o jakimś adresie, ale jest to jakiś licznik informujący o liczbie zapisanych danych). Program kręci się w pętli tak długo, aż ustawi się flaga zapełnienia pamięci FIFO (flaga aktywnie przyjmuje stan logicznego zera).
Podobnie wygląda odczyt z pamięci:

Kod: Zaznacz cały

static void ReadFromFIFO ( void )
{
  uint8_t FIFOData ;
  uint8_t PortData ;
  uint8_t Flags ;
  uint16_t Loop ;
  /*-------------------------------------------------------------------------*/
  FIFOData = 0 ;
  Loop = 0 ;
  for ( ; ; )
  {
    CtrlPort &= ~ ( 1 << FIFO_ReadPin ) ;
    nop ( ) ;
    nop ( ) ;
    PortData = InDataBusPort ;
    nop ( ) ;
    nop ( ) ;
    CtrlPort |= ( 1 << FIFO_ReadPin ) ;
    SendSerial ( 'o' ) ;
    SendSerial ( '=' ) ;
    SendByteHex ( Loop >> 8 ) ;
    SendByteHex ( Loop & 0xFF ) ;
    Loop ++ ;
    SendSerial ( ',' ) ;
    SendByteHex ( PortData ) ;
    SendSerial ( '-' ) ;
    SendByteHex ( FIFOData ) ;
   if ( PortData != FIFOData )
   {
      SendSerialFlashTxt ( ( uint16_t ) ErrDetectTxt ) ;
//      break ;
    } /* if */ ;
    SendNewLine ( ) ;
    FIFOData ++ ;
    Flags = FlagsPort & ( 1 << FIFO_EmptyFlagPin ) ;
    if ( ! Flags )
    {
      SendSerialFlashTxt ( ( uint16_t ) EFFlagDetectTxt ) ;
      break ;
    } /* if */ ;
  } /* for */ ;
} /* ReadFromFIFO */

Pierwszy test i … krzaki. Właściwie nie należy się temu dziwić. Rzadko kiedy coś działa od pierwszego kopa, a nawet jeżeli już, to prędzej należy się spodziewać ukrytych problemów. No cudów nie ma. Problem wystąpił: wczytuje się zawsze zero. Są dwa wyjścia: albo nic nie zapisał i może czytać się zero, albo źle czyta i wychodzi zero (albo i trzecie nieznane). Trochę różnych eksperymentów, lektury danych technicznych i znów prób i błędów. Wyszło, że na FL/RT należy podać jedynkę logiczną → zaczęło się czytać.
fifo_103.png

Ale znów nie jest to, o czym bym marzył. Wynik odczytany jest inny niż należy się spodziewać. Daje się zauważyć w tym jakaś logika: odczytane dane są liczbowo dwa razy większe niż należy się spodziewać. Kilka rozkmin i jest: zapisując dane (które są inkrementowane) zrobiłem dwa razy inkrement. Poprawka i … wszystko jest tak jak być powinno (z= to zapis i dalej jest licznik oraz zapisywane dane, o=to odczyt i dalej licznik, dane odczytane i po minusie dane spodziewane).

Kod: Zaznacz cały

Test ukladu CY7C425 - pamiec FIFO 1k*8.
 r - reset    z - zapis    o - odczyt


Impuls reset
z=0000,00
z=0001,01
z=0002,02
z=0003,03
z=0004,04
z=0005,05
z=0006,06
z=0007,07
z=0008,08
z=0009,09
z=000A,0A
z=000B,0B
z=000C,0C
z=000D,0D
z=000E,0E
z=000F,0F
( . . . )
o=0000,00-00
o=0001,01-01
o=0002,02-02
o=0003,03-03
o=0004,04-04
o=0005,05-05
o=0006,06-06
o=0007,07-07
o=0008,08-08
o=0009,09-09
o=000A,0A-0A
o=000B,0B-0B
o=000C,0C-0C
o=000D,0D-0D
o=000E,0E-0E
o=000F,0F-0F

Teraz jest tak, jak być powinno.

Dla tropicieli:
fifo.7z
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1256
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: „Starożytne” procesory

Postautor: gaweł » poniedziałek 06 lut 2023, 20:37

Zegar pisze:"Karaluch" był piękny - fioletowy ze złotym dekielkiem.


Też miałem taką Motkę 6800, piękny fioletowy kolor i złoty dekiel :D (i złote nóżki). Poszła w ludzi. :(

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: „Starożytne” procesory

Postautor: tapy » poniedziałek 06 lut 2023, 21:32

gaweł pisze:No super Tapy, też mam w planach kilka takich wynalazków, tylko jest jeden problem... w czasem. Co by tu zrobić, by doba była dłuższa?

Doby nie wydłużymy, ale jesteśmy w stanie wykorzystać ją bardziej efektywnie - modułowość. Wcześniej projekty realizowałem miesiącami, obecnie średnio powstają trzy miesięcznie i to jest główny powód dla którego kurczowo trzymam się RC2014. Dzięki temu warstwa sprzętowa nie jest już hamulcem powstawania nowych projektów, to software ze swoją czasochłonnością jest elementem który tą ilość ogranicza. Powstanie nowego projektu, to ułożenie sprawdzonych klocków, jak w Lego, i uruchomienie nowo powstałego modułu, czyli de facto idei. Projekt nowej architektury sprowadza się do zaprojektowania płytki procesora z wymaganym otoczeniem, zaś moduły pamięci, układów I/O już są i mam pewność że one działają - jak jest jakiś problem, to na 100% popełniony jest w tym nowym. Oprogramowanie można pisać nie posiadając dostępu do sprzętu, on jest tylko wymagany w trakcie testów, więc fabryka PCB w pocie czoła realizuje zamówienie, a w tym czasie komputer wypluwa już kod wynikowy. Można realizować wiele pomysłów.

Awatar użytkownika
Zegar
User
User
Posty: 312
Rejestracja: wtorek 02 lip 2019, 14:42

Re: „Starożytne” procesory

Postautor: Zegar » wtorek 07 lut 2023, 09:31

tapy pisze:Doby nie wydłużymy, ale jesteśmy w stanie wykorzystać ją bardziej efektywnie - modułowość. Wcześniej projekty realizowałem miesiącami, obecnie średnio powstają trzy miesięcznie i to jest główny powód dla którego kurczowo trzymam się RC2014.

Też skręciłem w tym kierunku, ale trochę przeszarżowałem... Dosyć pobieżnie obserwowałem to rozwiązanie i nie wnikałem w szczegóły. Płytki ze złączem RC40 (a nawet RC39) traktowałem jako niedoskonałe pierwotne wersje, które ewoluowały w kierunku magistrali RC80. Nic bardziej mylnego! Autor pomysłu ostatnio upomniał się o swoje prawa i zakwestionował wszystkie projekty nie jego autorstwa. Nic bym o tym nie wiedział, ale kolega @tapy pokazał mi forum, na którym komunikują się pasjonaci RC2014. Myślałem, że jest to otwarty projekt, do którego każdy może coś dodać. Będę musiał wymazać część napisów z moich płytek...
CA80_SYS-IO_RC2014.png

MIK89_RC2014_PCB.jpg

RC2014_LCD_direct-11.png

6502_RC2014.png
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein


Wróć do „Retro”

Kto jest online

Użytkownicy przeglądający to forum: Bing [Bot] i 1 gość