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 .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 [-d ] 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.