[Atari] AtariOnLine: Rewelacyjny interfejs #FujiNet (cz.2)

[29] # AtariOnLine | Czwartek, 14 Maja 2020 23:17CET

[Atari] AtariOnLine: 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 Cherryhome:



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: 2
  • → NOWSZY [Atari] AtariOnLine: KWAS i kolejne spotkania
    → NOWSZY [Atari] AtariOnLine: Za chwilę "Bard's Tale"!
    → NOWSZY [Atari] AtariOnLine: Ostatni "KWAS" pandemiczny
    → NOWSZY [Atari] AtariOnLine: Niedziela growa
    → NOWSZY [Atari] AtariOnLine: Nieprzeciętny "przeciętny" cartridge
    → NOWSZY [Atari] AtariOnLine: Dzisiaj KWAS #21H
    → [Atari] AtariOnLine: Kaseta Turbo 2600 odczytana!
    → [Atari] AtariOnLine: Wyniki PSA 2020
    → [Atari] AtariOnLine: Rewelacyjny interfejs #FujiNet (cz.1)

    Tagi: Atari, Atarionline.pl, Atari Xe, Atari Xl, Retroserwisy, Ataionline, Fusik

    wstecz14/05/2020 23:17
    Inne treści związane z tematem
    [Atari.Area] Turgen System 8.6.15 [Atari.Area] Turgen System 8.6.15
    Ukazała się nowa wersja oprogramowania służącego do konwersji i zarządzania plikami przeznaczonymi dla magnetofonów. W nowej wersji: przeprojektowano interfejs użytkownika w opcji dotyczącej sygnału pilotującego, ekrany z informacją o plikach oraz ekstraktor plików z obrazów prezentują więcej szczegółów o częściach PWM, przywrócono ekran ładowania aplikacji. Pobieramy ...
    [Atari.Area] I po Grawitacji i JagNESfest... :( [Atari.Area] I po Grawitacji i JagNESfest... :(
    Jak się można dowiedzieć ze stron Grawitacji oraz JagNES wirus COVID-19 ponownie powoduje odwołanie imprez. Na stronie Grawitacji nawet możemy zobaczyć fajny obrazek, który zresztą jest do ściągnięcia w wersji wykonywalnej. Istnieje jeszcze nikła szansa na odbycie się pierwszej imprezy - nieoficjalnie wiadomo o poszukiwaniu zastępczego lokalu, terminu lub opcji online - ale wszystko ...
    [Atari.Area] ELSA 0.9 - asembler dla 65C816 [Atari.Area] ELSA 0.9 - asembler dla 65C816
    Ukazała się pierwsza publiczna wersja nowego asemblera dla Atari XL/XE z procesorem 65C816. Autorem programu jest KMK. Za pomocą ELSY powstała większość programów tego autora, m.in. BIOS do interfejsu IDE Plus, U-BASIC, OS i BIOS dla Rapidusa oraz emulatory Let's Emu! i CP/Emu. Program wymaga 65C816, więc skorzystać z niego mogą użytkownicy kart Rapidus i Antonia. Instrukcja oraz ...
    [Atari.Area] ARTur [Atari.Area] ARTur
    Dostępny jest nowy edytor do tworzenia ATASCII artów, przeznaczony dla Atari XL/XE. Jak informuje autor, program jest jeszcze w budowie, ale większość zaplanowanych funkcji już działa. Najważniejsze z nich: obsługa zestawów znaków użytkownika, zmiana kolorów edytora, historia pędzla, operacje na obszarach ekranu, zapisywanie fragmentów obrazu, 3 tryby pracy: Type, Draw i ...
    [Atari.Area] MILF [Atari.Area] MILF
    Kolejny nowy program użytkowy, który pojawił się w ciągu ostatnich kilku dni to aplikacja służąca do konfiguracji stacji dysków, a także wybiórczego kopiowania zawartości dyskietek. Najważniejsze funkcje: możliwość skonfigurowania stacji dysków komendami PERCOM, kopiowanie dowolnej ilości sektorów podając sektor startowy i końcowy zapisywanie logu operacji i możliwość ...
    Komentarze

    T-shirt "Kung Fu Master 1986 May"

    Retro T-Shirt Kung Fu Master 1986 May - męski podkoszulek
    Newsy Linkownia Emulatory na PC Wideoteka Screenshoty Bajtek Reduks Ready.Run

    © Try2emu 1999 - 2020 | Krzysztof 'Faust' Karkosza Google+Kontakt