backstro@silver.bacs.indiana.edu (Dave White) (03/08/88)
In response to a number of requests, here are the diffs needed to
bring up MINIX-PC on a Zenith Z-150 running an Adaptec ACB-2070A
controller and using a Seagate ST-238 drive.
The ACB-2070A looks, acts and smells a lot like the standard XT
controller; Adaptec's documentation claims it will run PC/IX! In any
case, Dan Dugger's Zenith mods were installed first, and left in when
the other patches brought the drive up. Why fix it if it isn't broken?
=== cut here, apply to /bin/sh ===
sed 's/^X //' >winidiff <<SHAR-EOF
X 1a2,17
X > * This version of the driver contains Dan Dugger's Z-150 modifications
X > * to the com_out() function.
X > *
X > * It also contains some minor hacks to support the Adaptec ACB-2070a
X > * RLL controller, marked with a HERE.
X > *
X > * things hacked so far:
X > * NR_SECTORS changed from 0x11 to 0x19 -- 25 sectors/track
X > * things to check further:
X > * are ports the same for IBM/DTC and ACB2070a?
X > * -- apparently
X > * are we reading the partition table correctly?
X > * -- we're ignoring it for the moment
X > * how should we handle the on-disk parameter [BIOS?]
X > * -- find out from Adaptec how to read the bugger
X > *
X 60a77
X > #if 0
X 62c79,81
X <
X ---
X > #endif
X > /* HERE */
X > #define NR_SECTORS 0x19 /* number of sectors per track, Adaptec */
X 526a546,569
X >
X > /*
X > From: n0ano@wldrdg.UUCP (Don Dugger)
X > Date: 13 Apr 87 17:28:28 GMT
X > Organization: Wildridge Consulting, Boulder, CO
X >
X > Having recently installed MINIX on my Zenith 150 I discovered that
X > I had a read-only hard disk. When writing, every few blocks would
X > confuse the driver which would try to reset the disk (a very lengthy
X > process) and would frequently not write out the block. After debugging
X > the Zenith BIOS I came up with the following fix which seems to correct
X > the problem. Using this fix I have copied all of the MINIX source
X > to my hard disk and I've recompiled the kernel about a half-dozen
X > times, all with no errors. The fix is a new version of routine
X > `com_out' for the file `kernel/wini.c'. Just replace `com_out' with
X > this one, recompile the kernel and the hard disk should work.
X >
X > Don Dugger
X > Wildridge Consulting
X > ...nbires!onecom!wldrdg!n0ano
X >
X > */
X >
X >
X 535d577
X < port_out(WIN_SELECT, mode);
X 537c579,580
X < for (i=0; i<MAX_WIN_RETRY; i++) {
X ---
X > port_out(WIN_SELECT, mode);
X > for (i=0; i<300; i++) {
X 539c582
X < if ((r & 0x0F) == 0x0D)
X ---
X > if (r & 8)
X 542c585
X < if (i == MAX_WIN_RETRY) {
X ---
X > if (i == 300) {
X 547c590,605
X < for (i=0; i<6; i++)
X ---
X > for (i=0; i<6; i++) {
X > for (;;) {
X > port_in(WIN_STATUS, &r);
X > if (r & 1)
X > break;
X > if ((r & 8) == 0) {
X > w_need_reset = TRUE;
X > unlock();
X > return(ERR);
X > }
X > }
X > if ((r & 0xe) != 0xc) {
X > w_need_reset = TRUE;
X > unlock();
X > return(ERR);
X > }
X 548a607
X > }
X 550,555c609
X < port_in(WIN_STATUS, &r);
X < if (r & 1) {
X < w_need_reset = TRUE;
X < return(ERR);
X < } else
X < return(OK);
X ---
X > return(OK);
SHAR-EOF
sed 's/^X //' >fsckdiff <<SHAR-EOF
X 9a10
X > #define HERE /* fixes for Adaptec ACB-2070a */
X 11d11
X <
X 1852a1853,1856
X > #ifdef HERE
X > cylsiz = 100; /* 4 heads -- ST-238-specific */
X > tracksiz = 25;
X > #else
X 1854a1859
X > #endif
SHAR-EOF
--
backstro@silver.bacs.indiana.edu