Trailing-Edge
-
PDP-10 Archives
-
7.01A_PCL20_KMCSRC_19830513
-
netprm.mac
There are 13 other files named netprm.mac in the archive. Click here to see a list.
UNIVERSAL NETPRM DEVICE INDEPENDENT NETWORK PARAMETERS - V1033
SUBTTL D. TODD / D. MCCLURE 25 MAR 80
SEARCH F,S
SALL
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
; COPYRIGHT (C) 1978,1979,1980,1982 BY DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
XP VNETPRM,1033 ;PUT VERSION NUMBER IN GLOB AND LOADER MAP
COMMENT @
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 believes 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.
;*** Footnote *** 15-Sept-78
Most of the stuff above is now garbage. It is included here
primarly for historical interest.
Matson
@
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 not a legal device DLA. It is reserved for
;station control messages
;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 (HST)
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 = less than 300 cpm
; 2 = between 300 and 600 cpm
; 3 = greater than 600 cpm
;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
; XP DLP.??,B6 ;not used
; XP DLP.??,B7 ;not used
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 LINES/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)
XP DTY.SH,b6 ;remote can to "set host" function
; (ie can generate connect messages)
;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:
DEFINE OBJTYP< ;;MACRO FOR DEFINING NETWORK OBJECT TYPES
X MCR,OBJ.TT,.TYMCR/.TYEST ;;TERMINAL HANDLER (MCR)
X TTY,OBJ.TY,.TYTTY/.TYEST ;;TERMINAL
X CDR,OBJ.CD,.TYCDR/.TYEST ;;CARD READER
X LPT,OBJ.LP,.TYLPT/.TYEST ;;LINE PRINTER
X PTR,OBJ.PR,.TYPTR/.TYEST ;;PAPER TAPE READER
X PTP,OBJ.PP,.TYPTP/.TYEST ;;PAPER TAPE PUNCH
X PLT,OBJ.PL,.TYPLT/.TYEST ;;PLOTTER
X MTA,OBJ.MT,.TYMTA/.TYEST ;;MAGNETIC TAPE
X DTA,OBJ.DT,.TYDTA/.TYEST ;;DECTAPE
X TSK,OBJ.TK,.TYTSK/.TYEST ;;PROCESS (JOB OR TASK)
X RDA,OBJ.RD,.TYRDA/.TYEST ;;REMOTE DATA ENTRY
X CDP,OBJ.CP,.TYCDP/.TYEST ;;CARD PUNCH
>
DEFINE X(A,B,C)< ;;TEMPORARY MACRO TO DEFINE OBJECT TYPES
XP OBJ.MX,%%%OFF ;;WHILE WE'RE AT IT, COUNT THE OBJECT TYPES
XP B,%%%OFF
%%%OFF==%%%OFF+1
>
%%%OFF==0 ;START WITH OBJECT TYPE ZERO
OBJTYP ;DEFINE ALL THE OBJ.?? SYMBOLS
;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 . If reason is "RSN.RC" this is followed by an
; extensible node number to reconnect to.
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
XP RSN.RC,10 ;reconnect to another host (set host command)
;SLA= ;source link address (1 or 2 byte extensible binary number).
;SPN= ;source PN.
SUBTTL STATION CONTROL
;STATION CONTROL MESSAGE TYPES
XP STC.EX,1 ;EXAMINE <L><1><ADDR1><ADDR2>
XP STC.DP,2 ;DEPOSIT <L><2><ADDR><DATA>
XP STC.GT,3 ;GOTO <L><3><ADDR>
XP STC.CL,4 ;CLEAR <L><4><ADDR1><ADDR2>
XP STC.DB,5 ;DEBUG <L><5>
XP STC.MS,6 ;MESSAGE <L><6><DATA*><0>
XP STC.BD,7 ;BOOT DATA <L><7><CNT><DATA>
XP STC.AC,11 ;ACCEPT <L><11>
XP STC.ED,12 ;EXAMINE DATA <L><12><ADDR><DATA>
XP STC.RJ,13 ;REJECT <L><13>
XP STC.RB,14 ;REQUEXT BOOT <L><14><TYPE><SER><MEM SIZ>
XP STC.RL,15 ;REQUEST LOAD <L><15><TYPE><SER><ASCII TEXT>
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> ;DATA (WITH OUT END OF RECORD)
DC.DAR==<002> ;DATA (WITH END OF RECORD)
DC.STS==<003> ;DEVICE STATUS
DC.CTL==<004> ;DEVICE CONTROL
DC.UID==<005> ;USER ID ?? (WHAT EVER THAT'S GOOD FOR)
DC.FSP==<006> ;FILE SPEC ?? (PROBABLY EVEN LESS USEFUL)
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 terminal 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 terminal 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 terminal
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
;CDT=ASCII digits of number to be dialed
XP DCT.XF,4 ;REQUEST F.E. TO SEND XOFF (NO CDT)
;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
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
; XP SLP.??,b7 ;unused because of stupidity
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 ;terminal page
XP STY.TT,b6 ;terminal tape
XP STY.HT,b7 ;hdw tabs
XP STY.FF,B8 ;hdw form feed
XP STY.TI,B9 ;terminal 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.BE,B14 ;output buffer empty
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)
;MACRO FOR DEFINING THE FIELDS OF THE VARIOUS NETWORK DATA BLOCKS
DEFINE X(NAME<%%%OFF>,SIZE<1>),<NAME==:<%%%OFF==%%%OFF+SIZE>-SIZE>
SUBTTL NETDDB -- NETWORK SPECIFIC DDB DEFINITIONS.
%%%OFF==DEVLLD+1 ;INITIALIZE THE OFFSET
X DEVNET ;XWD NDT,NODE-NUMBER
X NETXLA ;BYTE (8)RSN(14)SLA(14)DLA
X DEVDRQ ;XWD OUTSTANDINT-INPUT-DRQ'S,DRQ'S-FOR-OUTPUT
X NETSTS ;BYTE (8)UNUSED(12)RLN(16)DVT
X DEVAXI,2 ;FIRST WORD IS BYTE POINTER TO USERS INPUT BUF
;SECOND IS COUNT OF BYTES LEFT IN BUFFER
X DEVAXO,2 ;FIRST WORD IS BYTE POINTER TO USERS OUTPUT BUF
;SECOND IS COUNT OF BYTES LEFT TO OUTPUT
X DEVPCB ;XWD ??,QUEUE OF INPUT PCBS FOR THE DEVICE
X DEVPBP ;BYTE POINTER TO CURRENT NCL SUB-MESSAGE
X DEVNPD ;XWD INCOMING-NPD,PASSIVE-NPD. (USED BY TSK'S)
X NETLEN,0 ;LENGTH OF A NETWORK DEB
;NETWORK DEPENDANT BYTE POINTERS
XP NT%RSN,<POINT 8,NETXLA(F),7> ;REASON FOR DISCONNECT
XP NT%SLA,<POINT 14,NETXLA(F),21> ;SOURCE LINK ADDRESS
XP NT%DLA,<POINT 14,NETXLA(F),35> ;DESITNATION LINK ADDRESS
XP NT%RLN,<POINT 12,NETSTS(F),19> ;LOGICAL RECORD LENGTH
XP NT%DVT,<POINT 16,NETSTS(F),35> ;DEVICE ATTRIBUTE BITS.
;NETWORK DEPENDENT BITS DEFINED IN THE LH OF DEVIOS(F)
XPL IOSREL,400 ;DEVICE HAS BEEN RELEASED. IN PARTICULAR,
; DON'T WAKE ANY JOBS IF A DRQ COMES IN.
XPL IOSCON,1000 ;VERY IMPORTANT BIT. INDICATES DEVICE IS
; CONNECTED. (SHOULD BE REPLACED BY A
; MECHANISM)
XPL IOSZAP,2000 ;THIS BIT IS THE MIRROR IMAGE OF IOSCON.
; WHEREAS IOSCON INDICATES WHEATHER THE NETWORK
; DOES OR DOESN'T KNOW ABOUT THE DEVICE, IOSZAP
; INDICATES THAT NO JOB CURRENTLY HAS THE
; DEVICE. (IE IT TYPED "^C^C .CORE 0")
XPL IOSERR,4000 ;USED WITHIN DEVICE SERVICE ROUTINES TO SIGNAL
; THAT I/O CANNOT BE DONE FOR SOME REASON. (IT
; IS SET BY "NTDSET" IF THE DEVICE IS NO LONGER
; CONNECTED)
XPL IOSUSI,10000 ;UUOCON STOPPED INPUT. SET BY NTDAIB WHEN THERE
; ISN'T ANOTHER INPUT BUFFER AVAILABLE. CAUSES
; NTDIBA TO FAIL UNTIL CLEARED BY THE DEVICE
; DRIVER. *** MUST BE CLEARED BY DRIVER ***
XPL IOSUSO,20000 ;UUOCON STOPPED OUTPUT. SET BY NTDAOB WHEN
; NO OUTPUT BUFFERS ARE AVAILABLE. CAUSES
; NTDOBA TO FAIL. CLEARED BY DEVICE DRIVERS
; ON OUTPUT UUO.
; *** MUST BE CLEARED BY DRIVER ***
XPL IOSFFB,40000 ;FIRST FREE DEVIOS BIT. USE THIS SYMBOL
; IN DEVICE DRIVERS WHEN ALLOCATING DEVICE
; DEPENDANT DEVIOS BITS.
;*** FOOTNOTE ***
COMMENT \
It should be noted that there is no "IOSHDV" or "hung device" bit.
I do not believe that the -10 should have to worry about device timing.
In my opinion that is the job of the machine that actually has the physical
device. If the remote does hung timing, it should report hung devices as
"off line" or something.
\
SUBTTL PCB -- PROTOCOL CONTOL BLOCK
COMMENT @
*** NOTE WELL ***
1) Because the DL-10 deiver is not too intelligent, it requires that
the data it is given reside on contiguous physical pages. At
present, the only place where PCB's may reside is in monitor free
core. Historically, monitor free core has been contiguous. If
this ever changes, you can be sure that your DL-10 will stop
working!
2) All addresses in the PCB (ie. PCBOAD and PCBOA1) are assumed
to point to exec virtual memory. (At this point, they should point
to exec free core.)
3) The buffer's for PCB's (PCBIAD and PCBOAD) are allocated in
powers of two (2). The smallest PCB that will be allocated
is 2**PCBLMI, the largest is 2**PCBLMX. For each size of PCB
there is a free-list in NETSER. These lists are first-in,
first-out for convenience W.R.T. cache sweeping. There are
<PCBLMX-PCBLMI>+1 free lists.
END COMMENT @
COMMENT @
*** Notes on PCB Conversion Codes ***
1) PCV.NC This code instructs the front end not to attempt any conversion
on the data.
2) PCV.LC This code instructs the front end to attempt LPT compression
on the secondary buffer pointed to by the PCB. The last two fields
of the primary buffer MUST contain the "CNT" and "TYP" fields. The
reason for this is that the front end attempts to parse the message
header backwards from the end of the primary buffer in order to
determine where to put the updated DAP message length. (The reason
that the front end must do this is that the -10 has no idea of what
the final length of the compressed message will be.)
3) PCV.BN This code tells the front end that it will be getting 36 bit
binary data (in 12 bit bytes) which it should attempt to pack in 8 bit
bytes. The idc "CNT" field is not changed (as it whould be if this
was LPT compression). It is up to the -10 to calculate how long the
message will be AFTER binary conversion, and put the correct value
in the message in the first place.
END COMMENT @
;DEFINE THE PCB OFFSETS
%%%OFF==0 ;INITIALIZE THE OFFSET
X PCBBLK ;BYTE (6)FLAGS(4)CONV(8)MSG#(18)LINK-WORD
XP PCB.NM,(1B0) ;NUMBERED MESSAGE
XP PCV.NC,0 ;NO CONVERSION (8 BIT BYTES)
XP PCV.LC,1 ;LINE-PRINTER COMPRESSION (7 BIT BYTES)
XP PCV.BN,2 ;BINARY CONVERSION (12 BIT BYTES)
X PCBFEK,0 ;XWD FEK,??? (USEFUL ONLY FOR NODE-ID MSGS)
X PCBNNM ;XWD ???,NODE-NUMBER
X PCBIAD,0 ;BYTE POINTER TO INPUT MESSAGE
X PCBOAD ;BYTE POINTER TO OUTPUT MESSAGE
X PCBICT,0 ;XWD SIZE OF INPUT BUFFER(WORDS),VALID BYTES
X PCBOCT ;XWD SIZE OF OUTPUT(WORDS),NUMBER OF BYTES
X PCBOA1 ;SECONDARY BYTE POINTER (OUTPUT ONLY)
X PCBOC1 ;SECONDARY BYTE COUNT (OUTPUT ONLY)
X PCBDMN ;CONTAINS THE DDCMP MESSAGE NUMBER IF A KMCDUP
X PCBTAG ;CONTAINS SIXBIT/PCBTAG/ FOR VALID PCB'S
IFN FTKL10,< ;ON THE KL, WE MUST WORRY ABOUT CACHE
X PCBCSN ;XWD CPU#,CACHE-SWEEP-SERIAL-NUMBER
>
X PCBLEN,0 ;LENGTH OF A PCB
;BYTE POINTERS INTO THE PCB. (STORAGE RESERVED FOR THEM IN COMNET)
XP PC%PCV,<POINT 4,PCBBLK(U),9> ;POINTER TO COMPRESSION CODE
XP PC%MSN,<POINT 8,PCBBLK(U),17> ;POINTER TO MESSAGE NUMBER
;SET THE MAXIMUM AND MINIMUM SIZES FOR PCB BUFFERS
XP PCBLMI,2 ;2**2 = 4 WORDS IS THE SMALLEST
XP PCBLMX,7 ;2**7 = 128 WORDS IS THE LARGEST
SUBTTL NDB -- NODE DATA BLOCK DEFINITIONS
NGHMAX==^D16 ;MAXIMUM NUMBER OF NEIGHBORS
%%%OFF==0 ;INITIALIZE THE OFFSET
X NDBNNM ;XWD NODE-NUMBER,NEXT-NDB
X NDBSID ;XWD -DATE,-CONFIG
X NDBSNM ;BYTE (18)-NAME(18)???
X NDBMNM,2 ;BYTE (8)LAR(8)LAP(8)LMS(8)LMA(4)0
;BYTE (8)LAS(8)LMR(8)LMP(8)???(4)0
X NDBFEK ;XWD COST,FEK
X NDBFLG ;BYTE (9)FLAGS(9)TIMER(18)SERVICE-QUEUE-LINK
XP NDB.UP,(1B1) ;START SENT OR RECIEVED. (NODE IS RUNNING)
XP NDB.SK,(1B2) ;SENDING STACKS, NOT STARTS
XP NDB.CF,(1B3) ;CONFIGURATION HAS NOT BEEN REQUESTED
XP NDB.NB,(1B4) ;NEIGHBORS MESSAGE NEEDS TO BE SENT
XP NDB.TP,(1B5) ;MARK BIT FOR USE DURING TOPOLOGY RECOMPUTATION
XP NDB.XN,(1B6) ;NEED TO SEND A NAK. (RESPONSE TO A REP)
XP NDB.NQ,(1B7) ;SAYS THAT NDB HAS A REQUEST QUEUED.
XP NDB.GF,(1B8) ;IF ON, THIS NODE HAS BEEN "GREETED"
X NDBQUE ;XWD INPUT-PCB-QUEUE,OUTPUT-PCB-QUEUE
X NDBTOP,NGHMAX/2 ;NEIGHBORS TABLE.
X NDBOPR ;LDB OF OPR, 0 IF NONE
X NDBSTC ;XWD TIMER,JOB OWNING STATION CONTROL
X NDBICT ;XWD TIMER,INCOMING STC BLOCK POINTER
X NDBMOM ;MAXIMUM OUTSTANDING MESSAGE COUNTER
X NDBTMP,3 ;TEMP. USED WHEN COMPUTING TOPOLOGY.
X NDBDEV,4 ;9 BIT BYTES OF HOW MANY OF EACH OBJECT TYPE.
X NDBLEN,0 ;SIZE OF AN NDB.
;BYTE POINTERS INTO THE NDB (INDEXED BY "W")
XP NB%NXT,<POINT 18,NDBNNM(W),35> ;ADDRESS OF NEXT NDB
XP NB%NNM,<POINT 9,NDBNNM(W),17> ;NODE NUMBER
XP NB%SNM,<POINT 18,NDBSNM(W),17> ;ADDRESS OF STATION NAME
XP NB%TIM,<POINT 9,NDBFLG(W),17> ;TIMER. IT'S USED AS BOTH
;A START AND REP TIMER. REP
;TIMER COUNTS UP, START COUNTS
;DOWN!! (UGLY)
XP NB%NGH,<POINT 18,NDBTOP(W),17> ;FIRST NEIGHBOR
;BYTE (9)NODE(9)COST
XP NB%NGN,<POINT 9,0,26> ;EXTRACT NODE FROM NB%NGH
XP NB%NCS,<POINT 9,0,35> ;EXTRACT COST FROM NB%NGH
XP NB%NGL,<POINT 18,<NDBTOP+<NGHMAX/2>-1>(W),35> ;LAST NEIGHBOR
XP NB%OPR,<POINT 18,NDBOPR(W),35> ;ADDRESS OF OPR LDB (IF ANY)
XP NB%CTJ,<POINT 18,NDBSTC(W),35> ;JOB NUMBER OF STATION CTL
;POINTERS TO THE OUTPUT MESSAGE NUMBERS
XP NB%LAR,<POINT 8,NDBMNM(W),7> ;LAST ACK RECEIVED
XP NB%LAP,<POINT 8,NDBMNM(W),15> ;LAST OUTPUT MSG ACKED
XP NB%LMS,<POINT 8,NDBMNM(W),23> ;LAST MESSAGE SENT
XP NB%LMA,<POINT 8,NDBMNM(W),31> ;LAST MSG NUMBER ASSIGNED
;POINTERS TO THE INPUT MESSAGE NUMBERS
XP NB%LAS,<POINT 8,NDBMNM+1(W),7> ;LAST ACK SENT
XP NB%LMR,<POINT 8,NDBMNM+1(W),15> ;LAST MESSAGE RECIEVED
XP NB%LMP,<POINT 8,NDBMNM+1(W),23> ;LAST MESSAGE PROCESSED
SUBTTL NDT -- NETWORK DEVICE TABLE
;THE NETWORK DEVICE TABLE IS USED TO DEFINE THE CHARACTERISTICS OF
; VARIOUS NETWORK DEVICES.
%%%OFF==0 ;MAKE SURE WE START AT ZERO
X NDTNAM ;XWD NAME,NAME ;GENERIC DEVICE NAMES
X NDTMOD ;EXP DEVMOD
X NDTATR ;XWD OBJECT-TYPE,ATTRIBUTES
X NDTCHR ;BYTE (6)DEVTYP(12)BUFFER-SIZE(8)SPOOL(10)0
X NDTNDP ;EXP @NDP(T1) ;POINTER TO DISPATCH TABLE
X NDTLEN,0 ;LENGTH OF THE DEVICE TABLE
;BYTE POINTERS INTO A NETWORK DEVICE TABLE (INDEXED BY "W")
XP ND%TYP,<POINT 6,NDTCHR(W),5> ;DEVTYP BYTE
XP ND%BFZ,<POINT 12,NDTCHR(W),17> ;DEFAULT BUFFER SIZE
XP ND%SPL,<POINT 8,NDTCHR(W),25> ;SPOOL BITS
XP ND%DVT,<POINT 16,NDTATR(W),35> ;DEVICE ATTRIBUTES
XP ND%OBJ,<POINT 8,NDTATR(W),17> ;DEVICE OBJECT TYPE
XP ND%DCM,<POINT 10,NDTATR(W),9> ;DEVICE MODES
SUBTTL NPD -- NETWORK PROCESS DESCRIPTOR BLOCK.
%%%OFF==0 ;INITIALIZE THE OFFSET
X NPDBLK ;XWD LENGTH-OF-NPD(WORDS),0
X NPDNOD ;EXP NODE-NUMBER (-1 = WILD-CARD)
X NPDNLN ;EXP LENGTH OF TASK NAME
X NPDNAM ;BLOCK ? WORDS OF TASK NAME
SUBTTL STC -- STATION CONTROL MESSAGE BLOCKS
%%%OFF==0 ;INITIALIZE THE OFFSET
X STCBLK ;XWD LENGTH OF THE MESSAGE (8 BIT BYTES),LINK
X STCLNN ;XWD BYTE-CNT,LINE-NUMBER (INPUT STC ONLY)
X STCDAT ;FIRST WORD OF STC DATA
;LENGTH OF STC BLOCK IN WORDS IS "2+<LEN+3>/4"
SUBTTL KDP -- KDP BLOCK. ONE FOR EACH KMC-11 THAT DRIVES DUP-11'S
;TRADITIONALY INDEXED BY "W"
%%%OFF==0 ;INITIALIZE FOR "X" MACRO
KDPQLN==^D32 ;32 QUEUE ENTRIES IN TRANSACTION Q (64 WORDS)
MXNDUP==^D2 ;MAXIMUM NUMBER OF DUP-11'S ON THE KMC-11
X KDPCSR ;XWD UBA #,ADDRESS OF KMC-11 CSR (KMC1BA)
X KDPVEC ;ADDRESS OF KMC-11 VECTOR (540 = KMC1IV)
X KDPIMR ;INITIAL MAP REGISTER FOR PAGE
X KDPIEA ;INITIAL ELEVEN ADDRESS
X KDPNUM ;NUMBER OF THIS KDP. (ZERO UNLESS MORE THAN
; ONE KMC-11 ON THE MACHINE)
X KDPDPN ;NUMBER OF DUP-11'S ON THIS KMC (AKA. KDPMRC)
X KDP1DP ;-11 ADDRESS OF FIRST DUP-11
X KDPKDL,MXNDUP ;"XWD FEK,KDL" ONE PER DUP-11
X KDPIVA,10 ;CODE FOR INTERRUPT SERVICE (VECTOR A)
X KDPIVB,10 ;CODE FOR INTERRUPT SERVICE (VECTOR B)
X KDPRGS,2 ;KMC-11 CSR'S WHEN KMC-11 LAST CRASHED
X KDPCPC ;PC OF THE LAST CALLER TO KDPERR.
X KDPZER,0 ;START ZERO-ING HERE ON A RESTART
X KDPSTS ;STATUS.
KDPSRU==1B0 ;SAYS KMC-11 IS BELIEVED TO BE RUNNING
X KDPACT ;COUNT OF VECTOR "A" INTERRUPTS
X KDPBCT ;COUNT OF VECTOR "B" INTERRUPTS
X KDPIQT ;INPUT QUEUE "TAKER"
X KDPIQP ;INPUT QUEUE "PUTTER"
X KDPINQ,2*KDPQLN ;KMC-11 INPUT QUEUE. TWO WORD ENTRYS CONTAIN
; XWD 0,SEL2
; XWD SEL4,SEL6
X KDPLEN,0 ;LENGTH OF A KDP BLOCK
SUBTTL KDL -- KMC/DUP-11 LINE BLOCKS. ONE PER DUP-11. INDEXED BY "F"
%%%OFF==0 ;INITIALIZE FOR "X" MACRO
X KDLFEK ;POINTS TO FEK. (FEKUNI POINTS TO KDL)
X KDLKDP ;POINTS TO KDP. (KDPLIN+KDLINE POINTS TO KDL)
X KDLINE ;CONTAINS OUR LINE NUMBER (BSEL3)
X KDLCSR ;CONTAINS CSR ADDRESS OF DUP-11 (FOR BASE-IN)
X KDLMAP ;ADDRESS OF UBA MAP REGISTER FOR THIS PAGE
X KDLADR ;CONTAINS UNIBUS ADDRESS OF THIS PAGE
X KDLCPC ;PC OF LAST CALLER OF KDLERR
X KDLZER,0 ;ZERO FROM HERE ON DOWN
X KDLMAI ;XWD QUEUE-TO-FREE,QUEUE-TO-SEND
; (STATION CONTROL MESSAGES)
X KDLWTO ;QUEUE OF PCB'S AWAITING OUTPUT
X KDLWTA ;QUEUE OF PCB'S AWAITING AN ACK
X KDLCTA ;COUNT OF PCB'S AWAITING ACK. THIS IS
; USED TO PREVENT GETTING MORE THAN "MAXOUT"
; MESSAGES "IN THE PIPE" AT ONCE
X KDLSTS ;BYTE (18)BITS,(3)STATE,(15)BITS
X KDLSTX ;BYTE (18)FREE,(9)TIMER,(9)XNAK
X KDLMNM ;BYTE (8)RMN,LMX,LMA (12)REPC
X KDLZTM ;SECONDS SINCE COUNTERS WERE CLEARED
; X KDLXMC ;TRANSMITTED MESSAGE COUNT
; X KDLRMC ;RECEIVED MESSAGE COUNT
X KDLCTO,11 ;CONTROL OUT COUNTS.
; (06) ABORT RECEIVED (WE SHOULDN'T GET ANY)
; (10) INVALID DDCMP HEADER
; (12) BAD CRC
; (14) BUFFER NOT AVAILABLE
; (16) DATASET READ TRANSITION
; (20) NXM (PDP-11 MEMORY)
; (22) TRANSMIT UNDERRUN
; (24) RECEIVE OVERRUN
; (26) KILL COMPLETE
X KDLNKR,10 ;COUNT OF RECEIVED NAKS. (SEE NAKTRN)
; FIRST IS RANDOM, REST BY NAK CODE.
X KDLNKX,10 ;COUNT OF TRANSMITTED NAKS.
; FIRST IS RANDOM, REST BY NAK CODE.
X KDLDTR ;COUNT OF DATA MESSAGES RECEIVED
X KDLMAR ;COUNT OF MAINTENANCE MESSAGES RECEIVED
X KDLCTR,7 ;COUNT OF CONTROL MESSAGES (BY TYPE)
X KDLDTX ;COUNT OF DATA MESSAGES SENT
X KDLMAX ;COUNT OF MAINTENANCE MESSAGES SENT
X KDLCTX,7 ;COUNT OF CONTROL MESSAGES SENT (BY TYPE)
X KDLEST,0 ;END OF SECTION TO BE RETURNED AS STATUS.
;THE REST OF THE KDL BLOCK IS USED AS BUFFER SPACE FOR THE KDP. SINCE
; IT NEEDS IT'S DATA BYTE SWAPPED IT IS MOST CONVENIENT TO COPY THE DATA
; HERE AND SEND IT ALL IN ONE BUFFER DESCRIPTION LIST.
;THERE ARE TWO BUFFERS EACH FOR INPUT AND OUTPUT. THE FIRST 4 WORDS OF
; EACH IS USED TO STORE THE BUFFER DESCRIPTOR LIST.
X KDLXBC ;COUNT OF TRANSMIT BUFFERS QUEUED
X KDLXD1,144 ;FIRST TRANSMITTER BUFFER DESCRIPTOR
; X KDLXB1,140 ;FIRST TRANSMITTER BUFFER (FOLLOWS BDL)
X KDLXD2,144 ;SECOND TRANSMITTER BUFFER DESCRIPTOR
; X KDLXB2,140 ;SECOND TRANSMITTER BUFFER
X KDLRBC ;COUNT OF RECEIVE BUFFERS QUEUED
X KDLRD1,144 ;FIRST RECEIVE BUFFER DESCRIPTOR
; X KDLRB1,140 ;FIRST RECEIVE BUFFER
X KDLRD2,144 ;SECOND RECEIVE BUFFER DESCRIPTOR
; X KDLRB2,140 ;SECOND RECEIVE BUFFER
X KDLXXX,1000-%%%OFF ;KDL BLOCK IS 512. WORDS LONG
X KDLLEN,0 ;LENGTH OF KDL
;VALUES OF THE VARIOUS FIELDS IN KDLSTS
;BITS THAT SAY A CONTROL MESSAGE IS REQUIRED (IN "JFFO" PRIORITY ORDER).
KDSMAI==1B0 ;NEED TO SEND A MAINT MSB.
KDSSTR==1B1 ;NEED TO SEND A START.
KDSSTK==1B2 ;NEED TO SEND A STACK.
KDSNAK==1B3 ;NEED TO SEND A NAK.
KDSREP==1B4 ;NEED TO SEND A REP.
KDSDAT==1B5 ;NEED TO SEND A DATA MESSAGE.
KDSACK==1B6 ;NEED TO SEND AN ACK.
XMTBTS==KDSSTR!KDSSTK!KDSNAK!KDSREP!KDSACK ;MASK OF MOSTMSG BITS
;STATES (HIDDEN FROM KMC-11 IN TOP 2 BITS OF HALFWORD)
KD%DWN==0 ;CONTROL-OUT TO START NOT YET GIVEN.
KD%INI==1 ;{ BASE ! CONTROL } OUT HAS BEEN DONE
KD%FLS==2 ;SHUTTING LINE DOWN, BUFFERS FLUSHING.
KD%MAI==3 ;MAINTAINENCE MODE.
KD%STR==4 ;SENDING STARTS STATE.
KD%STK==5 ;SENDING STACK STATE.
KD%RUN==6 ;RUNNING.
;MORE BITS -- USED TO DETERMINE WHICH OF TWO BUFFERS SHOULD BE USED NEXT
KDSNRB==1_0 ;THE NEXT RECEIVE BUFFER THE KMC-11 SHOULD GIVE
KDSNXB==1_1 ;THE NEXT XMIT BUFFER THE KMC-11 SHOULD RETURN
KDSRFL==1_2 ;RECEIVE FLUSH IN PROGRESS (WAIT FOR CTLO26)
KDSXFL==1_3 ;XMIT FLUSH IN PROGRESS.
;BYTE POINTER DEFINITIONS TO STATUS AND COUNTER FIELDS IN THE KDL BLOCK
XP KD%STA,<POINT 03,KDLSTS(F),20> ;DDCMP STATE
XP KD%TIM,<POINT 09,KDLSTX(F),26> ;REP TIMER
XP KD%XNK,<POINT 09,KDLSTX(F),35> ;TRANSMIT NAK CODE
XP KD%RMN,<POINT 08,KDLMNM(F),07> ;RECEIVE MESSAGE NUMBER
XP KD%LMX,<POINT 08,KDLMNM(F),15> ;LAST MSG XMITTED
XP KD%LMA,<POINT 08,KDLMNM(F),23> ;LAST MSG ACK'ED
XP KD%RPC,<POINT 12,KDLMNM(F),35> ;REP COUNTER
SUBTTL NDP -- NETWORK DISPATCH TABLE
;NEGATIVE DISPATCH ENTRYS ARE NCL
;POSITIVE DISPATCH ENTRYS ARE DAP
XP NDPNWD,-5 ;SOME NETWORK NODE WENT DOWN
XP NDPDSC,-4 ;DISCONNECT
XP NDPCNC,-3 ;CONNECT CONFIRM
XP NDPCNI,-2 ;CONNECT INITIATE
XP NDPDRQ,-1 ;DATA-REQUEST
XP NDPICM,0 ;INTERRUPT LEVEL INPUT MESSAGE
XP NDPDAT,1 ;DATA WITH OUT END-OF-RECORD
XP NDPDAR,2 ;DATA WITH END-OF-RECORD
XP NDPSTA,3 ;STATUS MESSAGE
XP NDPCTL,4 ;CONTROL MESSAGE
XP NDPUID,5 ;USER ID
XP NDPFSP,6 ;FILE-SPEC
;*** FOOTNOTE ***
COMMENT @
For a description of the context in which these entry points are used
see the following routines.
Entry Described in Module(Routine)
NDPNWD NETSER.MAC(CLNNDB)
NDPDSC - NDPCNI NETSER.MAC(ICMCNT)
NDPICM - NDPFSP NETSER.MAC(NTDISP)
@
SUBTTL LAT -- LINK ADDRESS TABLE
;THE LINK ADDRESS TABLE CONTAINS ONE WORD FOR EACH ACTIVE LINK.
; THE FORMAT OF A LAT ENTRY IS
;
; BYTE (15)FLAGS(3)STATE(18)DDB/LDB-POINTER
;
;
;FIRST THE FLAGS
XP LAT.TY,(1B0) ;IF SET INDICATES THAT THIS IS A TERMINAL
; (IE. LDB) ENTRY
XP LAT.VT,(1B1) ;IF SET MEANS THIS IS A LOCAL TERMINAL
; "SET HOSTED" TO ANOTHER NODE
;THE STATE'S OF A CONNECT ARE AS FOLLOWS.
XP LAT.ID,0 ;THE LAT IS IDLE (NO DDB/LDB ATTACHED)
XP LAT.CI,1 ;WAITING FOR A CONNECT INITIATE (PASSIVE TASK)
XP LAT.CC,2 ;CONNECT CONFIRM WAIT (DEVICE OR ACTIVE TASK)
XP LAT.OK,3 ;NORMAL STATE (FULLY CONNECTED)
XP LAT.DC,4 ;DISCONNECT CONFIRM WAIT (ALL TYPES)
XP LAT.MX,LAT.DC ;THE HIGHEST LEGAL STATE
;A BYTE POINTER TO THE STATE FIELD
XP LT%STA,<POINT 3,0,17> ;POINT TO THE STATE BYTE IN A LAT ENTRY
;A LAT POINTER IS EITHER A POINTER TO AN LDB (IF LAT.TY = 1) OR A POINTER
; TO A DDB.
SUBTTL MACROS
DEFINE EMRGCY,< ;;SEE NETSER(NTUEFC) FOR DETAILS
IFNDEF NTUEFC,<EXTERNAL NTUEFC>
SETOM NTUEFC
>
SUBTTL XMT -- MACROS TO SEND NETWORK DATA.
COMMENT @
XMT
This macro sends the contents of its argument as an extensible
binary number
XMTI
This macro sends its argument as an extensible binary number.
XMT1 & XMT1I
Analogous to XMT and XMTI except that the argument is considered to
be a single eight bit byte.
XMTB
This macro takes as its argument the address of a byte pointer, and
sends the specified byte as an extensible binary number
XMTS
This macro assumes that its argument points to a sixbit string of up to
6 characters, and sends this as an extensible ascii string.
XMTA
This macro takes as its argument a byte pointer to an asciz string,
and sends that string as extensible ascii.
@
DEFINE XMT(A)<
IFDIF <T1><A>,<MOVE T1,A>
IFNDEF BI2EBI,<EXTERNAL BI2EBI>
PUSHJ P,BI2EBI
>
DEFINE XMT1(A)<
IFDIF <T1><A>,<MOVE T1,A>
IFNDEF DPBBIN,<EXTERNAL DPBBIN>
PUSHJ P,DPBBIN
>
DEFINE XMTI(A)<
IFNDEF BI2EBI,<EXTERNAL BI2EBI>
MOVEI T1,A
PUSHJ P,BI2EBI
>
DEFINE XMT1I(A)<
IFNDEF DPBBIN,<EXTERNAL DPBBIN>
MOVEI T1,A
PUSHJ P,DPBBIN
>
DEFINE XMTB(A)<
IFNDEF BI2EBI,<EXTERNAL BI2EBI>
LDB T1,A
PUSHJ P,BI2EBI
>
DEFINE XMTS(A)<
IFNDEF SX2EAS,<EXTERNAL SX2EAS>
IFDIF <T1><A>,<MOVE T1,A>
PUSHJ P,SX2EAS
>
DEFINE XMTA(A)<
IFNDEF AS2EAS,<EXTERNAL AS2EAS>
IFDIF <T1><A>,<MOVE T1,A>
PUSHJ P,AS2EAS
>
DEFINE XMTP(A)<
IFNDEF PP2EAS,<EXTERNAL PP2EAS>
IFDIF <T1><A>,<MOVE T1,A>
PUSHJ P,PP2EAS
>
;
;PARANOID IS A BITMASK OF SPECIAL THINGS TO CHECK
;
IFNDEF PARANOID,<PARANOID==-1> ;DEFAULT TO MAXIMUM CONSISTANCY CHECKING
P$PCB==1_0 ;CHECK SELECTED PCB'S FOR VALIDITY
P$FEK==1_1 ;CHECK FEK'S FOR CONSISTANCT (1/SEC)
P$LAT==1_2 ;CHECK TO MAKE SURE ALL LAT ENTRYS ARE VALID
P$EAT==1_3 ;ENABLE THE "TROLL"
P$DDB==1_4 ;CHECK DDB'S
P$NPD==1_5 ;CHECK NETWORK CONNECT DESCRIPTOR BLOCKS
P$TSK==1_6 ;CHECK THE TASK DEVICE
P$NDB==1_7 ;CHECK NDB'S
P$MCR==1_10 ;CHECK MCR'S
P$VTM==1_11 ;CHECK VIRTUAL TERMINALS
P$COR==1_12 ;KEEP A CHAIN OF ALL OF NETSER'S CORE USAGE
P$NTR==1_13 ;KEEP TRACK OF WHO IS USING THE "NT" RESOURCE
END ;OF NETPRM.MAC