Eksperymenty ze starymi procesorami - MOS6502

May 29, 2018 121 Replies

U¿ytkownik "Sebastian Bia³y" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:pf467g$6tn$ snipped-for-privacy@node1.news.atman.pl...

Hah... rozumiem... Próbujê jako¶ domy¶liæ siê, jak sprzêt, bez dodatkowego portu w procku, jak w pierwszych C64, realizowa³ bankowanie, hmm... dodatkowy dekoder adresu i jadziem? Nie kusi³o by wykorzystaæ tê ró¿nicê (bo jako¶ nie przychodzi mi do ³ba, ¿e nie da siê tego wykryæ), choæby z³o¶liwie i np. komunikat po uruchomieniu jakiego¶ "progsa" - "Ten program zabangla tylko na sprzêcie z prockiem 6502 i ¿adnym innym"...? Usi³ujê sobie przypomnieæ, czy zetkn±³em siê z jakim¶ DMA, u¿ywaj±c C64, czy C128...? Bo jedyne, co mi na my¶l przychodzi, co raczej DMA nie jest, to przepinanie procków - 6502/10(8500/02, ja mam chyba 00), na Z80, podczas pracy, spod 6502 za³adowanie CP/M, a potem przepiêcie procków - na Z80 - i "sy-pi-jem" czeka na komendy... Tym bardziej, ¿e da siê bez przerwañ podobno dzia³aæ, jak stacja 1541, która sama jest autonomicznym komputerem i ma 6502 w srodku.

formatting link
formatting link

Dnia Mon, 4 Jun 2018 23:30:24 +0200, HF5BS napisał(a):

Dokladnie tak - jak zwykle zreszta.

Cos mi chodzi po glowie, ze ktorys procek z rodziny mial port I/O na pokladzie, pare bitow, ale wystarczalo do przelaczania bankow.

A po co - przeciez ten program i tak zabangla tylko na C64.

Sterownik ekranu :-)

DMA moglo byc potrzebne do czytania/zapisu dyskietek.

Atari co prawda radzilo sobie bez, C64 chyba tez bez.

J.

Dnia Mon, 4 Jun 2018 19:36:40 +0200, HF5BS napisał(a):

No nie - ZX81 czy nawet Spectrum to nie jest wzor solidnosci.

Kumpel zachwalal "Spectrum sie czasem psuje ... ale dzieki temu naprawy sa tanie. A kto panu naprawi comodora ?"

J.

W dniu 2018-06-05 o 07:45, J.F. pisze:

Padały masowo folie klawiatury, porty to już trzeba było bawić się w odpinanie/dopinanie na działającym kompie żeby padły. Z zastrzeżeniem że małe atari zezwalało na wkładanie/wyjmowanie kartridża.

Pozdrawiam

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

6510 w³a¶nie ZTCP, trzy dodatkowe linie. Spotka³em siê z porad±, ¿e jak siê C64 wstaæ nie chce (jak go zaboli co¶), to trzeba spróbowaæ te 3 linie odgi±æ na zewn±trz.

Nie to, chodzi³o mi o z³o¶liwo¶æ, która w jaki¶ sposób zbada, z któr± wersj±

6502 mamy do czynienia i nie pozwoli programowi odpaliæ, je¶li bêdzie "ta inna". Lub odwrotnie, program uczynny, który wska¿e, "co tam panie byæ mo¿e macie".

Acha, kapiê... przyjrzê siê temu, za du¿o na g³owie, to i oczywisto¶ci uciekaj±. Raz mi siê w ferworze dyskusji "uciek³o" od pêtli autobusowej, w miejscu, gdzie jest ona od lat...

Z tego, co w gadzinówkach pisali o tym, nie wspominali o DMA. Natomiast temi palcyma odpala³em demo, co 1. Czyta dyskietkê z czynnymi przerwaniami zrobionymi tak, aby demo nie ciê³o w trakcie czytania (wiêc jasne, ¿e procedura musia³a byæ inaczej napisana), 2. czyta dysk "realtime" z niewielkim turbo (wczytywanie sampli dla naturalnego 4-bitowego COVOX-a w C64), ³±czna waga dema ok. 100-120 kB. Je¶li wyst±pi b³±d odczytu dysku, zapêtlaj± siê obecne w pamiêci dane, ale demo nie staje. Ca³y czas na ¿ywo. Ad 1. - W normalnej obs³udze, taka czynno¶æ na stówê spowoduje przyciêcie dema. W ¿adnym momencie nie spotka³em siê z tym, aby DMA bra³ w tym udzia³, przynajmniej ¿aden opis nie wspomina³, albo ja zapomnia³em...

Użytkownik "RadoslawF" <radoslawfl@spam_wp.pl> napisał w wiadomości news:pf5h9s$rhk$ snipped-for-privacy@node2.news.atman.pl...

Folia klawiatury Spektrusiowa i solidność, to oksymoron :)

Zdarzyło mi się uchrzanić tak płytę główną, jak się niegrzecznie bawiłem podłączaniem drukarki. 6ATA2 jej na imię, gugiel szybko znajduje, co to. Ale płyta i tak IMO była do dupy (musiałem odcyklować procka, czyli 500 MHz poszedł najwyżej na 433, żeby w ogóle ruszyła... A i tak co najmniej 2 razy w tygodniu BSOD), więc, choć mnie "trochę" kosztowała, to zbytnio jej nie żałuję.

Co nie oznaczało, że należało to bezkrytycznie robić.

W dniu 2018-06-05 o 11:37, HF5BS pisze:

Robiono. U nas gry to głownie z magnetofonu u bogatszych z dyskietki. Na zachodzie ludzie zbierali nie legalne kartridże z grami, jak gra się znudziła wyciągali karta, komp się zwieszał lub selfił, wkładali nowego i komp z niego startował. Takie cuda to chyba tylko z małym atari. Tyle ze jak sam miałem małe atari to nie dałem go na taki pokaz. Bo jak jednak coś się stanie to za drogo mnie to będzie kosztowało. :-)

Pozdrawiam

Tak swoją drogą, jak wygląda kwestia kompatybilności procesorów 65C02 z wersją NMOS? Jeśli uruchomię już płytkę ze standardową wersję tego procesora (tylko takie mam teraz pod ręką), to czy po zakupie paru egzemplarza CMOS będę mógł zastosować go w projekcie (lub przynajmniej przetestować) po prostu podmieniając układ w podstawce? Czy też konieczne będą jakieś przeróbki?

Dnia Tue, 5 Jun 2018 11:37:14 +0200, HF5BS napisał(a):

Nawiasem mowiac - w Atari tez byla foliowa. Ale jakas lepsza :-)

U nas bylo malo kartridzy.

J.

W komputerach 8 bit DMA pojawia się zazwyczaj w kontekście kiedy to nie procesor jest przez chwile masterem szyny.

W ZXSpectrum ULA miał prirytetowy dostęp do kawałka RAMu a realizowano to za pomocą rezystorów (Sinclair byl mistrzeb taniego ale dobrego). Jest tam bug sprzetowy, można manipulując assemblerem zakłucić mechanizm dostepowy ULA powodując artefakty na ekranie.

Z Atari 400/800 była masa dodatkowych scalaków odpinających 6502 na czas pobierania pamięci obrazu przez Antica i odświezania rowniez przez niego RAMu. W Atari 800xl/65xe zmieniono procesor na taki z prawdziwym HALT, wcześniej to było rekodzieło do kwadratu.

W C64 układ graficzny VIC pobieral dane z pamięci majstrując przy cyklach dostępu CPU co było o tyle łatwiejsze ze procesor zwolniono ponizej 1MHz żeby dalo się wykradać szynę.

W Atari 2600 był układ TIA który dma nie robił, ale za to wymagał na kazdą linie obrazu ponownej inicjacji swoich rejestrów, stąd z reszta pojęcie "racing the beam" i jedna z najbardziej ciezkich do programowania architektur.

Wszelkie operacje dyskowe w C64 i Atari odbywały się bez DMA aczkolwiek z pewnym wsparciem sprzetu bo za pomocą portów szeregowych.

Ogólnie w 8-bitach DMA raczej nie wykraczało poza ramy czytania pamięci przez scalak generujący obraz oraz odswieżanie. Nie wiem czy coś więcej nie zrobiono w Apple II, tam system z 6502 był mocno rozbudowany.

Z80 mał o tyle latwiej że sam odswiezal pamięć, w przypadku 6502 była bieda straszna.

Ale to nie jest DMA.

W dniu 05.06.2018 o 21:29, J.F. pisze:

Foliowa była w późniejszych wersjach. Mam Atari 800XL z klawiaturą na mikroswitchach wlutowanych na płytkę drukowaną (taka jak na tym zdjęciu

formatting link
ś mi świta, że widziałem też konstrukcję podobną jak w pilotach. Złocone "grzebiebnie" pól stykowych na laminacie i gumka przewodząca pod plastikowym klawiszem.

Moja Atarynka przeżyła podłączanie różnych dziwnych rzeczy zarówno do złącza kadridge jak i tylnego złącza krawędziowego. O ile nie zwarło się jakiegoś sygnału wyjściowego do +5V to nic się strasznego nie działo. Zwarcie między liniami sygnałowymi lub zwarcia do masy powodowały co najwyżej zwiechę komputera. Po resecie lub power off/on Atarik podnosił się bez problemu :-)

Dnia Tue, 5 Jun 2018 22:08:46 +0200, Sebastian Biały napisał(a): [...]

Tyle, ze stacje mialy wlasny procesor.

dyskietki mialy 250-500 kb/s, czyli 16-32us/bajt. Tak gdzies blisko granicy mozliwosci programowych owczesnych procesorow, ale ciagle w zasiegu.

Przy czym to dane z peceta - atarynka ze swoim FM miala chyba mniej.

IBM zdecydowal sie jednak na DMA.

Majac wyswietlanie obrazu odswiezanie juz raczej nie bylo problemem.

J.

To dalej nie jest DMA. DMA jest wtedy kiedy procesor nie uczestniczy w procesie przekazywania danych coś<->coś. A tu nie dośc że uczestniczy to z kolega po drugiej stronie.

Można naciągać że skoro dane wchodziłty do UART to było to takie DMA o max rozmiarze 8 bitów ;)

To akurat nie jest specjalnie problem, dane z głowicy można wciskać rejestrem szeregowym do RAMu i nagle CPU ma 8x mniej do obrabiania. Nie ma co demonizować, często dyskietki nie mogly być gęstsze z powodu nosnika, budowy głowicy, precyzji itd. W powszechnym uzyciu były dyskietki 360kB ktore nie działały w stacjach HD. Jak by były HD dostepne to pewnie z 6502 dało by rade zrobić odczyt.

Bo ich procesor był do tego przewidziany. 65092 nie miał nawet najmniejszego wsparcia dla DMA, w podstawowej wersji nie dało się go nawet oficjalnie "dynamicznie zatrzymać" przez wycinanie cykli zegarowych co z resztą twórcy Atari olali :D.

To jest problem, wiele systemów nie miało DMA obrazu albo nie miało obrazu w ogóle i wtedy Z80 miał bardzo cenny kawałek prostego hardware który robił różnicę wielu scalaków a więc i wielu dolarów.

Ale ja pisze o tym, ze trzeba zajrzec do stacji, jak tam zrobione.

Ale brak w tym Memory :-)

Takie "wciskanie do RAM" to sie wlasnie DMA nazywa :-)

rejestr szeregowy byl w tych kontrolerach, ale nawet na caly bajt czasu bylo dosc ciasno.

Nie znam tego kontrolera z C64 - tam jakis mocno uniwersalny byl, moglo dodatkowo komplikowac sprawe.

te z peceta mialy sektor 512B, i juz na 6502 robi sie trudniej :-)

Ale nie w komputerach domowych, gdzie obraz obowiazkowy ..

J.

Dnia Tue, 5 Jun 2018 14:53:27 +0200, Atlantis napisał(a):

formatting link
Jedno moze byc przykre - uklady TTL-LS nie daja wystarczajaco wysokiego napiecia dla wejsc CMOS.

J.

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

Stacja 157x (gdzie x=0-2) umie czytaæ dyskietki PC 360 kB. Nawet w którym¶ Bajtków by³ program do tego. Stacjê oczywi¶cie trzeba przestawiæ w odpowiedni tryb. Czy umie zapisywaæ... no, tego nie wiem. W ka¿dym razie, z dyskietk± PC na pok³adzie, zada³em stacji odczyt, nie wyrzucilo b³êdu. Nic mi nie wiadomo, aby stacja mia³a co¶ pecetopodobnego na pok³adzie. BTW wiecie, ¿e na dyskietce w 1581, zak³ada³o siê partycje? ZTCP, 4.

Wszystko zależy od tego, kto co trzyma w garazu ;-)

W.

Mam jeszcze jedno pytanie, związane z tym tematem. W roli kontrolera szeregowego używam układu 8251, z 8253 używanym w roli baudrate generatora. I teraz pytanie: czym taktować te układy? Powinienem wziąć sygnał zegarowy z Fi1 albo Fi2 procesora, czy też najlepiej będzie podać sygnał brany bezpośrednio z generatora (a właściwe dzielnika za nim)? W systemach opartych na 8080 był specjalny chip do generowania sygnału taktującego (8224), który poza dwoma przesuniętymi w fazie przebiegami dla CPU generował także sygnał TTL dla peryferiów.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required