1

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.

https://www.youtube.com/watch?v=jofNR_WkoCE

2

ja bym stawial na to ze nie mieli wtedy jeszcze cpu z linia halt a pozniej to juz bylo pozamiatane ;-)

http://atari.pl/hsc/ad.php?i=1.

3

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

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

4

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 ?

https://www.youtube.com/watch?v=jofNR_WkoCE

5

a może po to, by ANTIC (HALT) odwalił robotę z odświeżaniem pamięci DRAM...?

https://systemembedded.eu/ ... https://www.youtube.com/watch?v=GwS7Es1x6mw
""Ja bardzo przepraszam, ale podejrzenia panów są całkowicie bezpodstawne. Ja niczym nie handluję. Ta pani przyszła do mnie w tym Pancake-u i w nim wychodzi.""
ABBUC Member #319. Preferowana forma kontaktu: email

6 Ostatnio edytowany przez tOri (2022-02-12 22:40:44)

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

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

7 Ostatnio edytowany przez swiety (2022-02-13 00:16:22)

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

8 Ostatnio edytowany przez swiety (2022-02-13 00:15:45)

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

9

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.

Ceterum censeo Germaniam esse delendam.

10

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.

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

11 Ostatnio edytowany przez xxl (2022-02-13 20:26:04)

ale tak niesmialo zapytam... w atari 400/800 przynajmniej do pewnego momentu instalowane bylu cpu bez pinu HALT ale nie slyszalem zeby byly tam problemy z rejestrem statusowym albo z wsyncem... (a przeciez to nie bylo widzimisie na montowni tylko tak zostal komputer zaprojektowany)

chyba ze jest?

http://atari.pl/hsc/ad.php?i=1.

12 Ostatnio edytowany przez perinoid (2022-02-13 22:13:23)

Ale był układ, który to implementował. Na tej samej zasadzie są robione konwertery, żeby zwykłe 6502 udawało Sally.

Pamięć studenta ma charakter kwantowy - student wie wszystko, ale jednocześnie nic nie pamięta.
- Kilka(naście?) pudełek z klawiszami i światełkami. I jeden Vectrex, żeby nimi wszystkimi rządzić.

13 Ostatnio edytowany przez Yoo_Gas (2022-02-14 14:07:58)

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

14

Simius, dzięki za zrozumienie i za test!

https://www.youtube.com/watch?v=jofNR_WkoCE

15

Yoo_Gas napisał/a:

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

Sikor umarł...

16

jakby co ja mam... mam też 65c02 na 6502c

https://systemembedded.eu/ ... https://www.youtube.com/watch?v=GwS7Es1x6mw
""Ja bardzo przepraszam, ale podejrzenia panów są całkowicie bezpodstawne. Ja niczym nie handluję. Ta pani przyszła do mnie w tym Pancake-u i w nim wychodzi.""
ABBUC Member #319. Preferowana forma kontaktu: email

17

Dzięki Sikor za info.

panicio.net - wysłałem PW.

18

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.

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

19

to może prościej zapytać Avery Lee :)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

20

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

przechodze na tumiwisizm

21 Ostatnio edytowany przez epi (2022-11-07 09:11:06)

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.

Post's attachments

cpu_board_schematic.jpg 607.38 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

22

Candle napisał/a:

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.

http://atari.pl/hsc/ad.php?i=1.

23

Candle napisał/a:

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.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

24

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.

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

25 Ostatnio edytowany przez mono (2022-11-07 11:44:47)

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.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje