UNIVERSAL NETPRM DEVICE INDEPENDENT NETWORK PARAMETERS - V071 SUBTTL D. TODD / D. MCCLURE 23-FEB-88 SEARCH F,S SALL ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED ; OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1978,1979,1980,1982,1984,1986,1988. ;ALL RIGHTS RESERVED. .CPYRT<1978,1988>,. XP VNETPRM,071 ;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 arrived 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> DEPOSIT SNA <002> GO TO SNA <003> CLEAR SNA <004> DEBUG SNA <005> ACCEPT DNA <011> EXAMINE DATA DNA <012> REJECT DNA <013> REQUEST BOOT DNA <014> REQUEST LOAD DNA <015> 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 indicate 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 NVR. XP NCT.SK,5 ;5=STACK. XP NCT.ID,6 ;6=NODEID. OPD is NNM SNM SID NIT NIS NVR XP NCT.RH,B3 ;SNA and DNA present. XP NCT.TR,B4 ;trace XP NCT.IT,B5 ;INTERRUPT message (NOP DRQ COUNT) XP NCT.SQ,B6 ;sequential node XP NCT.EX,B7 ;extensible bit ;NIS= ;NodeID sequencer, present only for "broadcast" NodeID type. ; Extensible binary, maximum of 2 bytes. ;NIT= ;NodeID type, extensible binary. Current values are NIT.PP=0 ; for point-to-point, and NIT.BC=1 for broadcast (Ethernet). XP NIT.PP,0 ;Point-to-Point (DTE, DMR, etc.) XP NIT.BC,1 ;Broadcast (Ethernet, etc.) ND NCLNIP,0 ;NCL ETHERNET PROTOCOL ID ;NNM= ;node name, a binary extensible field, maximum of 12 ;bits, identifying node. Zero means next node over ;synchronous line. ;NVR= ;NCL version number of originating node. Extensible binary. ;Not present (or zero) before version 25. XP NCLVER,25 ;Our current NCL version number ; (tracks VDAS85 in DNCNFG.P11) ;OPD= ;optional data (message-type specific). ;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 ;DDP= ;attributes for DDP (remote DN8x "DDCMP") devices ;currently, none defined ;DFT= ;type word for device, TTY TYPE or LPT FORMS. ;DLP= ;attributes for line printer: XP DLP.LL,B2 ;lower case XP DLP.FC,B14 ;full character set (e.g., LN01) XP DLP.8B,B15 ;eight-bit printer (no data compression) ;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 (Obsolete) XP DTY.BD,B4 ;baudot XP DTY.AD,B5 ;auto dial line (Bell 801) XP DTY.SH,B6 ;remote can do "set host" function ; (ie can generate connect messages) XP DTY.RI,B7 ;run INITIA (ignored) XP DTY.RA,B8 ;requestable autobaud (.TOEAB supported) ;DRX= ;device attributs for RDX (remote data entry terminal) devices XP DRX.MD,B0 ;multi-drop line XP DRX.PL,B1 ;line accepts a poll sequence ;DVT= ;device specific attributes: (DCD!DDP!DLP!DTY!DRX)+DVU+DVV ;DVU= ;device unit type (e.g., LP05 vs LN01) XP DVU.LP,1 ;LP05-class XP DVU.LN,2 ;LN01-class ;DVV= ;device controller type (e.g., LP11 vs LP20) XP DVV.L1,4 ;LP11 XP DVV.L2,5 ;LP20 ;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+DFT ;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 ;;TERMINAL HANDLER (MCR) X TTY,OBJ.TY,.TYTTY ;;TERMINAL X CDR,OBJ.CD,.TYCDR ;;CARD READER X LPT,OBJ.LP,.TYLPT ;;LINE PRINTER X PTR,OBJ.PR,.TYPTR ;;PAPER TAPE READER X PTP,OBJ.PP,.TYPTP ;;PAPER TAPE PUNCH X PLT,OBJ.PL,.TYPLT ;;PLOTTER X MTA,OBJ.MT,.TYMTA ;;MAGNETIC TAPE X DTA,OBJ.DT,.TYDTA ;;DECTAPE X TSK,OBJ.TK,.TYTSK ;;PROCESS (JOB OR TASK) X RDA,OBJ.RD,.TYRDA ;;REMOTE DATA ENTRY X CDP,OBJ.CP,.TYCDP ;;CARD PUNCH X DDP,OBJ.DP,.TYDDP ;;DDCMP DEVICE > 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, 177 means default choice, 0 - 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) ;100+ are "mapped" from DECnet codes, for FAL-10 XP RSN.KS,100+^D03 ;node is shutting down XP RSN.RD,100+^D09 ;connect rejected by dialog process XP RSN.ID,100+^D34 ;invalid ppn ("userid") and/or password XP RSN.IS,100+^D36 ;invalid account string XP RSN.FE,100+^D43 ;generic "image field format error" ;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 <1> XP STC.DP,2 ;DEPOSIT <2> XP STC.GT,3 ;GOTO <3> XP STC.CL,4 ;CLEAR <4> XP STC.DB,5 ;DEBUG <5> XP STC.MS,6 ;MESSAGE <6><0> XP STC.BD,7 ;BOOT DATA <7> XP STC.AC,11 ;ACCEPT <11> XP STC.ED,12 ;EXAMINE DATA <12> XP STC.RJ,13 ;REJECT <13> XP STC.RB,14 ;REQUEST BOOT <14> XP STC.RL,15 ;REQUEST LOAD <15> 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) STATUS -- CNT <003> STC STD CONTROL -- CNT <004> DCT CDT USER ID -- CNT <005> PPN PSWD UNAME ACCT GROUP FILE SPECIFICATION -- CNT <006> 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 (obsolete) XP CDT.PL,B1 ;APL MODE XP CDT.TD,B2 ;TIDY MODE (obsolete) XP CDT.8B,B3 ;8-BIT terminal XP CDT.FT,B4 ;Forms-type field is present ;B5-15=reserved ;CNT= ;length of what follows in bytes (ext. binary) ;DCT= ;device specific control information for terminal XP DCT.EP,0 ;echo pipeline marker (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) XP DCT.AB,5 ;Request F.E. to do autobaud detect (no CDT) ;for files XP DCT.SI,0 ;set record pointer for input XP DCT.SO,1 ;set record pointer for output ;line printer XP DCT.LS,0 ;Load skip channel tape (reserved) XP DCT.LR,1 ;Load LP20 RAM (reserved) XP DCT.LF,2 ;Set forms type ;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 ;SDP= ;status for DDP: XP SDP.AV,B0 ;DDCMP ("LBLK") available (L2.DDP set in -11) XP SDP.RN,B1 ;DDCMP protocol is up and running XP SDP.BL,B12 ;"Block too large" error XP SDP.DT,B13 ;"data" error XP SDP.DE,B14 ;"device" error XP SDP.IP,B15 ;"improper mode" error (see SDP.AV) XP SDP.ER,SDP.BL!SDP.DT!SDP.DE!SDP.IP ;any error ;SLP= ;status for line printer: XP SLP.FE,B0 ;fatal error XP SLP.OL,B1 ;offline(+others) XP SLP.PZ,B2 ;page count zero XP SLP.VE,B3 ;VFU error XP SLP.RE,B4 ;RAM error XP SLP.IC,B5 ;illegal character ;free XP SLP.OV,B7 ;parity error XP SLP.DE,B8 ;demand error XP SLP.ME,B9 ;master sync error ;free XP SLP.8B,B14 ;8-bit data no compression (depends on DLP.8B) XP SLP.SV,B15 ;suppress VFU (sorta "image" data mode) ;SPP= ;status for paper tape punch: XP SPP.ME,B0 ;master error XP SPP.NP,B1 ;no power XP SPP.NT,B2 ;no tape ;SPR= ;status for paper tape reader: XP SPR.ME,B0 ;master error XP SPR.NP,B1 ;no power ;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!SDP!SLP!SPP!SPR!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.8B,B9 ;8-bit I/O mode ; XP ,B10 ;reserved 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 ,B14 ;reserved ; XP ,B15 ;reserved ;UNAME= ;user name (extensible ASCII) ;MACRO FOR DEFINING THE FIELDS OF THE VARIOUS NETWORK DATA BLOCKS DEFINE X(NAME<%%%OFF>,SIZE<1>),-SIZE> SUBTTL NETDDB -- NETWORK SPECIFIC DDB DEFINITIONS. %%%OFF==DEVLLD ;INITIALIZE THE OFFSET X DEVNET ;XWD NDT,NODE-NUMBER X NETXLA ;BYTE (8)RSN(14)SLA(14)DLA X DEVDRQ ;XWD OUTSTANDING-INPUT-DRQ'S,DRQ'S-FOR-OUTPUT X NETATR ;BYTE (4)*FREE*(8)DVV(8)DVU(16)DVT X NETMRL ;BYTE (4)*FREE*(8)DDBLENGTH(12)RLN(12)MML 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 DEVDFT ;SIXBIT "FORMS TYPE" FOR DEVICE X NETLEN,0 ;LENGTH OF A GENERAL NETWORK DDB ;NETWORK DEPENDANT BYTE POINTERS XP NT%RSN, ;REASON FOR DISCONNECT XP NT%SLA, ;SOURCE LINK ADDRESS XP NT%DLA, ;DESTINATION LINK ADDRESS XP NT%ZWD, ;DDB LENGTH XP NT%RLN, ;LOGICAL RECORD LENGTH XP NT%MML, ;MAXIMUM (DATA) MESSAGE LENGTH XP NT%DVV, ;DEVICE "CONTROLLER" (DVV) TYPE XP NT%DVU, ;DEVICE "UNIT" (DVU) TYPE XP NT%DVT, ;DEVICE ATTRIBUTE (DVT) 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 ; DEPENDENT 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.) 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) ;THESE TWO WORDS ARE FOR UGLY BIZZARO "MESSAGE BLOCK" COMPATIBILITY ;WITHIN THE LINE "KONTROLLERS" . . . X PCBFMS ;I'D LIKE TO KILL SOMEONE . . . X PCBDMN ;ON THE KS-10, THE MESSAGE NUMBER IS HERE ;THE REAL PCB INFORMATION X PCBFEK,0 ;XWD FEK,??? (USEFUL ONLY FOR NODE-ID MSGS) X PCBNNM ;XWD ???,NODE-NUMBER IFN FTENET,< ;IF KLNI/ETHERNET HARDWARE, X PCBNIA,2 ;ETHERNET ADDRESS (RECEIVE ONLY, FOR NODE-ID) > ;END IFN FTENET ;THE TWO "MESSAGE SEGMENT DESCRIPTORS" (OVERLY-COMPLICATED SO AS TO LOOK ;LIKE TWO REAL "MSD" BLOCKS FOR OUTBOARD USERS, LIKE ETHSER) X PCBMS1,0 ;"FIRST" MSD ADDRESS X PCBNXX ;POINTER TO PCBNXY (USEFUL ONLY TO D8EINT) X PCBPTR,2 ;BYTE POINTER TO MESSAGE X PCBCTR ;COUNT OF DATA BYTES IN USE X PCBALN ;ALLOCATED LENGTH OF DATA BUFFER X PCBADR ;ALLOCATED ADDRESS OF DATA BUFFER X PCBMS2,0 ;"SECOND" MSD ADDRESS X PCBNXY ;TRAILING "NEXT" POINTER (MSD-STYLE), ALWAYS 0 X PCBPT2,2 ;SECONDARY BYTE POINTER (OUTPUT ONLY) X PCBCT2 ;SECONDARY BYTE COUNT (OUTPUT ONLY) X PCBAL2 ;SECONDARY ALLOCATION LENGTH (MBZ) X PCBAD2 ;SECONDARY ALLOCATION ADDRESS (MBZ) ;THE REST OF THE PCB IFN FTKL10,< ;ON THE KL, WE MUST WORRY ABOUT CACHE X PCBCSN ;XWD CPU#,CACHE-SWEEP-SERIAL-NUMBER > X PCBTAG ;CONTAINS SIXBIT/PCBTAG/ FOR VALID PCB'S X PCBLEN,0 ;LENGTH OF A PCB ;BYTE POINTERS INTO THE PCB. (STORAGE RESERVED FOR THEM IN COMNET) XP PC%PCV, ;POINTER TO COMPRESSION CODE XP PC%MSN, ;POINTER TO MESSAGE NUMBER SUBTTL NDB -- NODE DATA BLOCK DEFINITIONS NGHMAX==^D16 ;MAXIMUM NUMBER OF NEIGHBORS NODMAX==177 ;HIGHEST LEGAL NODE NUMBER %%%OFF==0 ;INITIALIZE THE OFFSET X NDBNNM ;XWD NODE-NUMBER,NEXT-NDB X NDBSID ;XWD -DATE,-CONFIG X NDBNVR,0 ;ALTERNATE NAME FOR NCL-VERSION X NDBSNM ;BYTE (18)-NAME(18)NCL-VERSION 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 NDBSN2 ;SIXBIT SYSTEM NAME (POINTED TO FROM NDBSNM) X NDBLEN,0 ;SIZE OF AN NDB. ;BYTE POINTERS INTO THE NDB (INDEXED BY "W") XP NB%NXT, ;ADDRESS OF NEXT NDB XP NB%NNM, ;NODE NUMBER XP NB%NVR, ;NCL VERSION NUMBER XP NB%SNM, ;ADDRESS OF STATION NAME XP NB%TIM, ;TIMER. IT'S USED AS BOTH ;A START AND REP TIMER. REP ;TIMER COUNTS UP, START COUNTS ;DOWN!! (UGLY) XP NB%NGH, ;FIRST NEIGHBOR ;BYTE (9)NODE(9)COST XP NB%NGN, ;EXTRACT NODE FROM NB%NGH XP NB%NCS, ;EXTRACT COST FROM NB%NGH XP NB%NGL,-1>(W),35> ;LAST NEIGHBOR XP NB%OPR, ;ADDRESS OF OPR LDB (IF ANY) XP NB%CTJ, ;JOB NUMBER OF STATION CTL XP NB%SDT, ;SYSTEM BUILD DATE XP NB%SID, ;SYSTEM ID XP NB%MOM, ;MAX. OUTSTANDING MSG. COUNT XP NB%DEV, ;FIRST DEVICE ;POINTERS TO THE OUTPUT MESSAGE NUMBERS XP NB%LAR, ;LAST ACK RECEIVED XP NB%LAP, ;LAST OUTPUT MSG ACKED XP NB%LMS, ;LAST MESSAGE SENT XP NB%LMA, ;LAST MSG NUMBER ASSIGNED ;POINTERS TO THE INPUT MESSAGE NUMBERS XP NB%LAS, ;LAST ACK SENT XP NB%LMR, ;LAST MESSAGE RECIEVED XP NB%LMP, ;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 NDTCNI ;ADDRESS OF CONNECT INIT PROCESSOR X NDTDSP ;POINTER TO DEVSER DISPATCH TABLE (@N---DP(T4)) X NDTNDP ;POINTER TO NETSER DISPATCH TABLE (@---NDP(T1)) X NDTLEN,0 ;LENGTH OF THE DEVICE TABLE ;BYTE POINTERS INTO A NETWORK DEVICE TABLE (INDEXED BY "W") XP ND%TYP, ;DEVTYP BYTE XP ND%BFZ, ;DEFAULT BUFFER SIZE XP ND%SPL, ;SPOOL BITS XP ND%DVT, ;DEVICE ATTRIBUTES XP ND%OBJ, ;DEVICE OBJECT TYPE XP ND%DCM, ;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 STCMSN ;THIS IS ZERO TO IDENTIFY IT AS A ANF-10 MSG 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+/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,15 ;CODE FOR INTERRUPT SERVICE (VECTOR A) X KDPIVB,15 ;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" KDLMMS==340 ;THE MAXIMUM MESSAGE SIZE (WORDS) ; (THIS IS BASICALLY (((KDLPPL*1000)-KDLEST)/4) ; I.E., THE FOUR BUFFERS THAT WILL FIT WITHIN ; THE NUMBER OF PAGES AVAILABLE FOR EACH KDL: ; KDLMMS==160 (~^D450 BYTES) FOR ONE PAGE; ; KDLMMS==360 (~^D960 BYTES) FOR TWO PAGES; ; AND SO ON) %%%OFF==0 ;INITIALIZE FOR "X" MACRO X KDLUSR ;CODE OF FOR THE "USER" OF THE BLOCK X KDLFEK ;BLOCK ADDRESS IF ANF-10 (FROM KDP BLOCK) X KDLDDB ;BLOCK ADDRESS IF PROGRAM (SETUP ON ASSIGN) X KDLLBK ;BLOCK ADDRESS IF DECNET (SETUP ON INIT) X KDLDLX ;BLOCK ADDRESS IF IBM (SET UP ON INIT) X KDLINE ;CONTAINS OUR LINE NUMBER (BSEL3) X KDLFZR,0 ;START ZEROING HERE ON AN INIT X KDLKDP ;POINTS TO KDP. (KDPLIN+KDLINE POINTS TO KDL) 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 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 ITS DATA BYTES 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,KDLMMS+4 ;FIRST TRANSMITTER BUFFER DESCRIPTOR ; X KDLXB1,KDLMMS ;FIRST TRANSMITTER BUFFER (FOLLOWS BDL) X KDLXD2,KDLMMS+4 ;SECOND TRANSMITTER BUFFER DESCRIPTOR ; X KDLXB2,KDLMMS ;SECOND TRANSMITTER BUFFER X KDLRBC ;COUNT OF RECEIVE BUFFERS QUEUED X KDLRD1,KDLMMS+4 ;FIRST RECEIVE BUFFER DESCRIPTOR ; X KDLRB1,KDLMMS ;FIRST RECEIVE BUFFER X KDLRD2,KDLMMS+4 ;SECOND RECEIVE BUFFER DESCRIPTOR ; X KDLRB2,KDLMMS ;SECOND RECEIVE BUFFER X KDLLAL,0 ;LENGTH OF KDL KDLPPL==</PAGSIZ> ;CALCULATE THE NUMBER OF PAGES PER KDL KDLLEN==KDLPPL*PAGSIZ ;CALCULATE THE TOTAL LENGTH OF THE TABLE ;VALUES OF THE VARIOUS FIELDS IN KDLSTS ;BITS THAT SAY A CONTROL MESSAGE IS REQUIRED (IN "JFFO" PRIORITY ORDER). KDSSTR==1B0 ;NEED TO SEND A START. KDSSTK==1B1 ;NEED TO SEND A STACK. KDSNAK==1B2 ;NEED TO SEND A NAK. KDSREP==1B3 ;NEED TO SEND A REP. KDSDAT==1B4 ;NEED TO SEND A DATA MESSAGE. KDSACK==1B5 ;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, ;DDCMP STATE XP KD%TIM, ;REP TIMER XP KD%XNK, ;TRANSMIT NAK CODE XP KD%RMN, ;RECEIVE MESSAGE NUMBER XP KD%LMX, ;LAST MSG XMITTED XP KD%LMA, ;LAST MSG ACK'ED XP KD%RPC, ;REP COUNTER SYN NETOFF,KDPOFF ;DEFINE THE INTERRUPT OFF SYN NETON, KDPON ; AND ON MACROS SUBTTL DMR -- DMR11 Line Block. One/DMR11, indexed by "W" %%%OFF==0 ;Initialize for "X" macro DR%NBF==3 ;Number of buffers/DMR XMT/RCV CHANNEL ;Cost - ~ 700(8) words/increment ;Make sure DMRPPL is big enf if change DMRPPL==3 ;Number of pages per line (for bufs) DMRMMS==</>/4 ;Max msg size in 10 wds ;Byte/pg - bastbl / # bufs * X+R /byte/wd X DMRUSR ;User code for DMR (DD.xxx) X DMRCSR ;Unibus address of DMR's CSR X DMRVEC ;Unibus address of DMR's interrupt vector X DMRMAP ;I/O address of mapping register for comm region X DMREAD ;11 Address of comm region X DMRTAD ;10 Address of comm region X DMRLIN,0 ;LH - Synch line number on this node X DMRNUM ;RH - DMR # (0,1,2,...7) X DMRIVA,15 ;Vector A interrupt code X DMRIVB,15 ;Vector B interrupt code X DMRCPC ;PC of last crash on this DMR X DMRCRG,2 ;CSR contents (1/2 wds) at last crash X DMRFEK ;Address of FEK for this DMR X DMRDDP ;Address of owning DDB (set @ OPEN) X DMRLBK ;Address of DECnet Circuit block X DMRDLX ;Address of DLX (for IBM comm) X DMRSTS ;Software status of this line X DMRCTT,11 ;Control-out table by wierd code X DMRMST ;Modem status at last interrupt X DMRICT ;Number of times tried to start DMR X DMRLUP ;Number of times we succeeded X DMRLDN ;Number of times line went down X DMRCLR,0 ;Area to clear on a restart of this line X DMRZTM ;Seconds since counters zeroed X DMRACT ;Count of vector "A" interrupts X DMRBCT ;Count of vector "B" interrupts X DMRIQT ;Take pointer to input command queue X DMRIQP ;Put pointer to input command queue X DMRINQ,<2*> ;Input command queue for this DMR X DMRWTO ;Queue of PCBs waiting for output(to DMR) X DMRWTA ;Queue of output PCBs waiting for ack (from DMR) X DMRCTA ;Number of PCBs in WTA queue(limit=comm size) X DMRMAI ;Queue of Maint msgs waiting to be freed X DMRMAC ;Number of messages in MAI queue X DMRXBG ;Last buffer given to DMR X DMRRBC ;Number of receive buffers queued to DMR X DMRRBG ;Pointer to last receive buffer given to DMR X DMRRBT ;Pointer to last receive buffer taken from DMR X DMRRCC,DR%NBF ;Table of received char count for queued buffers X DMRXMC ;Messages sent X DMRRMC ;Messages received X DMRLEN,0 ;Length of a DMR block ;Fields in DMRSTS ;State codes (Bits 0-2) DR%HLT==0 ;DMR is halted (probably due to error) DR%FLS==1 ;DMR is halting (returning buffers) DR%MAI==2 ;DMR is running in DDCMP maintenance mode DR%WT1==3 ;DMR is init'd, waiting for a message to xmit DR%WTD==4 ;DMR is init'd, waiting for a completion DR%RUN==5 ;DMR is running in DDCMP data mode ;Status bits DMRSSW==1B35 ;DMR is connected to a switched line DMRSHD==1B34 ;DMR is running in HDX mode DMRSLS==1B33 ;DMR is using Long Start timer DMRSMT==1B32 ;DMR is to start in maintenance mode DMRSTV==1B31 ;DMR is starving - needs 1/x/sec attn SYN NETOFF,DMROFF SYN NETON,DMRON 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 RANDOM NETSER PARAMETERS ;SIZE OF NETWORK MESSAGE HISTOGRAM TABLE (BY POWER OF TWO) NETLNH==<^D36-^L<^D1023>> + 1 ;HANDLE UP TO 1023 BYTE MESSAGES SUBTTL LAT -- LINK ADDRESS TABLE ;THE LINK ADDRESS TABLE CONTAINS ONE WORD FOR EACH ACTIVE LINK. ; THE FORMAT OF A LAT ENTRY IS ; ; BYTE (6)FLAGS(6)STATE(24)DDB/LDB-POINTER ; ;IF THE ENTRY IS 0 THEN IT IS NOT IN USE. INDEX IS BY 'SLA' FIELD ;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 ;BYTE POINTERS INTO LAT ENTRIES XP LT%STA, ;POINT TO THE STATE BYTE IN A LAT ENTRY XP LT%PTR, ;POINT TO DDB/LDB ADDRESS IN LAT ; IF LAT.TY CLEAR THEN DDB ADDRESS ; IF LAT.TY SET THEN LDB ADDRESS SUBTTL MACROS DEFINE EMRGCY,< ;;SEE NETSER(NTUEFC) FOR DETAILS IFNDEF 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 , IFNDEF BI2EBI, PUSHJ P,BI2EBI > DEFINE XMT1(A)< IFDIF , IFNDEF DPBBIN, PUSHJ P,DPBBIN > DEFINE XMTI(A)< IFNDEF BI2EBI, MOVEI T1,A PUSHJ P,BI2EBI > DEFINE XMT1I(A)< IFNDEF DPBBIN, MOVEI T1,A PUSHJ P,DPBBIN > DEFINE XMTB(A)< IFNDEF BI2EBI, LDB T1,A PUSHJ P,BI2EBI > DEFINE XMTS(A)< IFNDEF SX2EAS, IFDIF , PUSHJ P,SX2EAS > DEFINE XMTA(A)< IFNDEF AS2EAS, IFDIF , PUSHJ P,AS2EAS > DEFINE XMTP(A)< IFNDEF PP2EAS, IFDIF , PUSHJ P,PP2EAS > ; ;PARANOID IS A BITMASK OF SPECIAL THINGS TO CHECK ; NDL 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 CONSISTANCY (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