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