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: CommentAuthorVLX
      • CommentTime18 Jun 2026 15:41
       
      Dorzucę jeszcze nazwę SIOking
      • 2:
         
        CommentAuthorjhusak
      • CommentTime18 Jun 2026 19:02
       
      A ja SIOrprice.
      • 3:
         
        CommentAuthorMaW
      • CommentTime18 Jun 2026 23:25
       
      SIOprays ;-)
      • 4:
         
        CommentAuthorjhusak
      • CommentTime19 Jun 2026 01:39
       
      KaSIO, KaSIOra, KaSIOpeja, SarcaSIOn
      • 5:
         
        CommentAuthorBca
      • CommentTime20 Jun 2026 02:05 zmieniony
       
      dostałem natchnienie czytając KaSIOpeja - więc proponuję SIOfikszyn
      ale gratulacyje dla twórców, kapelusz z głowy!
      • 6: CommentAuthorgregor2
      • CommentTime20 Jun 2026 10:00 zmieniony
       
      Czy ktos w ogole policzyl jaka jest maksymalna predkosc odbioru danych przy pomocy 6502 bez DMA w Atari ?
      Moze takie wyciskanie jak najwiekszej liczby bitow na sek. powyzej jakiegos limitu nie ma sensu ?
      Moim zdaniem najwiekszym hamulcowym jest dzielenie danych na drobne bloki , gdyby z tego zrezygnowac i dane pobierane bylyby bez dzielenia (jak to robia inne komputery) to wzrost szybkosci bylby odczuwalny.
      Magnetofon to nie dyskietka, nie potrzebuje sektorow , no chyba aby skomplikowac i spowolnic transmisje ;)
      • 7: CommentAuthortebe
      • CommentTime20 Jun 2026 10:08
       
      SIOOOOO
      • 8:
         
        CommentAuthorCyprian
      • CommentTime20 Jun 2026 11:39
       
      SIOOOOO najlepsze, swojskie takie
      • 9: CommentAuthormono
      • CommentTime20 Jun 2026 12:59 zmieniony
       
      @gregor2: Zrobiłem eksperymentalnie loader w którym najciaśniejsza pętla odbioru danych ma 16 cykli, co pozwalałoby na max transfer 1108404,375 bps przy zegarze PAL (1118607,8125 bps na NTSC), ale wg tego co pisali na AtariAge granica POKEY-a leży gdzieś około 450 kbps.
      Natomiast być może ta granica stałaby nieco dalej w nowych zamiennikach jak PokeyMAX, Evie, SimpleStereo, QPokey, PokeyONE czy HOKEY.

      Edit: Feud wtedy szedłby w pół sekundy.
      • 10:
         
        CommentAuthorjhusak
      • CommentTime20 Jun 2026 13:58 zmieniony
       
      @mono, jak to bps liczymy? to jest 1 bajt na 16 cykli?

      Jak eksperymentowałem z PWM na pokeyu dla MOVPLAY, to wartości poniżej 6 (o ile pamiętam) praktycznie nie wznosiły sygnału, (była lekka górka, ale miała może z 0.5V) Tylko, że tu mówimy o odczycie, jest zupełnie inny tor.
      • 11: CommentAuthormono
      • CommentTime20 Jun 2026 14:13 zmieniony
       
      Tak, procedura wygląda tak:
      loop:
      lda SERIN ;4
      sta (mem),y ;6
      iny ;2
      bne loop ;2/3
      inc mem+1 ;5
      inx ;2
      bne loop ;3
      więc jak widzisz bajt na 15/24 cykli.

      Gdyby umożliwić POKEY-owi HALT procesora i dorobić tam rejestr MEM ($D21C) który pozwalałby na zapisywanie obszaru pamięci z autoinkrementacją adresu, wtedy moglibyśmy mieć:
      loop:
      lda SERIN ;4
      sta MEM ;4 (a może 5, bo cykl HALT dodatkowo)
      iny ;2
      bne loop ;2/3
      inx ;2
      bne loop ;3
      wtedy byłby bajt na 14/18 cykli, a więc 1266747,857 bps dla PAL albo 1278408,9285 bps dla NTSC.

      A jakby w ogóle mieć DMA to by leciało bajt na dwa cykle - 8867235 bps PAL i 8948862,5 bps w NTSC :) No, to wtedy Feud by się ładował w 51 milisekund.

      Edit: Takie DMA ma NES w swoim PPU co pozwala mu w 512 cykli przepisać obszar kontroli sprajtów z RAM-u.
      • 12: CommentAuthorgregor2
      • CommentTime20 Jun 2026 15:06 zmieniony
       
      Niestety twoja procedura nie jest wyrownana czasowo, ale moglaby dzialac gdyby Pokey (a raczej jakis zamiennik) pobieral dane do bufora FIFO z ktorego bez przestojow w tym samym czasie moglby czytac 6502. Przy odpowiednio dobranej szybkosci i buforze FIFO w teorii moznaby czytac dane nawet przy wyswietlaniu ekranu.
      Ale nadal trzeba sprawdzac czy przypadkiem nie jest koniec transmisji, lub godzic sie na to ze czasami trzeba bedzie pobrac wiecej danych niz potrzeba.

      Po za tym jak jest ze stabilnoscia zegara w poszczegolnych egzemplarzach Atari?
      Bo np. u commodore jest to fatalne, gdzie czestotliwosc byla ustawiana na oko pod kazdy egzemplarz VIC-a ;)
      • 13: CommentAuthormono
      • CommentTime20 Jun 2026 15:28 zmieniony
       
      To jest transmisja synchroniczna taktowana z zewnątrz. Urządzenie może podawać bity kiedy tylko chce i z jaką prędkością mu pasuje. Kawałek kodu pokazuje tylko jakie są warunki krańcowe.

      Edit: A w kwestii zegara, to musi się wypowiedzieć jakiś elektronik. Ja to tylko piszę programy. Taka wymarła profesja.
      • 14: CommentAuthorgregor2
      • CommentTime20 Jun 2026 16:09 zmieniony
       
      Z tym HALT to raczej nie do konca.
      Z tego co wiem to on dziala tak samo jak DMA w AppleII wiec bezpiecznie mozesz przejac magistrale na ok.40us (przynajmniej wedlug Apple), po tym czasie 6502 (a i to zalezalo od producenta CPU) moze stracic zawartosc rejestrow.
      Dla ANTIC to wystarcza, ale transmisje nieco komplikuje, w appleII chyba tylko jeden kontroler SCSI i tanie karty z roznymi CPU bez swojego RAM to wykozystywaly.
      Problem w tym ze AppleII mialo chain DMA z priorytetami, czego w Atari nie przewidziano.
      No chyba ze wymienisz CPU na CMOS ;)

      A i przy HALT/DMA nie musisz dodawac cykli to nie c64 ;)
      • 15: CommentAuthormono
      • CommentTime20 Jun 2026 16:32 zmieniony
       
      My tu mamy SALLY czyli 6502C, ciekawe jak ma zrobione rejestry? W 7800 ProSystem też jest stosowany, a tam Maria go haltuje na dłuższy czas w linii i, jak się napisze odpowiednio DLL, to nawet na wiele linii. Ciekawe czy to ma jakieś reperkusje w CPU?
      Dodany cykl do STA jest dlatego, że zapis do rejestru MEM ma następnie zapisać bajt w pamięci systemu, i to robione by było przez zamiennik POKEY-a (bo o zamienniku mowa). Gdyby ktoś to implementował.
      • 16: CommentAuthorgregor2
      • CommentTime20 Jun 2026 16:40 zmieniony
       
      Sally to taki NMOS 6502 do ktorego doklejono bufory i wlasnie uklad zatrzymujacy zegar.
      Z jego ograniczeniami.
      Niestety producenci CPU nigdy tego parametru nie podawali w dokumentacji.
      Jedynym zrodlem jest dokumentacja AppleII i dotyczy ukladow ktore oni stosowali.
      Z tego co pamietam najkrocej rejestry trzymaly Rockwele (bezopiecznie chyba coc kolo 8 us i Apple ich nie uzywalo)
      W sumie to podobne rozwiazanie do tego w 6510.
      Zreszta mozesz sobie podejrzec jak to logicznie wyglada jak znajdziesz schemat pierwszej wersji Atari400

      Ja zrozumialem ze to STA MEM to robiloby jakies DMA w SuperPOKEY-u wiec wystarczylby 1 cykl ;)

      EDIT
      A nie przepraszam dawno nie robilem nic przy ATari i ciagle mam na mysli AppleII.
      Masz racje w Atari ptrzeba wyrownac cykl wiec w sumie zajmuje to 1.5 cykla jesli wystarczajaco szybko uda sie zwolnic magistrale, 1 a wlasciwie 0.5 cykla zajeloby to w AppleII, czyli zapisanie danej do RAM przez DMA.

      Mechanizm jest ten sam tyle ze w Atari cykl gdzie jest podany HALT jest tracony i to chyba jedyna roznica miedzy Atari a AppleII.

      Wnetrze CPU 6502C w Atari 8-bit to tak naprawde sekcja ktora zaznaczylem w zalaczniku.
      Te wszystkie procesory tj. 6509,6510,6502C z atarii byly robione przez dodanie do maski rdzenia ukladow zewnetrznych , bez zmiany samego CPU.
      Wlasnie taka mozliwosc korekcji maski byla jedna z tajemnic niskiej ceny i wielu wariantow produkcji 6502 ;)
      • 17:
         
        CommentAuthorPeri Noid
      • CommentTime20 Jun 2026 22:39
       
      Co do nazwy - czy RekSIO (od Rekordordowe SIO) to już było?
      • 18:
         
        CommentAuthorjhusak
      • CommentTime21 Jun 2026 01:06 zmieniony
       
      Chyba AnoRekSIO :)

      A RekSIO znaczy królik. Czyli mały król. Duży to Reks, ten co Rzekł i tak było.

      Nazwa mi się podoba :)
      • 19: CommentAuthorKonstantyn
      • CommentTime21 Jun 2026 12:21 zmieniony
       
      KaSIOpeja mię się podobie. Tylko mam pytanie do wynalazców, wgrywadełko to chłopiec czy dziewczynka? Bo jeśli chłopiec to może KaSIOp? :-D
      • 20: CommentAuthormono
      • CommentTime21 Jun 2026 13:09
       
      Rodzaj nijaki :) TO!
      • 21:
         
        CommentAuthorjhusak
      • CommentTime22 Jun 2026 21:53
       
      A dało by się toto zaimplementować (łatwo) do FujiNet?
      • 22: CommentAuthormono
      • CommentTime22 Jun 2026 23:13
       
      Zobaczymy.