FujiNet NOS – A Network Only DOS.

In addition to simulating existing Atari disk drives, FujiNet opens up a new possibility for Atari 8-bit users: The ability to use files stored on networked file systems directly, without needing to use a disk image file as an intermediary. The NOS is a self booting ATR which can be mounted into device slot 1 and booted in place of a typical DOS. While at version 0.7.1, it is not yet complete, it is already quite usable, thanks to the consistent efforts of Michael Sternberg, who has done a fantastic job, so far.

Booting NOS

A copy of NOS 0.7.1 can be found in the /Atari-8-bit/DOS/ folder of the apps.irata.online TNFS server, and mounted into device slot 1:

Once booted, you will be transferred to a cartridge, if present. The usual DOS statement in BASIC will transfer you to NOS, just like with DOS, if you do not have a cartridge installed, NOS will take control immediately, putting us on device N1 (of which there are 8 such N: devices that you can use independently):

Getting Help

Yes. NOS is a command line DOS, in the same spirit as DOS XL, XDOS, and SpartaDOS. Thankfully, there is a comprehensive HELP system that reads its data from GitHub, just type HELP:

Each of these subsections give not only references for the built-in commands, but are also comprehensive references for software developers:

This will allow all of us as a community to add documentation for things we can add and do with NOS.

Where is the D: device?

There is no D: device. Since NOS does not load a file system of its own into memory, and relies on the FujiNet to do filesystem things, there is no D: device driver, and thus no way to access either physical drives or disk images mounted in FujiNet device slots.

Instead of providing a disk drive oriented file system, NOS provides the same N: device that is provided by NDEV in the FujiNet Network tools that are a part of every DOS disk in the Atari_8-bit/DOS/ folder on apps.irata.online.

What you can access is any individual file, over any protocol that the N: device can use. This means protocols such as:

  • TNFS
  • FTP
  • SMB (Windows File Sharing)
  • HTTP/S (Web, including WEBDAV)
  • SD (direct access to individual files on the SD card slot)

As a convenience, the N: device is also mapped to the D: device in HATABS, so that programs that only allow D: devicespecs can still work.

Let’s Load a Game!

In order to demonstrate how NOS works, and what makes it different from e.g. SpartaDOS, or MyDOS, or Atari DOS, let’s load a game directly from the Pigwa FTP server. To do this, we’ll iteratively change the directory using CD, and observing where we are with DIR. Once we get to our destination, we’ll load the game.

We’ll wind up here:

N1:CD "N:FTP://FTP.PIGWA.NET/stuff/collections/holmes cd/Holmes 2/Atari Archives/Antic Files/88/"

Of course, we can indeed type this all in at once, if we wanted, or we can change the path starting at the host name:

N1:CD N:FTP://FTP.PIGWA.NET/

We can see that the path has changed, by using the PWD (aka NPWD) command. This command can be issued to see the current path:

N1:PWD

And we can use the DIR command to get a directory at this location:

N1:DIR

We can continue to traverse the path above, by passing the next part of the path to the CD command, and looking at the resulting directory, which we can double check with the PWD command:

N1:CD stuff

N1:PWD

N1:DIR

You don’t have to put each path component individually, you can concatenate path components together, seperated by a slash:

N1:CD “collections/holmes cd/Holmes 2/”

Note: Since the path contained a space, double-quotes are used to indicate that it’s all part of the path, and are only needed if the desired path contains any spaces.

You can see the result with the PWD command:

Also note: Many modern file systems are case-sensitive, and you must type names exactly as the system expects them.

Once we get to the target path:

N:TNFS://FTP.PIGWA.NET/stuff/collections/holmes cd/Holmes 2/Atari Archives/Antic Files/88/

We can look for specific files beginning with F:

N:DIR F*.*

Let’s load FROG.EXE:

N1:LOAD FROG.EXE

There we go. A game that was loaded directly from an FTP server, onto the Atari, courtesy of the FujiNet doing all the heavy lifting behind the scenes.

N: Works Everywhere

As a bonus, re-boot your Atari computer with BASIC inserted or enabled. If your FujiNet was powered off during this process, go back to the same path:

N:TNFS://FTP.PIGWA.NET/stuff/collections/holmes cd/Holmes 2/Atari Archives/Antic Files/88/

And from BASIC type:

READY
RUN"N:SUNSET.BAS"

Cool, huh? 🙂

N1: N2: N3: …

As has been alluded to before, there are 8 network devices defined in the FujiNet firmware, and NOS can use them all.

Note: N8: is used by NOS to handle features such as HELP.

You can change network devices in NOS by typing N1: to N8: at the prompt.

N1:N2:

The prompt will change to indicate the new default device:

N2:

This means each N: device can point to a different path:

In this case, N2: points to a local TNFS file server that I use for software development.

And I can easily copy files from one N: device to another, such as transferring the FROG.EXE we loaded earlier from FTP in N1:, onto my local TNFS file server, now in N2:

N2:COPY N1:FROG.EXE,N2:FROG.EXE

File management tasks such as renaming, deleting, as well as making and removing directories are also possible:

N2:REN FROG.EXE,TOAD.EXE

N2:MKDIR WORK

N2:DEL kantiks.xex

Automatic Boot Script

Any text file can be assigned as an automatic boot script using the AUTORUN command, giving the full path to the script:

N1:AUTORUN N:TNFS://TMA-2/AUTO.TXT

To accomplish this, NOS sets an AppKey on your FuijNet, which NOS will read when booted. This feature is useful for setting up a consistent environment with the N: devices pointed to your preferred network locations.

The Road to 1.0

While work on NOS is progressing, part of this post is a call to bring interested people in to help work on NOS and polish it up, and make it better. There are still many weird little bugs that can crop up during use, so we ask that users be patient, and if developers can help, feel free to grab a copy of the source code, and improve upon it.

The source code can be fetched from GitHub in the fujinet-nhandler repository:

https://github.com/FujiNetWIFI/fujinet-nhandler

And NOS is written in Assembler, using the mads assembler. The resulting build from the makefile generates the bootable ATR disk image automatically.

Thank you all for reading, I hope NOS will at the very least inspire new ways to think about how FujiNet can access networked files, unencumbered by legacy disk drive file systems, and hopefully maybe it can inspire some much needed improvements or totally new ideas in this space. -Thom

Early Draft of FujiNet Users Manual for ATARI Users 0.0.2

A work in progress User’s Guide and Programming Reference for ATARI based FujiNets is being written. The effort is led by Thomas Cherryhomes. The goal is to provide both a comprehensive user’s and a programmer’s guide.

You can download the most recent render here: https://github.com/FujiNetWIFI/fujinet-manuals/releases/download/fujinet-atari-users-guide-0.0.2/fujinet_for_atari_users.pdf

The source material is being written in XML using the DocBook 5.1 grammar, which is well suited for writing technical documentation. You can get it here on GitHub: https://github.com/FujiNetWIFI/fujinet-manuals

While the User’s Guide revolves around showing new and experienced ATARI users what they can do with their FujiNet, the Programmers guide gives both a reference of how to control the FujiNet from languages such as Atari BASIC, FastBasic, ACTION!, C, and Assembler, but give a consistent set of examples that can be used as a “Rosetta Stone” for each, namely NETCAT, a terminal emulator, and MASTODON, a program which fetches the latest post from a Mastodon server and displays it.

As with everything in FujiNet land, anyone can help! If you want to participate in making this user’s guide, feel free to contact us, leave us a comment below, or join us on Discord!

FujiNet-RS-232 WIP Video

This is a video showing the current status (as of 2024-12-26) of the RS-232-C version of FujiNet, and the corresponding PC host software (COM, FUJICOM, and the client programs, ISS, NGET, NPUT, and NC).

The last part of the video talks about the X1 experiment to implement a BIOS interface for FujiNet using software INT 0xF5.

  • COM implements the low level RS232 routines.
  • FUJICOM implements the FujiNet command to device layer.
  • ISS is the International Space Station Tracker
  • NGET retrieves to a file from any network endpoint.
  • NPUT puts a file to any network endpoint.
  • NC is a dumb terminal to any network endpoint.

NC, NGET, and NPUT use the network device, and you can pass any available protocol adapter to it, e.g. TCP, UDP, FTP, HTTP/S, SSH, TELNET, SMB, NFS, and more, with the ability to add more protocol adapters. The FujiNet does all the hard work, and presents a nice clean interface to the target PC.

The above programs use FUJICOM directly, but this is not the intent for any final user program, at all. What is intended is for a BIOS interface to be used, abstracting for any physical interface. This will be important as the ISA version of FujiNet comes into existence. The X1 code is not working, and I need eyes to help fix it.

Eventually, it is intended that the work for X1 will be used to implement a DOS device driver, to directly deal with, not only disk images, provide the virtual printer, but also to provide file level access to MS-DOS directly for any network endpoint.

If you can help, please join us on our Discord!

Code: https://github.com/FujiNetWIFI/fujinet-rs232

Hardware: https://github.com/FujiNetWIFI/fujinet-hardware

GRiDCase International Space Station Tracker

Merry Christmas everyone! RS-232-C FujiNet Works!

The RS-232-C version of FujiNet is starting to work. For now, the bring-up platform is MS-DOS, and specifically, my GRiDCASE 1530.

To get things running quickly, I borrowed the same protocol used by the Atari FujiNet (SIO), and adapted its control signals to RS-232-C equivalents. It is running at 9600 baud, and the firmware is working.

Using Turbo C 2.0, I quickly wrote an ISS tracker to test the network device, and I had to write a quick graphics library in the process, I refuse to use BGI. It draws in CGA, and uses the color palette and background to good effect, and looks good on both my color display and my gas plasma LCD.

While this does prove that the firmware is working as expected, the ISS program was written to directly use the serial comms routines that I put together for the RS232 FujiNet. This is not ideal, because there will be an ISA version of FujiNet for PCs, and I want them to use the same programming interface.

The MS-DOS FujiNet BIOS

To this effect, I have drawn up a specification for a BIOS that will insert itself at INT 0xF5 and 0xF6 to communicate with the FujiNet. This will allow for a standard interface to whatever versions of FujiNet end up on MS-DOS machines (including some not-so-IBM compatibles like Sanyo MBC-550, Apricot PC/Xi/Xen/Fx, Mindset, etc.)

You can read the specification here: https://github.com/FujiNetWIFI/fujinet-rs232/blob/main/fujinet-bios.md

I have attempted to start implementations in this repo: https://github.com/FujiNetWIFI/fujinet-rs232

A deeper dive into the RS-232-C code:

  • COM.C – is the lower level interrupt driven serial port code.
  • FUJICOM.C – Implements the FujiNet command protocol using COM.C.
  • FUJITIME.C – Uses FUJICOM to send NTP commands to set MS-DOS date/time.
  • X1/ – The first experiment for a FujiNet BIOS, it has issues; need help.
  • ISS/ – Uses FUJICOM to implement the ISS tracker.

X1 is where the first FujiNet BIOS experiment is happening. It takes COM and FUJICOM and attempts to implement a BIOS dispatching interface for a couple of example commands.

TEST.COM is a DEBUG written program that sends a GET ADAPTER CONFIG command to FujiBios and tells it to place its buffer at offset 0120 in the program segment.

READY.COM is another DEBUG program written to test command 0. It’s in flux.

BIOSTEST.C and TEST3.C were C programs intended to test the BIOS call interface and debug what is happening.

When I call the BIOS functions that use FUJICOM/COM, I can transmit just fine, receiving suddenly becomes an issue, bytes don’t show up, and sometimes the FIFO just hangs with no bytes available (when there should be)

Anyone who can help, I could appreciate some eyes on this.

Building Hardware

The Hardware for the FujiNet RS-232-C device is in the fujinet-hardware repo, if you want to build a device to help hack on this: https://github.com/FujiNetWIFI/fujinet-hardware/tree/master/RS232

If you want to help, please stop by the Discord!

2025

FujiNet in 2025

FujiNet had an amazing 2024. I can’t wait to see what happens for 2025.

FujiNet is not a private company. We are a public project. You can help.

We want more platforms: Commodore, BBC Micro, ZX Spectrum, Bally Astrocade, IBM PC, NEC PC-6001, and more.

Can you help with any platform you want to see FujiNet on? Join us in Discord: https://discord.gg/2Ce9guX

We want existing platforms to get ports of 5 Card Stud and Fujitzee. Want to help? Come to Discord and tap @EricCarrGH on the shoulder.

We want more games on FujiNet. Have a game idea you want to help with? Let’s meet in the #fuji-game-system on Discord.

e.g. Artillery, turn based war games, etc.

We want to bring FujiNet to Game systems, starting with the Atari 2600 and Intellivsion. Are you a game developer? Join us on Discord!

(we also want Atari Lynx developers to help get the Lynx version to a usable state!)

We want help designing a bus interface that can be used to bring FujiNet to anything with a card edge. Have RP2040/2350 experience? Come join us on the Discord!

Again: FujiNet is not a private company, we are a public project, whose goal is to bring modern and useful networking to all the Retrocomputing and Retrogaming platforms. But we need your help.

I have a saying, I have limited engineering cycles, but I make time to teach. I freely give any bit of my knowledge to anyone who stumbles into the FujiNet discord, on a variety of software and firmware subjects. Others do it for hardware. Come and learn in the discord.