Modifications to Lisa Xenix 3.0 to make it more compatible with X/ProFile firmware 121-03

(last update 2006-02-28)


The Lisa Xenix driver deviates from the protocol used by the various Apple ProFile drivers in a few ways. These deviations include:

Since some X/ProFile operations are much faster than the original Apple ProFile, the result of these deviations (the last 2 in particular) is that the Lisa freezes when the stock Xenix driver attempts to access an X/ProFile.

The patches below are suggested for those wishing to experiment with Xenix on an X/ProFile with firmware 121-03.


  1. A future update of the X/ProFile firmware may make these patches unnecessary. However, it appears this would require a decrease in performance to satisfy the "minimum response time" of the stock Xenix driver, so patches may be the preferred/required approach even if an update is available.

  2. In spite of hdinit asking what size your hard disk is, detailed investigation into Xenix 3.0 reveals that it assumes that a Lisa 2/10 has a 10 MB drive, and a Lisa 2/5 has a 5 MB drive. This decision is based on the ID of the I/O Board ROM (A8 for a Lisa 2/5, and 88 for a 2/10).

    As a result, you should select 5MB if you are using a Lisa 2/5 (I/O EPROM A8), and 10MB if you are using a Lisa 2/10 (I/O EPROM 88).

  3. Although the stock driver appears to work with an original 5 MB Apple ProFile (using Z8 version 3.98), in some cases Xenix reports handshake errors (full side-effects on operation are unknown at this time). Perhaps the Xenix 3.0 driver was written for an earlier version of the Apple ProFile Z8 software and the later versions also suffer from the differences. Proceed with care.

Lisa Xenix 3.0 ProFile Driver Patches as of 2006-02-10
Using FEdit or equivalent, make the following modifications to a copy of the Xenix Boot Floppy:

NOTE: Write your changes to disk before performing a new search or changing sectors.
FEdit does not warn you if you have made changes that will be lost by changing sectors.

a) To always send 6 command bytes
Sector:   $22 (#34)
Search:   0CAE 0000 0001 0010 6614 177C 000A 0009 1B7C 0002 0001 177C 0004 0009
Replace:  177C 000A 0009 177C 0004 0009 0CAE 0000 0001 0010 6608 1B7C 0002 0001
Sectors:  $CF (#207), $183 (#387)
Search:   082C 0000 0003 6714 177C 000A 0009 1B7C 0002 0001 177C 0004 0009
Replace:  177C 000A 0009 177C 0004 0009 082C 0000 0003 6708 1B7C 0002 0001
b) To not assert CMD before BSY interrupt is enabled
Sectors:  twice in $22 (#34), twice in $CF (#207), $183 (#387), $184 (#388)
Search:   0079 08EB 0004 0001
Replace:  0079 4E71 4E71 4E71 (change 6 bytes)
c) To assert CMD after BSY interrupt is enabled and accept fast response
Sectors:  $22 (#34), $CF (#207), $183 (#387)
Search:   0200 0002 0C00 0002 6680
Replace:  4E71 08EB 0004 0001 6080 (change 9 bytes)