CORRECTION: Able DH/DM rev E is fine, Unix v7 is wrong

utzoo!decvax!harpo!utah-cs!lepreau utzoo!decvax!harpo!utah-cs!lepreau
Fri Aug 13 15:30:12 AEST 1982


Not too surprisingly it turns out that Able is right and the v7 driver
is wrong.  The following was found by others here and Ken O himself, who
stopped by while I was at Sigplan.  Now that's not bad, when the president
of the peripherals company drops by to help you debug your drivers!
(No this is not a paid advt and he's not giving us free boards...)

According to the DM11 specs in the 1976 DEC peripherals handbook (the last
decent one) "The LINE register must not be changed until BUSY is cleared....
[BUSY] is set when Scan is cycling, Reset at end of Clear Scan or Init....
Must be tested for 0 before changing the registers."

Well, the 4.1 driver is ok but the v7 and 2bsd ones are not.  Here are the
changes to the v7 dhdm.c:

Add this line:
+ #define DMBUSY	020

And these 3 lines go right before each spot the line reg is set, i.e. before:
  	addr->dmcsr = d&017;
to get:
+ 	addr->dmcsr &= ~SCENABL;
+ 	while (addr->dmcsr & DMBUSY)
+ 		;
  	addr->dmcsr = d&017;

There are 3 such places, 2 in dmopen and 1 in dmctl.

-Jay Lepreau, lepreau at utah-20, harpo!utah-cs!lepreau



More information about the Net.bugs.v7 mailing list