This was the FOOBA (Feature-light Operation Of Bennett's Algorithm) project. It was intended to be a small, efficient implimentation of Bennett's 1989 algorithm as described in Dr. Frank's project page that would run on a natively reversible platform (the Pendulum architecture). It was designed to simulate the Motorola M68HC11. Not the simplest irreversible architecture, but still very basic and familiar to me through EE classes at UF. I had no plans to simulate the interrupt timers or analog hardware.

Unfortunately, it never actually worked. In theory, it was going correctly, but I attempted it as a senior project and did not have time to complete it all. In addition, the R language compiler was still very much in development - which did nothing to speed FOOBA development.

This is a collection of the work I completed for the project. I am putting it here in the hope that someone will be able to pick up where I left off. The basic design work of the simulator was done. It just required completion of the various opcodes needed to actually run a working program.

Of primary interest to people continuing my research would be my Final Report. This contains a description of my work, as well as bibliography of sources I used. For a fun multimedia overview, try the PowerPoint presentation. Note: I'd scan these before opening them. I don't think they're virused, but they're Office files so you never know.

I also have some source files available if you want a head start on coding:

  • opcount - a small C++ program to count the opcodes in a compiled HC11 program. this was used to determine which opcodes needed to be simulated to run my example programs.
  • bin2ra - converts a binary image of an HC11 ROM (the compiled program code) into an R language array definition fragment. The simulated program needed to be directly embedded into the simulator code since no one had yet developed reversible hard-drives for the Pendulum platform.
  • FOOBA.R - the FOOBA main source code in R. I left a few comments if you want to finish/debug it. keep in mind that this looked like it was working, but the R compiler was still being worked on while I was doing this, so it has never actually been built or ran. to finish this, you would need to finish implementing the various opcodes necessary to run a program and implement the simulation segment layer of the program as described in the report.

    Additionally, there are some miscellaneous files lying around here. I think these are mostly leftovers lying around from Dr. Frank helping me work on the project. It may be interesting to look through them. It may be a waste of time. It may make you doubt your own sanity and the mercy of God. I don't know.

    CJ Vermette