;DSKB:DNTATL.MAC[10,44,S] Edit by -TL- [10,44] on 15-May-85 at 14:54:45 ;Support the ethernet ;DSKB:DNTATL.MAC[10,44,S] Edit by -TL- [10,44] on 09-May-85 at 13:59:16 ;Format ROUTER control messages,add /OCTAL/AREA ;DSKB:DNTATL.MAC[10,44,S] Edit by -TL- [10,44] on 07-May-85 at 11:07:19 ;Fix SWIL conditionals. Make local messages use the right Byte Pointer. ; UPD ID= 13, SNARK:<6.1.UTILITIES>DNTATL.MAC.28, 22-Jun-84 13:58:25 by GROSSMAN ;Increase DECnet buffer size to prevent program from blowing up on Ethernet ; packets. ;SNARK:<6.1.UTILITIES>DNTATL.MAC.14 2-Apr-84 17:37:04, Edit by NICHOLS ;Add input and output circuit typeout ;WORK:DNTATL.MAC.56 1-Feb-84 21:16:06, Edit by NICHOLS ;Fix date/time typout ;WORK:DNTATL.MAC.23 24-Jan-84 15:59:49, Edit by NICHOLS ;Add code to handle Phase IV router header and its pad byte ;SNARK:<6.1.UTILITIES>DNTATL.MAC.4 20-Jan-84 11:36:24, Edit by NICHOLS ;Add Phase IV NI routing for ROUTER data messages. TITLE DNTATL - Format a DECnet-20 Trace SUBTTL W. G. Nichols SALL .DIRECTIVE FLBLST OPDEF OPEN [050000,,0] ;GET AROUND KEVIN'S BAD MACSYM OPDEF CLOSE [070000,,0] ;DITTO DEFINE XP(SYM,VAL), XP FTLIST,0 ;NON-0 TO DISABLE XLISTS XP FTSWIL,1 ;NON-0 FOR TOPS-10 SWIL XP FTOPS10,1 ;NON-0 FOR TOPS-10 VERSION XP FTOPS20,0 ;NON-0 FOR TOPS-20 VERSION XP NDSPL,^D9 ;NODES PER OUTPUT LINE OF ROUTING MSG IFN FTOPS10,< SEARCH D36PAR,MACTEN,UUOSYM,MACSYM IFN FTSWIL,< SEARCH SWIL .REQUEST REL:SWIL >; END IFN FTSWIL IFE FTSWIL,< SEARCH SCNMAC .REQUEST REL:SCAN >; END IFE FTSWIL >; END IFN FTOPS10 IFN FTOPS20,< SEARCH D36PAR,MONSYM,MACSYM,SCNMAC .REQUEST REL:SCAN >; END IFN FTOPS20 PRGID='DNTATL' ;NAME OF THIS PROGRAM PRGABR='DNT' ;3 CHR ABBREVIATION USED FOR PROG. DNTWHO==0 DNTVER==1 ;MAJOR VERSION DNTMIN==0 ;MINOR VERSION DNTEDT==5 ;EDIT NUMBER HSGAD==600000 ;STARTING ADDR OF HISEG TWOSEG HSGAD ;WE'LL HAVE A SHARABLE HI-SEG ;Note that these BEGSTRs are copied in MSGTRC, the program which ;makes the trace file. FTSHOW==0 BEGSTR FH ;File Header WORD LNG ;Length of this header FIELD FLG,9 ;Flags to indicate what kind of entry FIELD TYP,9 ;Entry Type XP TYP.FH,1 ; Entry type of header record HWORD MGL ;Length of a message block WORD UPT ;UPTIME corresponding to UDT below WORD UDT ;Universal Date/Time corresp to UPTIME WORD PVR ;Trace program version number (loc 137) WORD MVR ;Monitor Version (location 137) WORD CFG,5 ;CONFIG string from this monitor ENDSTR BEGSTR MH ;Message Header WORD LNG ;Length of the entire entry FIELD FLG,6 ;Flags to indicate what kind of entry FIELD IOL,3 ;Input, output or local XP IOL.IN,1 ;Input (avoid zero for error detection) XP IOL.OT,2 ;Output message XP IOL.LO,3 ;Local message FIELD TYP,9 ;Entry Type XP TYP.MH,2 ; Entry type of message record HWORD LST ;Cumulative number of messages lost WORD UPT ;UPTIME as of entry (reliable time stamp) WORD UDT ;Universal date/time (readable time stamp) WORD OMB ;Original MB pointer WORD ILN ;Input line ID (or zero if none) WORD OLN ;Output line ID (or zero if none) ENDSTR ;The format of an ACKNUM field ;This structure is expected to be used to pull apart a value held ;in a register. BEGSTR AK FILLER 20 ;ONLY THE RIGHTMOST 16 BITS COUNT FIELD PNT, 1 ;FLAG SET IF FIELD IS PRESENT FIELD QAL, 3 ;QUALIFIER: AK$QAK==0 ; 0 IS ACK AK$QNK==1 ; 1 IS NAK, 2 & 3 ARE RESERVED AK$CAK==2 ; 2 IS CROSS-SUB CHANNEL ACK AK$CNK==3 ; 3 IS CROSS-SUB CHANNEL NAK FIELD NUM, 12 ;THE ACK NUMBER, WE KNOW THIS IS RT-JUSTIFIED ENDSTR ; NEGATIVE IF HIGH BIT OF BYTE IS SET ; SEE LOADE MACRO (E IS AS IN HRRE) ;This structure is expected to be used to pull apart a value held ;in a register. BEGSTR LS ;THE LSFLAGS FIELD OF A LINK SERVICE MESSAGE FILLER 28 ;ONLY THE RIGHTMOST 8 BITS COUNT FIELD ZRO,4 ;MUST BE ZERO FIELD INT,2 ;INTERPRETATION LS.INR==0 ;NORMAL DATA REQUEST LS.IOT==1 ;OTHER DATA REQUEST (2 & 3 RESERVED) FIELD MOD,2 ;THE ON/OFF INDICATOR LS.MNC==0 ;NO CHANGE, CODE USES JUMPE LS.MOF==1 ;TURN SUBLINK OFF (IGNORED ON "OTHER") LS.MON==2 ;TURN SUBLINK ON (IGNORED ON "OTHER") LS.MRS==3 ;RESERVED ENDSTR ;This structure is expected to be used to pull apart a value held ;in a register. BEGSTR SV ;THE SERVICES FIELD OF A CI OR CC MSG FIELD FL1,32 ;FILLER 1, CHECK FOR ALL ZEROES FIELD OPT,2 ;THE FLOW CONTROL OPTION, SEE FCM.xx FIELD FL2,2 ;FILLER 2, CHECK FOR BEING "01" SV$FL2==1 ;MAGIC NUMBER THAT SVFL2 MUST BE ENDSTR SUBTTL Macros DEFINE SMEAR(ac,start,end,value),< MOVX ac,value MOVEM ac,start MOVE ac,[XWD start,start+1] BLT ac,end > DEFINE $LIST,< LIST > DEFINE $XLIST,> $LIST DEFINE VRSN. (PROG),< BYTE (3) PROG'WHO (9) PROG'VER (6) PROG'MIN (18) PROG'EDT > .JBVER=137 ;JOBDAT LOC FOR VERSION NUMBER LOC .JBVER VRSN. DNT RELOC SUBTTL Accumulator Definitions FLAG=0 ;FLAGS, CONTINUOUS THROUGH ALL CALLS ;ZEROED BEFORE EACH CALL TO .TSCAN ;SEE BIT DEFINITIONS BELOW T1=1 ;WORK... T1 AND T2 MUST BE 1 & 2 T2=2 T3=3 ;AND T3 AND T4 MUST BE 3 & 4 T4=4 ;FOR COMPATIBILITY WITH SCAN & WILD T5=5 T6=6 ;T6 IS USED AS INDEX FOR MSD BYTE PTRS N=7 ;SAME AS IN SCAN C=10 ;SAME AS IN SCAN MBO=11 ;OFFSET TO SUBTRACT FROM PTRS INTO MSG BLK MS=12 ;POINTER TO CURRENT MSD IN MSG BLK P1=13 ;PRESERVED ACs P2=14 ; ??=15 CX=16 ;SUPER-TEMP FOR MACROS .SAC==CX ; ALTERNATE NAME FOR CX FOR SOME MACROS P=17 ;STACK POINTER SUBTTL Compile-Time Variables OPDEF CALL [PUSHJ P,] OPDEF RET [POPJ P,] OPDEF RETSKP [JRST RSKP] OPDEF CALLRET [JRST] ;CHANNEL ASSIGNMENTS XP F.FIN,1 ;CHANNEL FOR INPUT FILE. XP F.FOUT,2 ;CHANNEL FOR OUTPUT FILE. ;DEFAULT DEVICE NAMES XP INDFT,'DSK ' ;DEFAULT INPUT DEVICE XP OUTDFT,'DSK ' ;DEFAULT OUTPUT DEVICE. ;Block lengths XP %XPBSZ,^D2000 ;MAX BUFFER SIZE DECnet USES XP LN$PDL,^D100 ;LENGTH OF PUSH DOWN LIST XP FOPLEN,^D7 ;LENGTH OF NON-PRIV FILOP. BLOCK XP PTHLNG,^D9 ;LENGTH OF A PATH BLOCK XP LN$ENT,^D9 ;LENGTH OF EXTENDED ENTER BLOCK XP LN$LKP,^D9 ;LENGTH OF EXTENDED LOOKUP BLOCK ; MSG$ is followed by the three letter error code, one of the ; indicators ERR, WRN, or INF for which class of message, an ; optional S to save all accumulators, and the message text. ; it will force out any TTY buffers, issue the file name if ; not yet done, then issue the message correctly prefixed. DEFINE MSG$(code$,level$,savef$,text$),< $XLIST E..'code$:! IFIDN ,< PUSH P,T1 PUSH P,T2 PUSH P,T3 PUSH P,T4> LEVL$$=="%" IFIDN , MOVE T1,[XWD PRGABR,''code$''] MOVE T2, [XWD LEVL$$,[ASCIZ "text$"] ] $LIST CALL .ERMSG## ;;TYPE THE ERROR MESSAGE. $XLIST IFIDN ,< POP P,T4 POP P,T3 POP P,T2 POP P,T1> $LIST > DEFINE ERROR(code,text,label),< IFNB