+.NH
+Carrying over local software
+.PP
+With the massive changes made to the system, both in organization
+and in content, it may take some time to understand how to
+carry over local software. The majority of this document is
+devoted to describing the contents of each important source file
+in the system. If you have local software other than device
+drivers to incorporate in the system you should first read this
+document completely, then study the source code to more fully
+understand the changes as they affect you.
+.PP
+Locally written device drivers will need to be converted to
+work in the new system. The changes required of device drivers are:
+.IP 1)
+The calling convention
+for the driver \fIioctl\fP routine has changed. Any data
+copied in or out of the system is now
+done at the highest level inside \fIioctl\fP\|(). The third
+parameter to the driver \fIioctl\fP routine
+is a data buffer passed by reference. Values to be
+returned by a driver must be copied into the associated buffer
+from which the system then copies them into the user address space.
+.IP 2)
+The \fIread\fP, \fIwrite\fP, and \fIioctl\fP entry points in
+device drivers must return 0 or an error code from <\fIerrno.h\fP>.
+.IP 3)
+The \fIread\fP and \fIwrite\fP entry points should no longer
+reference global variables out of the user area. A new \fIuio\fP
+parameter is passed to these routines which should, in turn,
+be passed to the \fIphysio\fP\|() routine if the driver supports
+raw i/o.
+.IP 4)
+Disk drivers which are to support swapping/paging must have
+a new routine which returns the size, in sectors, of a disk
+partition. This value is used in calculating the size of
+swapping/paging areas at boot time.
+.IP 5)
+Code which previously used the \fIiomove\fP, \fIpassc\fP, or
+\fIcpass\fP routines will have to be modified to use the
+new \fIuiomove\fP, \fIureadc\fP, and \fIuwritec\fP routines.
+The new routines all use a \fIuio\fP structure to communicate
+the i/o base, offset, count, and segflag values previously
+passed globally in the user area.
+.IP 6)
+Include files have been rearranged and new ones have
+been created. Common machine-dependent
+files such as \fImtpr.h\fP, \fIpte.h\fP, \fIreg.h\fP,
+and \fIpsl.h\fP are no longer in
+the ``h'' directory; see below under organizational changes.
+.IP 7)
+The handling of UNIBUS resets has changed. The reset routine
+should no longer deallocate UNIBUS resources allocated to
+pending i/o requests (this is done in the \fIubareset\fP routine).
+For most drivers this means the reset routine simply needs to
+invalidate any \fIub_info\fP values stored in local data
+structures to insure new UNIBUS resources will be allocated
+the next time the ``device start'' routine is entered.