Steps to Installing the Driver


These steps and the Makefile (Listing 3) assume you have installed the sources in /usr/sys/mpu.

1. Find the appropriate IRQ and I/O address. Use the XENIX utility vectorsinuse to make sure there will be no conflicts.

2. Set MPU switches.

Log in as yourself.

3. Set VECTOR and BASE in mpu.c (Listing 2) to correspond with the board configuration. If the board is set for IRQ 2 on an AT, set VECTOR to 25, otherwise set VECTOR to the actual vector number.

4. Compile mpu.c by running

make mpu.o
Become superuser and change to /usr/sys/conf for the following steps.

5. Save copy of working kernel

cp /xenix /xenix.works
If the new kernel doesn't boot, you can boot off the old kernel by typing xenix.works at the Boot: prompt.

6. Save a copy of link_xenix, then edit link_xenix, inserting ../mpu/mpu.o after c.o.

7. Determine the next available major device number.

./configure -c -j NEXTMAJOR
This will display the next major device number for a character device.

8. Configure the new driver.

./configure -a mpuinit mpuopen
\\ mpuclose mpuread mpuwrite \\
mpuioctl mpuintr mpuhalt mpupoll
\\ -c -m MAJOR -1 6 -v VECTOR
Substitute the major device number found in step 7 for MAJOR, and substitute the mapped vector number for VECTOR. The configure line above is a single command line. Do not include the backslashes or newlines when you enter the command.

9. Link a new kernel

./link_xenix
This produces a new kernel named /usr/sys/conf/xenix.

10. Create the device node

/etc/mkn0d /dev/mpu c MAJOR 0
chmod 666 /dev/mpu
Again, substitute the actual major device number for MAJOR.

11. Copy the new kernel to /xenix and boot the new kernel

cp xenix /xenix
sync; sync; reboot
12. Confirm the driver is installed by watching the device listing. An entry for mpu should be displayed showing the I/O address and IRQ, among other things. If the message MPU not found at 00000XXX is displayed, check the card configuration, the source defines, and check for interrupt or address conflicts.