NABU RetroNET Development
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 goals to achieve this are defined on this page.
If you have experience in z80 assembly, C, CP/M, and other related skill sets, we'd be happy to have you join our efforts.
Current Activity That You Can Help With
- We now have a Cloud CP/M operating system that uses the remote file system for storage rather than requiring floppy drives. This was the original intent of the NABU Network in 1982. The next step is optimizing and finalizing the Cloud CP/M for people to use. After that, DJ Sures would like to create a new website that can upload and manage disk images that others can use. So, if you feel like wanting to create a website with this functionality, let me know :). [watch cloud cp/m intro video] [watch stability updates video]
Load a program
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
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
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]
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.
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.
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.
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.
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. The first demonstration of this was DJ's Bad Apple Demo.
Load Custom Software in Main Menu
The Main Menu and DOS is 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 v1
The Main Menu and DOS is a modified CP/M, limited by not having local storage capabilities. 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 display and file storage. 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.
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.
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.