Hello all.

I am in the middle of writing the FujiNet User's Guide.

Part 2 of the user's guide is a Programming Guide, showing how to use the FujiNet in multiple programming languages, doing the same examples in each language, as a sort of Rosetta Stone.

I know more than a few of you spend lots of time in MAD Pascal, could you take the examples I have written in the other languages, and write Pascal examples?

The repository for the manual is here:
https://github.com/FujiNetWIFI/fujinet- … tari_users

And the manual is being written in Docbook XML (version 5.1).

-Thom

Yes, with #FujiNet on your #Atari8bit. Using the N: device, you can include code and libraries directly from GitHub, directly in your programs. Shown here is a compile and run example MASTODON client that's part of the upcoming user's manual, but fetching NIO from N: #retrocomputing https://youtu.be/_W49Uxf-UDk

For #Atari8bit #FujiNet users, NOS 0.6.0 has been released. But, what is NOS? Why would you use it? I attempt to give a few small demonstrations of how to load and use it to transparently access information across multiple network protocols. #retrocomputing

https://youtu.be/52PopzZsKUM

Wow that was quick! Centipede for #Atari8bit is now #FujiNet #HighScoreEnabled! You can play it here at apps.irata.online/Atari 8-bit/Games/High Score Enabled/Centipede.atr, and scoreboard is at http://scores.irata.online/centipede.html special thx to @Djaybee. #retrogaming #retrocomputing

-Thom

#Atari8bit #FujiNet Users: #HighScoreEnabled #DonkeyKong is now available via the apps.irata.online TNFS server as /Atari_8-bit/Games/High Score Enabled/Donkey Kong.atr . Hiscores can as always, be seen here: http://scores.irata.online/ #retrogaming #retrocomputing

Hej ludzie,

Dostosowałem PAC-MAN do FujiNet High Score Enabled, dodając tabelę wysokich wyników i dodając flagę włączającą wysokie wyniki do generowanego ATR. Działa to dobrze. Obecnie tabela wysokich wyników jest wywoływana w procedurze zakończenia gry wideo (połączyłem ją przed wywołaniem BLNKON i wywołałem tę procedurę w moim kodzie wysokich wyników).

Szukam jednak miejsca, w którym mógłbym wywołać kod wysokiego wyniku po zakończeniu sekwencji Attract. Okazuje się to nieco trudne i zastanawiam się, czy może świeże spojrzenie mogłoby potencjalnie pomóc w znalezieniu miejsca, w którym mógłbym dodać pojedynczy JSR?

Kod dla PAC-MAN z włączoną funkcją wysokich wyników znajduje się tutaj:
https://github.com/FujiNetWIFI/fujinet- … ts/pac-man

Obecnie wywołuję hiscr: tutaj:
https://github.com/FujiNetWIFI/fujinet- … .ASM#L1028

A HISCR jest oczywiście tutaj:
https://github.com/FujiNetWIFI/fujinet- … ISCORE.ASM

Ktoś ma jakieś pomysły?

-Tom

Opublikowałem przykładowy serwer #FujiNet dla gier dla dwóch graczy na #GitHub. Jest on napisany w języku C i jest przeznaczony do obsługi dokładnie dwóch graczy i został zaprojektowany jako przykład. https://github.com/FujiNetWIFI/servers/ … wo-players #retrocomputing #retrogaming.

-Thom

I am sorry you disagree with my position. I chose the method that would work for both FujiNet, and have no impact on non-FujiNet users, creating no dependencies.

The UNIX philosophy is meant for tools, and is in my opinion not relevant for this particular application, as ATR is a container format, with bytes in the header which were previously reserved for some future use.

-Thom

Ten post jest przypomnieniem, że dodaliśmy możliwość oznaczania sektorów w obrazach dysków jako zapisywalnych, nawet jeśli obraz dysku byłby zamontowany tylko do odczytu. Ma to na celu ułatwienie przechowywania wysokich wyników na obrazie dysku, który może być przeglądany przez innych, zarówno w grze, jak i za pośrednictwem scraperów, które renderują strony HTML do publicznego przeglądania. Dodatkową zaletą jest to, że dodanie takiej funkcjonalności NIE jest zależne od posiadania FujiNet, ponieważ można go używać lokalnie, a także fakt, że można lokalnie wdrożyć skrobaki do wysokich wyników, aby obsługiwać imprezy itp. To wygrana dla wszystkich!

Jest to możliwe dzięki dwóm elementom:

(1) modyfikację nagłówka ATR w celu oznaczenia zakresu sektorów jako legalnie zapisywalnych, więcej informacji tutaj:
https://github.com/FujiNetWIFI/fujinet- … gacy-Games

(2a) zmodyfikowanie gry tak, aby zapisywała tabelę najlepszych wyników, która znajduje się w grze:
https://github.com/FujiNetWIFI/fujinet- … /write.asm lub
(2b) dodanie tabeli najlepszych wyników do gry:
https://github.com/FujiNetWIFI/fujinet- … ISCORE.ASM

Mam nadzieję, że przedstawione tutaj przykłady wystarczą, aby z czasem zainteresować ludzi dodaniem obsługi wysokich wyników do wszystkich naszych ulubionych gier. Do dzieła!

-Thom

I am looking through various games in the Homesoft collection to see if some could have a high score table and save routine added to them.

@miker - Do you keep any notes for games that are adapted?

Looking at various ones in binary editors like Omnivore, it becomes somewhat confusing as to having many different segments. e.g. in Congo Bongo (see attached)

Why so many segments?

-Thom

Hello all,

I am writing here because I am asking for some help improving the N: handler.

Specifically, there are a couple of things missing from it:

* Burst mode transfers
* Binary Loader for MyDOS and SpartaDOS

The first, is important because currently the N: device only transfers data to the FujiNet at 127 bytes a time (relying on minus flag).

The N: device passes data directly to the FujiNet over SIO, and can accept transfers up to 65535 bytes in length, at a time. This should be carried over into the N: handler to make things as fast as possible.

The second, is that the N: handler doesn't implement CIO calls 39 and 40, which are used by SpartaDOS and MyDOS to load binary files, and it prevents these operating systems from loading programs directly over the N: device.

I know there are some in the ranks of ABBUC who could really help here, and it would make the N: device all that more usable if somebody could take a look at it and improve it, I literally put together just enough to work under most operating systems and language environments. There is great potential in the N: device, and I want to see everyone use it to bring the Atari into the 21st century.

---

A bit about the N: handler:

It is a CIO device that adds support for the FujiNet network device. It allows any program that can use CIO devices, to read and write data to and from the network via a set of protocol adapters which create a clean and simple I/O channel between the Atari and the network beyond.

Some of the network adapters:

* TCP
* UDP
* TELNET
* FTP
* HTTP/HTTPS
* SSH
* SMB (windows file share)
* TNFS (the standard FujiNet file server protocol)

The N: device maps to SIO devices $71 through $74 as N1: to N4: with N: being N1:

And the commands that are implemented, are specified here:
https://github.com/FujiNetWIFI/fujinet- … 1-to-%2478

The source code to the N: handler is here, it's written in mads assembler:
https://github.com/FujiNetWIFI/fujinet- … er/handler

This handler is also placed on every single DOS disk that is in the DOS folder on apps.irata.online in Atari_8-bit.

Again, if anyone can help, it would greatly improve the usability of this handler. I can also help anyone understand what is possible with this handler.

-Thom

12

(0 odpowiedzi, napisanych Software, Gry - 8bit)

Użytkownicy #Atari8bit! Dołącz do nas 4 lipca, aby przetestować lobby gier #FujiNet #retrocomputing #retrogaming

Details in image.

To the guys who did the #Atari8bit International Karate RCX conversion:

Can we patch it to save high scores to disk? If so, we can make it #FujiNet High-Score enabled! :)

-Thom

14

(1 odpowiedzi, napisanych Scena - 8bit)

The #FujiNet talk I gave at #VCFSW 2023 is now up on YT! It is much the same talk I gave at East, talking about the past, present, and future of the FujiNet project from a non-technical perspective. The second half is Q&A. #retrocomputing #retrogaming

VCF Southwest was held in Richardson, TX (USA), from June 23rd to the 25th.

https://www.youtube.com/watch?v=qiMA3KMh_dY

15

(1 odpowiedzi, napisanych Software, Gry - 8bit)

#Atari8bit #FujiNet users can test the new Game Lobby by:
(1) putting ec.tnfs.io into a host slot, and selecting it.
(2) selecting and booting lobby.xex from the /atari/ directory.
Once in, you can select a 5 card stud game to join. :) #retrocomputing #RETROGAMING

Eric Carr checked in enough of the #FujiNet Game Lobby that we can start kicking its tires. Shown here on #Atari8bit playing 5 Card Stud with the ability to host a mixture of bot and human players. We want help to bring this to all #FujiNet Platforms!

[youtube]https://www.youtube.com/watch?v=qMYf1W9NmT0[/youtube]

Eric Carr continues working on the #FujiNet game lobby, shown here on the #Atari8bit selecting a game of 5 Card Stud poker, and starting game-play. It's looking fantastic! #retrocomputing #retrogaming

See attachment for video.

-Thom

18

(11 odpowiedzi, napisanych Fabryka - 8bit)

To those working on SpartaDOS X Upgrade Project, ( @drac030 et al )

There are now more than 5,000 FujiNet devices out there. 

These devices work with the majority of available Atari DOSes. 

While SpartaDOS X can use the virtual disks (D:) and printers (P:) exposed, the CLI can't talk to "N:" via the NDEV.COM handler, which is the Network device, because it conflicts with one of the disk drive mappings.

While SDX can use the N* command line tools to do things like copy files (these tools talk to SIOV directly), this is less than ideal.

So one of two things should happen:

(1) patch SDX so that N: is passed through as a CIO device, when NDEV.COM is loaded.
(2) write a kernel driver to expose N: functions to SDX.

For the latter, the source code to the N: handler is here:
https://github.com/FujiNetWIFI/fujinet-nhandler

I've asked this before, but dozens of people have now asked me over the last four years for how to handle this.

-Thom

I have written a HOWTO on installing a FujiNet High Score Party server, consisting of a TNFS server, the fujinet-high-scores microservices, and a web server to show high scores.

https://github.com/FujiNetWIFI/fujinet- … rty-Server

Even though the instructions are for an Ubuntu 22.04 server, I have tried to make it very straightforward to install, and it should work on any POSIX (Linux, Mac OS X, etc.) system.

Any additions are welcome.

A growing number of games are now becoming High Score Enabled, for FujiNet users.

This is where disks that are normally mounted read-only, have a specially marked range of sectors in the ATR header that are marked as "ok for read-write." When FujiNet encounters one of these sectors, and a write is requested, the FujiNet will temporarily open the disk image for writing, write the new sector, and then quickly re-open the disk image read-only.

Over the last three weeks, we had been finding games in ATR format, with high score tables that were being saved to disk, and changing their headers to mark sectors occupied by their high score tables. Simultaneously, I have been writing small micro-services in C that listen to a game's ATR image, and when modified, scrapes the high score table, and generates a web page, so that others can see the high scores.

I am currently placing High Score Enabled games in the /Atari 8-Bit/Games/High Score Enabled folder on apps.irata.online TNFS, and am placing these files with sufficient permissions so they can be opened read-write when they need to be.

And the scores can be seen here: http://scores.irata.online/

There are a large number of games there, already. (See first pic)

Now, I am starting to add high scores to games that previously didn't have them. An example of this is PAC-MAN. Thanks to AtariWiki V3, I was able to download the source code, and patch the game to add high scores (and fix Inky's color) (see more pictures)

The patched pac-man can be downloaded as part of the fujinet-high-scores repo:
https://github.com/FujiNetWIFI/fujinet-high-scores

(if you do build your own, be sure to run high-score enable on it to mark the last two sectors for high score.)

and both the resulting high-score-enabled ATR and the web scraper can be deployed anywhere, even locally at parties. :)

I made this long post to prove a point, that adding high score capabilities to games that we all can share in, is an attainable goal, and we all could really make a lot of fun for all of us. Let's try! :)

-Thom

A video showing the High Score Enabled feature now available for the #atari8bit #fujinet.

By using a few previously unused bytes in the header of ATR files, a range of sectors can be specified to be read-write, even if the disk image is mounted read only. With this feature, games on public TNFS servers can have high score tables on their disk images marked read-write, and scores will be written back to the server, transparently, without needing to change the game.

In addition, web pages can be set up to post high score table changes, as demonstrated in the video.

You can see the scores for these games here, and they refresh every 30 seconds: http://scores.irata.online/

Youtube video: https://www.youtube.com/watch?v=eOVfPQiFx7c

The current crop of high-score enabled games on apps.irata.online

@16kram and I played a few rounds of Jumpman. Seems to work. :)

The code to implement legacy saving of high scores in games, has been pushed to master.



Anyone who has done a software bring-up and can pull from master, can test:

(1) pull master, and build.
(2) go to apps.irata.online
(3) go to /Atari 8-bit/Games/High Score Enabled/ and select Jumpman.atr as READ ONLY.
(4) play a somewhat decent game of jumpman (at least 3000 points)
(5) plop score in hi-score table.
(6) See if score sticks.

Also, the documentation has been posted on how this is implemented:
https://github.com/FujiNetWIFI/fujinet- … gacy-Games

-Thom

Had a thought, bytes 11-14 on the ATR file format are not used.

use bytes 11 and 12 to specify a single sector which can be marked as read-write, despite the mounted mode of the disk image. 

The purpose is to mark a sector that can store high scores on public TNFS servers.

If sector is accessed, cache is always flushed, and WRITEs to this sector cause a temporary re-open as read-write using a secondary file descriptor, which is then immediately closed.

Games that could utilize this, for example:

* Jumpman
* Track Attack
* Serpentine
* BC's Quest for Tires

thoughts?