atarionline.pl
atarionline.pl Atari
Login:
Hasło:
Zapamiętaj mnie
Translate to RSS RSS
Premiera "Gry w linie" z 2020-07-24 09:20 (16)
Dzisiaj kolejny KWAS z 2020-07-22 16:13 (3)
Konserwacja stacji dysków 1050 z 2020-07-20 13:34 (18)
Lost Party 2020 - prace i wyniki z 2020-07-12 10:29 (35)
Konserwacja magnetofonu z 2020-07-10 23:13 (12)
Warsztaty z projektowania elektroniki z 2020-07-09 08:50 (7)
Wspomnienie o katowickiej giełdzie i nie tylko z 2020-07-08 11:51 (21)
Sommarhack 2020 - wyniki z 2020-07-05 18:04 (17)
Magazyn dyskowy "Flop" #65 z 2020-07-03 10:55 (14)
SV 2019 - relacja subiektywna z 2020-06-22 21:14 (15)
Lech Bąk i "Świat Młodych" z 2020-06-11 10:12 (26)
Dzisiaj KWAS i inne z 2020-06-10 12:53 (3)
KWAS i kolejne spotkania z 2020-06-02 17:47 (20)
Za chwilę "Bard's Tale"! z 2020-05-31 14:37 (6)
Ostatni "KWAS" pandemiczny z 2020-05-27 19:28 (37)
Niedziela growa z 2020-05-23 13:40 (10)
Nieprzeciętny "przeciętny" cartridge z 2020-05-21 07:21 (43)
Dzisiaj KWAS #21H z 2020-05-20 10:28 (5)
Rewelacyjny interfejs #FujiNet (cz.2) z 2020-05-14 23:17 (9)
Kaseta Turbo 2600 odczytana! z 2020-05-13 12:58 (23)
«« nowszestarsze »»

Pomocnik/Helper
Gry/Games

Katalog gier

Opisy gier
Submarine Commander opisał Kaz (8)
Frogs opisał Xeen (0)
Choplifter! opisał Urborg (0)
Joust opisał Urborg (16)
Commando opisał Urborg (35)
Mario Bros opisał Urborg (13)
Xenophobe opisał Urborg (34)
Robbo Forever opisał tbxx (16)
Kolony 2106 opisał tbxx (0)
Archon II: Adept opisał Urborg/TDC (9)
Spitfire Ace/Hellcat Ace opisał Farscape (8)
Wyspa opisał Kaz (9)
Archon opisał Urborg/TDC (16)
The Last Starfighter opisał TDC (30)
Dwie Wieże opisał Muffy (18)
Basil The Great Mouse Detective opisał Charlie Cherry (123)
Inny Świat opisał Charlie Cherry (17)
Inspektor opisał Charlie Cherry (19)
Grand Prix Simulator opisał Charlie Cherry (16)
Rescue On Fractalus opisał Kaz (18)
«« nowszestarsze »»

Wewnętrzne/Internals



   Nowinki tworzone dzięki CuteNews
Rewelacyjny interfejs #FujiNet (cz.2)
Marcin “Montezuma” Sochacki przygotował kilka dni temu pierwszy artykuł o interfejsie #FujiNet, który unaocznia rewolucyjność urządzenia, a o który to opis prosiliśmy my, szarzy użytkownicy, na jednym z poprzednich KWAS-ów. Po szczegóły odsyłam do artykułu Montezumy. Do tego warto dodać komentarz Marcina odnośnie aktualnej dostępności urządzenia, o co po publikacji pytało wielu zainteresowanych: “W planach jest produkcja gotowych urządzeń #Fujinet dla wszystkich chętnych. Potem udostępnione zostaną wszystkie potrzebne pliki. Natomiast każdy, kto chciałby już dzisiaj mieć swój egzemplarz #FujiNet, może kupić sobie ESP32 NodeMCU i z pomocą płytki uniwersalnej zbudować prototyp. Tutaj schemat dla wersji WROVER, na której bazuje najnowszy hardware. Również dla tej wersji są w sprzedaży płytki NodeMCU.” Dodatkowo Marcin przygotował tłumaczenie tekstu o #FujiNet autorstwa jednego z głównych autorów pracujących nad projektem, którym jest Thomas Cherryhomes:



FujiNet: Dlaczego to zrobiliśmy?

Kolega Mozzwald chciał zrobić modem, którym można sterować za pomocą pinów I/O. Istniejące rozwiązania opierały się na wersji ESP-01 mikrokontrolera ESP8266, a ona nie miała ich wystarczająco dużo. Tak więc Mozzwald rozpoczął nowy projekt oparty o ESP-12E. Natknąłem się na jego wątek na AtariAge i doznałem objawienia, bo skoro podłączamy wszystkie sygnały SIO do pinów GPIO na ESP8266, to dlaczego nie mielibyśmy zaemulować stacji dyskietek? (październik 2019)

Mozzwald wysłał mi prototyp i natychmiast zacząłem hakować kod emulujący stację dyskietek. Odpaliłem Arduino i napisałem skrypt. Wysłałem go Mozzwaldowi, a on usiadł nad nim, aby poprawić synchronizację sygnałów SIO. Po tygodniu pracy udało nam się załadować jeden sektor z pamięci flash. Trzy dni później załadowaliśmy grę Jumpman. (listopad 2019)



Zapaliła nam się lampka. Eureka!

Byłem użytkownikiem interfejsu SpectraNet, czyli karty sieciowej dla ZX Spectrum. Jego autorzy opracowali prosty protokół wymiany plików, który nazwali TNFS (Trivial Network File Sharing), oparty na UDP i niezwykle prosty do zaimplementowania. Tylko część protokołu zaimplementowałem od razu, aby zamontować pojedynczy plik i przesyłać załadowane z serwera 128-bajtowe pakiety. Włączyłem Atari i… to zadziałało. Jasna cholera!

I mniej więcej po 4000 podłączeniach mojego kabla SIO (prototyp, który miałem, nie mógł mieć podłączonych SIO i USB w tym samym czasie), jeden z pinów się złamał, a ja nie mogłem przeprowadzić testu, który naprawdę chciałem przeprowadzić – po raz pierwszy uruchomić coś przez internet. “Świetny moment” na awarię. (12 listopada 2019)

Szybko zgłosiłem się więc do Mozzwalda i wysłałem mu najnowszy kod, a on nagrał wideo pokazujące jeden z najbardziej niesamowitych momentów w projekcie, jakiego kiedykolwiek doświadczyłem - moment, w którym uruchomiliśmy grę “Jumpman” z… serwera w internecie, podczas gdy Atari myślało, że to uruchamianie gry ze zwykłej stacji dyskietek!



Reszta to była jazda bez trzymanki. Od tego czasu przenieśliśmy się z Arduino IDE na Platform.IO i z ESP8266 do ESP32 ze względu na większą jasność co do zakresu wymagań w projekcie.



Czy to się uda?

Tak, damy radę. Pójdzie nam szybciej, jeśli znajdą się chętni do pomocy. To ważne, żeby
wszyscy wiedzieli, że jest to otwarty projekt. Firmware i schematy dostępne są za darmo, a każdy może zbudować i używać #FujiNet. Chcemy, aby urządzenie stało się standardem. Nie tylko dla Atari. Chcemy, żeby ludzie z innych społeczności retro mogli skorzystać z tego, co mamy i dostosować #FujiNet do swoich systemów (scena Commodore 64/128 mogłaby na tym naprawdę skorzystać!). Zawsze pomocne są początkowe sukcesy, a tu praktycznie każde nasze życzenie co do funkcjonalności zostało przez układ ESP32 spełnione. Dzięki temu mamy energię, aby dalej działać!

Funkcjonalność produkcyjnej wersji kodu:

  • emulacja dysku - odczyt/zapis dysków na karcie SD, w pamięci flash (SPIFFS) albo w sieci. Emulacja dysku jest tym od czego zaczęliśmy. To po prostu działa: dyski o wszystkich kształtach i rozmiarach w formacie ATR. Chcemy dodać format ATX (i tutaj może przydać się pomoc). Dyski są przesyłane strumieniowo. Istniała pamięć podręczna (cache) dla odczytu, ale została tymczasowo wyłączona, dopóki nie zostanie przepisana na nowo jako aktualizowany w tle bufor cykliczny. Nie ma znaczenia, gdzie jest ATR. Czy jest na lokalnym serwerze TNFS, czy na zdalnym serwerze na końcu świata, czy na lokalnej karcie SD w gnieździe kart SD, po prostu działa i już. Wspieramy do 8 niezależnych dyskietek. Oprogramowanie serwera TNFS jest tutaj.

  • emulacja modemu WiFi - Atari 850 w połączeniu z modemem WiFi obsługuje wszystkie połączenia CIO i SIO. Współpracuje z istniejącym oprogramowaniem dla modemów Atari. Testowane z programami: Bobterm, AMODEM, 850 Express! i ICE-T. Przetestowana została również wersja RS232 PLATOTERM. Obraz dysku zawierający zestaw programów modemowych jest do podmontowania pod adresem fujinet.online (przez TNFS). Możliwe jest również wysłanie polecenia SIO w celu ustawienia numeru portu dla nasłuchującego gniazda, tak aby oprogramowanie BBS mogło działać. Napisałem narzędzia (na dysku fnc-tools) o nazwach RLISTEN i RULISTEN ("słuchaj" i "przestań słuchać"), które to robią. Testowałem z BBS Express! w wersji 1.0.

  • emulacja drukarki - urządzenie P: na miarę 21 wieku! Dzięki staraniom Jeffa Piepmeiera, mamy możliwość drukowania na urządzeniu P:. Dostajemy plik PDF, który można wydrukować za pomocą nowoczesnych drukarek. Emulujemy kody kontrolne drukarek, a także przy użyciu odpowiednich wymiarów papieru i czcionek obsługujemy obecnie:
    - Atari 820 - 40 kolumn, z dokładnie pasującą czcionką 5x7. Obsługiwany jest nawet tryb poprzeczny,
    - Atari 822 - 40 kolumn, z pełni obsługiwanym ukrytym trybem graficznym,
    - Atari 1027 - 80 kolumn, ze świetnie pasującą czcionką Prestige Elite (wygląda najlepiej),
    - Atari 1020 - emulacja plotera generuje plik SVG, symulowana czcionka (wektory czcionki z ROM),
    - GRANTIC - w połączeniu z handlerem GRANTIC po stronie Atari, pozwala na zrzut ekranu!
    - HTML Printer - generuje stronę HTML, z wbudowaną czcionką ATASCII.

    Kolejne drukarki są w planach:
    - Atari 1025,
    - Atari 825,
    - Epson MX/FX (ESC/P).
    Używam tej emulacji codziennie do tworzenia listingu N: handlera, nad którym aktualnie pracuję (szczegóły poniżej).

  • urządzenie sieciowe N: - #FujiNet może być postrzegany jako zestaw urządzeń, które mogą być natychmiast wykorzystane po wyjęciu z pudełka (emulacje istniejących peryferiów) oraz jako karta sieciowa. #FujiNet udostępnia urządzenia SIO pod adresami 0x71 do 0x78, które akceptują następujące rozkazy:
    - "O" - otwórz połączenie sieciowe,
    - "C" - zamknij połączenie sieciowe,
    - "R" - odczyt z połączenia sieciowego,
    - "W" - zapis do połączenia sieciowego,
    - "S" - uzyskanie statusu połączenia sieciowego.
    Urządzenia te mogą otwierać połączenia z użyciem różnych protokołów, np:
    N:TCP://192.168.1.1:2000/ ← otwórz połączenie TCP do 192.168.1.1 port 2000
    N:UDP://:2000/ ← akceptuj połączenia UDP na porcie 2000
    N:HTTP://WWWW.GOOGLE.COM/ ← otwórz połączenie HTTP do WWW.GOOGLE.COM, port 80
    N:HTTPS://WWWW.TWITTER.COM/ ← otwórz połączenie HTTPS do WWW.TWITTER.COM:443
    a wkrótce z kolejnymi protokołami, takimi jak SSH i FTP, przy czym każdy z tych protokołów działa na mikrokontrolerze ESP32, wykonującym wszystkie zadania związane z komunikacją i zapewniającym Atari abstrakcję na poziomie SIO. Każdy z protokołów może również implementować własne polecenia SIO, w celu zmiany kontekstu poleceń odczytu, zapisu i statusu. Jest to używane, na przykład, z protokołem TCP, do akceptacji przychodzących połączeń lub z HTTP, aby zakomunikować POST body, nagłówki HTTP lub żeby wysłać niestandardowy certyfikat CA dla komunikacji HTTPS, dla certyfikatów niedostępnych jeszcze w magazynie certyfikatów (certificate store). Programista może wybrać, czy chce użyć komend SIO bezpośrednio, czy raczej użyć abstrakcji na poziomie handlera CIO.

    handler CIO - warstwa SIO obudowana jest handlerem CIO udostępniającym urządzenie N:, aby programowanie było jeszcze łatwiejsze, nawet z poziomu BASIC-a. Handler CIO przesyła dane, odpytując warstwę SIO, czy dane polecenie jest wspierane (komenda SIO 0xFF) i dynamicznie ustawiając odpowiednie parametry dla poleceń SIO, dzięki czemu nie musimy mapować tych poleceń w handlerze CIO. Ostatecznie, oznacza to, że możliwe do uruchomienia są programy takie jak poniżej. Jest to najprostszy możliwy terminal:

    10 REM THE SIMPLEST DUMB TERMINAL 20 REM POSSIBLE, WITH THE
    N: DEVICE
    100 OPEN #1,12,2,"N:TCP://BBS.FOZZTEXX.NET/":OPEN
    #2,4,0,"K:"
    101 TRAP 140
    110 IF PEEK(764)<>255 THEN GET #2,K:PUT #1,K:XIO
    15,#1,12,2,"N:"
    120 STATUS #1,A:BW=PEEK(747)*256+PEEK(746):IF BW=0 THEN 110
    130 FOR M=1 TO BW:GET #1,C:PUT #16,C:NEXT M:GOTO 110
    140 CLOSE #1:? "DISCONNECTED.":END


    XIO 15 jest w zasadzie komendą PUT FLUSH. Wartości 12,2 (w polach AUX1/AUX2) określają kanał odczytu/zapisu, z tłumaczeniem znaków końca linii na ATASCII EOL (można ustawić brak tłumaczenia, lub włączyć zamianę CR, LF lub CRLF na EOL).

    przerwania - warto zauważyć, że #FujiNet wykorzystuje linie PROCEED i INTERRUPT złącza SIO. Urządzenia sieciowe wykorzystują je do sygnalizowania zmiany stanu sieci, np. dostępność danych w buforze odbiorczym, lub zmiana stanu połączenia. Oznacza to, że nie musimy w sposób ciągły zalewać magistralę SIO komendami (polling), a #FujiNet może po prostu ustawiać sygnał PROCEED, gdy musimy na coś zwrócić uwagę. Handler CIO podpina wektor IRQ do VPRCED, który ustawia zmienną sygnalizującą, że handler CIO musi uzyskać nowe dane o statusie z SIO. Dzieje się to w handlerze CIO, a więc znajdujący się powyżej program w BASIC-u nie musi się tym wcale zajmować.

    Napisałem w Basicu przykładową, prostą grę sieciową, wykorzystująca komunikację UDP, pod nazwą "Tic-Tac-Toe" (Kółko i krzyżyk). Ze względu na nietypowe formatowanie w tym dokumencie, zamieszczam link do kodu. Kod został wydrukowany za pomocą drukarki HTML ATASCII, z prawidłowymi kodami i odstępami. Zauważ, że nawet tutaj mamy do czynienia z pakietami UDP, chociaż komendy I/O pozostają dokładnie takie same. Wysyłamy dane, a CIO handler po otrzymaniu EOL, wysyła pakiet do #FujiNet, który wysyła pakiet UDP do miejsca przeznaczenia. Odbiór odbywa się dokładnie w ten sam sposób, z instrukcją INPUT, szybkim parsowaniem danych, oczekiwaniem na odpowiedź ze STATUS-em, itp.

    konsekwencje użycia warstwy CIO - ponieważ jest to handler CIO, oznacza to, że możesz robić takie rzeczy jak:
    RUN "N:HTTP//35.239.67.240/BLACKJACK.BAS"
    aby załadować program BASIC z serwera HTTP w języku BASIC, lub:
    D1: NPREFIX http://35.239.67.240/
    D1: N:BURIEDBU

    aby załadować plik binarny z DOS-u. NPREFIX jest narzędziem, które wysyła polecenie SIO 0xFE do jednego z urządzeń (0x71-0x78), aby ustawić prefiks adresu URL, który jest domyślnie przypisany do urządzenia. Zostało to zrobione, aby obejść ograniczenia w różnych pakietach narzędzi DOS. Format jest dowolny i może zawierać pełną lub częściową ścieżkę. Poniższe video przedstawia aktualny stan handlera N: i pokazuje jak ustawić prefiks URL oraz jak załadować jak załadować dokument znajdujący się na serwerze HTTP do programu AtariWriter:



  • APETIME. #FuijNet implementuje protokół APETIME i pobiera bieżący czas z NTP.

  • do P4 (drukarka o numerze 4) podłączona jest implementacja syntezatora mowy SAM. To po prostu działa.

  • obsługa SIO2BT. Ponieważ #FujiNet posiada bluetooth, może funkcjonować jak transceiver z projektu SIO2BT.

    W planach:
  • C: handler do ładowania kaset, z lub bez cyfrowej ścieżki audio,
  • obsługa ATX do ładowania dysków zabezpieczonych przed kopiowaniem,
  • więcej protokołów sieciowych, jak: FTP, SSH, TNFS na poziomie plików, itp.
  • wsparcie dla gry "MIDI Maze", które Mozzwald testował używając UDP.

    2020-05-14 23:17 by Montezuma
    komentarzy: 9
  • Kaz @2020-05-14 23:19:21
    I poszło! :D
    Cyprian @2020-05-14 23:43:08
    zajebiste.
    chcę to!
    Atarka @2020-05-15 07:45:02
    Super! Będę śledził postępy.
    Montezuma @2020-05-15 16:39:53
    Pamiętacie WIFI Prime?
    http://atarionline.pl/forum/comments.php...
    Szkoda, że się nie udało tego sfinalizować (to był rok 2017).
    pin @2020-05-15 20:35:17
    .. Bo autor softu jest przeciw użytkownikowi i wszystkim jednocześnie?
    s. @2020-05-16 12:59:13
    tak to już jest z talibami pin
    dekanex @2020-05-18 21:21:25
    @Montezuma
    Szkoda. Jak zwykle brak czasu i real life :)
    Dobrze ze ktoś pociągnął ten temat i powstało to, co nam tak chodziło po głowie. Pozdrowienia dla autorów.
    Vasco/Trs @2020-05-19 15:16:03
    Montezuma: nie przypominaj, bo dokończy!
    Thomas Cherryhomes @2020-05-20 19:54:02
    This project IS getting finished, if for no other reason, than:

    * We chose the right tool for the job, ESP32,
    * and made a number of early decisions that have, and continue to pay off.
    * I am an obsessive compulsive bastard, and am trying to keep the energy of this project going at a consistent pace. We have accomplished so much, already, and many of the things we have set out to do, we've accomplished (we are having on average a 90% success rate, which for an R&D project is unheard of!)
    * We have given ourselves a year to get it over the 90% mark, and I think we'll just barely make it, if not slightly late, at this rate.
    * We could always use any and all help to make this thing a reality, that's why this project is compulsively public.

    -Thom
    nickname
    e-mail / website (opcjonalnie)
    Aktualne tematy
    Automatyczne ladowanie sterownika... (2)
    ostatni: 04-08-2020 20:37, mono
    My POKEY note table (28)
    ostatni: 04-08-2020 19:50, Synthpopalooza
    Nowa gra "Wonder Boy" (44)
    ostatni: 04-08-2020 18:47, Jacques
    Silly Venture 2k20 - uniting all ... (100)
    ostatni: 04-08-2020 18:38, CharlieChaplin
    Nowa gra od gorgha (497)
    ostatni: 04-08-2020 14:31, IRATA4
    Cartridge versions of Goonies and... (6)
    ostatni: 04-08-2020 06:55, pirx
    Warsztaty Action! - robimy action... (540)
    ostatni: 04-08-2020 04:58, tdc
    Użytki Bocianu (28)
    ostatni: 04-08-2020 00:11, bocianu
    Atarowe i nieatarowe newsy scenowe (406)
    ostatni: 03-08-2020 23:19, szeryf
    AVG Cart (3)
    ostatni: 03-08-2020 18:45, CharlieChaplin
    Ameprod TVG-10 (Elwro) - jaki tra... (15)
    ostatni: 02-08-2020 21:13, bruno_j
    Atari Meeting (KWAS #21) live (154)
    ostatni: 02-08-2020 13:21, dafix
    Niemiecka gra tekstowa "Mystix 2" (5)
    ostatni: 02-08-2020 01:19, Dracon
    SID i POKEY (408)
    ostatni: 01-08-2020 22:18, emkay
    Wydarzenia: Decrunch 2020 31 lipc... (4)
    ostatni: 01-08-2020 20:31, gorgh

    Kategorie Forum Atarum

    Użytkowników: 2178
    Ostatnio zarejestrowany: amarok
    Postów ostatniej doby: 27

    Spotkania i zloty / Meetings & Parties

    Najbliższe imprezy
    nasze spotkania online tutaj, zapraszamy do naszego kanału zoom:

    KWAS

    Kalendarz AOL


    Społeczność/Community


    Rozmawiali
    Lech Bąk i "Świat Młodych" i Kaz (26)
    Michał "Mike" Jaskuła i Kaz (6)
    F#READY i Dracon (22)
    Daniel „Arctus” Kowalski i Dracon (25)
    KATOD i TDC (13)
    Mariusz Wojcieszek i "Adam" (16)
    Romuald Bacza i Ramos (16)
    Śledzenie Amentesa i Larek (9)
    Leszek Łuciów i Charlie Cherry (17)
    TO JUŻ ZA TOBĄ: rozmowa z Bobem Pape i cpt. Misumaru Tenchi (39)
    Rob Jaeger i Emu (53)
    Jacek "Tabu" Grad i Dracon (0)
    Alexander "Koma" Schön i Kaz (0)
    Maciej Ślifirczyk i Charlie Cherry (0)
    Jarek "Odyniec1" Wyszyński i Kaz (0)
    Marek Bojarski i Kaz (0)
    Olgierd Niemyjski i Ramos (0)
    Wolfgang Burger i Grey (0)
    Mariusz "Ramos" Rozwadowski i Xeen (0)
    Wywiad z Wojciechem Zientarą i Xeen (0)
    «« nowszestarsze »»

    Stragan
    Atari USBJoy Adapter oferuje Jakub Husak (0)
    Programy: Kolony 2106 oferuje Kaz (6)
    Sprzęt: rozszerzenia oferuje Lotharek (19)
    Gadżety: naklejki, pocztówki oferuje Sikor (11)
    Sprzęt: cartridge RAM-CART oferuje Zenon (7)
    Miejsce na drobne ogłoszenia kupna/sprzedaży oferuje Kaz (51)
    Sprzęt: interfejs SIO2IDE oferuje Piguła (0)
    Sprzęt: interfejs SIO2SD oferuje Piguła (23)

    Użytki/Utils
    Sprzęt/Hardware

    Wynalazki
    Atari i Bluetooth napisał Kaz (33)
    SIO2PC-USB napisał Larek (45)
    Nowe SIO2SD napisał Larek (0)
    SIO2SD w CA12 napisał Urborg (12)
    Ratowanie ATMEL-ów napisał Yoohaas (12)
    Projektowanie cartów napisał Zenon (12)
    Joystick do Atari napisał Larek (54)
    Tygrys Turbo napisał Kaz (9)
    Testowałem "Simple Stereo" napisał Zaxon (3)
    Rozszerzenie 1MB napisał Asal (20)
    Joystick trzyprzyciskowy napisał Sikor (18)
    Moje MyIDE oraz SIO2PC na USB napisał Zaxon (16)
    Jak wykonać płytkę drukowaną? napisał Zaxon (26)
    Rozszerzenie 576kB napisał Asal (36)
    Soczyste kolory napisał scalak (29)
    XEGS Box napisał Zaxon (13)
    Atari w różnych rolach napisał Różyk (8)
    SIO2IDE w pudełku napisał Kaz (5)
    Atari steruje tokarką napisał Kaz (15)
    DarkMouse napisał Kaz (7)
    «« nowszestarsze »»