Eksperymenty ze starymi procesorami - MOS6502

May 29, 2018 121 Replies

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?


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.

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...

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?

tutaj masz minimalistyczny komputer na 6502

formatting link
c.

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.

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!

U¿ytkownik "J.F." <jfox snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:1ccnbqo35zufx$.1g5wrvhgaihf8$. snipped-for-privacy@40tude.net...

Kolega z radia, rozmawia³ kiedy¶ ze mn± na ten temat w³a¶nie, chcieli robiæ w³a¶nie, chyba jaki¶ symulator/emulator 6502/6510, ró¿ni± siê obecno¶ci± w tym drugim trzech nóg, pozwalaj±cych, poprzez bankowanie, zaadresowaæ 512 kB RAM. Zastanawia³ siê, czy zrobiæ to na czystych instrukcjach, czy przytuliæ te¿ te "niepisane". Doradzi³em mu tê drug± opcjê. Co dalej by³o, nie wiem. Klon - najprostszy sposób w³a¶nie, klona nawet uziemiæ, np. napisze cos w stylu "processor JAM" (je¶li emulator), albo stanie na twardo jak dobry cz³on przy dymaniu (je¶li fizyczny modu³). Albo program siê nie wykona i dobrze, je¶li programista to przewidzi. Powinienem mieæ w swych zasobach stary program do C64, demo muzyczne, które, jak siê przy kopiowaniu ¼le bajty przepisz±, (gdybam), robi szybki format dyskietki, je¶li ta jest w napêdzie, niszcz±c dostêp do plików, zamazywany jest przy tym pierwszy sektor katalogu.

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?

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.

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 :)

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.

U¿ytkownik "J.F." <jfox snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@40tude.net...

To nie warunkuje jednoznacznie powodzenia - zarówno pod Atari, jak i Commodore, zapodanie sygna³u reset, mo¿e jak najbardziej spowodowaæ wykonanie programu, uprzednio zdefiniowanego. Có¿ za problem pod odpowiednim wektorem umie¶cic procedurkê natychmiast zawieszaj±c± procka? :)

Co do HALT - w ka¿dym razie mo¿na procka odpi±æ od magistrali - C128(D) jest kompem dwuprocesorowym (przy okazji dwuekranowym). Celem odpalenia np. CP/M, spod 8500 (odmiana 6502) odpala siê program ³aduj±cy (*), a potem startuje Z80 i dzia³a CP/M. Jako, ¿e oba wisz± na tych samych liniach (nie wiem, jak z bankowaniem - 6510 i wy¿sze sprzêtowo obs³u¿± do 512 k RAM (6502 musi posi³kowaæ sie zewnêtrznym rejestrem)), to trzeba je jako¶ odizolowaæ. Zastanawiam siê, czy to nie w tym celu jest ta linia, musia³bym na rozpiskê spojrzeæ, bardzo dawno tego nie robi³em...

U¿ytkownik "HF5BS" snipped-for-privacy@t.pl napisa³ w wiadomo¶ci news:peojhf$ub9$ snipped-for-privacy@node1.news.atman.pl...

Gwiazdka...

Mia³em napisaæ, ¿eby przerwaæ autostart z dyskietki, i po uruchomieniu kompa wydaæ komendê BOOT, wtedy zajmie to znacznie mniej czasu. A jako, ¿e prze³±czenie procków raczej jest programowe, bo to chyba program zapodaje odpowiedni± warto¶æ do odpowiedniego rejestru, to pewnie i jakim¶ POKE da³o by siê to zrobiæ rêcznie... Ciekaw jestem, czy i jakie programy, da³o by siê przepisaæ z 6502 na Z80, aby wykorzystywaæ nadaj jego pozosta³e uk³ady, jak oba chipy obrazowe, oraz chip d¼wiêkowy i magnetofon, bo peryferia wiadomo, chodz±.

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.

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.

U¿ytkownik "Irek.N." snipped-for-privacy@jakis.taki.jest.pl> napisa³ w wiadomo¶ci news:peomf0$1bi$ snipped-for-privacy@node1.news.atman.pl...

Pewne rzeczy zacieraj± siê wolniej :) Jeszcze od biedy co¶ zagaworzê po-russki, choæ ostatnie lekcje mia³em te¿, prawie 30 lat temu. Tak te¿ pewne rzeczy z Komody jeszcze trochê siê pamiêta. I do dzi¶ ¿a³ujê, ¿e jak ostatni ch.j ola³em mozliwo¶æ zakupu znanej ksi±¿ki Ruszczyca "Asembler

6502", choæ osobi¶cie na stoisku trafi³em, i mia³em na ni± pieni±dze, a stoisko by³o czynne (W Hali Wola, róg Cz³uchowskiej i Powstañców ¦l±skich). Pó¼niej nie widzia³em jej nigdy nigdzie... Choæ polowa³em, jak zda³em sobie sprawê, co przegapi³em. Prawdopodobnie na powa¿nie zaj±³bym siê kodowaniem/programowaniem, na najni¿szym poziomie.

Jak to mawiaj±, organ nieu¿ywany zanika :) Pamiêtam, jak w radioklubie, w swoich pocz±tkach, siada³em do radia po wakacjach, to conajmniej dzieñ mija³, zanim sobie na nowo to pouk³ada³em... choæ z wiekiem zapominanie zmala³o i dzi¶ mogê nawet po d³u¿szej przerwie zacz±æ, choæ obecnie wena ju¿ nie ta... oraz zasilanie, nie mam porz±dnego i za szybko mi baterie siadaj±. Wiêc z pewno¶ci± dzi¶, startuj±c z kim¶ w parze o identycznym podej¶ciu i mo¿liwo¶ciach, ale ten drugi bez do¶wiadczenia, "¶wie¿ak" znaczy siê, to Ty by¶ znacznie szybciej sobie to przyswoi³. Ja do dzi¶ pamiêtam numery techników na wszystkich centralach w ówczesnej, czyli przed (ponad) æwieræ wieku, Warszawie. Wiem która z któr±, która naoko³o, choæ nie wykluczam pomy³ek, z racji d³ugiego okresu "zapomnienia". Do dzi¶ pamiêtam szczegó³y, które pozwoli³y by mi okre¶liæ, wy³±cznie na podstawie subtelnych d¼wiêków towarzysz±cych ³±czeniu, przez jak± centralê miêdzynarodow± w innym kraju, sz³o jakie ³±czenie. Np. Kamerun i KRLD sz³y przez Pary¿... Niue przez Londyn... Rwanda i Burundi przez Brukselê (w koñcu to by³e kolonie belgijskie), Libia i kilka innych krajów afrykañskich) przez Rzym... A nie pamiêtam, w któr± stronê otwiera³y siê drzwi, stoj±cej na centrali lodówki :)) Choæ czasem co¶ sie w niej ch³odzi³o i kierownik niekiedy taktownie przemilcza³ to, ¿e wie co :DD Zreszt±, poka¿cie mi choæ jedn± centralê w .pl, gdzie nie kapnê³a choæ kropla gorza³y :)) W sumie na nocnych dy¿urach, oczywi¶cie, po wykonaniu zleconych badañ, dokrêci³em siê do ok. 280 krajów... Ale na nocy nie dzia³a³em, nigdy sam.

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.

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

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.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required