mirror of
https://github.com/pkoning2/decstuff.git
synced 2026-01-11 23:52:55 +00:00
124 lines
4.4 KiB
Plaintext
124 lines
4.4 KiB
Plaintext
Software DDCMP in RSTS/E V10
|
|
|
|
NODVR, a software DDCMP driver was written for V9.6 as part of PRO
|
|
support (an unreleased and unsanctioned effort). In V10.0 it was made
|
|
part of the released product. These notes were reverse engineered
|
|
from the V10.1 code, though it is likely they are valid also for
|
|
V10.0.
|
|
|
|
NODVR is an "auxiliary driver", essentially a software coprocessor for
|
|
a standard device. In this case, it is associated with a terminal
|
|
line, and hooks to the terminal driver to become an alternate
|
|
character processor. Any physical terminal port other than the
|
|
console can be operated in DDCMP mode, but the PRO display,
|
|
pseudo-keyboards, and LAT terminals cannot.
|
|
|
|
Unlike other DDCMP devices, NODVR does not support use from
|
|
application programs. It can only be used as a DECnet data link.
|
|
|
|
Enabling NODVR support in RSTS.
|
|
|
|
While the software is built into the OS during SYSGEN, it is not
|
|
loaded unless enabled by a flag in the system configuration file
|
|
[0,1]CONFIG.SYS. To set this flag:
|
|
|
|
$ set system/async
|
|
|
|
The change will take effect after a system reboot. You can use "show
|
|
system" to confirm that the software DDCMP driver is loaded.
|
|
|
|
Starting DDCMP on a terminal line.
|
|
|
|
Running the DDCMP driver on a given terminal line is a two step
|
|
process. The first step enables DDCMP mode by binding an NODVR unit
|
|
to the terminal line. The second step starts the DDCMP state machine
|
|
for that unit.
|
|
|
|
1. Set DDCMP mode for a terminal
|
|
|
|
Before this is done, either the terminal line must be not owned, or it
|
|
must be owned (assigned) by the requesting job.
|
|
|
|
To enable DDCMP mode for a given terminal line, issue this DCL
|
|
command:
|
|
$ set term kb<x>/proto=ddcmp
|
|
|
|
Alternatively in a program, open NO0: and issue a .SPEC request with the
|
|
following arguments:
|
|
XRB: 3 (Function code: set DDCMP mode)
|
|
XRBC: Terminal unit number to set to DDCMP mode
|
|
|
|
On successful completion, the terminal line is now associated with the
|
|
DDCMP driver. As part of this, an NO<x>: DDB has been created, where
|
|
<x> is the terminal line unit number specified. The terminal line is
|
|
now marked as owned by DECnet (owner job appears as "TRN" in the SHOW
|
|
DEVICES/ALLOC command).
|
|
|
|
2. Start DDCMP circuit
|
|
|
|
Issue a DECnet circuit start request, which is a .MESAG with the
|
|
following arguments:
|
|
FQFIL = -21 (Function code: circuit control)
|
|
FQSIZM = 3 (Subfunction: circuit on)
|
|
FQ$MFL = Routing circuit flags [11]
|
|
LF.VER ==> Verification required
|
|
LF.ANS ==> Answer mode
|
|
LF.RST ==> Restartable (512)
|
|
LF.TRA ==> Trace for this circuit
|
|
FQNAM1 = Originating queue limit [7]
|
|
FQNAM1+2 = Recall timer [9]
|
|
FQBUFL = Hello timer interval [15]
|
|
FQMODE = Operational mode (see below) [17]
|
|
FQFLAG = Circuit cost [19]
|
|
FQ$CTM = Counter timer [21]
|
|
FQDEV,
|
|
FQDEVN = Device to use ("TT" in FQDEV, <x> in FQDEVN) [23..26]
|
|
FQCLUS = Buffer quota (byte) [27]
|
|
|
|
Numbers in [ ] indicate character positions in the Basic-PLUS syscall.
|
|
|
|
FQMODE bit 14 (8192) set indicates a request for sync mode. This is
|
|
only valid on a PRO, and then only for the terminal line corresponding
|
|
to the communication port. No other mode bits apply to the async DDMP
|
|
driver.
|
|
|
|
Make sure the XRB is zeroed since this is not a data transferring case
|
|
of .MESAG. Note that the device name is given as "TT" not "KB" or
|
|
"NO"; the DECnet circuit start code recognizes this name as a special
|
|
case.
|
|
|
|
Stopping DDCMP
|
|
|
|
This involves the reverse of the two steps given above.
|
|
|
|
1. Stop DDCMP circuit
|
|
|
|
Issue a DECnet circuit stop request, which is a .MESAG with the
|
|
following arguments:
|
|
FQFIL = -21 (Function code: circuit control)
|
|
FQSIZM = 4 (Subfunction: circuit off)
|
|
FQDEV,
|
|
FQDEVN = Device to use ("TT" in FQDEV, <x> in FQDEVN)
|
|
|
|
Make sure the XRB is zeroed since this is not a data transferring case
|
|
of .MESAG. Note that the device name is given as "TT" not "KB" or
|
|
"NO"; the DECnet circuit start code recognizes this name as a special
|
|
case.
|
|
|
|
2. Disable DDCMP mode for the terminal line
|
|
|
|
To return the terminal line that was used to normal operation rather
|
|
than being bound to the Async DDCMP driver, use the DCL command:
|
|
|
|
$ set term kb<x>/proto=none
|
|
|
|
Alternatively in a program, open NO0: and issue a .SPEC request with the
|
|
following arguments:
|
|
XRB: 4 (Function code: set normal mode)
|
|
XRBC: Terminal unit number to revert to normal mode
|
|
|
|
On successful completion, the terminal line is no longer associated
|
|
with the DDCMP driver. Any resources allocated for DDCMP mode have
|
|
been freed. Ownership of the terminal line is returned to what it was
|
|
before DDCMP mode was set.
|