[IMAGE]

Last Update: November 18, 2009

What is NadaNet?

NadaNet is a native Apple II network using the built-in serial inputs and outputs of the Apple II main board. In particular, it uses the Annunciator 1 output and the Pushbutton 1 input. Logically, the input and output are connected together, then all the combined "input-outputs" on all networked machines are connected together. (Electrically, it is only slightly more complicated than that.)

This connection allows each machine to both read the state of the network bus and drive it to a high logic level (1). When no machine is driving it high, the bus is passively pulled to the low logic state (0). Thus, the network behaves as a wide OR-gate.

Since each machine is able to control the bus individually under software control, it is possible to write programs which allow all connected machines to make orderly use of the network to communicate with all other connected machines. Accomplishing this requires that the software enforce a discipline for gaining control of the network and sending data, and that complementary software controls the receiving machines to ensure reliable data reception.

The Oscilloscope trace below is a display of the network performing a protocol involving a request message and a response message. The two 8-byte messages take slightly less than 2 milliseconds (the horizontal axis is 0.2 milliseconds per division and the vertical axis is 2 volts per division).

[IMAGE]

NadaNet Capabilities

You might wonder what such a simple network is capable of doing. First, its data rate is surprisingly high for an all-software network. It can sustain a data transfer rate of over 10K bytes per second using 256-byte packets, with all synchronization and protocol included. Second, it can support virtually any protocol, although I have so far implemented only a basic set of operations useful for network and parallel programming (see AppleCrate and AppleCrate II). Finally, in its present implementation it supports up to 31 networked machines, though it could be extended trivially to twice that number. I currently do most NadaNet testing with a 19-machine network of enhanced and unenhanced Apple //e machines, occasionally augmenting the network with a IIgs machine.

The current software supports only Apple II machines, and only those that have a 16-pin game port on the main board (including the IIgs if it is set to "slow" mode in the control panel). There is, however, one exception of which you should be aware. Apple decided to "brute force" a problem they were having with RFI on certain late-model Enhanced //e and Platinum //e machines by paralleling the pushbutton inputs on these machines with large-value capacitors (0.1uF), rendering the inputs on these machines useless for fast signaling until the capacitors are "snipped", as described in the Machine Compatibility section at the end of this more detailed NadaNet paper.

TCP/IP is not implemented on NadaNet, and I have no plans to do so. Like most other people, I already have computers much more suitable for connecting to the Internet, and have no interest in burdening either me or my Apple II machines with a protocol whose complexity and storage requirements are larger than all but the very largest 8-bit Apple II applications. I intended NadaNet as a versatile network environment for learning and parallel programming, for which many interesting programs would be a few dozen lines of Applesoft BASIC. Doing this in a TCP/IP environment would be like using an elephant to transport a flea!

NadaNet, complete with its protocols and an ampersand interface for BASIC, occupies a little over 2KB of memory--much less than DOS--and easily co-resides with ProDOS or DOS while remaining capable of hosting quite substantial application programs.

I plan to continue to add tools and application examples to the site. The latest version is NadaNet 3.0, which has several new commands, including new broadcast boot and data protocols and commands to run both BASIC and machine language programs on remote machines. For improved reliability, NadaNet 3.0 uses a slightly different format for control packets, which makes it incompatible with earlier versions (thus the new "major" version number). Above the lowest level NadaNet software, practically everything is unaffected, including the File Server, written in Applesoft, that serves the ProDOS file system of its host machine to all NadaNet clients (whether or not they are running ProDOS).

The AppleCrate application, CRATE.SYNTH, has been extended to match the capabilities of the new AppleCrate II. It is now a 16-voice sampled music synthesizer that uses NadaNet's new passive boot protocol and broadcast data capabilities for faster program loading, voice loading, and synchronization.

I invite you to look over what is presented, and, if you find it intriguing and would like to play with it, download the software, build a couple of little adapters on 16-pin DIP sockets, and do your own experiments. You'll have a lot of fun getting two or more of your Apple II computers talking! Of course, I'd be delighted to hear about your ideas and experiences.

If you'd rather not build the adapters yourself, you can purchase them from me fully assembled for $15 each, including both a ProDOS and a DOS 3.3 NadaNet disk. Complete kits are available for $10 each.

Current Version

NadaNet 3.0 is the current version. It is a feature and reliability upgrade from the previous versions. The low-level message format has been altered slightly to improve collision detection, making version 3.0 incompatible "on the wire" with earlier versions. Therefore, you should update all instances of NadaNet on a network if moving from an earlier version to version 3.0. At this early stage in NadaNet deployment, this should not be a serious problem. There is an impact on earlier AppleCrate machines: all boot ROMs will need to be upgraded to "passive boot" ROMs. The network boot protocol is changed in NadaNet 3.0 (to allow it to fit in Enhanced Apple //e ROMs), and the &BOOTCODE command has been replaced by &BOOT with somewhat different semantics. All other higher level code dependent on NadaNet is unaffected.

Documentation Links

NadaNet: A Native Network for the Apple II (A bottom-up design description)
A Network Extension for Applesoft BASIC (The ampersand extension to Applesoft)
Building a NadaNet Adapter (How to build the network game port adapter)
ATTACH: A Remote Operating Facility for NadaNet (Remote control of networked machines)
NadaNet (ProDOS version) (Merlin Pro listing of the ProDOS version of NadaNet)

Software Download Links

Here are links to ShrinkIt disk images containing the Merlin Pro source files and the object files and various Applesoft programs using NadaNet. (Of course, this code must run on a real Apple II--emulators don't cut it. ;-)

NadaNet source files
Bootable ProDOS NadaNet startup disk, Applesoft programs, File Server, and AppleCrate boot ROM
Bootable DOS NadaNet startup disk and Applesoft programs