1

Kiedys robiac poprawki do TOMS MULTI dobieralem predkosc transmisji od strony Atari "recznie" (wpisywalo sie rozne wartosci do ADUF3 w procedurach US, az zadzialalo).
Wszyscy wiemy ze standardowa wartosc $28 daje predkosc 19200 (ale czy napewno, bo z moich obliczen jakby cos innego wynika).
Poszukuje oficjalnego wzoru do obliczania predkosci transmisji na podstawie wartosci wpisanej do ADUF3, przyznam ze mam faworyta (znaczy taki wzor), ale on znowu pasuje tylko do wersji NTSC, a w koncu my mamy PAL.

Wysylam na to forum, bo tu wiecej programistow (przynajmniej teoretycznie :) ).

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

2

BR=1773447/(14+2*AUDF3)

Ceterum censeo Germaniam esse delendam.

3

Dla wersji NTSC:

BR=1789773/(14+2*AUDF3)

Ceterum censeo Germaniam esse delendam.

4

No to ja znam ten sam wzor, tyle ze te same wartosci sa wpisywane dla wersji PAL i daja w wyniku te same predkosci ......

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

5

No tak, w PALu jest trochę wolniej.

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

6

a jak uzyjesz naPAL to dopiero heca -.-

7

a jak uzyjesz naPAL to dopiero heca -.-

Solo, nie PAL!

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

8

a jaki bedzie wzor dla SECAM ? :lol:  :rolleyes:

. . . . ..... . . . . . . . .. . .... .. ... . . . . . . . . .. . . . . . ..

9

Według wszystkich znaków na niebie i ziemi, dla 130XE w wersji SECAM, wzór jest następujący:

BR=1781500/(14+2*AUDF3)

Kwarc wyznaczający takt procesora w tej wersji komputera nosi oznaczenie CO24923. Według dostępnych informacji, jego częstotliwość rezonansowa to 14,252MHz.

Ceterum censeo Germaniam esse delendam.

10

No to teraz tylko napisze, ze potrzebne mi sa WIARYGODNE informacje, jak narazie testuje SIO2IDE z roznymi predkosciami, a komunikacje nawiazuje tylko na standardowej. Jesli chodzi o Atmela, to wzor jest w dokumentacji technicznej tego scalaka, a Atari - no sami widzicie....

Wracam do walki!

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

11

O co chodzi? Przecież właśnie dostałeś WIARYGODNE informacje.

Ceterum censeo Germaniam esse delendam.

12

No dobrze, wiarygodne moze i sa, ale w rzeczywistosci jest jakby troszke inaczej... Albo tez dane od producentow stacji klamia:

Standardowo - 19120 - ADUF3=$28
$28 - NTSC: 19040, PAL: 18866  (dane z obliczen)

XF551 HS - 39000 - ADUF3=$10 (tu by sie jeszcze zgadzalo prawie)
$10 - NTSC: 38980, PAL: 38553

US Doubler/Happy - 52000 - ADUF3=$0A
$0A - NTSC: 52640, PAL: 52160

SPEEDY - 57000 - ADUF3=$09
$09 - NTSC: 55930, PAL: 55420

IndusGT - 72000 - ADUF3=$06
$06 - NTSC: 68837, PAL: 68210 (i tu sie za chiny nie zgadza)

A pisze to daltego, ze przy malych wartosciach ADUF3 (czyli duzych predkosciach) nawet male roznice maja znaczenie przy transmisji a roznice wychodza wielkie.
No to teraz pytanie podchwytliwe:
Jak odbywa sie szybka transmisja w standardzie US ? (kiedy jaka predkosc - nie zapominajmy o jednoznakowych odpowiedziach stacji po rozkazie.
Problem w tym, ze mam rozpracowane to od strony stacji MULTI, a w zaden sposob nie chce dzialac z iinymi predkosciami niz standard - mimo ze wszystko testuje na QMEGowych procedurach US (oczywiscie testuje SIO2IDE). Co ciekawe, na tych samych procedurach dziala po ustaleniu predkosci na standardowa. Tak wiec wszystko robie zgodnie z zasadami i nic (narazie :) ).

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

13

Jak sobie przypominam, w standardzie UltraSpeed cała transmisja od początku do końca odbywa się z pełną prędkością. Po to właśnie w tym systemie występuje dodatkowy rozkaz $3F, żeby przed główną transmisją, ze standardową prędkością "zapytać" stację dysków o parametr wpisywany później do AUDF3. Z tego powodu standard US jest bardzo elastyczny, bo może działać z dowolną prędkością, oczywiście, jeśli oprogramowanie umie to wykorzystać.
Różnice w prędkościach, o których wspominasz, nie są tak naprawdę istotne. Synchronizacja i tak następuje przed każdym bajtem, więc licząc 0,5 bita do 10, maksymalna rozbieżność może sięgać (teoretycznie) 5% prędkości.
To, co Ci się za Chiny nie zgadza, było podane po prostu na wyrost. Dla TopDrive, systemu działającego dokładnie przy tej samej wartości w AUDF3, podawana była prędkość 70kbaud. Ktoś sobie "podwatował" wynik, zeby lepiej wyglądało i tyle.
Mnie udało się bez problemu, po wymianie w komputerze kondensatora na wyjściu danych, uzyskać w standardzie US stabilną prędkość 110kbaud (AUDF3=1)

Ceterum censeo Germaniam esse delendam.

14

No to mamy te same informacje (mi tez sie udalo uzystakc transmisje na ADUF3=1 - przy pracach nad poprawkami dla TOMS MULTI - co prawda czytal to tylko SPEED30 init, bo on robi odczyt w petli, a nie na przerwaniu...)
No wlasnie, co do US. Stacja MULTI po wykryciu transmisji z ta predkoscia (a w zasadzie po stwierdzeniu, ze z innymi nie dziala :) ) przelacza sie na odbior danych z komputera w oparciu o takt podawany na wyjsciu CLOCK (czyli transmisja synchroniczna), co ciekawe synchronicznie odbywa sie tylko odbior, zastanawiam sie czy ma to znaczenie, a wyjasnialoby duze rozbieznosci w transmisji.
Jako ze MULTI ma jeszcze tryb normalny i TopDrive , sprawdzilem to - w tych trybach transmisja jest caly czas asynchroniczna mimo, ze w TopDrive jest ta sama predkosc co w US...

A teraz odpowiadam dlaczego poszukuje potwierdzenia mojej wiedzy (ktora w sumie mialem prawo zapomniec, dobrze ze dokumentacja poprawek w MULTI sie odnalazla).
Otoz Kompiluje sobie SIO2IDE dla Atmela zmieniajac predkosc transmisji (to napewno dziala, bo mam inny kwarc i i musialem te wartosc dobrac by miec standardowe 19000). W tej chwili nie ma jeszcze implementacji rozkazu "?" wiec interfejs nie zwraca predkosci, w takim razie wymuszam na QMEGU tryb US ($3f0;01), a potem ustawiam predkosc w tym trybie ($3ec;28 ) ... no i $1000<.1.1 :) ... jesli jest to $28 - czyli standard transmisja sie odbywa, a wystarczy ze zmienie predkosc w Atmelu (nawet minimalnie) i nie ma szans na dobranie wartosci od strony Atari.
Musi byc jakis haczyk w samym protokole US, bo jak pisalem wartosc w Atmelu i tak zmienialem wiec program kompiluje sie prawidlowo.

Pozostaje chyba ponowna analiza ROMu MULTI, cale szczescie ze komentowalem na marginesach ... A moze ktos ma inny pomysl, pracuje nad tym praktycznie 24h/dobe, tak wiec czekam na propozycje.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

15

Transmisję z POKEY-a można odbierać korzystając z sygnału CLOCK. W drugą stronę niestety nie idzie. Próbowałem zmusić POKEY do odbioru danych przy taktowaniu zegarem zewnętrznym, ale mi nie wyszło. Wydaje się, że dane fabryczne są po prostu błędne. Zresztą nie spotkałem się nigdy ze sprzętem, który wykorzystywałby taka możliwość.

W protokole US raczej nie szukaj haków, bo testowałem go przy różnych prędkościach i wszystko działało bez zarzutu. Bardzo dobry do tego jest US turbo copier 4.0, bo ma zaimplementowany rozkaz "?" i działa z każdą prędkością, jaką mu zadasz. Daruj, że to napiszę, ale szukaj raczej pluskiew w swoim oprogramowaniu Atmela. :)

Małe pytanko: ile bitów stopu dajesz w Atmelu?

Ceterum censeo Germaniam esse delendam.

16

No wlasnie, soft Atmela jest oryginalny Marka (z SIO2IDE), ja zmieniam tylko predkosc UARTu, co do bitow stopu... niestety Atmel nie jest tak elastyczny moze po prostu wysylac dane 8mio lub 9cio bitowe z jednym bitem startu... bit stopu, to poprostu stan po wyslaniu bajtu i trwa az do nastepnego bitu startu. Poza tym transmisja  po ustawieniu w Atmelu predkosci 19200 odbywa sie calkowicie bez problemowo (nawet przy ADUF3 $29 czy $27, a czasem lapie i $26 :) ) a wystarczy w Atmelu zmienic na np. 21000 (czyli niewielka roznica) i nie daje sie dobrac nic od strony Atari. Jak wspominalem nawet dla predkosci 19200 byly to rozne zapisy w Atmelu bo zmienial sie kwarc - a zawsze dzialalo. Wydawalo mi sie nawet ze znak ACK po odebraniu rozkazu transmitowany jest do kompa zawsze z normalna predkoscia, ale po sprawdzeniu w systemie TOMS MULTI stwierdzam, ze nie... no coz moze nie dokonca znam QMEGa ;). Chyba poszukam SectorCopy i wyrzuce w nim pytanie o predkosc stacj (bede sam wpisywal).

Walcze dalej :) - ma zadzialac i juz!

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

17

UART standardowo wysyła dane z 1 bitem stopu, jeżeli oczywiście załadowanie nowej danej do rejestru odbędzie się przed opróżnieniem parsera. Przy większych prędkościach Atarynka nie zawsze daje sobie z tym radę. Wystarczy zwykle wybranie trybu 9-bitowego i ustawienie bitu 9. To daje już 2 bity stopu, co w większości wypadków wystarcza (choć wcale nie zawsze :))
Jesteś pewny, że częstotliwość taktu UART ustala się tylko w jednym miejscu? Może w którymś momencie program przywraca starą wartość. Spróbuj ustawić normalny tryb - 19200baud i po prostu zmienić kwarc na inną, obliczoną wartość. Jak zadziała, to będziesz wiedział, czego szukać.
Jak sobie nie poradzisz, zawsze możesz poprosić o pomoc. :cool:

Ceterum censeo Germaniam esse delendam.

18

Jesteś pewny, że częstotliwość taktu UART ustala się tylko w jednym miejscu? Może w którymś momencie program przywraca starą wartość. Spróbuj ustawić normalny tryb - 19200baud i po prostu zmienić kwarc na inną, obliczoną wartość. Jak zadziała, to będziesz wiedział, czego szukać.

Predkosc na 100% jest ustalana w jednym miejscu, co do zmiany kwarcu, to zmienilem na prawie 2razy szybszy i odpowiednio wyliczylem wartosc dla 19200 - wpisalem, skompilowalem i dziala, tak wiec tu jest O.K.
W kodzie sa dodatkowe spore opoznienia robione petlami na NOPach, po wyslaniu bajtu - po zmianie kwarcu - prawie dwa razy krotsze, a dalej dziala - wiec to nie bit stopu, przy wolniejszym kwarcu zmiana predkosci, tez powodowala brak transmisji.
Chyba pozostaje QMEG, szukam wlasnie SectoCopy i walcze - uparty jestem, bo to juz druga doba :).
Najgorsze, ze po kazdej zmianie trzeba programowac Atmela :(

Po testach!!!

Yeah! To cos w QMEGu (widac nie znam wszystkiego) SectorCopy zadzialalo z inna predkoscia - narazie jest to 20000 ale juz zmienam i zobaczymy z jaka predkoscia wyrobi SIO2IDE - a jak juz potestuje.... :)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

19

"Inżynieria wsteczna" niewiele tu chyba pomoże. To musi działać. Chętnie bym obejrzał tą Twoją transmisję na analizatorze.

Ceterum censeo Germaniam esse delendam.

20

Sa sukcesy!
Wlasnie "skopiowalem" sobie partycje 1 na 2 z predkoscia 51200 bodow. za pomoca US SectorCopy i SIO2IDE !
Cale szczescie ze na 2 nie bylo nic waznego, bo zanim sie zorientowalem poszlo!
Oczywiscie recznie wpisalem kopierowi do jego tablicy predkosci $0a, bo jak pisalem - "?" jeszcze nie dziala w SIO2IDE.
Zastanawiam sie dlaczego z QMEGiem nie zadzialo, moze nie dokonca go oszukalem, ze stacja ma US ?
W kazdym razie dziala szybka transmisjia z SIO2IDE i juz za chwileczke juz za momencik ... :)

Musze wyjsc z Windowsow, bo potestuje wieksze predkosci - standardowa dla US czyli 52000 dzial super stabilnie.

Odnosimy zwycieztwa w tej "walce" :)

edycja:
Po sprawdzeniu mozliwych w Atmelu z takim kwarcem predkosci, doszedlem do wniosku ze pozostawienie 52000 bedzie najlepszym rozwiazaniem. Pozostale za duzo odbiegaja od mozliwych do uzyskania w Atari a 52000 pasuje prawie idealnie. Poza tym jest to standardowa predkosc US i niech tak pozostanie.
Teraz tylko korespondencja z Markiem i bedziemy mieli najlepszy interfejst HDD do malucha :)

edycja2:
A QMEG... wyglada na to, ze skubaniec przed kazda transmisja (L z menu, czy odczyt z MLM) wysyla pytanie o status (gestosc) w standardowej szybkosci, a w tej chwili SIO2IDE obsluguje albo jedna, albo druga - ot i rozwiazanie problemu... I uwaga! Jak na prawdziwego Atarowca przystalo, edycje2 napisalem na malym Atari (Ice-T i lynx na terminalu UNIXowym) - strona wyglada duzo lepiej niz wiele "powaznych" stron firmowych w trybie tekstowym :)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.