Dlaczego w Atari używana jest linia RDY?
Czy nie prościej byłoby wstrzymywać CPU linią HALT?
Próbuję zrozumieć, dlaczego między ANTICiem i 6502 biegną te dwie linie, zamiast jedna.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
TURGEN 9.3.1 Najnowsza wersja oprogramowania TURGEN wprowadza kilka istotnych ulepszeń.
FujiCup 2024 - głosowanie Wystartowało głosowanie w tegorocznej edycji konkursu FujiCup.
IX. Basque Tournament of Atari 2600 31 stycznia Euskal Retro Association zorganizowało IX. Baskijski Turniej Atari 2600.
Rogul 1.0f Poprawki i nowe funkcje
a8rawconv GUI Graficzny interfejs użytkownika (GUI) dla narzędzia a8rawconv
atari.area forum » Sprzęt - 8bit » RDY vs HALT
Zaloguj się lub zarejestruj by napisać odpowiedź
Dlaczego w Atari używana jest linia RDY?
Czy nie prościej byłoby wstrzymywać CPU linią HALT?
Próbuję zrozumieć, dlaczego między ANTICiem i 6502 biegną te dwie linie, zamiast jedna.
-> Fox - nie analizowałem tego (jakoś nie miałem dotychczas potrzeby), ale wydaje mi się z naciskiem na to słowo, że RDY powoduje zapętlenie CPU na rozkazie (i w ten sposób jego zatrzymanie), a HALT z pewnością ODŁĄCZA magistrale Sally od szyn aby procesor nie miał kompletnie wpływu na system (przeszkadzałby Anticowi oczywiście w dostępie do pamięci)
Nie wiem dokładnie jak działa HALT w takim sensie jak RDY odnośnie zatrzymania CPU. Niestety - nie ma dokumentacji. Można ewentualnie posiłkować się informacjami dot. MC6800 gdzie HALT kompletnie zatrzymuje CPU włącznie z wyłączeniem przerwań. MC6800 nie ma linii RDY...
No właśnie. W pierwszej skanlinii trybów ANTIC 2-5 ANTIC wstrzymuje 6502 HALTem na jakieś 80 cykli. Dlaczego nie zrobiono tak samo z WSYNC, tylko użyto RDY ?
a może po to, by ANTIC (HALT) odwalił robotę z odświeżaniem pamięci DRAM...?
skłaniam się do wniosku pancio.net
edit:
Trzeba by wziąć analizator, stanąć na liniach adresowych i popatrzeć co wyrabia Antic względem /HALT. Jeżeli zatrzymuje CPU a pojawiają się adresy na szynie - to jednoznacznie pokazuje, że Antic wystawia adresy ponieważ nic innego w systemie Atari nie może tego zrobić.
o ile pamiętam to RDY "mrozi" stan magistrali na czas wstrzymywania procka, przykładowo wykorzystuje się to do odczytu np pamięci o większym czasie dostępu gdzie wydłuża się czas o 1 cykl ale przy "zamrożonej" magistrali, wersja sally o ile pamiętam da się zatrzymać tylko w cyklu odczytu,jak dobrze pamiętam HALT wstrzymuje procesor oraz odłącza go od magistrali dzięki czemu inny układ może działać jako DMA , przy RDY tego nie da się zrobić.
Prawdopodobnie przedmówcy mają rację że pewnie chodzi o odświeżanie pamięci , musiałbym popatrzyć na schemat atari
Tak mi się przynajmniej wydaje bawiąc się prockami, raz używałem lini RDY do wstrzymywania procka na 1 cykl przy wolnym ADC ale to było przy 12Mhz
Część odpowiedzi jest nielogiczna albo wynikająca z niezrozumienia pytania. Przecież rezygnacja z RDY i zatrzymywanie CPU tylko HALTem nie przeszkadza w żaden sposób w odświeżaniu pamięci w dotychczasowy sposób.
Wiele wskazuje, że prawidłowa odpowiedź na to pytanie brzmi - bo tak. W każdym razie jeśli odepnie sie wejście RDY procesora od ANTIC, podłączy je na stałe do +5V, a sygnały HALT i RDY z ANTIC przepuści przez bramkę AND i poda na HALT CPU to komputer, wyglada na to, pracuje poprawnie. Jeśli zmieni się kolor linii zaraz po WSYNC, to charakterystyczny schodek pojawia się tam, gdzie powinien. Nie wchodziłem głęboko w testy, ale zapuściłem kilka gier, Sys Info i demo NEAR, w którym znajdują się liczne odwołania do WSYNC - nie widzę różnicy. Obrazki z Rasta Converter (parę zapisów do WSYNC co ramkę) też wyglądają prawidłowo.
Z drugiej strony - Acid800 wiesza się na ciemno przy drugiej linii (test znaczników), ale to specyficzny program, odbiegający od typowych zastosowań. W każdym razie zasadniczy cel istnienia WSYNC - możliwość wstrzymania CPU do końca linii np. dla synchronizacji kreślenia grafiki, jest osiągniety.
Z tego wynika, że HALT odłączając szyny działa również jak RDY powodując powstrzymanie CPU od dalszego wykonywania rozkazów - ponieważ i tak za bardzo by nie miał jak tego zrobić. Brak dokumentacji niestety powoduje takie "dziury" w rozumieniu.
Ale był układ, który to implementował. Na tej samej zasadzie są robione konwertery, żeby zwykłe 6502 udawało Sally.
Jako, że jestem w fazie poszukiwania CPU - nie ma ktoś płytki takiego konwertera 6502 na 6502C? Szczytem marzeń była by płytka dip (smd mi średnio wychodzi :|). Chyba, że ktoś ma na stanie za dużo oryginałów i nie za miliardy, to też chętnie bym zanabył.
Simius, dzięki za zrozumienie i za test!
nie ma ktoś płytki takiego konwertera 6502 na 6502C?
Zapytaj Mq - robił swego czasu dla mnie. od razu powiem, że nie z każdym komputerem działa prawidłowo, więc może być różnie.
Jeśli Mq nie ma, a chciałby załóżmy się dogadać - jakąś serię płytek można wykonać, ale cudów nie należy się spodziewać.
jakby co ja mam... mam też 65c02 na 6502c
Dzięki Sikor za info.
panicio.net - wysłałem PW.
Swoją drogą, NMOS-owe 6502 nie powinny być HALTowane na tak długo - najdłuższy ciągły HALT w pierwszej linii szerokiego trybu tekstowego to ok. 54μs, podczas gdy w datasheecie 6502 Rockwella maksymalny czas cyklu to 10μs, u Synerteka 40μs (w praktyce pewnie ze sporym marginesem). W przypadku wstrzymania sygnału zegara na dłuższy czas, istnieje ryzyko rozładowania pojemności tranzystorów i "zgubienia" części stanu procesora w nich przechowywanego. 0 na linii RDY nie wstrzymuje zegara, dlatego procesor może pozostawać w tym stanie dowolnie długo, a najdłuższy WSYNC to ok. 64μs. Być może wywałka Acid800 to właśnie skutek przekroczenia fizycznego limitu czasu cyklu i rozładowania którychś pojemności z powodu zbyt długiego HALT.
to może prościej zapytać Avery Lee :)
epi, halt nie zatrzymuje zegara, więc nie ma to znaczenia
fox, rdy działa w nmosowych procesorach tylko przy odczycie, nie ma wpływu na zapis, stąd też nie można "dosynchronizować" przez rdy wolniejszego (w rozumieniu zapisu) urządzenia na magistrali do szybszego procesora - przy odczycie, procesor po prostu ponawia odczyt w kolejnym cyklu, ale zapis odbywa się tylko raz
halt jak już to napisano zdejmuje procesor z magistrali, umożliwiając antikowi adresacje pamięci - tego rdy nie zrobi (tak jak napisał już święty)
cmosowy cpu ponawia tak zapis jak i odczyt
Candle, byłoby to bez sensu, bo z włączonym zegarem i odłączoną magistralą adresową 6502 chodziłby dalej, łykając dane z czegokolwiek, co ANTIC zaadresuje, a czasami powodowałby konflikt na szynie danych.
Zobacz schemat. HALT zatrzymuje Φ0 i to celowo w stanie niskim, kiedy CPU dodatkowo sam odłącza magistralę danych.
przy odczycie, procesor po prostu ponawia odczyt w kolejnym cyklu, ale zapis odbywa się tylko raz
ale to oznacza ze rozkaz odczytu ktory ma np. 4 cykle moze miec 5? wydawalo mi sie ze NMOS podczas wykonywania rozkazu moze miec cykle zapisu falszywymi danycmi ale nigdy odczytu (stad trik na procesorach NMOS z resetowaniem przerwan jednym rozkazem ktore nie dziala na CMOS)... czy to nie o tych cyklach mowa.
cmosowy cpu ponawia tak zapis jak i odczyt
To by oznaczało, że I/O wrażliwe na zapis (np. port z autoinkrementacją adresu przez który przepycha się dane do urządzenia) z 65Cxx(x) będzie działał źle? Ładne rzeczy.
mono, nie. RDY w zamierzeniu powinno być kontrolowane przez to urządzenie lub pamięć, do którego odnosi się adres. Jeżeli port z autoinkrementacją nie wystawia !RDY, to problem nie istnieje. A jeżeli chce wystawiać !RDY przy zapisie, to tylko w celu zasygnalizowania, że chwilowo nie może przyjmować więcej danych i nie będzie sobie inkrementował adresu.
Mnie chodzi o sytuację kiedy CPU jest chwilowo wstrzymywany przez ANTIC-a - a przecież ja (program) nie wiem czy nie zostałem zablokowany właśnie na zapisie do I/O. I/O (będące np na cartridge-u, bo przecież nie wszystko musi być zaraz wmontowane do komputra) samo z siebie nie wystawia nic przecież, a tylko obsługuje zapis.
Edit: Ja Program.
Edit 2: Aaaaa, RDY jest wystawiane tylko w reakcji na zapis WSYNC. To już wszystko jasne.
Zaloguj się lub zarejestruj by napisać odpowiedź
atari.area forum » Sprzęt - 8bit » RDY vs HALT
Wygenerowano w 0.034 sekund, wykonano 59 zapytań