This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FujiNet Manual
The latest Arduino IDE (version 1.8.10 as of this writing) can be found here:
Software > Downloads > [Windows, MAC, or Linux]
To add ESP8266 Support to Arduino IDE
https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/
Board settings:
You also need: From Boards Manager:
**CRITICAL: USE VERSION 2.4.0 FOR NOW. **Later versions have bugs in the toolchain which prevent working binaries.
This is the NodeMCU 1.0 board we are using:
Longruner 2pcs WiFi Internet ESP8266 Module CP2102 ESP12E NodeMCU LUA Development BoardWi-Fi Wireless Micro Controller with GPIO pins Compatible with ArduinoIDE LKY69
Available from Amazon: https://www.amazon.com/gp/product/B06X8ZJG87
If your Arduino environment gets wonky:
-
Delete your Arduino directory
-
Reinstall board support
-
Re-install libraries needed.
Location of Arduino project directory:
-
Windows: Documents\Arduino
-
Linux: ~/arduino
-
Mac: ~/arduino
Programming your NodeMCU:
Replacing the Firmware
-
Open atariwifi.ino in Arduino IDE [https://gist.github.com/mozzwald/f84692d942111a29a6764c2f45a35152]
-
Remove NodeMCU board from test board, if needed.
-
Plug in NodeMCU board, check for teal LED
-
Set board settings as above, ensure COM port is set correctly to your board.
-
Resize the status area below if needed to see the output from the compiler and the programming tool.
-
The blue LED on the NodeMCU should start flashing, indicate receipt of flash data.
-
You should also see an indication that the device is being flashed, an example of a successful flash, is below:

Replacing the Filesystem Contents
We are currently setting aside one megabyte of space in the 4 megabyte flash RAM to hold data files for different purposes. For now, this is all treated as a SPIFFS file-system. You can replace the data on the SPIFFS file system, without needing to re-flash the firmware, but you do need to flash the SPIFFS area, at least once.
-
If you haven’t installed the ESP8266 Sketch Data Upload tool, please do so, you can grab it here: https://github.com/esp8266/arduino-esp8266fs-plugin and follow the instructions to install into your $ARDUINO/tools folder.
-
Currently, we use one file, ‘autorun.atr’ which lives in the data/ directory. This is an ATR formatted, single density disk. (yes, it’s ATR now)
-
If replacing, please place any contents you want on the filesystem into data/ This is currently ATR images, but may be other things as we develop things out.
-
Select ESP8266 Sketch Data Upload
-
If working correctly, you’ll see a list of files being pushed to the SPIFFS, and their address locations, followed by a status display of flashing. It copies an entire 1 megabyte image to the SPIFFS, so this takes a few minutes
Currently Working on
-
Improving SIO timings, I suspect they are marginal
-
Implementing a TNFS client for network filesystem, based on protocol specification here: http://spectrum.alioth.net/svn/filedetails.php?repname=Spectranet&path=%2Ftrunk%2Ftnfs%2Ftnfs-protocol.txt&fbclid=IwAR1Ufed88zCmVzch5Kqo3ccM7GYpDJaZHnX30g9LKWNL9lV5zD2GaU3iaO4 It runs over UDP, so should be trivial to implement.
Need to figure out
-
NAT-UPnP port forwarding for UDP for TNFS service
-
How to properly handle UDP traffic in Arduino. Argh.
SIO Commands
This is a list of the Proposed SIO commands for given device classes.
Network Emulation
| Device | Command | Aux1 | Aux2 | Description |
| $70 | $00 | $00 | $00 | Reset Adapter |
| $70 | ‘!’ | $00 | $00 | Get Network Information |
| $70 | ‘M’ | DD* | DM* | Mount Disk Data is /disk_image.atr |
| $70 | ‘U’ | DD* | 00 | Unmount (umount) disk |
| $70 | ‘&’ | $HT | $00 | Send back handler |
| $7n | ‘O’ | $CT | $00 | Open network connection Data is :PORT# |
| $7n | ‘C’ | $CT | $00 | Close network connection |
| $7n | ‘R’ | $00 | $00 | Read bytes from connection |
| $7n | ‘P’ | $00 | $00 | Put bytes from connection |
| $7n | ‘S’ | $00 | $00 | Anything waiting? (STATUS) |
-
DD is Disk device # (aka $31 for D1:)
-
DM is Disk Mode (D0 = Read, D1 = Write)
-
HT is handler type (D0 = RS232, D1 = Network)
-
X is 1-8, allowing 8 max connections.
-
CT = (1 = TCP, 2 = UDP)
Current Schematic
External Documents
- https://docs.google.com/spreadsheets/d/1qEPPM3-gqzfHsogJYuVXqhbvSSsgxdQMb_KGfpoV9KI/edit#gid=0 (the pins used by AtariWiFi)
Firmware Development
https://cc65.github.io/getting-started.html#Windows
SIO Reference Material
See "Chapter 9: Serial I/O (SIO) Bus" starting on page 151.
http://www.virtualdub.org/downloads/Altirra%20Hardware%20Reference%20Manual.pdf
TNFS Protocol
Code Examples
**http://github.com/tschak909/atariwif**i
https://github.com/mozzwald/Zimodem/tree/atari
**https://github.com/mozzwald/FujiNet-MIDIMaz**e
Example Videos
AtariWiFi ESP8266 SIO Network Adapter: test program #5
#AtariWiFi Network Adapter test program #5 Now Working
#AtariWiFi Test Program #7 - Booting disk off the Internet!
#AtariWiFi Test Program #8: Show Network Info
#AtariWiFi Test Program #7 on Ben Heck Atari XE Laptop #2
#AtariWiFi Test #9 Writing Network Configuration
#FujiNet aka #AtariWiFi Test #10 - Read and Write!
#FujiNet Test #11: Wi-Fi Network Scan
#FujiNet Test #11 as a C program
#FujiNet Test #12 - Listing TNFS directory.
#FujiNet Test #13 - First breath of the N: Device!
- Home
- What is FujiNet?
- The Definition of Done
- Board bring up for FujiNet Platform.IO code
- The Complete Linux CLI Guide
- The Complete macOS CLI Guide
- Development Env for Apps
- FujiNet-Development-Guidelines
- System Quickstarts
- FujiNet Flasher
- Setting up a TNFS Server
- FujiNet Configuration File: fnconfig.ini
- AppKey Registry - SIO Command $DC Open App Key
- CP-M Support
- BBS
- Official Hardware Versions
- Prototype Board Revisions
- FujiNet Development Guidelines
- Atari Programming
- Apple Programming
- C64 Programming
- ADAM Programming
- Testing Plan
- Hacker List
- FujiNet VirtualMachine
Copyright 2026 Contributors to the FujiNetWIFI project.
Join us on Discord: https://discord.gg/7MfFTvD



