*** WARNING *****
*** WARNING *****

This directory is obsolete in the RTLinux implementation and is only
included for reference.  Many robot-specific parameters are contained in 
these files, and others wishing to implement RTLinux on PUMA260, 760 or 
other robots may want to refer to the files contained here.

This dirctory is not in the "make" path for RCCL installation 


Original Lloyd README:

This directory contains the code for the program affectionately known as
"moper", which is loaded into the PUMA robot controller to take the place of
VAL and act as data concentrator.

The important files in this directory are described below.

Files related to 'moper':

moperx.c:
	This is the main body of the monitor program, which sets up the
	various software interrupts and timing events that drive the program.
	It also contains the code for a simple interactive diagnostic monitor
	that runs on the LSI11's console line while moper is in operation.

rbtControl.c
	Robot independent communication routines. These are the counterparts
	to the RCI robot interface functions, and are called from functions
	inside moperx.c.

puma.c
	Puma specific interface routines, which do things like get encoder
	values, specify a target encoder position, and turn the arm power on.

pumaInterface.h
	Definitions generic to the interface between moper and the actual
	joint servos. These definitions are generic to all PUMA robots. 

puma260.c
puma560.c
puma760.c
frank.c
goldenChild.c
Bachus.c:
	Robot-specific config files. 

	These contain robot specific tables, definitions, and routines.
	There is one of these files for each robot in the system, and we have
	named the file after the robot in question. These files contain a
	description of the I/O devices present on the controller, robot
	specific parameters, and a few interface robot or device interface
	routines that are specific to the robot or controller in question.

	puma260.c, puma560.c, and puma760.c are fairly generic files for
	the PUMA 260, 560, and 760 robots. frank.c and goldenChild.c are
	specific files for the McGill University robots "frank" and
	"goldenChild". "Bachus.c" describes the PUMA 560 at the University
	of Illinois.

armtypes.h
	Definitions for the 3 types of PUMA arm.

drvj.c
drv11.c
	Host interface drivers, used to communicate between the VAX and 
	the LSI11. drv11.c is the driver for a DRV11 parallel port, and
	drvj.c is the driver for a DRV11-J parallel port. These routines are
	the counterparts of the RCI device driver routines. They are called
	directly by functions in moperx.c, and either sending or receiving
	packets of data which are passed from or to the interface functions
	defined rbtControl.c. 

mk1_std.c
mk1_old.c
mk2.c
mk3.c
	Definitions specific to the different versions of Unimate controller.
	These include erro bits, I/O status bits, and parameters for the
	joint servos. 

	mk1_std.c 	- Mark I controller at McGill.
	mk1_old.c	- old version Mark I controller at McGill.
	mk2.c		- generic Mark II controller
	mk3.c		- generic Mark III controller

mk1_std.260.c
mk1_std.560.c
mk1_old.560.c
mk1_old.260.c
mk2_std.560.c
mk2_std.260.c
mk3_std.560.c
mk3_std.260.c
mk3_760.760.c
	Tables describing the parameters to be downloaded into the joint
	servos for various controller/robot combinations. The table in these
	files is incorporated into the appropriate <robot>.c file for the
	robot in question.

	mk1_std.260.c		- PUMA 260 on Mark I at McGill
	mk1_std.560.c		- mk1_std.260.c with 560 parameters
	mk1_old.560.c		- PUMA 560 on old Mark I at McGill
	mk1_old.260.c		- mk1_old.560.c with 260 parameters
	mk2_std.560.c		- PUMA 560 on generic Mark II
	mk2_std.560.c		- mk2_std.560.c with 260 parameters
	mk3_760.760.c		- PUMA 760 on Mark III at GE/ATL
	mk3_std.560.c		- PUMA 560 on new flavour Mark III at
				  University of Illinois
	mk3_std.260.c		- currently same as mk3_std.560.c

sensorIO.h
sensorIO.c
	Generic senor I/O routines, mainly for working with parallel ports and
	serial line devices.

The following files constitute the 'microkernel' with which moper (and
all other standalone programs in the directory) are written. Porting
moper to a different system would largely be an exercise in replacing the
services provided by the microkernel with system calls on the target system.

locore.c
	The LSI11 micro kernel. This is the vector table and system services
	used by moper. 

kernel.c
	Micro kernel support routines.

serialDev.c
	A set of microkernel routines that provide a very crude serial line
	interface.

serialDev.h
	Definitions related to the microkernel serial interface.

sys.h
	Definitions related to the microkernel.

exit.c	
	System level exit and panic routines.

end.s	
	Special file defining the loader symbol _end.

lsi11_02.h
lsi11_23.h
lsi11_73.h
	Defines the CPU type for the moper. The appropriate file should be
	included by each robot config file.
	The LSI11-73 (used on the more recent Unimation controllers) is
	special because (1) it has extensive memory mapping capabilities, and
	(2) it has a clock that must be	explicitly turned on in order to work.

Programs which are down loaded into the robot controller by themselves.
The downloading may be done using the program 'down', with an entry
point and load address of 10000 octal:

	down -e 10000 -a 10000 <file> [-d <serialLine>]

dumpRam.c
	Program for dumping out the contents of the RAM in the joint servo
	controllers. We only use this when we have to get into the joint
	servos and figure out what is going on.

pendantTest.c
	Stand alone program to investigate the protocal associated with the
	teach pendant.

drivertest.c
	Stand alone test program for the host interface driver. Run this
	along with the RCI program drivers/driverTest.

interrupt.c
	Stand alone program fro sending interrupts to the VAX.

adc.c
	An old program used to read from an analog to digital converter.
