NABU RetroNET Project Timeline

We're developing new features to continue the legacy of the original NABU Corporation's vision of Personal Computers connected to a worldwide network without needing local storage. The computer's revival in December 2022, when many units randomly appeared on eBay, is a one-in-a-lifetime opportunity for vintage computing enthusiasts. Unlike any other, the 1982 NABU Personal Computer was not designed to load applications on local storage but instead connected to a network. While the network was limited to country-wide in Canada, the vision was to connect devices worldwide.

The original hardware was limited to only downloading applications due to the television cable company's infrastructure at the time. Today, with the availability of the internet, we can expand the available source code and tools to implement its full potential. Our development timeline is documented here.

Watch the NABU Hacking Adventure Video Series

Development Timeline

Load a program

November 22nd to November 28th, 2022

The network adapter was a piece of hardware connected to the NABU and downloaded applications off a revolving broadcast cycle. All applications were transmitted to all network adapters, and the computer would pull the information as needed. We first needed to load a program onto the NABU by emulating the protocol of the network adapter. 

All programs and data overlays are converted into a PAK file. A PAK file splits a file into ~1000 byte segments including a header. The header provides an application identifier, segment identifier, CRC, and segment size. This is the format that the ROM expects the data to be transmitted into the NABU for it to be placed in memory.

Entry Point Address

November 29th, 2022

Loading and executing a sequential program (without Jumps or Calls) onto the NABU is possible without knowing the entry point address. This is the memory address the ROM would begin writing with the program and then CALL that memory location to execute it. Without knowing the execution address of a program, the compiler is unable to understand what memory addresses to CALL or JUMP relative to the ORG address. The entry point was identified by having the program CALL the ROM to reload the program again and display the last address in the STACK.

[Video Obtaining Start Address]

The stack is an area of RAM that holds information in a First In Last Out order. It is used to temporarily hold memory addresses to know how to RETURN from a CALL function or keep register values when the registers need to be re-used.

The ROM originally requested a PAK ID 000001, which would be the Main Menu and DOS (Downloadable operating system) on the NABU network. It then begins writing it starting at memory location $140A, but it calls $140D as the entry point.

Other computers of this era would include a more advanced and extensive ROM with built-in API calls to aid programmers. This allowed programmers to quickly access commonly used functions, such as keyboard input, video display, and audio. The NABU ROM only contains a loader, and the API functions are loaded in the DOS with the main menu at PAK 000001.

Original NABU Cycle

November 30th, 2022

DJ had done in-depth google searches to contact every person who had an association with NABU.

John Kelly was the founder of NABU, who used his personal financial resources to keep the company alive after the bankruptcy of the original NABU Corporation. John had hired a young programmer named Leo, who created many NABU games and maintained the NABU network during its final days. Leo, who also provided York University with the duplicate program files for their museum exhibit, details here.

[video of Leo in 1984]

Leo contacted DJ and provided him with the original NABU Cycle to load with his early Internet Adapter prototype. Within minutes, the original main menu was loaded and displayed on real NABU hardware for the first time in almost 40 years outside the YUNN museum.

[video of Main Menu loading for the first time]

Programming API

November 30th, 2022

To support programmers that want to make HomeBrew software, DJ identified the z88dk C compiler as a fitting development platform. He began creating NABU-LIB, which would provide access to NABU hardware, such as the keyboard, video, and sound.

Continued work toward developing the NABU target in z88dk is necessary to support the hardware and remote file access, as seen in this forum thread.

Home Brew

Publishing the NABU-LIB on Git Hub for the z88dk C development platform, the community is encouraged to build software for the NABU PC. At this time, the software can be emailed to DJ, who will manually load it on the NABU Cloud Server. In a further step, you will realize the intent of how NABU software will be shared across all devices worldwide.

Internet Adapter

Released December 2nd, 2022

DJ created the first Internet Adapter, which requested PAKs from the RetroNET cloud server, rather than having the data broadcasted on a revolving cycle. The software was also made to load HomeBrew applications.

Internet Access

December 13th, 2022

The Internet Adapter and NABU-LIB were modified to give the NABU access to custom internet services, such as RetroNET Chat and Telnet. This was a prototype toward giving the NABU unlimited access to remote cloud storage of community-created software.
[video]

Internet Adapter TCP

December 15th, 2022

BriJohn was creating a NABU machine  MAME emulator but needed a way to transfer PAK files from the internet adapter. He had initially requested to use a "virtual comm" port of sorts. I thought a TCP server would be more versatile. So, the Internet Adapter TCP server was born, and emulation flourished.
[video]

Remote Storage

At the time, the cable system not allowing bi-directional communication. NABU realized a solution: to rent floppy drives so that users could save files locally. However, this was not the full intent of the computer, and other options were explored, such as using Telephone Modems to upload information to servers. 

The internet and a locally connected PC (such as a Raspberry Pi) make offline storage available today. The Internet Adapter and NABU-LIB were modified to include file stream and directory ability. 

Bad Apple

December 16th, 2022

Amongst many small programs that I had written to mature a NABU development environment, the YouTube comments were asking for Bad Apple. Although it was going to be quite a leap to go from nothing to Bad Apple, I embraced the cloud and made it happen.
[video]

Load Custom Software in Main Menu

January 8th, 2023

The Main Menu and DOS are a modified CP/M, limited by not having local storage capabilities. We then needed to understand how CPM executables need to be modified to load from the Main Menu. This was achieved using a CP/M emulator and a program provided by Leo. DJ created a DJ's Playground Cycle to experiment with how CP/M applications need to be created for the NABU hardware.

Thanks to Dom from z88dk, their C development platform can now produce NABU CP/M target binaries. These prototypes are published in DJ's Playground Cycle to understand the necessary changes to get z88dk CPM libraries compatible with the hardware. Due to similarities with MSX1, the video and audio do not need many modifications. The keyboard, joystick, and HCCA required additional effort to get working.

Cloud CP/M

January 12th, 2023

NABU created a version of CPM called SuperCPM, which stubbed offline storage access functions to a remote computer. The SuperCPM source is currently MIA, and we only have incomplete parts.

After evaluating the current Main Menu CP/M and its one-way file-loading ability, we have concluded that the NABU RetroNET project would benefit from a newly modified CP/M (or compatible) operating system.

CP/M calls stubs in a machine's BIOS for I/O and file access. The goal with Cloud CP/M is to create a CP/M software BIOS that uses the HCCA to read/write files and directories on the Internet Adapter host. For example, if your Internet Adapter is running on Windows, the NABU would have access to a specific folder containing drives and filesystems that it can access.

[Watch Cloud CP/M Intro Video]

[Watch Cloud CP/M Stability Updates Video]

Worldwide NABU Network

Currently, the Internet Adapter can load HomeBrew applications from a Channel selection, which is nothing more than duplicating the Main Menu's download ability. Once we have a downloadable operating system with remote file storage (Cloud CP/M), we can modify the Internet Adapter to use cloud-based file systems that people can share publicly and privately. This will allow all NABU computers to have unlimited access to software that the community has contributed.

Cloud CPM Software

Utilities, utilities, utilities! Because CPM is unaware of the hardware, the operating cannot perform hardware-specific functions. This means CPM utilities made for Amstrad or TRS will not work on the NABU. However, most software that is not hardware specific will work, such as WordStar. But, many utilities are to be created to manage and leverage the IA and NABU-specific hardware.

Cloud GUI

CPM is a text-based operating system with many limitations, specifically how user areas were implemented. Because CPM did not have directories/folders, they created user areas, which isolates access to files in other user areas. This means utilities and files cannot be accessed across user areas. Also, the text-base is difficult for new users. DJ Sures is creating a Cloud GUI CCP replacement. 

[Watch Video]

Remote Multiplayer

With the NABU using the cloud as a remote file system, the cloud server can also host multiplayer network packet exchange. This would allow applications and games to send/receive packets to other recipients of the same Application ID. 

ESP32 Internet Adapter

By offloading the storage to the cloud, a PC as the Internet Adapter is no longer necessary. This functionality can easily be modified to run on an ESP32 Arduino-compatible microcontroller board. The ideal scenario would be to produce a PCB that connects directly to the NABU PC, not the HCCA port. This can be done as demonstrated by My Geek Hobby.