Tech Talk: ProRWTS Supercharges Nox Archaist

6502 Workshop's Nox Archaist
6502 Workshop's Nox Archaist
By: Mark Lemmert and Mike Reimer based on interviews with Peter Ferrie

During our adventures developing Nox Archaist we had the great pleasure of meeting Peter Ferrie (also known as qkumba).  After some discussions on the comp.sys.apple2 newsgroup, Nox Archaist became the test environment for a file system controller Ferrie recently developed called ProRWTS. We used the controller to incorporate hard drive support, design a game engine capable of supporting thousands of tiles graphics, and other features that would not have otherwise have been possible.

We sat down for an interview with Peter recently to learn more about ProRWTS.  We discovered that it is not only a ground breaking development for future Apple II games like Nox Archaist, but also for games written in the 1980s as well. ProRWTS allows virtually any disk-based game to obtain hard drive support via a port to ProDOS, which was not possible before for all games.

What is a File system Controller? Why Write One?

For many years, Peter Ferrie has been a top level anti-virus researcher for companies like Symantec and Microsoft by day, and a grand master 6502 assembly language programmer by night. He has worked on many present-day 6502 projects such as BitsyBye with John Brooks for ProDOS v2.4 (see previous issue) and 0boot with anonymous cracker 4am (see December 2015 issue).

Peter’s desire to create ProRWTS stemmed from his desire to make it possible for all Apple II games to be ported to ProDOS and ported in a way that doesn’t increase the system requirements to run the game. A port to ProDOS has been most practical way to add hard drive support to an existing game because hard drive support is built into the structure of the ProDOS file system and I/O controllers.  ProRWTS resolves some of the limitations of existing ProDOS ports including situations where titles were too large to be ported or the memory required to run the titles would increase.  Peter summed it up well when he remarked to us “Donkey Kong shouldn’t need 128kb of RAM to run”. We couldn’t agree more!

A major complication in porting games to ProDOS is that ProDOS takes up a lot of memory. ProDOS usually resides in the 16k region of memory known as bank switched RAM (the language card), which leaves only 48k of main memory available for programs.

Many games in the 1980s were created using custom boot loaders, which didn’t load any operating system at all. The assembled code would run on the “bare metal”, as it was called, because any interaction between the code and the hardware had to be done directly. The benefit of these boot loaders was that a lot more memory was available to be used by the game code since an operating system was not loaded.

Games using a bare metal boot loader sometimes would occupy more than 48k of main memory. This made it impossible to port them to ProDOS without moving ProDOS into the 64k auxiliary memory bank, which is not available on all Apple II systems. This is how games such as Impossible Mission and Arkanoid could require 128k of RAM to run after porting even though they originally only required 64k. From Peter’s perspective, if the original version of a game could run on an Apple II+ with 48k then the ported version should be able to as well. We totally agree.   

Additionally, some games such as Airheart and Rad Warrior originally required 128k of RAM to run. Since 128k was the maximum memory supported on the systems games like these were designed for, there was no memory available to load the ProDOS operating system and the original game code into memory at the same time. As a result, hard drive support for these games was not possible before ProRWTS was created.

Modern games being developed for the Apple II platform face the same challenges. We initially wrote a custom bare metal bootloader for Nox Archaist because our game engine requires 128k to run. Using this bootloader would have eliminated any possibility of hard drive support for us, just like the large games from the past.

ProRWTS solves these problems. As a file system controller, it provides read/write access to the ProDOS file system, much like the native RWTS for ProDOS. However, what makes ProRWTS unique is that it is designed to do this without ProDOS or any other operating system in memory. Thus, for the first time, games requiring 128k of RAM can now be ported to the ProDOS file system and run from hard drives.

To our knowledge, with ProRWTS taking up only 1K of memory, games using this controller will have more memory available for game code than any of the titles of the 1980s that had read and write disk I/O routines. There were a few games, such as Captain Goodnight that did not write any data to disk (i.e. to save the game), which had I/O controllers smaller than 1K. ProRWTS represents an opportunity to create innovative new gameplay mechanics due to its smaller size and other features, especially for those that need to write data to disk.

ProRWTS Features

Some of the key features include:

This post was originally published on this site.