Skip to content

DZ11 / DZV11 — serial multiplexer

The DZ11 is DEC’s asynchronous serial multiplexer: several terminal lines behind one set of registers, a receive silo shared by all of them, and a transmit scanner that offers the program one ready line at a time. QUniLator models it from the DZV11 technical manual, EK-DZV11-TM-001. Each line runs over the network: a terminal program connects to a TCP port on the board, or the line dials out, or a browser terminal carries it. It is listed as dzv11, of type dzv11_c, and ships disabled.

RegistersCSR 760100; RBUF (read) / LPR (write) 760102; TCR 760104; MSR (read) / TDR (write) 760106
InterruptsReceive at vector 300, transmit at 304, both BR4. A receive interrupt is taken before a transmit interrupt standing at the same time
Receive silo64 characters with their line numbers. A character arriving at a full silo marks an overrun. With silo alarm enabled, every 16th character raises the alarm
LinesEight on the UniBone, four on the QBone. A line receives only while the scan is on (CSR bit 5) and its receiver is enabled in the LPR
Line speedBytes cross at the speed of the network. The speed, character length and parity the program writes to the LPR are accepted and do not slow the line
ModemEach line’s network end behaves as an auto-answer modem; see below
MaintenanceCSR bit 3 loops every line’s transmitter back into its receiver

With dtr_listen off, a client that connects to a line the guest has not answered rings it: the line’s ring bit stands in the MSR. The guest answers by raising Data Terminal Ready in the TCR, and carrier then stands in the MSR; on a line where DTR is already up, the call is answered at once. A guest that does no modem control never answers; the ring lapses after four seconds and carrier comes up on its own. When the guest drops DTR — a terminal driver hanging up — the client is disconnected; the line stays ready for the next caller.

  1. Enable dzv11. Every line listens on a TCP port of its own: line N on 4000 + N.
  2. Once the guest has opened the line — raised DTR on it, as a getty does — connect a terminal program to the board on that port, speaking Telnet: telnet <board> 4000 reaches line 0. Before that the port refuses callers; see dtr_listen.
  3. Each line can be set to another port, to a host:port it dials, or to ws for a browser terminal on the board’s WebSocket /ws/serial/dzv11/<N>. The Configurations screen shows one field per line for that. A line can be changed while the device runs; only that line’s client is dropped.

A line takes one client at a time. Lines given the same port share it, so a caller reaches whichever of them is free, and a caller arriving while every line on the port is busy is refused.

Four DZs can run at once: dzv11, dzv11b, dzv11c and dzv11d, at 760100, 760110, 760120 and 760130, with vectors 300, 310, 320 and 330, each listening on ports sixteen higher than the one before.

A guest that never raises DTR — VMS with a terminal set /NOMODEM is one — has to be given dtr_listen off, or its lines never take a caller.

An enable is refused when a line that is to listen at once cannot bind its port because another program holds it. A line waiting for DTR binds its port only when the guest raises DTR, so the enable does not test it.

  • DEC’s DZV11 diagnostic CVDZA (VDZAD3) runs its complete pass on a QBone with no errors.
  • On a UniBone, VMS V4.7 configures the eight lines as TTA0 to TTA7, all eight ports listen, and a client on line 3 or line 7 gets a login prompt.
  • On a QBone, 2.11BSD comes up multiuser with a getty on line 0, and a client on port 4000 gets its login banner.

What a configuration stores and an operator sets.

ParameterShortValueDefaultWhat it is
dtr_listendtrl0 or 11listen on a line’s TCP port only while the guest asserts DTR
tcp_role0 … tcp_role7r0 … r7text; on QBUS up to tcp_role3listenline n TCP role: ""/listen/connect/websocket
tcp_host0 … tcp_host7h0 … h7text; on QBUS up to tcp_host3emptyline n connect-out host
tcp_port0 … tcp_port7p0 … p7number; on QBUS up to tcp_port3—line n TCP port

What the device reports as it runs. A configuration does not store these.

ParameterShortValueWhat it is
rx0lamp … rx7lamprxl0 … rxl70 or 1; on QBUS up to rx3lampline n receive activity
tx0lamp … tx7lamptxl0 … txl70 or 1; on QBUS up to tx3lampline n transmit activity
dtr0lamp … dtr7lampdtl0 … dtl70 or 1; on QBUS up to dtr3lampline n data terminal ready
cd0lamp … cd7lampcdl0 … cdl70 or 1; on QBUS up to cd3lampline n carrier detect
ri0lamp … ri7lampril0 … ril70 or 1; on QBUS up to ri3lampline n ring indicator

It also carries the parameters under parameters every card on the bus has.

A line takes a caller only while the guest holds it open. With this on, a line’s TCP port is bound while the guest asserts Data Terminal Ready on it, and given up when DTR falls, which also ends a session in progress; a caller then reaches only a line the guest is ready for. Off, every line configured to listen does so from the moment the device is enabled. A guest that never raises DTR on a line, such as VMS with the terminal set /NOMODEM, needs it off. Takes effect at once.

tcp_role0 … tcp_role7, tcp_host0 … tcp_host7, tcp_port0 … tcp_port7

Section titled “tcp_role0 … tcp_role7, tcp_host0 … tcp_host7, tcp_port0 … tcp_port7”

Each line’s network end, line by line: tcp_roleN, tcp_hostN and tcp_portN for line N. listen accepts one client on the port, speaking Telnet with RFC 2217; connect dials host:port and dials again when the connection drops; websocket carries the line on the board’s WebSocket /ws/serial/<device>/<N>; empty leaves the line unconnected. Every line listens by default, line N of the first DZ on port 4000 + N, and each further DZ sixteen ports higher. The Configurations screen edits a line’s three as one field: a bare port listens, host:port connects, ws is the browser terminal. Lines given the same port share it: a caller reaches whichever of them is free. A line can be retuned while the device is enabled; the change drops that line’s client and leaves the others alone.

rx0lamp … rx7lamp, tx0lamp … tx7lamp, dtr0lamp … dtr7lamp, cd0lamp … cd7lamp, ri0lamp … ri7lamp

Section titled “rx0lamp … rx7lamp, tx0lamp … tx7lamp, dtr0lamp … dtr7lamp, cd0lamp … cd7lamp, ri0lamp … ri7lamp”

The dashboard’s signal lamps, one set per line: receive and transmit activity, Data Terminal Ready as the guest drives it, ring (a client has arrived and the line has not answered yet) and carrier (an answered call).