On 2013-01-03 22:19, Johnny Billquist wrote:
On 2013-01-03 18:37, John Wilson wrote:
Trivia question: what are the major differences between programming
the DU11 and the DUV11? At least from the handbook descriptions, it
sounds like the DUV11's isochronous (= async?) mode works and the DU11's
doesn't, but that's the only difference I can see and I don't see how
it matters for DDCMP use. And yet, DECnet/RSX has different names for
them, as if it's using separate drivers for each.
If DECnet/RSX uses different names, then it is also definitely using
different drivers.
However, who knows if the actual contents of the drivers differ, or if
they just liked having different names for them. :-)
(I can check next week. Please remind me...)
Ok. Just checked.
There are about two differences between the DU and DUV driver in DECnet under RSX.
One of them is a simple optimization for the PDT-11. It's not strictly neccesary, but
apparently DEC thought the time gain was enough to make it worth exploiting. Code looks
like this:
.IF DF L$$SI1
MOVB @(R5)+,-(SP) ;;; COPY CHARACTER FOR WORD MOVE
MOV (SP)+,(R4) ;;; (SAVES 85 USECS ON PDT-11)
.IFF ; DF L$$SI1
MOVB @(R5)+,(R4) ;;; OUTPUT A CHARACTER
.ENDC ; DF L$$SI1
The other difference is probably more important. It appears there might be a hardware
glitch on the DUV-11. Code looks like this:
.IF DF L$$SI1
INHIB$ ;;; LOCK OUT INTERRUPTS
.ENDC ; DF L$$SI1
BIC #TXINT,(R3) ;;; CLEAR TRANSMIT INTERRUPT ENABLE
.IF DF L$$SI1
ENABL$ ; ENABLE INTERRUPTS AGAIN
.ENDC ; DF L$$SI1
the only way I can understand that code is that there might be a spurious interrupt when
manipulating the interrupt enable bit on the controller.
All else in the code is the same between the two controllers, and (as you might have
guessed) the source code is shared, with just a conditional selecting which version to
assemble.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic
trip
email: bqt at softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" -
B. Idol