This file is part of a ZIP archive that was downloaded from
http://www.idleloop.com/robotics/Twisty/

The code provided here was writted by Cathy Saxton (cathy@idleloop.com).
It comes with no warranty or support.
It is distributed under the GNU General Public License.
See GNU-GPL.txt or http://www.gnu.org/copyleft/gpl.html for details.

Please refer to the following resources to understand the code that
interacts with the Atmel processor:

	WinAVR: doc\avr-libc\avr-libc-user-manual\index.html
		(or doc\avr-libc\avr-libc-user-manual.pdf)
	Atmel's documentation for the ATmega-16 processor
		(download from atmel.com)

Here is some basic information about the structure of my code
(see the web page above for details about its purpose):

There is a basic class (IOP) for input/output. It defines a pin/port
based on the register and bit, and provides useful methods.

There are classes for each type of signal (analog input, digital
input/output). The list of specific devices (button, LED, etc) is defined
as an enum, with the corresponding register/bit details in a static member
array (both are defined in iop.h).

Many of the classes have init code that needs to be run before the objects
can be used. The running of the init code is controlled in the constructor
via a static member variable.

maze.cpp/h -- this is the code that actually solves the maze
main.cpp -- this code communicates with the sensors to determine
	what Twisty is seeing and asks the maze code what to do
eyes.cpp/h -- handles dealing with light sensors
iop.cpp/h -- input/output pin/port shared code
di.cpp/h -- digital input (e.g. button)
ai.cpp/h -- analog input (e.g. light sensor)
do.cpp/h -- digital output (e.g. LED)
mtr.cpp/h -- motor controls
timer.cpp/h -- timer library
comm.cpp/h -- serial communications
eeprom.cpp/h -- EEPROM reading/writing
abc.h -- the "abc's" of programming: #defines, typedefs, etc.
debug.cpp/h -- useful debug stuff
heap.cpp, makefile -- stuff for building
