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