From: utzoo!decvax!harpo!utah-cs!lepreau Newsgroups: net.periphs,net.unix-wizards,net.bugs.v7 Title: CORRECTION: Able DH/DM rev E is fine, Unix v7 is wrong Article-I.D.: utah-cs.902 Posted: Fri Aug 13 15:30:12 1982 Received: Tue Aug 17 06:15:13 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@utah-20, harpo!utah-cs!lepreau