->link<- (środki tutaj są wykorzystywane na pokrycie kosztów operacyjnych, takich jak koszty wysyłki tam i z powrotem).
Co to jest #FujiNet?
#FujiNet (dawniej znany pod #AtariWiFi) to karta sieciowa, która podłącza się do portu SIO (Peripheral) 8-bitowego systemu Atari. Obecnie (od Rev3) składa się z urządzenia NodeMCU 1.0 podłączonego do płytki interfejsu, które elektrycznie dołącza NodeMCU do magistrali SIO i zapewnia potrzebne złącza SIO.
Co on zapewnia?
#FujiNet ma zapewnić następującą funkcjonalność:
* "D:" Emulacja, do wirtualnego montażu, odczytu i zapisu obrazów dysków ATR na protokole zapożyczonym od społeczności Spectranet o nazwie TNFS. * "R:" Emulacja, aby zapewnić wirtualny modem Wi-Fi do użytku z istniejącymi programami komunikacyjnymi takimi jak Ice-T, BobTerm, AMODEM i PLATOTERM. * "P:" Emulacja, emulująca typowe typy drukarek, generująca dane wyjściowe PDF w locie do nowoczesnych drukarek. * "N:" Nowe urządzenie do nawiązywania komunikacji TCP i UDP z innymi hostami, a także do sterowania adapterem (ustawianie konfiguracji, montowanie obrazów, itp.). * Większa funkcjonalność, która będzie dostępna dzięki przyszłym aktualizacjom oprogramowania sprzętowego w trybie over-the-air (OTA), takim jak drukowanie IPP.
Kto może z niej korzystać?
Miejmy nadzieję, że wszyscy! Emulacja "D:" umożliwia natychmiastowe użycie nieużywanej obudowy do montażu dysków w sieci, niezależnie od tego, jaka to sieć, np. lokalna, czy host internetowy. Kontroler "R:" pozwoli każdemu, kto chce zadzwonić na internetowe BBSy i usługi takie jak IRATA.ONLINE, natychmiast korzystać z urządzenia, a urządzenie "N:" pozwoli na napisanie zupełnie nowych programów, które mogą natywnie obsługiwać ruch sieciowy!
Kiedy będzie ono dostępne?
#FujiNet (od marca 2020) rozwija się szybko. Przeszliśmy od napisania wstępnych przypadków testowych w Arduino, do napisania finalnego firmware'u produkcyjnego w PLATFORM.IO, łącząc wszystkie poszczególne testy razem pod jednym firmware'em. Szacujemy, że mniej więcej reszta tego roku zostanie przeznaczona na debugowanie i udoskonalanie opisanego powyżej zestawu funkcji.
Ile to będzie kosztować?
Zbyt wcześnie, aby powiedzieć, ale biorąc pod uwagę, że jest on oparty na sprzęcie NodeMCU, a także biorąc pod uwagę, że płyta interfejsu jest w całości wypełniona pasywnymi komponentami, my (ci z nas, którzy pracują po stronie sprzętowej) oczekujemy, że koszt będzie tani, porównywalny do SDrive-MAX.
A Tonne. Dosłownie zrobić Youtube wyszukiwania #FujiNet: ->link<- Ostatni pokaz kodu łączonego:
Jak są udostępniane obrazy z dysku dla "D:" Emulacja?
Obrazy dyskowe są współdzielone za pomocą protokołu współdzielenia plików zwanego TNFS. Został on opracowany przez Dylana Smitha, człowieka, który opracował interfejs Spectranet dla ZX Spectrum. Zrozumiano, że protokoły takie jak NFS i SMB są o wiele za ciężkie do zaimplementowania na 8-bitowych mikrokomputerach, protokoły takie jak FTP i HTTP mają o wiele za dużo na głowie, a protokoły takie jak TFTP i BOOTP są zbyt proste. Tak więc opracowano ładne medium, które mapuje podstawowy system plików w prosty, łatwy do zaimplementowania protokół, który może być używany przez UDP lub TCP, który używa jednego połączenia.
Gdzie mogę dostać kopię tnfsd?
Serwer TNFSD można pobrać tutaj: ->link<- , jest on dostępny dla systemów Windows, Mac i Linux. Dostępny jest również kod źródłowy.
Czy informacja o protokole TNFS jest dostępna?
Absolutnie, jest on używany do implementacji firmware'u Arduino: ->link<-
Jakie informacje specyficzne dla Atari są wykorzystywane do wdrażania oprogramowania sprzętowego?
@phaeron's excellent Altirra Hardware Reference Manual is being used for the SIO side of things: ->link<- Hardware Reference Manual.pdf
Kto nad tym pracuje?
* @tschak909 pracujący nad Firmware * @mozzwald pracujący nad Hardware i Firmware, pierwszy przeszedł obudowę. * @jeffpiep pracujący nad Hardware i Firmware * @Mr Robot pracujący nad sprzętem i obudową * @Bill Lange Helping test. * @48kRAM help test. === @48kRAM help test. * @a8isa1 helping test with his own board/interface * @ivop help test with his own board/interface * Joe Decuir będzie miał wkrótce tablicę do testów.
Jak sprzęt jest wdrażany?
Sprzęt przeszedł kilka rewizji. Obecna wersja wykorzystuje mikrokontroler ESP32-WROOM, zamontowany na płytce, który zapewnia również pasywne układy SIO, gniazdo kart SD oraz układ USB, który może być użyty do zasilania urządzenia lub do programowania nowego firmware. #FujiNet może być zasilany albo z magistrali SIO, albo przez USB.
Czy ten projekt jest publiczny?
Tak. Całkowicie tak. Sprzęt, oprogramowanie, firmware itp. są opracowywane w sposób jawny, i podczas gdy my sami będziemy sprzedawać urządzenia, zachęcamy każdego do wzięcia schematów i zbudowania własnego sprzętu, dla siebie lub dla innych, jeśli jest taka chęć.
Bardzo przydatny byłby klient FTP, lub FTP montowany pod urządzenie Dx:. Daje to możliwość dość prostego przenoszenia plików z sieci internet wprost na HDD (IdePlus, KMK j.z., SIDE itd.). Czy rozwój oprogramowania w tą stronę jest przewidywany?
Urządzenie N: będzie ostatecznie służyło temu celowi. Filozofią jest odciążenie ESP w jak największym stopniu i zapewnienie prostego, znakowego interfejsu we/wy do Atari, który SIO i CIO mogą wykorzystać. Ostatecznie oznacza to, że nawet SSH i HTTPS mogą być obsługiwane. Pomyślcie o tym! :)
Prędkość danych jest całkowicie związana z samym SIO, np. szybkie procedury SIO Mathy'ego współpracują z #FujiNet, aby uzyskać dostęp do zamontowanych Dx: napędów z TNFS z prędkością do 127Kbps.
Urządzenie N: może pracować również z tą prędkością, jest to raczej funkcja łącząca szybkie procedury SIO z urządzeniami N: (0x70 do 0x78).
Obsługa FTP może być dodana do urządzenia N:, ale znów, jak już wspomniałem, są o wiele lepsze opcje. (Pokazałem nawet N: używając HTTP).
Thomas, do you have any "quick start guide" similar to SDrive-MAX one at ->link<- that could help beginner to build hardware and try software? What is the difference between NodeMCU and NodeMCU32? Which is better supported in the project? Which module to buy? What we need and how to program it? Is there any simple SIO interface that can be build on a protoboard. Do we need a SD card and for what? What we need to use #Fujinet hardware? Do we need a server at home or we can connect to "something" over the Internet? The thread on AtariAge is pretty lengthy and technical and might be difficult to catch up.
Tak. W tej chwili generowany jest plik PDF, który może być wydrukowany na dowolnej nowoczesnej drukarce. Od tego momentu będziemy rozszerzać funkcjonalność.
* @jeffpiep jest ciężko pracować wdrażając emulację ploterową Atari 1020. Emulacja ta jest wyjątkowa w tym sensie, że wyjście nie jest plikiem PDF, ale SVG.
* Wyskakuje jeszcze kilka testerów płyt ESP32 i pojawiają się raporty o błędach.
* Implementacja systemu plików TNFS przypadkowo odsyła sukcesy, gdy wszystkie próby zostały wyczerpane. Pochodzi to z niespójnego błędnego dopasowania wartości zwrotnych, które nastąpiło podczas przenoszenia kodu do standardowego API Arduino FS. Whoops.
* Dodatkowo, czas retry'u TNFS musi być dalej dostrajany, ponieważ obecnie jest więcej prób retry'u niż czasu w SIO timeout przydzielonego przez system operacyjny dla większości operacji dyskowych (5 prób, 5000ms, 25 sekund, w porównaniu do 15 sekund dla systemu operacyjnego), Musimy zmniejszyć czas pomiędzy timeoutami, i zrobić więcej prób. W tym celu przesunąłem wartości timeoutów na #definiowanie stałych w lib/sio/sio.h
* N: handler jest debugowany, dużo pracy trzeba tam wykonać. OPEN działa teraz, po całkowitym przepisaniu tokenizera specyfikacji urządzenia. Inne operacje obecnie zawodzą z powodu rozbijania stosu. Muszę ponownie przemyśleć sposób przekazywania buforów pomiędzy funkcjami protokołu. Jeśli ktoś jest zainteresowany, proszę sprawdzić kod i zanurzyć się w sio/sieci* Napisałem teorię operacji na wiki, jeśli ktoś jest zainteresowany.
To jest gówno projektu, zrobiliśmy wielki szum w demach "ain't it cool?!", a teraz zakasujemy rękawy i pracujemy nad połączeniem długu technicznego i testowania funkcjonalności. Nie wspominając już o testach jednostkowych :)
#Atari8bit #FujiNet jedną z nowo dodanych funkcji do #platformio wersji oprogramowania firmware jest "Disk Rotate", który obraca obrazy dysków do następnego sąsiedniego gniazda napędu w prawo.
This is the muck of the project... Trochę może za dosłownie przetłumaczyło, chodzi raczej o to, że to jest najtrudniejsza/najbardziej uciążliwa część projektu. Reszta zdania jest przetłumaczona zadziwiająco dobrze.
Ćwiczę, każdego dnia korzystając z programu #Atari Personal Fitness. Wcześniej zachowywałem swoją kopię zarówno programu jak i dysk danych, którego używałem codziennie na dwóch oddzielnych dyskietkach, ponieważ Personal Fitness obsługiwał tylko jeden dysk.
Dzięki #FujiNet mogę umieścić program i dyski danych w pierwszych dwóch slotach na dyskach i obracać je w razie potrzeby, aby uruchomić program w całości z mojego lokalnego serwera plików lub z lokalnego magazynu plików #FujiNet.
Wierzę, że odczytywany cache może być bardziej inteligentnie wdrażany jako bufor pierścieniowy, który może być konsekwentnie dołączany w miarę wypychania sektorów. Szczegóły w bilecie, w tym link do kodu źródłowego aktualnej implementacji.
#FujiNet używa TNFS, który głównie komunikuje się poprzez UDP. Oznacza to, że oprogramowanie firmware musi być w stanie obsługiwać sieci w mniej niż idealnych warunkach, które mogą powodować timeouty, porzucone pakiety, a nawet duplikaty pakietów.
Ostatni tydzień spędziłem na refaktoringu kodu TNFS, aby go uprościć i zapewnić jedną ścieżkę kodu do wysyłania pakietów, odbierania odpowiedzi i obsługi timeoutów. Pozwoliło mi to lepiej zobaczyć co się dzieje i zmienić logikę retry w ciągu ostatniego półtora dnia, aby uczynić ją bardziej solidną, używając sieci testowej hojnie dostarczonej przez użytkownika, który zbudował swój własny #FujiNet!
Thanks Tom for keeping us updated. Great thing! Especially changing floppy images impressed me.
Thank you also for the effort you put into doing it in Polish. I suggest, however, to write in English because the translation algorithms are still not perfect and some statements are misleading ("what did the author mean?"). Almost everyone understands English or basic English here. Moreover, it would be difficult to quote such a misleading text to ask you to specify what you meant. Because the text is in Polish and you do not know where this lack of precision is... :)
For anyone who wants to contribute, another easy enhancement is needed to improve TNFS network performance when the cache is off (e.g. during development):
#FujiNet Currently for development, disk image selection is very simplistic. No subdirectories, and a max of 16 entries returned. What should we do going forward? How should it look to the user? Who can help make a better implementation?
@jeffpiep has been hard at work implementing the unique sideways printing mode present on the Atari 820. Due to the unique orientation, it's implemented as a custom sideways font. Shown here is actual printed output vs the emulated PDF.
#FujiNet - Shown here is a picture of my local TNFS server that I use for my own file storage. While there are internet-accessible public TNFS file servers, this one is for my own files.
It is a Raspberry Pi 3, inside a FLiRC case, with 64GB of flash, running Raspbian Lite, and the tnfsd software as a systemd service. I am powering it off one of the USB connectors on my power strip.
do programistów swędzących o projekt lub sposób na pomoc: Naprawdę przydałaby mi się pomoc przy próbie zaimplementowania wsparcia dla ATX-a, ponieważ jestem zajęty próbą podparcia innych części kodu.
Ostatni tydzień spędziłem pracując nad kodem TNFS:
* Usuń kod recachingowy, bo to był buggy, w przygotowaniu do refactora. * Poprawić logikę refactora, żeby zduplikowane pakiety nie powodowały problemów, są ignorowane. * Refaktor poprawnie obsługuje timeouty i zawiedzie tylko wtedy, gdy wszystkie próby ponownej analizy zakończą się niepowodzeniem. * Zaimplementować komendę SIO dla polecenia Napisz z weryfikacją (już nie tylko alias dla P). * Implementuj optymalizację wyszukiwania, poszukuj tylko wtedy, gdy jest to konieczne, zmniejszając w ten sposób znacznie liczbę pakietów uruchomień UDP w trybie round trip dla odczytów liniowych.
Rick Lopez pracował nad kodem R:, rozbierając go na części, aby go zrozumieć, i wprowadzając ulepszenia. Jego obecny zestaw eksperymentów wykorzystuje Altirra R: handler i osadza go w firmware #FujiNet, który jest przekazywany przez sondę typu 1. (Mamy pozwolenie od @phaeron) Usprawnienia w zakresie buforowania są również starane zrekompensować charakterystycznie małe bufory RX określone przez Atari w trybie równoległym przez większość programów MODEM, starając się uzyskać większość programów modemowych, aby móc pracować z większą prędkością. Pomysł, który tutaj zaproponowałem, to modyfikacja R: handler, aby wyemitować dodatkową komendę przed komendą STREAM, która zwraca rozmiar żądanej długości bufora IOCB. Może to być użyte jako dodatkowy bufor, wypełniany tylko po opróżnieniu, aby zdławić połączenie nawet przy większych szybkościach transmisji, gdy bufor jest o wiele za mały, aby obsłużyć większe szybkości transmisji.
#FujiNet @jeffpiep is checking in the last of the #Atari 822 printing emulation, which provides graphics support! The secret? Using SIO command 'P' instead of the usual 'W', which causes the printer to accept 1 bit per pixel monochrome bitmap data in the same format as a GRAPHICS 8 screen. This was previously undocumented.
---
#FujiNet @jeffpiep sprawdza w ostatniej emulacji druku #Atari 822, która zapewnia wsparcie graficzne! Tajemnica? Użycie polecenia SIO 'P' zamiast zwykłego 'W', które powoduje, że drukarka akceptuje 1 bit na piksel monochromatycznych danych bitmapy w tym samym formacie co ekran GRAPHICS 8. To było wcześniej nieudokumentowane.
#FujiNet #Atari8bit Showing how the TCP listen/unlisten functionality was added to the #FujiNet firmware, so that BBS software works, and tools to use it.
If you can help others build theirs, please do. Let's get this thing out there. :)
-Thom
MEANWHILE:
#Atari8Bit #FujiNet The N: device comes in two parts, a CIO handler on the #Atari, and the SIO code running on the #FujiNet. Made a video showing how am debugging the SIO code using test programs running on the Atari.
---
#Atari8Bit #FujiNet N: urządzenie składa się z dwóch części, CIO Handler na #Atari i kodu SIO działającego na #FujiNet. Stworzył film video pokazujący jak debugować kod SIO za pomocą programów testowych uruchomionych na Atari.
@Jeffpiep has been hard at work improving the printing emulation, which now embeds the fonts into the PDF, so it can be printed or read as intended on any device or printer. Jeff designed a new font for the 822 emulation based on printed specimens provided by Bill Lange from his 822 printer. :)
You can grab specimens here, from the 822 emulation: ->link<- (test 74) ->link<- (test 76)
I have spent a considerable amount of time building the plumbing required to handle different TCP/IP protocols using very abstracted interfaces that the Atari can efficiently handle. Here you see the same test programs being used to send via both the TCP and UDP protocols.
#FujiNet #Atari8bit @Jeffpiep took a break from implementing printer support to fold in Sebastian Macke's C port of S.A.M. speech synth into #FujiNet, integrating it as a P: device, which makes it available at any time. And without screen blanking!