Trailing-Edge
-
PDP-10 Archives
-
de-10-omona-v-mc9
-
netprm.mac
There are 13 other files named netprm.mac in the archive. Click here to see a list.
UNIVERSAL NETPRM COMMUNICATION DEVICE INDEPENDENT NETWORK SERVICE ROUTINES - V3013
SUBTTL D. TODD / D. MCCLURE 10 OCT 78
SEARCH S,F
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1974,1975,1976,1977,1978 BY DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
XP VNETPRM,3013 ;PUT VERSION NUMBER IN GLOB AND LOADER MAP
COMMENT\ ;;;REVISION HESTORY
V0 ;INITIAL PRODUCT IMPLEMENTATION
\
COMMENT\
Overview
The goals of this project are to provide a reliable, high throughput
synchronous front end, and remote station for the 602 DECsystem-10
monitor. It is also a goal of this project to be compatible with the
current NCL effort under RSX11D.
The DAS82 is a PDP-11 based remote station for the DECsystem-10. The
DAS82 communicates with the DECsystem-10 via a synchronous line running
at speeds up to 9600 baud. The DAS82 has a 300 cpm card read, 250 lpm
line printer, and 32 asynchronous lines.
The DAS85 is a PDP-11 based communications front end for the
DECsystem-10. The DAS85 communicates with remote stations with up to 16
synchronous lines running at up to 9600 baud each, aggregate baud rates
up to 50 kilobaud.
Hardware Configurations
01.1 DAS82
A DAS82 includes:
1.) PDP-11/40 processor
2.) KW11 clock
3.) 16k core memory
4.) interface for a console tty
5.) KG11
6.) up to 16 DQ11 synchronous line interfaces
7.) LP11 132 col line printer
8.) CR11 card reader
9.) 2 DH11's
01.2 DAS85
A DAS85 includes:
1.) PDP-11/40 processor
2.) KW11 clock
3.) 16k core memory
4.) interface for a console tty
5.) KG11
6.) a DL10 interface
7.) up to 16 DQ11 synchronous line interfaces
DECsystem-10 user interface
03.0
This project shall make use of the "station" concept used in the DECSYNC
protocol DC75 and DC72.
03.1 MONGEN changes.
In 507 and older monitors MONGEN was told specific device configurations
and station numbers. For this project MONGEN will be changed to accept:
1.) Node # for DECsystem-10 and node # for DAS85.
2.) Maximum # of stations.
3.) Maximum # of station tty's.
4.) Maximum # of station LPT's, CDR's.
5.) Maximum # of station tasks.
03.2 Monitor Commands
This project will require the addition of a monitor command "NODE" (or
perhaps "ASSIGN"). The general format will be:
ASSIGN nodename(nnn)_ device: logical-name
e.g.:
ASSIGN SYS525_ LPT1: OUTPUT
ASSIGN 55_ CDP: FOO
ASSIGN 3_ JOB:LPTSPL BARF
much as ":" is used as a delimiter for device names.
03.3 Monitor Calls
;a new uuo will be implemented. The call will be:
MOVE AC,[function,,adr]
CALLI AC,#
error return
success return
. . .
ADR: WORD COUNT
# ;NODE NUMBER
;DEVICE NAME
;logical name
If a device block for the device does not yet exist, a device block will
be built. A connect will be done to the remote device.
NCL Philosophy
04.0 NCL PhILOSOPHY
NCL networks consist of two type, "sequential" and "nonsequential".
In a sequential network there is at most one path from any node to any
other node. A sequential node whose DDCMP acks a message is committed
to pass the message on in order to its destination. The message may
only be discarded if the destination has died.
In a nonsequential network there may be many paths from any node to any
other node. A message may become lost and require retransmission (e.g.
an intermediate node DDCMP acks a message and then dies). Further
messages may arrive out of order in a nonsequential (e.g. two nodes
have two DDCMP links between themselves). A nonsequential node whose
DDCMP acks a message should pass the message on to it destination, but
may discard it.
Nonsequential nodes need to determine whether their messages have
arrivied at their destinations, so nonsequential nodes maintain an
end-to-end numbering scheme for all important messages. The NCL-REP,
NCL-ACK, and NCL-NAK messages are used to maintain the message
numbering.
For nonsequential networks it is important that messages not lay around
too long (consider the case of node A sends message 1 to node B and then
retransmits and finally message numbers wrap around and the second copy
of message 1 pops out and node B beleives the old message 1 is the new).
So in nonsequential networks, if the DDCMP routine is unable
successfully transmit a message to the next node within a given quantum
of time (we will use 15 seconds), the message will be disposed of and
DDCMP message numbers will be realigned using the RESET and RESAK
messages. Any node may calculate the maximum length of time a message
will be outstanding ( 15 seconds times max number of links to
destination), and will use a this time for its NCL-REP timer.
Software Configuration
02.0
This software will be integrated into the 6.02 monitor, and will be
available as an LIR to the 6.01/5.07 monitor.
02.1 Assembling DAS82 code.
The DAS82 code is assembled with a configuration file, C.P11. A typical
C.P11 would be:
FT.D82=1 ;SO WE DAS82 CODE
T0XS=^D2400 ;TRANSMIT SPEED FOR TTY #0 IS 2400 BAUD
T0RS^D110 ;RECEIVE SPEED FOR TTY #0 IS 110 BAUD
T10DSL=1 ;LINE 10 IS A DATASET LINE
T12ADL=1 ;TTY LINE 12 IS AN AUTO DIAL LINE
\
SUBTTL NCS FIELD DEFINATIONS
;USE THE PDP-11 FORMATS TO DEFINE PDP-10 BIT
;IE:
B0==1B35 ;LOW ORDER BIT
B1==1B34 ;..
B2==1B33
B3==1B32
B4==1B31
B5==1B30
B6==1B29
B7==1B28 ;HIGH ORDER BIT USED FOR A FLAG OR EXTENDING A FIELD
B8==1B27 ;LOW ORDER BIT OF NEXT LEFT CHARACTER
B9==1B26
B10==1B25
B11==1B24
B12==1B23
B13==1B22
B14==1B21
B15==1B20
B16==1B19 ;HIGH ORDER BIT OF SECOND LEFT CHARACTER
B17==1B18 ;LOW ORDER BIT OF SECOND WORD FIRST CHARACTER
B18==1B17
B19==1B16
B20==1B15
B21==1B14
B22==1B13
B23==1B12
B24==1B11 ;HIGH ORDER BIT OF SECOND WORDS FIRST CHARACTER
COMMENT \
SYNCHRONOUS LINE PROTOCOL
05.1 DDCMP MESSAGES (all but DATA are preceded by synchronization
sequence.)
DATA -- SOH CC1 CC2 MSG# NMSG A0 BCC1 n*DATA BCC2
ACK -- ENQ <001> FILL MSG# FILL A0 BCC1
NAK -- ENQ <002> RNAK MSG# FILL A0 BCC1
REP -- ENQ <003> FILL FILL NLST A0 BCC1
RESET* -- ENQ <004> FILL FILL NNXT A0 BCC1
RESACK* -- ENQ <005> FILL NEXP FILL A0 BCC1
STRT -- ENQ <006> FILL FILL NBEG A0 BCC1
STACK -- ENQ <007> FILL NREC NXMT A0 BCC1
BOOT -- DLE CC1 CC2 <000> <000> A0 BCC1 BOOTDATA BCC2
"n" =the number of data bytes, a 16-bit quantity made up of CC1 and
CC2.
A0 =1 (Station number; always one for point to point.)
ADDR=4 byte field containing the address for the core-image data
being loaded or dumped.
BCC1=16 bits of BCC computed on the first 6 bytes of the message.
BCC2=16 bits of the BCC computed on the "n" data bytes.
BNUM=2 byte field containing number of bytes to be dumped.
CC1 =the low order 8 bits of the character count of the data
portion.
CC2 =the high order 8 bits of the character count of the data
portion. The two high order bits of this byte are really
flags for the multi-point case, but will always be zero for
the point-to-point case.
DLE =220 (This is the starting character for station management
messages.)
ENQ =005 (This is the starting character for control messages.)
FILL=0 (Filler; is checked and must be zero.)
IDAT="n" bytes of image data, which the station will put at the
address contained in ADDR.
MSG#=number of the last good message received (implies ACK of all
lower numbered messages).
NBEG=first message number this station will transmit after startup
is completed.
NEXP=message number expected to be sent next(usually NNXT field of
REP message).
NLST=number of last transmitted data message.
NMSG=the number of this message.
NNXT=next numbered message to be transmitted (i.e. lowest message
that has not been acked).
NREC=next message number for reception (usually NBEG field of the
STRT message).
RNAK=Reason for negative acknowledgement:
1=Header BCC incorrect
2=Data BCC incorrect
3=The last REP message received indicates we lost one or more
messages.
10=Buffer space temporarily unavailable
11=Receive overrrun (data lost)
20=Data message is too long
21=Header format error (e.g. non-zero fill)
SNAM=software system defined data identifying which program to
load.
SNUM=a sequential numbering of successive boot messages.
SOH =201 (This is the starting character for data messages.)
BOOTDATA will be one of the following formats:
BOOT SNA <000>
EXAMINE SNA <001> <adr1> <adr2>
DEPOSIT SNA <002> <adr1> <data>
GO TO SNA <003> <adr>
CLEAR SNA <004> <adr1> <adr2>
DEBUG SNA <005>
ACCEPT DNA <011> <adr>
EXAMINE DATA DNA <012> <adr> <data>
REJECT DNA <013>
REQUEST BOOT DNA <014> <type> <serial> <description>
REQUEST LOAD DNA <015> <type> <serial> <description>
DESCRIPTION=extensible Ascii; text which describes program to be
loaded, usually a file description.
DNA=extensible binary, node number the bootstrap message should be
routed to. Zero means default.
SERIAL=extensible binary; the serial number for the node being
booted.
SNA=extensible binary; the node number of the station which
originated the bootstrap message.
type=extensbile binary; code for the type of node requesting load:
1=DC71 (PDP8I with DP01).
2=DC72 (PDP8E with DP8E).
3= (PDP11/40 with DU11).
4=DAS82 (PDP11/40 with DQ11).
\
COMMENT \
05.2.1 NODE ID Message.
The NODE ID message is necessary for the case of two nodes connected by
two links. It is the first message sent between adjacent nodes after a
DDCMP-START/STACK sequence. It is never sent between non-adjacent
nodes. SNA and DNA are never present in a NODE ID message.
05.2.2 START/STACK Messages.
4.2.3 Neighbours Messages.
Everytime a node aquires a new neighbour, or loses a neighbour, or
changes a link level, the node will send a neighbours message to all
nodes it knows.
4.2.4 NCL REPS, ACKS & NAKS
The NCL REP timer must be long enough that a REP will never arrive ahead
of another message. The NCL NAK message is sent only in response to an
NCL REP message. A station which transmits an NCL NAK must discard all
numbered NCL messages which the NAK doesn't implicitly ACK.
4.2.5 Routing algorithims.
All nodes remember all other nodes and their neighbours. A node may
give a message to any other node whose level for the station is less
than the original node's. A message for another node may be given to
any other node as long as the best route
4.2.6 Sequential nodes.
Nodes which need to have the minimum subset of NCL will use the
SEQUENTIAL subset. Sequential nodes will idicate they are sequential by
never setting the non-sequential bit in the NCT byte. Sequential nodes
will use zero bytes for transmission of NCA and NCN. Sequential nodes
will ignore NCA and NCN on input. Sequential nodes don't send NCL-ACK,
NCL-NAK, NCL-REP, NCL-START, or NCL-STACK messages. When a sequential
node sends a neighbours message he will list all nodes he will do route
through for.
Non-sequential nodes may optionally support sequential nodes. A
non-sequential node will talk to the sequential node as if he were
sequential.
\
SUBTTL NCS Formats
COMMENT \
unnumbered control -- NCT SNA DNA NCA NCN OPD
numbered control -- NCT SNA DNA NCA NCN 0 CM
DATA -- NCT SNA DNA NCA NCN DLA dev control
\
;DLA= ;destination message link address, i.e. the index into the
;node's connection database. Extensible field, maximum of 12
;bits, zero is illegal.
;DNA= ;destination NNM
;NCA= ;Network Control Ack; last network message received ok.
;NCN= ;Network Control message Number. One byte binary field.
;NCT= ;network control message type and flags, extensible field.
XP NCT.TP,B0!B1!B2 ;bits 0-2=type field
XP NCT.DM,0 ;0=data message
XP NCT.AK,1 ;1=ack.
XP NCT.NK,2 ;2=nak.
XP NCT.RP,3 ;3=rep.
XP NCT.ST,4 ;4=start. OPD is NNM SNM SID.
XP NCT.SK,5 ;5=stack.
XP NCT.ID,6 ;6= NODE ID OPD IS NNM SNM SID
XP NCT.RH,B3 ;bit 3=SNA and DNA present.
XP NCT.TR,B4 ;bit 4=trace
XP NCT.IT,B5 ;INTERRUPT MESSAGE (NOP DRQ COUNT)
XP NCT.SQ,B6 ;SEQUENTIAL NODE
XP NCT.EX,B7 ;bit 7=extensible bit
;NNM= ;node name, a binary extensible field, maximum of 12 bits,
;identifying node. Zero means next node over synchronous line.
;OPD= ;optional data.
;SID= ;software identification, extensible ASCII with two subfields:
;1) name and version of operating system and DEMOS software,
;2) creation date.
;SNA= ;source NNM.
;SNM= ;station name is an extensible ASCII field.
SUBTTL NCL NETWORK MESSAGES
COMMENT \
CM = one of the following:
CONNECT -- CNT <001> DLA SLA DPN SPN MML FEA
DISCONNECT -- CNT <002> DLA SLA RSN
NEIGHBOURS -- CNT <003> (NNM LVL)
REQ CONFIG -- CNT <004>
CONFIGURATION -- CNT <005> OPD
DATA REQUEST -- CNT <006> DLA DQR
STATION ID -- CNT <007> OPD
\
;DEFINE THE PROTOCOL "CM"'S
NC.CNT==<001>
NC.DSC==<002>
NC.NBN==<003>
NC.RCF==<004>
NC.CNF==<005>
NC.DQR==<006>
NC.CTL==<007>
NC.MAX==NC.CTL ;LAST NC MESSAGE TYPE
;CNT= ;count of remaining bytes in message.
;DCD= ;attributes for card reader:
;bits 0+1=speed(0=don't care,1=<300,2=between 300 and
;600,3=>600)
;bit 2=mark sense
;bit 3=hdw EOF required
;bit 4=suppress EOF card detection
;DCM= ;data code and mode:
XP DCM.AS,b0 ;ASCII
XP DCM.EB,b1 ;EBCDIC
XP DCM.IM,b2 ;Image
XP DCM.HO,b3 ;Hollerith(CDR only)
XP DCM.DI,b4 ;DEC image (CDR only)
XP DCM.RV,b5 ;reserved
XP DCM.CP,b6 ;compressed format
;DLP= ;attributes for line printer:
XP DLP.S0,0 ;speed(see DCD)
XP DLP.S3,1
XP DLP.S6,2
XP DLP.S9,3
XP DLP.LL,b2 ;lower case req
XP DLP.RC,b3 ;remov. char set req
XP DLP.MP,b4 ;multi-part paper req
XP DLP.CS,b5 ;12 chan skipping req
;,b7=1
XP DLP.SK,B8+B9 ;b0+b1=skip requirements
;0=don't care
;1=changeable from handler
;2=changeable at site
;3=changeable but don't care how
XP DLP.OP,b10 ;req overprint
XP DLP.68,B11+B12 ;6/8 LIES/INCH
XP DLP.CF,b13 ;changeable form width
;DPN= ;destination PN.
;DTY= ;attributes for teletypes:
XP DTY.MC,b0 ;modem control
XP DTY.AB,b1 ;auto-baud
XP DTY.SB,b2 ;handler can set baud rates
XP DTY.27,b3 ;2741
XP DTY.BD,b4 ;baudot
XP DTY.AD,B5 ;AUTO DIAL LINE (BELL 801)
;DRX= ;device attributs for REMOTE DATA ENTRY DEVICE
XP DRX.MD,B0 ;MULTI DROP LINE DATA ENTRY LINE
XP DRX.PL,B1 ;LINE ACCEPTS A POLL SEQUENCE
;DVT= ;device specific attributes: DCD!DLP!DTY!DRX
;ECD= ;arbitrary number of bytes of echo data.
;ECR= ;the data that was received in the previous echo message (ECD).
;FEA= ;features: DCM+RLN+DVT
;LVL= ;link value is a one-byte binary value used to determine the
;perferred path; 0 means link is down. (Preferred path is
;that whose sum of link values is lowest.)
DDCMWD==<^D128+^D10>*5
;MML= ;maximum DDCMP message length.
;OBJ= ;object type for process:
XP OBJ.TT,0 ;tty handler
XP OBJ.TY,1 ;tty
XP OBJ.CD,2 ;card reader
XP OBJ.LP,3 ;line printer
XP OBJ.PR,4 ;paper tape reader
XP OBJ.PP,5 ;paper tape punch
XP OBJ.PL,6 ;ploter
XP OBJ.MT,7 ;magnetic tape
XP OBJ.DT,10 ;dectape
XP OBJ.TK,11 ;PROCESS (IE A USER JOB)
XP OBJ.RD,12 ;REMOTE DATA ENTRY DEVICES
XP OBJ.CP,13 ;CARD PUNCH
XP OBJ.MX,OBJ.CP ;MAX OBJECT TYPE
;200-377=reserved
;PID= ;process identification. For devices this is an extensible
;binary field, 0 means default choice, 1 - n means unit . For
;tasks this is a single extensible ASCII string usually name
;and qualifier (e.g. UIC or PPN).
;PN= ;process name, having 2 parts: 1) OBJ, 2) PID.
;RSN= ;reason
XP RSN.OK,0 ;normal disconnect
XP RSN.OT,1 ;object type not available
XP RSN.XN,2 ;too many connects to node
XP RSN.XP,3 ;too many connects to process
XP RSN.NP,4 ;process does not exist at this node
;SLA= ;source link address (1 or 2 byte extensible binary number).
;SPN= ;source PN.
SUBTTL DEVICE CONTROL
COMMENT \
The device control protocol consists of the specific messages listed
below, plus some data in the optional data part of the NCS connect
message. This data is the maximum allowable DDCMP message length for
this device (expressed as an extensible binary number of bytes) and the
features field (FEA). The features going from the handler to the device
are those that the handler would like to see; those going from the
device to the handler are those that are actually present.
DATA -- CNT <001> (DATA)
DATA with EOR -- CNT <002> (DATA)
DATA REQUEST -- CNT <003> DRQ
STATUS -- CNT <004> STC STD
CONTROL -- CNT <005> DCT CDT
USER ID -- CNT <006> PPN PSWD UNAME ACCT GROUP
FILE SPECIFICATION -- CNT <010> FST FEA FDES
\
;DEFINE THE PROTOCOL FOR DEVICE CONTROL (DAP)
DC.DAT==<001>
DC.DAR==<002>
DC.STS==<003>
DC.CTL==<004>
DC.UID==<005>
DC.FSP==<006>
DC.MAX==<006>
SUBTTL BIT AND FIELD DEFINATIONS FOR DEVICE CONTROL (DAP)
;ACCT= ;accounting code(extensible ASCII)
;CDT= ;control data; this optional field contains control data for a
;device.
;for TTY characteristics:
;# of milliseconds after backspace<010>
;# of milliseconds after horizontal tab<011>
;# of milliseconds after LF<012>
;# of milliseconds after vertical tab<013>
;# of milliseconds after form feed<014>
;# of milliseconds after carriage return<015>
;receive speed (bits/sec, 134=2741)
;transmit speed
;width of TTY carriage
;auto CRLF position
;element number(last 3 digits of IBM part number)
;2741 bits:
XP CDT.CB,B0 ;"debreak" feature present
XP CDT.PL,B1 ;APL MODE
XP CDT.TD,B2 ;TIDY MODE
;B3-6=reserved
;CNT= ;length of what follows in bytes (ext. binary)
;DCT= ;device specific control information
;for tty
XP DCT.EP,0 ;echo pipeline markeri(no CDT field)
XP DCT.CG,1 ;character gobbler (no CDT field)
XP DCT.TC,2 ;teletype characteristics
XP DCT.AD,3 ;auto dial
XP DCT.XF,4 ;request to send xoff
;CDT=ASCII digits of number to be dialed
;for files
XP DCT.SI,0 ;et record pointer for input
XP DCT.SO,1 ;set record pointer for output
;line printer
XP DCT.LS,0 ;Load skip channel tape
;EPM= ;one byte number identifying the echo pipeline marker.
;FDES= ;file description, extensible ascii field of form
;DEV:[P,PN]FILE.EXT
;FST= ;file status
XP FST.IN,0 ;open for input
XP FST.OU,1 ;open for output
XP FST.AP,2 ;open for appending
XP FST.UP,3 ;open for updating
XP FST.DL,4 ;delete
;PSWD= ;password
;GROUP= ;group code(extensible ASCII)
;PPN= ;project programmer number(extensible ASCII)
;RLN= ;record length (max if variable): extensible binary.
;SCD= ;status for card reader:
XP SCD.ME,b0 ;master error(not set by EOF)
XP SCD.HE,b1 ;hopper empty
XP SCD.RE,b2 ;registration error
XP SCD.IP,b3 ;invalid punch for character set
XP SCD.SF,b4 ;stacker full
XP SCD.JF,b5 ;jam on feed
XP SCD.PF,b6 ;pick failure on feed
;,b7=1 (extended field)
XP SCD.CZ,b7 ;EOF card detected
XP SCD.HZ,B8 ;hdw EOF
XP SCD.OR,B9 ;overrun
XP SCD.OF,B10 ;off line
XP SCD.SR,B11 ;stop reading
;SLP= ;status for line printer:
XP SLP.FE,b0 ;fatal error
XP SLP.OL,b1 ;offline(+others)
XP SLP.NP,b2 ;out of paper
XP SLP.PJ,b3 ;paper jam
XP SLP.OP,b4 ;operator offline
XP SLP.SQ,b5 ;slew
XP SLP.HM,b6 ;hammer
;,b7=1
XP SLP.LP,B8 ;low on paper
XP SLP.SF,b9 ;paper stacker full
XP SLP.NI,B10 ;no ink
XP SLP.PQ,B11 ;unacceptable print quality
;STC= ;status code:binary values:
XP STC.ER,0 ;DEVICE ERROR
XP STC.SB,1 ;SET BITS
XP STC.CB,2 ;CLEAR BITS
XP SCT.XA,3 ;TRANSFER ABORTED
;STD= ;device specific status: SCD!SLP!STY
;STY= ;status for teletype:
XP STY.DE,b0 ;deferred echo
XP STY.CV,b1 ;convert LC on input
XP STY.XS,b2 ;output frozen by ^S
XP STY.II,b3 ;image input
XP STY.IO,b4 ;image output
XP STY.TP,b5 ;tty page
XP STY.TT,b6 ;tty tape
XP STY.HT,b7 ;hdw tabs
XP STY.FF,B8 ;hdw form feed
XP STY.TI,B9 ;TELETYPE INPUT WAIT
XP STY.LN,B10 ;LINE INPUT MODE
XP STY.CR,B11 ;NO CR-LF
XP STY.DT,B12 ;DATA TERMINAL READY (ENABLES AUTO ANSWER)
XP STY.RG,B13 ;IF STY.DT=0 THEN RING
;IF STY.DT=1 THEN CARRIER
XP STY.DR,B14 ;DATA SET READY
XP STY.XX,B15 ;RESERVED
;SPP= ;STATUS FOR THE PAPER TAPE PUNCH
XP SPP.ME,B0 ;MASTER ERROR
XP SPP.NP,B1 ;NO POWER
XP SPP.NT,B2 ;NO TAPE
;SPR ;STATUS FOR THE PAPER TAPE READER
XP SPR.ME,B0 ;MASTER ERROR
XP SPR.NP,B1 ;NO POWER
;UNAME= ;user name(extensible ASCII)
END