Eksperymenty ze starymi procesorami - MOS6502

Ostatnio w celach edukacyjnych eksperymentowałem trochę ze starymi procesorami. Udało mi się odpalić TinyBasic na prostym komputerze opartym o MCY7880. Teraz kontynuując te eksperymenty postanowiłem przyjrzeć się innemu klasycznemu procesorowi - MOS6502, w starej wersji NMOS.

Na szybko skleciłem układ na płytce uniwersalnej. W tej chwili jest tam tylko procesor, układ resetujący przy starce (NE555) i generator 4 MHz na 74LS04 z dzielnikiem przez cztery na 74LS74.

Piny RES, RDY, NMI, IRQ oraz SO podciągnięte do VCC za pomocą rezystorów

3,3k. Całość zasilana z 5V zasilacza impulsowego. Przy każdym układzie rzecz jasna kondensator 100nF.

Na chwilę obecną nie są podłączone żadne pamięci, dekodery adresów itp. Na pinach 3 i 39 mam faktycznie powtórzony sygnał zegarowy, a więc faktycznie wygląda na to, że przynajmniej coś w procesorze działa i nie jestto podróbka (a taką sytuację brałem pod uwagę, bo był kupiony na Aliexpress).

Natomiast jedna rzecz mnie zaskakuje - zupełny brak aktywności na liniach adresowych i danych. MCY7880 pokazywał na tych liniach regularne przebiegi na oscyloskopie, nawet jeśli nic jeszcze nie było podpięte do magistrali. Tutaj tego nie ma.

Ten typ tak miał, czy coś może być nie tak?

Reply to
Atlantis
Loading thread data ...

Dnia Wed, 30 May 2018 01:37:04 +0200, Atlantis napisał(a):

Patrze na pinout - Reset nie ma znaczka negacji, moze mu trzeba pull down zrobic ? RDY tez by warto sprawdzic.

Mial niezdefiniowane instrukcje, niektore chyba go wieszaly (na szczescie bez HCF). Warto by opornikami na linii danych wymusic jakas bezpieczna.

J.

Reply to
J.F.

W dniu wtorek, 29 maja 2018 22:08:52 UTC-5 użytkownik J.F. napisał:

formatting link
to dosyc prosty cpu. tam raczej nie ma nic fikusnego. chyba prosciej bedzie zaemulowac mu rom/ram przelacznikami i taktowac recznie aby sie pobawic.

Albo podpiac jakas mala pamiec lub mikrokontroler robiacy za takowa...

Reply to
sczygiel

Opieram się na informacjach z tej strony:

formatting link
tam wyraźnie mowa o pull-upach. Jedynie w przypadku pinu SO dość enigmatycznie napisano o "podłączeniu do 5V", ale zakładam, że chodziło właśnie o rezystor, a nie bezpośrednie połączenie.

Ok, tak zrobię w następnej kolejności. Po prostu byłem zdziwiony brakiem jakiejkolwiek aktywności na magistrali. W przypadku 8080 działo się tam dość sporo, pomimo braku jakichkolwiek elementów poza procesorem (z przyległościami typowymi dla systemu na 8080). Tutaj tymczasem panuje cisza.

BTW w przypadku MOS6502 muszę stosować jakieś bufory szyny adresowej i dwukierunkowy bufor szyny danych? Czy procesor poradzi sobie obciążony pamięciami, dekoderem adresów i paroma peryferiami?

Reply to
Atlantis

tutaj masz minimalistyczny komputer na 6502

formatting link
c.

Reply to
cezar

Dnia Tue, 29 May 2018 20:47:50 -0700 (PDT), snipped-for-privacy@gmail.com napisał(a):

Tylko sporo dziur w liscie instrukcji, a dzialaly ... ciekawie.

Dobrze znalazles NOP to EA. Ale moze byc tez inny, np $DD - tylko 2 bity do wyzerowania, a rozkaz CMP absolute,X bedzie halasowal po magistrali.

Niestety - $00 to BRK - ale tez powinien halasowac, a $FF niezdefiniowany. Ciekawy

formatting link
INS *** (ISC) This opcode INCs the contents of a memory location and then SBCs the result from the A register.

Ale ... na jakims klonie moze nie dzialac.

J.

Reply to
J.F.

W dniu środa, 30 maja 2018 14:03:17 UTC-5 użytkownik J.F. napisał:

Jest na jutubie fajny film na temat jak badano ten procesor. I tam jest wyjasnione nie tylko jak dzialal ale tez dlaczego te niektore niepublikowane rozkazy dzialaly jak dzialaly i dlaczego mozna bylo im ufac ze zawsze beda dzialac tak samo.

Bardzo pouczajacy material! W wieku 38 lat w koncu znalazlem wyjasnienie dlaczego procesor funkcjonuje. Wczesniejsze materialy mowily o komponentach nie wyjasniajac co powoduje ze te komponenty ze soba wspolpracuja wtedy kiedy trzeba a jak nie trzeba to nie przeszkadzaja.

Bardzo pouczajace. Slowo klucz: dekoder rozkazow.

A to juz zalezy od tego co chcemy uzyskac :)

O wlasnie, z jednej strony klony moga miec inna liste rozkazow a z drugiej te rozkazy czasem calkiem ciekawe byly i widac jak bardzo w pospiechu ten cpu byl wypychany na rynek.

Bo mozna bylo go sporo przyspieszyc wiedzac jakie najpopularniejsze operacje sie wykonuje w praktyce.

Np. Ladowanie tej samej wartosci do kazdego rejestru (A, X, Y) lub ich zerowanie itp...

Z drugiej strony polecam serie Bena Eatera gdzie buduje cpu z ttl-i. Bardzo pouczajace!

Reply to
sczygiel

Użytkownik snipped-for-privacy@gmail.com napisał w wiadomości news: snipped-for-privacy@googlegroups.com...

I znów - przypuszczam, że odmiana z C64 i z C128(D), może mieć to różne, bo dokładnie ten dam program, po uruchomieniu na C64 i C128 w trybie C64, zachowuje się nieco inaczej. Samo z siebie się nie wzięło, choć może to gdzieś w ROMie siedzi, a nie w procku?

Reply to
HF5BS

W dniu środa, 30 maja 2018 15:11:21 UTC-5 użytkownik HF5BS napisał:

A to juz trudno powiedziec. Trzeba by zdeasemblowac i zobaczyc co sie dzieje inaczej i wtedy sprawdzic czy to opcode czy wywolanie kernala.

Reply to
sczygiel

Użytkownik snipped-for-privacy@gmail.com napisał w wiadomości news: snipped-for-privacy@googlegroups.com...

Może spróbuję pod emulacją, może w emulowanych kompach też się z taką różnicą zachowa? Na razie Gugiel nic nie wskazuje, poza moim wpisem na newsach :) Ale sobie zobaczcie, przy okazji trafiłem na jakichs *.*, bo nie som nowocześni i po fejzbukach i tfiterach nie łażom (nie poprawiać, to powiedzmy, że sarkazm)

formatting link
jak można, nie pchać się do chmury, nie mieć co najmniej czterordzeniowego @ 3.4 GHz na pokładzie z minimum 4 Giga RAM, oraz W10 na tapecie ? :P :)

Reply to
HF5BS

Dnia Wed, 30 May 2018 12:17:41 -0700 (PDT), snipped-for-privacy@gmail.com napisał(a):

Chcemy uzyskac objaw dzialania uP :-)

Wyskakujace kolejne adresy na magistrali beda dobrym objawem, bardziej skomplikowane sekwencje tez.

Tak swoja droga, to sie zastanawiam co sie dzieje. Zegar jest, zakladajac, ze pullupy sa odpowiednie, to powinien dzialac. Czyta ... nalezy podejrzewac ze $FF, rozkaz nielegalny, ale zalozmy, ze wykonywalny. Co jeszcze moglo procka zatrzymac ? Na poczatku czytal adres startu z ROM, zakladajac ze to $FFFF ... chyba mu nie przeszkadza ze to ostatni bajt i spokojnie przeskoczy na

0000?

Mial ten procek rozkaz Halt ? A moze mu trzeba podac impuls na reset ?

Tak sobie googlam

-6502C mial linie HALT,

-i mial instrukcje KIL

formatting link
J.

Reply to
J.F.

Miałem długo C128 i nie zaobserwowałem żadnych różnic. Pisałem w asm-ie i to całkiem dużo, nawet zrobiłem sobie kontroler na 6502, pewnie z jakimś błędem, bo nie wystartował od razu, a chwilę później dostałem

8048 i temat umarł. Ależ to dawno było... :( Jak jest chętny, to klisze i obsadzoną płytkę gdzieś mam.

Miłego. Irek.N.

Reply to
Irek.N.

I Ty tak z głowy? 30 lat minęło! Ja już nic nie pamiętam z tamtych czasów, a miałem wypieki na twarzy jak się tematem zajmowałem ;)

Miłego. Irek.N.

Reply to
Irek.N.

Nie masz wyjąscia, musisz to zrobić najpierw. 6502 ma instrukcje które powodują zablokowanie wewnatrznej maszyny stanów i objawia się to właśnie "zatrzymaniem" aktywności na szynie, procesor nic nie robi mimo taktowania.

Zerknij na schematy C64.

A na serio to polecam "Mikroprocesor 6502 i jego rodzina" Kruszyńskiego i Kulpy. Trafia się na allegro.

Reply to
Sebastian Biały

Domyślam się, że gorzała nie była ze sklepu, lecz robiona ze spirytusu przeznaczonego do konserwacji styków ;)

Reply to
kasik

W dniu czwartek, 31 maja 2018 00:52:44 UTC-5 użytkownik J.F. napisał:

A to rzeczywiscie jak by ustawic EA - nop to poleci po magistrali adresowej inkrementalnie.

Zatrzymac? Moze nie zatrzymalo ale po wierzchu nie widac ze cos robil. FF moze byc opcodem ktory nie zwieksza adresu. Krzywy ale dzialajacy.

Poczytaj o sandsifter. Dziwne sa niektore rozkazy. I mozliwe ze ich natura jest po prostu przypadkowa. Ale moze jednak nie...

A rzeczywiscie, powinien.

czasem warto, tak dla higieny.

Reply to
sczygiel

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.