atarionline.pl Rekordowo szybka transmisja SIO - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1:
         
        CommentAuthorKaz
      • CommentTime24 May 2026 22:29 zmieniony
       
      do artka na stronie głównej: ->link<-
      • 2:
         
        CommentAuthorKaz
      • CommentTime25 May 2026 11:47
       
      Pancio, kolega Kuba Husak zadał dobre pytanie, które wczoraj też Ci zadałem i wówczas mi wytłumaczyłeś. Poproszę teraz o publiczną odpowiedź :)

      jhusak:

      A co to za bug pokeya, co broni 184kbps?
      • 3: CommentAuthortebe
      • CommentTime25 May 2026 11:52
       
      gwałciciele Pokey-a
      • 4:
         
        CommentAuthorKaz
      • CommentTime25 May 2026 11:58 zmieniony
       
      Trochę tak. To kolejny projekt Pancia robienia z Pokeyem rzeczy eksperymentalnych. Przecież projekt InsanePokey to też nietypowa zabawa w całkowite odizolowanie Pokeya od wszelkich zakłóceń od komputera Atari czy jego zasilacza…
      • 5:
         
        CommentAuthorJacques
      • CommentTime25 May 2026 12:26
       
      Czyli niech i POKEY ma swoją "suszarkę" ;-)
      • 6:
         
        CommentAuthorpancio
      • CommentTime25 May 2026 14:43
       
      Krótki rys historyczny...

      Projekt powstał ponieważ:
      - Marcin (piguła) Prusisz zrobił replikę, CD-link, który to zasiał nam w głowach pomysł na własną implementację ale z wykorzystaniem zegara,
      - Jerzy (mono) Kut, który to jak zwykle ma to w zwyczaju - podpuścił mnie podczas rozmów o wszystkim i niczym :-)
      - Grzegorz (sun) Żyła zaproponował, że zahaczy @fofta w temacie PokeyMax-a
      - Mark (foft) Watson, który na naszą prośbę napisał patcha dla całej rodziny PokeyMax, który eliminuje błąd Pokey-a związany z nieprawidłowym przesuwaniem bitów w rejestrze wejściowym SIO.

      Zaczęło się od tego, że stwierdziliśmy z @mono, że CDlink jest fajny... ale może trochę za wolny... i jakoś tak mimochodem pomyśleliśmy o trybie transmisji synchronicznej POKEY-a. I jakież było nasze zdziwienie, że nikt, prawdopodobnie nigdy z tego tryby nie korzystał! Sprawdziliśmy klika schematów np stacji dyskietek i okazało się, że pin CLK_IN był w stacjach obsadzony. Zachodziliśmy w głowę dlaczego nigdy go nie wykorzystywano? Odpowiedzi niestety nie znaleźliśmy (przynajmniej wtedy) i postanowiliśmy to sprawdzić.

      Pierwsze testy opierały się na podaniu na wejście CLK_IN Pokey-a sygnału zegara z zewnętrznego generatora częstotliwości a na wejście DATA_IN danych wysyłanych z terminala PC. Wyniki pojawiały się na ekranie Atari. Kilka testów pozwoliło organo-optycznie stwierdzić, że wpisywany na PC w terminalu tekst "przenosi" się na ekran Atari z prędkością znacznie przewyższająca te znane z transmisji asynchronicznej opartej na generatorach POKEY-a. Oczywiście, wyniki zawierały też błędy wynikające z braku synchronizacji wysyłania danych z PC i zegara taktującego ale były mega obiecujące :-) Uzyskaliśmy w miarę stabilną transmisję na poziome ~400kbitów/s.

      Przyszedł czas na synchronizację... tu wkroczył @mono ze swoją ogromną wiedza w zakresie znajomości OS Atari i wszelkich procedur wejścia/wyjścia. Napisał program loadera dla Atari jak również wsad do ESP32. Moja rola sprowadzała się do wykonania prototypu interfejsu, na który doskonale nadaje się TasmARI (https://systemembedded.eu/viewtopic.php?t=72) oraz przeprowadzenia testów… I tu zaczęły się schody… programy krótkie np. CrystalRaider (~10KB) wczytywały się prawie bezbłędnie z prędkością ok. 90Kbit/s – co jak na na „zwykły magnetofon” i tak jest sporo – co prawda stacja z turbo potrafi niby szybciej ale wymagała przeróbek w ROM i w OS Atari czy specjalizowanych sterowników. Zaczęliśmy się zastanawiać co może być źródłem problemu. Przydała się lektura obowiązkowa:

      ->link<-
      ->link<-

      Od tego momentu już wiedzieliśmy, że łatwo nie będzie…

      A gdyby tak zmitygować ten problem w PokeyMax? – zaproponował Sun! I napisał do @foft-a w temacie. Po krótkiej wymianie informacji do Marka poleciała paczuszka z prototypem. W ten oto sposób, udało się ujarzmić PokeyMaxa :-) Mark napisał poprawkę!

      A oto co mówi współtwórca @mono o projekcie:

      „Przede wszystkim interfejs może pracować z dowolną prędkością z jaką tylko układy Atari wytrzymają i oprogramowanie loadera nadąży bo sygnał zegarowy jest podawany z zewnątrz (transmisja synchroniczna zamiast asynchronicznej jak w OS) nie wymyślamy nic nowego, bo wszystkie to opisywał @ijor i @phaeron o ile dobrze pamiętam w odpowiednim wątku na AtariAge, skutkiem tego że zegar jest z zewnątrz, loader jest uniwersalny czyli będzie pracował z dowolną podaną prędkością bez żadnych zmian więc prędkość transmisji może się cały czas zmieniać nawet podczas transmisji pojedynczego bajtu, bo wszystko zależy kiedy tykniemy zegarem z zewnątrz atari transmisja może być z dowolnego urządzenia audio - magnetofonu, cdromu, adaptera, komputera, empetróchy, i co kto wymyśli będzie kanał audio sio… „

      A ja się pod tym podpisuję :-)

      Co dalej?

      Sprzętowo: można jeszcze wykorzystać FIFO i uniezależnić przesył danych od ograniczeń Atari – temat obgadany z @foft-em – powinno się udać,

      Programowo: @mono twierdzi, że można zejść do 42 cykli na bajt co daje w przybliżeniu 422Kbit/s!

      Uda się? Zobaczymy :-)
      • 7: CommentAuthormono
      • CommentTime25 May 2026 15:11 zmieniony
       
      Aktualnie jest 42 (co za magiczna cyfra!) cykle na bajt.

      Prawda jest jednak nieco inna :)

      Zaczęło się od tego, że chciałem sprawdzić ile będzie zajmował najkrótszy loaderek (wykrzyknik) dla stacji dysków i dla magnetofonu - mieści się w 1 rekordzie/sektorze.
      No to jaki będzie najkrótszy loader dla stacji dysków obsługujący UltraSpeed/TopDrive/Synchromesh - 3 sektory.
      No to jaki będzie najkrótszy loader kasetowy pozbawiony błędu obliczania prędkości transmisji jaki jest w OS (jest ona liczona dla każdego rekordu!) - też 3 rekordy. Rozbudowywałem go jeszcze o możliwość ponowienia ładowania błędnego rekordu, a więc i o detekcję ostatniego poprawnego rekordu (nawet CRC-8 CCITT tam w pewnym momencie liczyłem :D).
      Na kanwie tych doświadczeń zrobiłem loaderek XEX-ów dla FujiNet-a który pozwala na ładowanie z dowolnym HS Index (również 0), a Cyprian pomagał w uruchamianiu.

      I dopiero mając te doświadczenia za sobą zaczęliśmy z Panciem eksperymentować z transmisją synchroniczną zapoznając się ZAWCZASU z doświadczeniami kolegów z forum AtariAge. Póki co dzięki poprawkom Foft-a działa to bezawaryjnie z PokeyMAX-em, z POKEY-em działa awaryjnie i trzeba rozwiązać różne problemy (które zresztą zdiagnozowali Ijor i Hias).

      Dlaczego transmisja magnetofonowa? Bo jest jednokierunkowa i można materiał podać z dowolnej "głupiej" odtwarzarki audio, zamiast konstruować "inteligentne" urządzenie i wymieniać dane ustalonym dwukierunkowym protokołem.

      Więc to na razie eksperymenty. A "Feud" powinien się ładować z magnetofonu w 2 sekundy. A nie 7.

      @Tebe: Była już "Grupa DUPA", był "YM Rockerz" i "AY Riders", może być i "POKEY Rapers" :) Tylko może być problem z materiałami na fejkbókach, iksach i tóbach propagandowych.

      Edit: Hias a nie Phaeron.
      • 8: CommentAuthortebe
      • CommentTime25 May 2026 15:46
       
      a nielegale CPU mają możliwość zastosowania? aby zejść z tych 42 cykli? i najlepiej aby różnica szybkości była odczuwalna
      • 9: CommentAuthormono
      • CommentTime25 May 2026 15:55
       
      Nie rozważałem użycia nielegali :) Ale być może, być może.
      • 10: CommentAuthorwoj76
      • CommentTime25 May 2026 21:21
       
      No, a przez to, że zawracacie dupę Markowi to inny bardzo ważny projekt się ślamazarzy
      • 11: CommentAuthormono
      • CommentTime25 May 2026 21:43
       
      Mark jest wolnym człowiekiem i robi co chce :)
    1.  
      Masakra ile tam jest różnych kabelków! Gratuluję rekordu.
      • 13:
         
        CommentAuthorpancio
      • CommentTime26 May 2026 09:58
       
      ale to tylko nieład twórczy.. normalnie jest tylko kabelek SIO :-)
      • 14:
         
        CommentAuthorsun
      • CommentTime28 May 2026 14:38
       
      a wersja pro będzie bez kabli :)
      • 15: CommentAuthorastrofor
      • CommentTime28 May 2026 15:01
       
      Może by tak stworzyć dedykowany, dwukasetowy magnetofon dla Atari — albo dodać trochę elektroniki do „jamnika” (dwukasetowca), aby potrafił czytać programy, najlepiej w turbo, z dwóch kaset jednocześnie. Wtedy do nowej wtyczki SIO byłoby coś z epoki, co byłoby w stanie dostarczyć odpowiednią ilość danych naraz.
      • 16: CommentAuthormono
      • CommentTime28 May 2026 15:32
       
      W stereo? Mamy często dwa POKEY-e...
      • 17:
         
        CommentAuthorpancio
      • CommentTime31 May 2026 13:50 (6 dni temu)
       
      @astrofor - to raczej nie przejdzie... bo założenie jest takie by jakoś specjalnie nie ingerować w Atari a użycie dwóch układów POKEY wymagałoby wyprowadzenia drugiego DATA_IN.

      A z placu boju... wczoraj udało mam się "wyczarować" kolejne 20%... Transmisja jest teraz taktowana na poziomie ~206 kbit/s, co przekłada się na szybkość transferu ~17,8 KB/s przy założeniu, że dane transmitujemy strumieniem. Z racji tego, że my póki co używamy rekordów z przerwami to tasz realny transfer jest znacznie wolniejszy. 20% daje nam ok 0.8s szybciej :-)

      @mono pracuje nad loaderem, który umożliwi transfer ciągły - wtedy te nasz 17,8KB/s jest realne - co by pozwalało załadować Feuda w mniej więcej 3s :-) (a dokładnie 3.2s) No i to by było coś!

      Mamy jeszcze kilka pomysłów ale umówmy się, że póki nie sprawdzimy to mówić nie będziemy (jak taki jeden od obiecanek od HAVO/sRAVO)

      Poniżej oscylogram odczytu pojedynczego bajtu danych a na drugim widać czas transferu pojedynczego bitu.

      Trzymajcie kciuki!
      • 18:
         
        CommentAuthorjhusak
      • CommentTime1 Jun 2026 09:16 (6 dni temu)
       
      Ale te 200kbps to na pokeymaksie, czy na real HW?
      • 19:
         
        CommentAuthorpancio
      • CommentTime2 Jun 2026 04:48 (5 dni temu)
       
      PokeyMax - niestety. Czysty Pokey tylko z potwierdzaniem transmisji, czyli realnie prędkość spadnie. Foft udostępnił wsad z poprawką również dla starszych PM więc jest szansa, że trochę ludzi skorzysta.
      • 20:
         
        CommentAuthorpancio
      • CommentTime7 Jun 2026 08:59 (4 godzin temu) zmieniony
       
      Szybki update z placu boju odnośnie naszego "TURBO SIO bez nazwy".

      Okazuje się, że 184 kbit/s nam nie wystarczyło i @mono podrasował loaderek... teraz jest... nie wiem ile jest ale jest duuuużo szybciej bo mamy nowy rekord! Feud w 2 sekundy! To jest po prostu niemożliwe ile jeszcze można z tego 40 letniego sprzętu na sterydach wyciągnąć.

      Z naszych ostatnich doświadczeń z Feud wynika, że: JEDEN FEUD ładuje się w czasie mniej niż jednego Eulera przy wyłączonym obrazie. A przy włączonym obrazie - czas ten wynosi Pi sekund czyli odpowiednio:2.17s i 3.14s

      Póki co nie wybraliśmy jeszcze nazwy dla Turbo SIO ale nasza umowa wciąż obowiązuje i finalny produkt trafi do "wymyślacza".

      Filmik z procesem ładowania można zobaczyć na grupie FB: ->link<- a w załącznikach kilka zrzutów obrazujących proces ładowania Feud-a w 2 sekundy :-)
      • 21: CommentAuthoraxe
      • CommentTime7 Jun 2026 10:16 (3 godzin temu)
       
      A to może tutaj zaproponuję (mało "światowe", ale kierunek dziewiczy i mało... techniczny;)ale może właśnie dlatego :) - TURBO GEPARD :D
      • 22: CommentAuthortebe
      • CommentTime7 Jun 2026 10:46 (2 godzin temu)
       
      BIEGUNKA też kojarzy się z szybkością ;)
      • 23: CommentAuthoraxe
      • CommentTime7 Jun 2026 11:52 (1 godzinę temu)
       
      Jednak GEPART ździebko lepiej brzmi