Apple II & III FujiNet Quickstart Guide - FujiNetWIFI/fujinet-firmware GitHub Wiki

Table of Contents

FujiApple: the Apple II & III FujiNet

The “production ready” version of the FujiApple, Rev1, was released in June 2023. A SmartPort enabled Apple II/III is required for most functions (see below for expansion card combinations providing SmartPort functionality for non-SmartPort-native Apples).

FujiNet emulates the following: SmartPort drives (HDV, PO, 2MG), Disk II (WOZ, PO [140k], DSK), CP/M, clock, modem, and printer. The clock, modem, and printer are presented as SmartPort devices, and therefore require software or ROM support (e.g. printer support is available via a custom Apple IIc ROM on that model).

CP/M support is via a fully emulated RunCPM environment with storage provided by the built-in microSD slot.

Important

Rev0 and Rev00 do not support CP/M without a hardware modification to the board, but all other functions are supported.

Getting to Know Your FujiNet

  • The FujiNet will obtain power from the SmartPort cable and power itself when the Apple is turned on. There is no power switch for your FujiNet.
  • FujiNet has a push/push MicroSD slot. An SD card is not required for use. The SD card must be formatted FAT32. The exFAT format is not supported.
  • There are 2 status LEDs: white is WiFi connection, amber/yellow is bus activity status (SmartPort/Disk II).
  • There are 2 buttons: Button A (Function To Be Determined) and Reset
  • There is one IDC20 port for SmartPort/Disk II connections with the suitable cable/adaptor based on interface/controller

Supported Apple II & III Systems

Natively

  • Apple IIgs
  • Apple IIc (SmartPort functionality not available on ROM 255)
  • Apple IIc+

With SmartPort Card

  • Apple II+
  • Apple IIe
  • Apple IIe Enhanced/Platinum
  • Most clones of the above machines
  • Apple III & III+

SmartPort Cards

Extensively Tested and working

  • KBOOHK softSP Card v6 (or newer) and I/O Controller/5.25 Drive Controller Card
  • A2Pico with softSP v6 (or newer)
  • Grappler+ w/ DIY softSP (E)EPROM v6 (or newer) and I/O Controller/5.25 Drive Controller Card
  • SuperSerial w/ DIY softSP (E)EPROM v5 and I/O Controller/5.25 Drive Controller Card

Warning

While the original Disk II interface card will work with SoftSP cards to provide SmartPort + Disk II Drive 1 functionality (or Drive 2 if Fujinet plugged into second header) the ease with which the IDC20 cable can be offset by one row or column of pins (which will cause damage to hardware) makes this a less than ideal configuration.

If you only have a Disk II card available to use with your FujiNet, it is advisable to check the alignment of the plug on the header at least twice before powering the equipment up. Make sure no pins are visible outside the IDC20 plug.

Minimally tested and Issues

  • Apple Liron: SmartPort mode only, no Disk II mode
  • Yellowstone (currently not working for Apple III)
    • Must be used with IDC20 cable only, no DB19 Adapter

“Solo” 5.25" Disk Controller Cards (no softSP)

  • Original Disk II Interface Card with two IDC20 headers (16 sector PROMs only)
  • Apple I/O Controller/5.25 Drive Controller with DB19 connector

Supported Drive Types by Interface Card/Computer

Card/Computer SmartPort Disk II D11 Disk II D21
Disk II Interface Card (IDC20) Y2 Y3 Y3
I/O Controller/5.25 Drive Controller (DB19) Y2 Y Y
LIRON Card (DB19) Y N N
Yellowstone (IDC20)4,5 Y Y Y
Apple IIc ROM 255 (DB19) N N Y6
Apple IIc ROM 0, 3, 4 (DB19) Y N Y
Apple IIc+ (DB19) Y Y Y
Apple IIgs (DB19) Y Y Y
Apple III/III+ (IDC26/DB25)7 Y8 Y3 Y3
  1. Disk II emulation is currently Read Only (Aug 2024).
  2. With SoftSP card or equivalents.
  3. Only one Disk II can be emulated, depending on how FujiNet is connected – Drive 1 when connected to the Apple II Interface Card’s Drive 1 header or Apple III/III+’s internal drive header, or Drive 2 when connected to the Apple II Interface Card’s Drive 2 header or Apple III/III+’s external port. Load disk image into FujiNet’s Disk II Drive 1 slot, which is presented to the interface as the sole emulated Disk II. Apple III/III+ require 26 pin to 20 pin adaptor.
  4. Must be used with IDC20 cable, not DB19 adaptor. Yellowstone acts in either SmartPort or Disk II mode, not both at the same time.
  5. Not currently working for Apple III/III+.
  6. When plugged into Apple IIc ROM 255’s external DB19 floppy port.
  7. Requires driver. Internal port is IDC26, external port for Apple III is IDC26, and for Apple III+ is DB25.
  8. With SoftSP card (or equivalent) via 26 pin to 20 pin adaptor cable or LIRON card, supports only the first two SmartPort block devices.

Support Image Types by Drive Type

Drive Type DSK/DO WOZ PO HDV 2MG
SmartPort Y1 N Y Y Y
Disk II Y Y2 Y2 N N
  1. ProDOS images only.
  2. 5¼" images only.

Hooking Up FujiNet

For systems with native SmartPort or a DB19 Drive Controller card you will need a DB19 to IDC20 adapter that connects to the FujiNet.

For systems with an IDC20 header (two rows of ten pins), connect the FujiNet with an IDC20 cable. If using the Disk II card, be sure the cable is plugged in correctly to the Disk II or you could damage the FujiNet.

FujiNet Rev1 can emulate a second drive with the custom FujiNet DB19 adapter only when connected to the I/O Controller/5.25 Drive Controller cards. Older Rev0(00) prototypes and Rev1 without custom DB19 only support Disk II Drive 1.

Caution

The custom FujiNet DB19 adapter SHOULD NOT be used with other devices without confirming the pinout conforms to the other device pinout.

You can get adapters from the locations below:

FujiNet is powered directly from the Apple II bus and no external power is required. You can, however, optionally power the FujiNet from the USB port onboard. The USB port is also used to upgrade firmware and provides debug output messages to a serial monitor on a computer. The web-based management and WebDAV access to the SD can continue to be accessed if powered from USB while the host Apple II is powered down.

Apple System Specifics

Apple II+/IIe

The first time you power on the Apple II FujiNet will have its CONFIG disk mounted. Press [CTRL-RESET] to get a prompt, then type PR#X (X=whichever slot your DIY SoftSP ROM card is in, e.g. PR#5), then press [RETURN] to load CONFIG. See Navigating CONFIG below.

Apple IIc

Just plug in the FujiNet. Remove any floppies from the internal 5.25 drive. Power on the Apple. FujiNet will boot CONFIG.

Note

It has been observed in testing on an Apple //c with the $FF (255) ROM, the Apple will not boot the FujiNet, resulting in only a failed floppy boot (both trying PR#6 or PR#7). This is a limitation of the Rom 255 Apple IIc as it did not have built-in support for SmartPort.

Apple IIc+

Just plug in the FujiNet. Remove any floppies from the internal 3.5 drive. Power on the Apple. FujiNet will boot CONFIG.

Apple IIgs

On Apple IIgs you can set boot device as Port 5 (SmartPort) by entering the Control Panel at boot (press [Ctrl-Open Apple-Esc]). Choose Disk and set startup disk to slot 5. Now your Apple IIgs won’t miss the FujiNet and ask you to attach a drive.

Apple IIgs Keyboard tricks:

Keys Function
Ctrl-Open Apple-Reset Reboot
Ctrl-Shift-Open Apple-Reset Reboot and re-load BRAM (ROM 03)
Ctrl-Open Apple-Option-Reset System test (Open Apple-Option to repeat)
Option while power-on Menu to Reset standards
Ctrl-Option-Reset Reboot and give menu
Ctrl-Open Apple-Esc Go to Control Panel
Ctrl-Open Apple-Shift-Esc More direct to Control Panel
Shift 5 times Enable sticky keys (ROM 03 or Sys 6)
Shift-Open Apple-Clear Enable keyboard mouse (ROM 03 or Sys 6)
Ctrl-Open Apple-Del Clear keyboard type-ahead buffer
Hold Open Apple, then Ctrl-Del Auto fire Button 0
Shift-Period on keypad Comma
Ctrl-Open Apple-2 in GS/OS desktop app Select “About...”
Ctrl-6, then in BASIC Set cursor to
Ctrl-Open Apple-Option-N at sliding Apple (i.e “Check Startup” screen) Credits

Apple III & III+

Two options available to connect the FujiNet:

  • Liron card – allows SmartPort drives only. This needs DB19 pin to 20 pin adapter to connect the FujiNet to the Liron card.
  • SoftSP card or DIY SoftSP on Grappler+. FujiNet is connected to either the external or internal drive port with a 26pin to 20 adapter cable.

The Driver and some prebuilt 16MB SOS images are available here: Apple III FujiNet Driver

Navigating CONFIG

FujiApple-CONFIG-Main-Menu-scaled The CONFIG screen for Apple II

The first time you boot FujiNet CONFIG it will prompt you to connect to WiFi. You can select your access point and enter its passphrase. This information is saved internally and if an SD card is present will be saved there also to fnconfig.ini

Important

FujiNet is powered by the Espressif ESP32 chipset, which works on 2.4GHz WiFi networks ONLY. If you are using a “mixed” 2.4GHz/5GHz WiFi network (using both radio bands with the same SSID/network name), you MAY have problems connecting your FujiNet device to the network.

CONFIG was designed to be intuitive and reminiscent of Apple II programs like ProDOS. On the main CONFIG screen you will see host slots on top and disk slots on bottom. You can jump between the host slots and disk slots by pressing [TAB]. Pressing [RETURN] while a host slot is highlighted will begin the process of selecting and mounting a disk image from the host to an emulated disk drive.

Hosts can be:

  • an IP address or hostname of a TNFS server (e.g. apps.irata.online, fujinet.diller.org, tnfs.fujinet.online, 10.0.27.222)
  • an SMB or FTP server URL in the form SMB://server.address or FTP://server.address – both require anonymous access, availability of which varies by server software, server.address can be an IP address or a domain name

Any host can also be named SD which points to the onboard SD card socket.

With a host entry selected, press [E] to edit it – host entries can be up to 30 characters long.

To boot from a SmartPort disk, select the desired host and subsequently a disk image file. It will prompt you to select a disk drive. The first four drives are SmartPort devices and the last two are Disk II Drive 1 and Drive 2. After selecting a drive you can choose to mount it Read Only (press [R] or [RETURN]) or Read/Write (press [W]).

Caution

Most if not all public facing TNFS servers do not allow Write access so you should mount them Read Only.

Note

Disk II emulation in FujiNet is Read Only (as of August 2024) so mount those disks as such.

When returned to the main CONFIG screen, press [Esc] to reset the Apple II. For those systems that need it, press [CTRL-RESET] and PR#X (X=whichever slot your DIY SoftSP ROM card is in, or the slot the physical drive interface card in in to boot from the Disk II emulated drive).

Web User Interface

Your FujiNet makes available a simple web-based configuration interface when you visit your device’s IP address while it’s powered on.

For example, if your FujiNet’s IP address on your local network is “192.168.0.222”, you would visit http://192.168.0.222/ in a browser connected to that same network.

To find the FujiNet's IP address, use the “Show Config” option (press [C])when in the main screen of the CONFIG program.

You can also find the FujiNet in your router’s list of connected devices, or by its hostname (default: FujiNet, so you can usually navigate to FujiNet.local).

You can amend the FujiNet hostname if desired.

FujiApple 1 4 Web Interface

Note

Not all components of the web UI work with Apple II at this point.

Updating Firmware

You can download the FujiNet-Flasher (for Windows, macOS, or Linux), from https://fujinet.online/download/. For more information, see FujiNet-Flasher

Finding and Loading Software

There are some Apple II disk images available on various TNFS servers:

  • tnfs.fujinet.online
  • fujinet.diller.org
  • apps.irata.online

The Host names can be entered in lower-case on the Apple II, however they will appear in UPPER CASE when the CONFIG app is reloaded. This is normal.

Apple Disk Types, Filesystems and Slots

  • The below content from Discord has been editorialized to better fit the wiki.
  • A discussion between Oliver and Wiese about properly mounting and using various Apple II disk images on FujiNet

Oliver Schmidt: Currently, The FN code base only thinks in terms of sector order. And then we try to decide what can be mounted where on the sector order. But that is totally wrong. You can mount both sector orders in both Disk II and SmartPort. The relevant point is the file system.

You [wiese] do a file system check in order to perform a sector order check. So far so good. But when I look at other targets then there are in example tapes that need to go into the virtual tape deck and disks that need to go into the virtual disk drive. So the purpose of the media type is to determine where it can be mounted.

And this goes currently conceptually wrong on the Apple II. For the question where a disk image can be mounted (Disk II or SmartPort) it’s not the sector order that is relevant. The sector order can always be fixed on the fly. For the question where a disk image can be mounted it’s the file system that is relevant. So the whole DSK DO PO thingy is wrong.

wiese: I was trying to make the minimal change for your bug report, but there were existing issues that I did not address. What would you suggest be done here?

Oliver Schmidt: The issue is that the current FN code is based on a misconception of Apple II disk images.

Right now there is:

  • MEDIATYPE_DO
  • MEDIATYPE_DSK
  • MEDIATYPE_PO
  • MEDIATYPE_WOZ

I think it should rather be:

  • MEDIATYPE_WOZ
  • MEDIATYPE_DO
  • MEDIATYPE_DO_PF
  • MEDIATYPE_PO
  • MEDIATYPE_PO_PF
  • MEDIATYPE_HDV

Description:

  • MEDIATYPE_WOZ: Obvious
  • MEDIATYPE_DO: .DSK or .DO 140kB file with (presumed) DOS 3.3 sector order and no ProDOS file system
  • MEDIATYPE_DO_PF: .DSK or .DO 140kB file with (presumed) DOS 3.3 sector order and ProDOS file system
  • MEDIATYPE_PO: .DSK or .PO 140kB file with (presumed) ProDOS sector order and no ProDOS file system
  • MEDIATYPE_PO_PF: .DSK or .PO 140kB file with (presumed) ProDOS sector order and ProDOS file system
  • MEDIATYPE_HDV: .PO or .HDV >140kB file with ProDOS sector order and ProDOS file system

Then you’d have these rules:

  • MEDIATYPE_WOZ: Disk II
  • MEDIATYPE_DO: Disk II
  • MEDIATYPE_DO_PF: Disk II or SmartPort
  • MEDIATYPE_PO: Disk II
  • MEDIATYPE_PO_PF: Disk II or SmartPort
  • MEDIATYPE_HDV: SmartPort

Apple II Slots and FujiNet disk drive slots

Author: Oliver Schmidt, from Discord conversation

Some more Apple II background: The original Apple II has 8 slots. Slot 0 is “somehow” limited and slot 7 is “somehow” extended. You already see “come from two sides” approach here. Slot 0 becomes quickly used for a certain thing, so there are slots 1-7 left. The first cards are parallel char I/O for printers and then serial char I/O for modems. The cards go naturally into slot 1 and 2.

When the Disk II is developed there’s again the idea to come from two sides. So when char I/O comes from the low slots, block I/O might come from the high slows. But slot 7 is still special so Disk II goes naturally in slot 6. Then comes the autostart ROM that can automatically find the Disk II and boot from it. Naturally that “find the Disk II” starts from slot 7 and goes downwards.

What would be if there were ever something one would want to rather boot from than the Disk II? Easy: Put that in slot 6 and move the Disk II to slot 5. But there wasn’t something like this coming quickly enough so there was software created that relied on Disk II being in slot 6. So it became a de-facto standard.

Then came SmartPort. The SmartPort card is always in a different slot than the Disk II card. You can’t combine both. It’s one of the most questionable decisions to put the SmartPort “card” in the //c into slot 5 instead of slot 7. Why? The SmartPort can quickly determine if there’s a drive connected at all that can be booted from. And if there isn’t it can have the autostart ROM try the next lower slot. On the other hand, the Disk II needs a very long time to determine that there’s no disk in the drive – and usually isn’t able to have the autostart ROM try the next lower slot.

Almost all of the time, the “extensions” of slot 7 aren’t relevant to the user. So today, it’s usual to put the SmartPort card into slot 7. This allows to quickly autoboot for the daily business while still allowing to specifically boot i.e. via PR#6 any software that relies on Disk II in slot 6.

So what does that mean to FN?

It doesn’t make sense to have the term “slot” presented to the user at any time: The FN internal usage of “slot” confuses the user. The Apple II usage of “slot” isn’t possible as FN can’t know nor presume any slot location of Disk II card and SmartPort card in the Apple II.

The only terminology that makes sense to the Apple II user is:

  • Disk II
    • Drive 1
    • Drive 2
  • SmartPort
    • Drive 1
    • Drive 2
    • Drive 3
    • Drive 4

Some notes about Yellowstone Disk II and SmartPort modes

In order to have ProDOS detect both SmartPort and Disk II, there need to be two firmwares in two Apple II expansion slots.

The Disk II plus SoftSP are two firmwares in two expansion slots (and the CFFA3000 is two firmwares in two expansion slots.) The Yellowstone is only one firmware in one expansion slot.

If you put the Yellowstone in SmartPort mode, it does all the Disk II handling on its own and makes the Disk II drives look like 140kB SmartPort devices to ProDOS. This may look like the same thing but it isn’t, i.e. ProDOS 2.5 comes with an improved Disk II handling but the Yellowstone doesn't know about it (at least not without a firmware update).

And if you want to switch between ProDOS and DOS3.3 you need to switch Yellowstone between SmartPort mode and Disk II mode.

Some background on the number of SmartPort drives

Originally there was the Disk II interface. It has a ROM but that is only for booting. All software accesses the Disk II on hardware level. Moving from DOS 3.3 to ProDOS there was the ProDOS block driver interface introduced. That’s in contrast to the Disk II interface a (very simple) firmware interface so there are many totally different implementations possible and were actually done. i.e. the Slinky RAM card has such a ProDOS block driver interface, so ProDOS can use it as RAM disk without any driver software at all.

Later, the SmartPort was introduced. The SmartPort firmware interface was designed as an extension to the ProDOS block driver firmware interface. Every SmartPort firmware is expected to also support the ProDOS block driver interface.

Where are the benefits of the SmartPort interface over the ProDOS block driver interface?

  1. 3 byte block numbers vs. 2 byte block numbers (8GB vs 32MB)
  2. “many” drives vs. 2 drives

However, that doesn’t mean that ProDOS 8 is capable of leveraging all this. With ProDOS 8, the size limit is still 32MB and ProDOS 8 has a strict limit of 2 drives per slot. So in order to leverage the additional drives connected to a SmartPort interface, it needs to remap additional drives to phantom slots. Without going into details, this process is limited to one phantom slot, so as a result, ProDOS 8 supports 4 SmartPort drives. I personally know only little about GS/OS, but as far as I know GS/OS doesn’t have that limit. So for GS/OS it might make sense to support more SmartPort drives.

Apple IIc ROM Versions

https://www.apple2faq.com/apple2faq/apple-c-rom-versions/

Find out your ROM version by clicking Control-Reset typing right after boot and type print peek(64447)

Original IIc ( $FBBF = $FF )

  • Can use the IIc external drive only
  • No AppleTalk firmware
  • PR#7 boots the second drive
  • Mouse firmware maps to slot 4
  • Serial firmware does not mask incoming linefeed characters
  • Serial firmware does not support XON/XOFF protocol

3.5 ROM IIc ( $FBBF = $00 )

  • Can use the IIc external drive and the UniDisk 3.5 drive
  • AppleTalk firmware maps to slot 7
  • PR#7 returns the message “AppleTalk Off Line”
  • Mouse firmware maps to slot 4
  • Serial firmware defaults to mask all incoming linefeed characters
  • Serial firmware supports XON/XOFF protocol

Original “Memory-Expandable” IIc ( $FBBF = $03 )

  • Can use the IIc external drive, the UniDisk 3.5 drive, and the IIc Memory Expansion Card
  • Mouse firmware maps to slot 7
  • No AppleTalk firmware
  • PR#7 kills the system
  • Serial firmware defaults to mask all incoming linefeed characters
  • Serial firmware supports XON/XOFF protocol

Revised “Memory-Expandable” IIc ( $FBBF = $04 )

  • Same as Original “Memory-Expandable” IIc, plus:
  • Keyboard buffering firmware bug fixed
  • Firmware returns correct information when the Memory Expansion Card is not present

Apple IIc Plus ( $FBBF = $05 )

  • Can use the external IIc drive, the UniDisk 3.5 drive, the Apple 3.5 drives, but not the original IIc Memory Expansion Card.
  • Contains a Memory Expansion Card connector
  • 3.5" internal drive replaces 5.25" internal drive
  • Mouse maps to slot 7
  • PR#7 kills the system
  • 4 MHz 65C02 microprocessor
  • Accelerator chip and static RAM cache permit operation up to 4 MHz
  • Keyboard replaced with Apple Standard Keyboard (minus numeric keypad)
  • Internal power supply
  • Internal modem connector
  • Serial ports refitted with mini-DIN 8 connectors
  • Headphone jack has been removed
  • Volume control relocated above the keyboard
  • 40/80 column switch replaced by keyboard (Sholes/Dvorak) switch

ProDOS

The best ProDOS version to use is the latest (currently [August 2024] 2.4.3), available at: https://prodos8.com/releases/

Previous (Apple) ProDOS and BASIC.SYSTEM Versions

You can find these at: https://mirrors.apple2.org.za/Apple%20II%20Documentation%20Project/Software/Operating%20Systems/Apple%20ProDOS/Disk%20Images/

ProDOS:

Version Date Size (Blocks) Download
ProDOS 1.0 01-Aug-83 28 prodos-1.0-aug83.shk
ProDOS 1.0 01-Sep-83 30 prodos-1.0-sep83.shk
ProDOS 1.0 01-Oct-83 30 prodos-1.0-oct83.shk
ProDOS 1.0 01-Nov-83 28 prodos-1.0-nov83.shk
ProDOS 1.0.1 01-Jan-84 30 prodos-1.0.1.shk
ProDOS 1.0.2 15-Feb-84 30 prodos-1.0.2.shk
ProDOS 1.1 17-Aug-84 29 prodos-1.1.shk
ProDOS 1.1.1 18-Sep-84 29 prodos-1.1.1.shk
ProDOS-8 1.2 exp 04 07-Mar-86 30 prodos-1.2exp04.shk
ProDOS 8 v1.2 06-Sep-86 31 prodos-1.2.shk
ProDOS 8 v1.3 02-Dec-86 31 prodos-1.3.shk
ProDOS 8 v1.4 B 12-Feb-87 31 prodos-1.4_b.shk
ProDOS 8 v1.4B 12-Feb-87 31 prodos-1.4b.shk
ProDOS 8 v1.4 17-Apr-87 31 prodos-1.4.shk
ProDOS 8 v1.5 02-Apr-88 31 prodos-1.5.shk
ProDOS 8 v1.6 14-Jun-88 31 prodos-1.6.shk
ProDOS 8 v1.7B 08-Aug-88 31 prodos-1.7b.shk
ProDOS 8 v1.7 08-Aug-88 31 prodos-1.7.shk
ProDOS 8 v1.8 23-May-89 31 prodos-1.8.shk
ProDOS 8 v1.9 16-Jul-90 33 prodos-1.9.shk
ProDOS 8 v2.0 22-Jan-92 34 prodos-2.0.shk
ProDOS 8 v2.0.1 04-Mar-92 34 prodos-2.0.1.shk
ProDOS 8 v2.0.2 02-Nov-92 34 prodos-2.0.2.shk
ProDOS 8 v2.0.3 06-May-93 34 prodos-2.0.3.shk

BASIC.SYSTEM:

Version Date Download
ProDOS BASIC 1.0 01-Sep-83 basic.system-1.0-sep83.shk
ProDOS BASIC 1.0 15-Nov-83 basic.system-1.0-nov83.shk
ProDOS BASIC 1.1 18-Jun-84 basic.system-1.1.shk
ProDOS BASIC 1.2 14-Dec-87 basic.system-1.2.shk
ProDOS BASIC 1.3 17-Jun-89 basic.system-1.3.shk
ProDOS BASIC 1.4 01-Aug-89 basic.system-1.4.shk
ProDOS BASIC 1.4.1 17-Jul-90 basic.system-1.4.1.shk
ProDOS BASIC 1.5 06-May-93 basic.system-1.5.shk
⚠️ **GitHub.com Fallback** ⚠️