X7$ ?BOOT-U-No boot on volume ߋtv  JJ%q.SRT11A DECRT11A ۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶mkQ$z$z$kQ$9g&*m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m   JV%q.PSI_AC041 PSI_AC04 STANNARD DECFILE11B JSL$ PSI_AC041.E0 /'[STANNARD.OBJ.KIT.PSIUTL.E]PSIACC.EXE;1ANALYZE.EXE;1<1No PSI_AC041.E,BACKUP/COMMENT=VAX/VMS SPKITBLD Procedure/INTER/VERIFY DISK$OWL:[STANNARD.OBJ.KIT.PSIUTL.E]*.* DUA1:[0,0]PSI_AC041.E/LABEL=(PSI_AC01,PSI_AC02,PSI_AC03,PSI_AC04,PSI_AC05,PSI_AC06,PSI_AC07,PSI_AC08,PSI_AC09,PSI_AC10)/SAVE.MCALL .MODULE .MODULE DD,VERSION=13,COMMENT=,AUDIT=YES ; COPYRIGHT (c) 1984,1985,1986 BY ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ALL RIGHTS RESERVED. ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ; TRANSFERRED. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT ; CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. .SBTTL CONDITIONAL ASSEMBLY SUMMARY .SBTTL GENERAL COMMENTS .ENABL LC .SBTTL MACROS AND DEFINITIONS .MCALL .DRDEF, .MTPS, .ASSUME .ADDR .IIF NDF DD$PRI DD$PRI = 4 .IIF NDF DDT$O DDT$O = 0 .IIF NDF DD$CS2 DD$CS2 = 176510 .IIF NDF DD$VC2 DD$VC2 = 310 .DRDEF DD,34,FILST$,512.,176500,300 .IIF EQ MMG$T .DRPTR .IIF NE MMG$T .DRPTR FETCH=*NO* .DREST CLASS=DVC.DK .IIF NDF EIS$I EIS$I = MMG$T .IIF EQ EIS$I .MCALL SOB CS$INT =: 100 CS$BRK =: 1 DDCNT =: 8. DDNREG =: 10. R$$NOP =: 0 R$$INT =: 1 R$$RED =: 2 R$$WRT =: 3 R$$POS =: 5 R$$END =: 100 R$CONT =: 20 R$INIT =: 4 R$DATA =: 1 R$MSG =: 2 R$MSIZ =: 10. R$DSIZ =: 128. KISAR1 =: 172342 SYSPTR =: 54 CONFG2 =: 370 PROS$ =: 020000 SYSCHN =: 17 .READ =: 375 .WRITE =: 375 ..READ =: 010 ..WRIT =: 011 .SBTTL INSTALLATION CODE .ASECT .IF NE DDT$O .DRINS DD, .IFF .DRINS DD .ENDC BR 1$ .ASSUME . EQ INSSYS BR 15$ 1$: MOV @#SYSPTR,R0 BIT #PROS$,CONFG2(R0) BNE 2$ 15$: TST (PC)+ 2$: SEC RETURN BAREA: .BYTE SYSCHN,..READ .BLKW .BLKW .WORD 256. .WORD 0 O.RTR1: CMP R0,R3 BHI O.BAD MOV R0,DRETRY BEQ O.BAD BR O.GOOD O.SYWL: MOV @SP,R0 INC R0 CMPB #BR/400,(R0)+ BNE O.BAD MOV R0,@SP BR O.BAD .ASSUME . LE 400,MESSAGE=<;Install area too big> .SBTTL SET OPTIONS .DRSET CSR, 160000, O.CSR, OCT .DRSET VECTOR, 500, O.VEC, OCT .IF NE DDT$O .DRSET CSR2, 160000, O.CSR2, OCT .DRSET VEC2, 500, O.VEC2, OCT .ENDC .DRSET RETRY, 127., O.RTRY, NUM .IF NE ERL$G .DRSET SUCCES, -1, O.SUCC, NO .ENDC BTCSR = + + 1000 O.RTRY: BR O.RTR1 O.CSR: CMP R0,R3 BLO O.BAD MOV R0,INSCSR MOV R0,DISCSR .ADDR #BAREA+4,R1 .ADDR #1000,R2 MOV R2,(R1) MOV #BTCSR/1000,-(R1) TST -(R1) MOV R0,R3 MOV R1,R0 EMT .READ BCS O.BAD MOV R3,(R2) ADD #4,(R2) MOV R1,R0 .ASSUME ..READ+1 EQ ..WRIT INCB 1(R0) EMT .WRITE BCS O.SYWL MOV R1,R0 .ASSUME ..WRIT-1 EQ ..READ DECB 1(R0) MOV #1,2(R0) EMT .READ BCS O.BAD .IF NE DDT$O MOV R3,SET$L1+2 .ENDC .ADDR #TICSRA,R1 MOV #2,R0 MOV R3,(R1)+ ADD R0,R3 MOV R3,(R1)+ ADD R0,R3 MOV R3,(R1)+ ADD R0,R3 MOV R3,@R1 O.GOOD: TST (PC)+ O.BAD: SEC RETURN O.VEC: CMP R0,R3 BHIS O.BAD BIT #3,R0 BNE O.BAD MOV R0,VECTAB TST (R0)+ .IF NE DDT$O MOV R0,SET$L2+2 .ENDC .ADDR #TIVECA,R1 MOV R0,(R1)+ TST (R0)+ MOV R0,VECTAB+6 TST (R0)+ MOV R0,@R1 RETURN .IF NE DDT$O O.CSR2: CMP R0,R3 BLO O.BAD MOV R0,SET$L3+2 MOV R0,DISCS2 RETURN O.VEC2: CMP R0,R3 BHIS O.BAD BIT #3,R0 BNE O.BAD MOV R0,VECTAB+14 TST (R0)+ MOV R0,SET$L4+2 TST (R0)+ MOV R0,VECTAB+22 BR O.GOOD .ENDC .IF NE ERL$G O.SUCC: MOV #0,R3 N.SUCC: MOV R3,SCSFLG .ASSUME O.SUCC+4 EQ N.SUCC BR O.GOOD .ENDC .Assume . LE 1000,MESSAGE=<;SET area too big> .SBTTL START I/O ENTRY .DRBEG DD CALL STARIO ERR1: MOV DDCQE,R4 .ASSUME Q$BLKN-2 EQ Q$CSW BIS #HDERR$,@-(R4) BR PDEXIT VECTAB: .DRVTB DD,DD$VEC,DDINT .DRVTB ,DD$VEC+4,DDINT .ASSUME .-DDSTRT LE 1000 .IF NE DDT$O .DRVTB ,DD$VC2,DDINT .DRVTB ,DD$VC2+4,DDINT .ASSUME .-DDSTRT LE 1000 .ENDC .IF NE ERL$G SCSFLG: .WORD 0 .ASSUME .-DDSTRT LE 1000 .ENDC .SBTTL DD VECTOR AND CSR ADDRESS LIST TICSRA: .WORD DD$CSR TIBFRA: .WORD DD$CSR+2 TOCSRA: .WORD DD$CSR+4 TOBFRA: .WORD DD$CSR+6 TIVECA: .WORD DD$VEC+2 TOVECA: .WORD DD$VEC+6 .ASSUME .-DDSTRT LE 1000 .SBTTL INTERRUPT ENTRY .ENABL LSB BR DDABRT DDINT:: BCS 1$ JSR R5,@$INPTR .WORD ^C&^O340 CLR (PC)+ FKFLG: .WORD 0 JMP @I$INTR 1$: MOV R4,-(SP) CALL @I$INTR MOV (SP)+,R4 RTI .DSABL LSB .SBTTL INTERRUPT EXIT INIRTN: BIS #CS$INT,@TICSRA BR INPRTN OUTCHR: MOV R5,@TOBFRA OUTRTN: INPRTN: MOV (SP)+,I$INTR INTRTN: RETURN .SBTTL COMPLETION EXIT COMPLT: BCS ERR1 .IF NE ERL$G TST FKFLG BNE 1$ CALL FORK 1$: TST SCSFLG BNE PDEXIT MOV #DD$COD*400+377,R4 MOV DDCQE,R5 CALL @$ELPTR .ENDC PDEXIT: .DRFIN DD .SBTTL FORK ROUTINE FORK: MOV (SP)+,FKFLG MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV FKFLG,-(SP) JSR PC,@(SP)+ MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 RTS PC .SBTTL DDABRT - ABORT ENTRY DDABRT::BIC #1,@TIVECA BIC #1,@TOVECA .MTPS #340 BIC #CS$INT,@TICSRA BIS #CS$INT,@TOCSRA CLR (PC)+ 5$: .BLKW 10$: MOV #R$INIT,R5 CALL OUTCHR DECB 5$ BEQ 15$ TSTB @TICSRA BPL 10$ CALL TXINIT 15$: BR PDEXIT .SBTTL STARIO - START I/O CODE .ENABL LSB STARIO::CLR PK$UNT MOV DDCQE,R3 MOVB Q$UNIT(R3),R0 BIC #^C<7>,R0 ASR R0 .IF EQ DDT$O BNE 10$ .ENDC BCC 1$ INC PK$UNT 1$: .IF NE DDT$O SET$L1: MOV #DD$CSR,R3 SET$L2: MOV #DD$VEC+2,R2 .ASSUME .-DDSTRT LE 1000 ASR R0 BNE 10$ BCC 2$ SET$L3: MOV #DD$CS2,R3 SET$L4: MOV #DD$VC2+2,R2 .ASSUME .-DDSTRT LE 1000 2$: .ADDR #TICSRA,R1 CMP R3,@R1 BEQ 4$ MOV #4,R0 3$: MOV R3,(R1)+ TST (R3)+ SOB R0,3$ MOV R2,(R1)+ CMP (R2)+,(R2)+ MOV R2,@R1 4$: .ENDC DRETRY = .+2 MOV #DDCNT,I$ERCT .ASSUME .-DDSTRT LE 1000 CLR RETIO TST I$ABRT BNE RETRY .ADDR #ABORT,R1 BR GO RETRY: MOV DDCQE,R3 TST RETIO BEQ 7$ ADD #Q$WCNT,R3 MOV @R3,R1 BPL 5$ NEG R1 5$: ASL R1 SUB I$BYTC,R1 ROR R1 CLRB R1 MOV R1,R2 TST @R3 BPL 6$ NEG R1 6$: SUB R1,@R3 .IF EQ MMG$T .ASSUME Q$WCNT-2 EQ Q$BUFF ADD R2,-(R3) ADD R2,@R3 .ASSUME Q$BUFF-2 EQ Q$FUNC TST -(R3) .IFF MOV R2,R1 ASHC #-5,R1 ADD R1,Q$PAR-Q$WCNT(R3) .ASSUME Q$WCNT-4 EQ Q$FUNC CMP -(R3),-(R3) .ENDC SWAB R2 .ASSUME Q$FUNC-2 EQ Q$BLKN ADD R2,-(R3) 7$: MOV #R$$RED,PK$OPC CLRB PK$SSQ CLR PK$SSQ+1 MOV Q$WCNT(R3),R1 BPL 8$ MOVB #R$$WRT,PK$OPC NEG R1 8$: ASL R1 BNE 9$ MOVB #R$$POS,PK$OPC 9$: MOV Q$BUFF(R3),I$ADRS .IF NE MMG$T MOV Q$PAR(R3),I$PAR .ENDC MOV R1,I$BYTC MOV R1,PK$BCT MOV @R3,PK$RCD .ADDR #TXGO,R1 GO: MOV R1,I$INTR BIS #CS$INT,@TOCSRA TST (SP)+ 10$: RETURN .DSABL LSB .SBTTL TXGO - START TRANSFER FROM INTERRUPT LEVEL TXGO: CALL FORK MOV #R$MSG,PK$FLG MOV #R$MSIZ,R2 .ADDR #PK$OPC,R1 CALL SNDPKT 1$: CMPB PK$OPC,#R$$WRT BNE 2$ JSR R5,RCVPKT .WORD R$CONT 2$: MOV I$ADRS,R1 MOV I$BYTC,R2 BEQ TXEND CMP R2,#R$DSIZ BLOS 3$ MOV #R$DSIZ,R2 3$: CMPB PK$OPC,#R$$WRT BNE 4$ MOVB #R$DATA,PK$FLG CALL SNDPKT CMP I$BYTC,#R$DSIZ BLOS TXEND JSR R5,RCVPKT .WORD R$CONT BR 5$ 4$: JSR R5,RCVPKT .WORD R$DATA 5$: .IF EQ MMG$T ADD #R$DSIZ,I$ADRS .IFF ADD #2,I$PAR .ENDC SUB #R$DSIZ,I$BYTC BHI 2$ CLR I$BYTC .SBTTL TXEND - READ THE END PACKET AFTER A TRANSFER TXEND: .ADDR #I$MBFR,R1 MOV #R$MSIZ,R2 JSR R5,RCVPKT .WORD R$MSG .SBTTL ERROR - ANALYZE AN END PACKET ERROR: CMPB PK$FLG,#R$MSG BNE ABORTR CMPB I$MOPC,#R$$END BNE ABORTR TSTB I$MSUC .IF EQ ERL$G BPL CPLRTN .IFF BEQ CPLRTN BLT FATAL MOV I$ERCT,R2 CALL LOGERR BR CPLRTN .ENDC FATAL: TST FKFLG BNE 1$ CALL FORK .IF NE ERL$G CLR R2 CALL LOGERR .ENDC 1$: SEC CPLRTN: BIC R4,R4 BIC #CS$INT,@TICSRA BIC #CS$INT,@TOCSRA JMP COMPLT .SBTTL ABORT - COMMUNICATIONS ERROR ABORTR: MOV SP,(PC)+ RETIO: .WORD 0 ABORT: CALL TXINIT CLR I$ABRT TST I$ERCT BLE FATAL INC I$ABRT MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) CALL 9$ MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 RETURN 9$: CALL RETRY TST (SP)+ MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 BR FATAL .IF NE ERL$G .SBTTL LOGERR - SET UP AND CALL ERROR LOGGER LOGERR: MOV R2,R4 BIS #DD$COD*400,R4 MOV DRETRY,R3 SWAB R3 ADD #DDNREG,R3 .ADDR #I$LCHR,R2 MOV DDCQE,R5 CALL @$ELPTR CLR I$LCHR RETURN .ENDC .SBTTL TXINIT - INIT THE TU58 TXINIT: BIC #CS$INT,@TOCSRA BIC #CS$INT,@TICSRA MOV (SP)+,I$SUBR 1$: .IF NE ERL$G TST I$ABRT BEQ 2$ TST FKFLG BNE 3$ CALL FORK 3$: MOV I$ERCT,R2 CALL LOGERR 2$: .ENDC .MTPS #340 MOV #177777,@TOBFRA BIS #,@TOCSRA CALL OUTRTN MOV #177777,R5 CALL OUTCHR BIC #CS$BRK,@TOCSRA MOV #R$INIT,R5 CALL OUTCHR MOV #R$INIT,R5 CALL OUTCHR BIC #CS$INT,@TOCSRA TST @TIBFRA CALL INIRTN MOV @TIBFRA,PK$FLG BIC #CS$INT,@TICSRA DEC I$ERCT BLE 9$ CMPB PK$FLG,#R$CONT BNE 1$ 9$: CALLR @I$SUBR .SBTTL SNDPKT - SEND RADIAL SERIAL PACKET SNDPKT: MOV (SP)+,I$SUBR MOV R1,I$MADR MOVB R2,PK$MBC MOV PK$FLG,PK$CKS .MTPS #340 MOVB PK$FLG,@TOBFRA BIS #CS$INT,@TOCSRA CALL OUTRTN MOVB PK$MBC,R5 CLRB I$TDAT+1 BIS #1,@TOVECA CALL OUTCHR 2$: .IF NE MMG$T MOV @#KISAR1,-(SP) MOV I$PAR,@#KISAR1 .ENDC MOVB @I$MADR,@TOBFRA MOVB @I$MADR,I$TDAT .IF NE MMG$T MOV (SP)+,@#KISAR1 .ENDC INC I$MADR ADD I$TDAT,PK$CKS ADC PK$CKS SWAB PK$CKS DECB PK$MBC BEQ 3$ RETURN 3$: BIC #1,@TOVECA ADD #4$-2$,I$INTR RETURN 4$: MOVB PK$CKS,R5 CALL OUTCHR MOVB PK$CKS+1,R5 CALL OUTCHR BIC #CS$INT,@TOCSRA PKTRTN: CALL FORK CALLR @I$SUBR .SBTTL RCVPKT - RECEIVE A RADIAL SERIAL PACKET RCVPKT: MOV (R5)+,I$EFLG MOV R5,I$SUBR MOV (SP)+,R5 MOV R1,I$MADR .MTPS #340 CALL INIRTN MOV @TIBFRA,R4 BMI 6$ MOVB R4,PK$FLG CMPB R4,I$EFLG BEQ 2$ CMPB R4,#R$MSG BNE 6$ .ADDR #I$MBFR,-(SP) MOV (SP)+,I$MADR 2$: CMPB R4,#R$CONT BEQ PKTRTN BIS #1,@TIVECA CALL INPRTN 1$: MOV @TIBFRA,R4 BMI 8$ MOVB R4,PK$MBC MOV PK$FLG,PK$CKS ADD #4$-1$,I$INTR 3$: RETURN 4$: MOV @TIBFRA,R4 BMI 8$ .IF NE MMG$T MOV @#KISAR1,-(SP) MOV I$PAR,@#KISAR1 .ENDC MOVB R4,@I$MADR .IF NE MMG$T MOV (SP)+,@#KISAR1 .ENDC INC I$MADR BIC #^C<377>,R4 ADD PK$CKS,R4 ADC R4 SWAB R4 MOV R4,PK$CKS DECB PK$MBC BNE 3$ BIC #1,@TIVECA ADD #7$-4$,I$INTR RETURN 7$: MOV @TIBFRA,R4 BMI 6$ MOVB R4,I$TDAT CALL INPRTN MOV @TIBFRA,R4 BMI 6$ MOVB R4,I$TDAT+1 BIC #CS$INT,@TICSRA CMP I$TDAT,PK$CKS BNE 5$ CMPB PK$FLG,I$EFLG BEQ PKTRTN JMP ERROR 6$: .IF NE ERL$G MOV R4,I$LCHR .ENDC 5$: JMP ABORTR 8$: .IF NE ERL$G MOV R4,I$LCHR .ENDC BIC #1,@TIVECA .ADDR #ABORTR,-(SP) MOV (SP)+,I$INTR RETURN .SBTTL DATA AREA I$ABRT: .WORD 0 I$ADRS: .WORD 0 I$BYTC: .WORD 0 I$INTR: .WORD 0 I$ERCT: .WORD 0 I$MADR: .WORD 0 I$TDAT: .WORD 0 I$SUBR: .WORD 0 .IF NE ERL$G I$LCHR: .WORD 0 .ENDC I$EFLG: .WORD 0 I$MBFR: I$MOPC: .BYTE 0 I$MSUC: .BYTE 0 .BYTE 0,0,0,0,0,0,0,0 .IF NE MMG$T I$PAR: .WORD 0 .ENDC PK$FLG: .BYTE 0 PK$MBC: .BYTE 0 PK$OPC: .BYTE 0 PK$MOD: .BYTE 0 PK$UNT: .BYTE 0 PK$SSQ: .BYTE 0,0,0 PK$BCT: .BYTE 0,0 PK$RCD: .BYTE 0,0 PK$CKS: .BYTE 0,0 .SBTTL BOOTSTRAP READ ROUTINE .DRBOT DD,BOOT1,READ . = DDBOOT+40 BOOT1: JMP @#BOOT-DDBOOT . = DDBOOT+210 READ: MOV #DDCNT,RTRCNT MOV @#B$DEVU,DDUNIT ASL R1 MOV R0,DDBLK MOV R1,DDBTCT BRESTR: MOV R2,-(SP) MOV (PC)+,R0 BOTCSR: .WORD DD$CSR+4 BIS #CS$BRK,@R0 MOV (PC)+,R3 .WORD 177777 CALL BCHROS CONRD1: TSTB @R0 BPL CONRD1 BIC #CS$BRK,@R0 MOV (PC)+,R3 .BYTE R$INIT,R$INIT CALL BCHROS TST -2(R0) CALL BICHR CMPB R3,#R$CONT BNE BFATAL MOV #B$CHK-DDBOOT,R4 CLR @R4 MOV #B$PKT-DDBOOT,R5 1$: MOV (R5)+,R3 ADD R3,@R4 ADC @R4 CALL BCHROS CMP R5,R4 BLOS 1$ BRDPKT: CALL BICHP2 MOVB R3,R4 RORB R4 MOV R1,-(SP) CMPB R1,#R$DATA BNE BEND 2$: CALL @R5 MOV R1,(R2)+ ADD R1,@SP ADC @SP DECB R4 BGT 2$ CALL (R5) CMP R1,(SP)+ BNE BFATAL BR BRDPKT BEND: CALL (R5) TSTB R3 BMI BOTH 1$: ADD R1,@SP ADC @SP CALL (R5) SOB R4,1$ CMP R1,(SP)+ BNE BFATAL MOV (SP)+,R2 CLC RETURN BOTH: TST (SP)+ BFATAL: MOV (SP)+,R2 DEC RTRCNT BNE BRESTR BR BIOERR .SBTTL BYTE INPUT ROUTINES (BOOT) BICHP2: MOV PC,R5 CLR R1 CALL @PC BICHR: TSTB -4(R0) BPL BICHR MOVB -2(R0),R3 BISB R3,R1 SWAB R1 RETURN .SBTTL BYTE OUTPUT ROUTINES (BOOT) BCHROS: CALL @PC 1$: TSTB @R0 BPL 1$ MOVB R3,2(R0) SWAB R3 RETURN B$PKT: .BYTE R$MSG,R$MSIZ,R$$RED,0 DDUNIT: .WORD 0 .BYTE 0,0 DDBTCT: .WORD 0 DDBLK: .WORD 0 B$CHK: .WORD 0 RTRCNT: .WORD 0 . = DDBOOT+606 BOOT: MOV #10000,SP MOV R0,@#B$DEVU MOV R0,-(SP) MOV #2,R0 MOV #<4*400>,R1 MOV #1000,R2 CALL READ MOV #READ-DDBOOT,@#B$READ MOV #B$DNAM,@#B$DEVN MOV (SP)+,@#B$DEVU JMP @#B$BOOT .DREND DD .END 62S @@,5   o7Hlj Хfd`@KjC`\qht @ 17Z7Tepe @<e<@@ e```  57 e 7|  4 U%@BDF, Z` ,& &U@ևe,}&f EE& Ε,e E@xU@v  \ 7 ,E M 7 F pe@8 0e P B  K`` `L7K7 H8 , ww$"ewU@  e V׭w " ׭  "-w w e~ۂ7 xe w ׭|׭j@c  JAE@E@w& 47 $ ( f&  E@E@& Ε,e UA  Ev  E@` Z |RE@H ׭w|& Ε,e pU@ 8ŝa7MU "<66 0m.Hw D@1Ee4 ŝ& ŝ E@ www& Ε,e |S77KeUZ L=7e41?z vEmD 7uEe2P7J *7=E@-2L:,wwEe C_ 7wDU ȋE nנ,` TC`L dD! FĐfW  RN`N Ċ V  Ë N`N V   6B  ȋ  &    _w @  ߋtv ?BOOT-U-I/O error 62S @@,5   o7Hlj Хfd`@KjC`\qht @ 17Z7Tepe @rer@@ e```  57 e 7|  4 U%@BDF, ` T& NU@:ևe,}&f EE& Ε,e E@xU@v  \ 7 ,E S 7 R eL> <e x B  KWvs`(`p7o7 l\ P, @w$wB@ewU@  e V׭w " ׭  "-w w eۂ7 e w ׭׭@  >AE@E@w 47 @ D 6f&  E@E@& Ε,e UA|  Ej  E@T N pFE@< ׭w& Ε,e U@ ,ŝ7iU fNHH >m<Xw TPAEeBŝ6 ŝ/ E@ www& Ε,e bZ77ReU@ h2D7e8?~ vEmD 7wEe@P7J 7=E@-2N<,wwEe C_ 7wDU ȋE lנ+^ RC`L bD! DĐfW  RN`N Ċ V  Ë N`N V   6C  ȋ  &    _w @  ߋtv ?BOOT-U-I/O error .MCALL .MODULE .MODULE DD,VERSION=13,COMMENT=,AUDIT=YES ; COPYRIGHT (c) 1984,1985,1986 BY ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ALL RIGHTS RESERVED. ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ; TRANSFERRED. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT ; CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. .SBTTL CONDITIONAL ASSEMBLY SUMMARY .SBTTL GENERAL COMMENTS .ENABL LC .SBTTL MACROS AND DEFINITIONS .MCALL .DRDEF, .MTPS, .ASSUME .ADDR .IIF NDF DD$PRI DD$PRI = 4 .IIF NDF DDT$O DDT$O = 0 .IIF NDF DD$CS2 DD$CS2 = 176510 .IIF NDF DD$VC2 DD$VC2 = 310 .DRDEF DD,34,FILST$,512.,176500,300 .IIF EQ MMG$T .DRPTR .IIF NE MMG$T .DRPTR FETCH=*NO* .DREST CLASS=DVC.DK .IIF NDF EIS$I EIS$I = MMG$T .IIF EQ EIS$I .MCALL SOB CS$INT =: 100 CS$BRK =: 1 DDCNT =: 8. DDNREG =: 10. R$$NOP =: 0 R$$INT =: 1 R$$RED =: 2 R$$WRT =: 3 R$$POS =: 5 R$$END =: 100 R$CONT =: 20 R$INIT =: 4 R$DATA =: 1 R$MSG =: 2 R$MSIZ =: 10. R$DSIZ =: 128. KISAR1 =: 172342 SYSPTR =: 54 CONFG2 =: 370 PROS$ =: 020000 SYSCHN =: 17 .READ =: 375 .WRITE =: 375 ..READ =: 010 ..WRIT =: 011 .SBTTL INSTALLATION CODE .ASECT .IF NE DDT$O .DRINS DD, .IFF .DRINS DD .ENDC BR 1$ .ASSUME . EQ INSSYS BR 15$ 1$: MOV @#SYSPTR,R0 BIT #PROS$,CONFG2(R0) BNE 2$ 15$: TST (PC)+ 2$: SEC RETURN BAREA: .BYTE SYSCHN,..READ .BLKW .BLKW .WORD 256. .WORD 0 O.RTR1: CMP R0,R3 BHI O.BAD MOV R0,DRETRY BEQ O.BAD BR O.GOOD O.SYWL: MOV @SP,R0 INC R0 CMPB #BR/400,(R0)+ BNE O.BAD MOV R0,@SP BR O.BAD .ASSUME . LE 400,MESSAGE=<;Install area too big> .SBTTL SET OPTIONS .DRSET CSR, 160000, O.CSR, OCT .DRSET VECTOR, 500, O.VEC, OCT .IF NE DDT$O .DRSET CSR2, 160000, O.CSR2, OCT .DRSET VEC2, 500, O.VEC2, OCT .ENDC .DRSET RETRY, 127., O.RTRY, NUM .IF NE ERL$G .DRSET SUCCES, -1, O.SUCC, NO .ENDC BTCSR = + + 1000 O.RTRY: BR O.RTR1 O.CSR: CMP R0,R3 BLO O.BAD MOV R0,INSCSR MOV R0,DISCSR .ADDR #BAREA+4,R1 .ADDR #1000,R2 MOV R2,(R1) MOV #BTCSR/1000,-(R1) TST -(R1) MOV R0,R3 MOV R1,R0 EMT .READ BCS O.BAD MOV R3,(R2) ADD #4,(R2) MOV R1,R0 .ASSUME ..READ+1 EQ ..WRIT INCB 1(R0) EMT .WRITE BCS O.SYWL MOV R1,R0 .ASSUME ..WRIT-1 EQ ..READ DECB 1(R0) MOV #1,2(R0) EMT .READ BCS O.BAD .IF NE DDT$O MOV R3,SET$L1+2 .ENDC .ADDR #TICSRA,R1 MOV #2,R0 MOV R3,(R1)+ ADD R0,R3 MOV R3,(R1)+ ADD R0,R3 MOV R3,(R1)+ ADD R0,R3 MOV R3,@R1 O.GOOD: TST (PC)+ O.BAD: SEC RETURN O.VEC: CMP R0,R3 BHIS O.BAD BIT #3,R0 BNE O.BAD MOV R0,VECTAB TST (R0)+ .IF NE DDT$O MOV R0,SET$L2+2 .ENDC .ADDR #TIVECA,R1 MOV R0,(R1)+ TST (R0)+ MOV R0,VECTAB+6 TST (R0)+ MOV R0,@R1 RETURN .IF NE DDT$O O.CSR2: CMP R0,R3 BLO O.BAD MOV R0,SET$L3+2 MOV R0,DISCS2 RETURN O.VEC2: CMP R0,R3 BHIS O.BAD BIT #3,R0 BNE O.BAD MOV R0,VECTAB+14 TST (R0)+ MOV R0,SET$L4+2 TST (R0)+ MOV R0,VECTAB+22 BR O.GOOD .ENDC .IF NE ERL$G O.SUCC: MOV #0,R3 N.SUCC: MOV R3,SCSFLG .ASSUME O.SUCC+4 EQ N.SUCC BR O.GOOD .ENDC .Assume . LE 1000,MESSAGE=<;SET area too big> .SBTTL START I/O ENTRY .DRBEG DD CALL STARIO ERR1: MOV DDCQE,R4 .ASSUME Q$BLKN-2 EQ Q$CSW BIS #HDERR$,@-(R4) BR PDEXIT VECTAB: .DRVTB DD,DD$VEC,DDINT .DRVTB ,DD$VEC+4,DDINT .ASSUME .-DDSTRT LE 1000 .IF NE DDT$O .DRVTB ,DD$VC2,DDINT .DRVTB ,DD$VC2+4,DDINT .ASSUME .-DDSTRT LE 1000 .ENDC .IF NE ERL$G SCSFLG: .WORD 0 .ASSUME .-DDSTRT LE 1000 .ENDC .SBTTL DD VECTOR AND CSR ADDRESS LIST TICSRA: .WORD DD$CSR TIBFRA: .WORD DD$CSR+2 TOCSRA: .WORD DD$CSR+4 TOBFRA: .WORD DD$CSR+6 TIVECA: .WORD DD$VEC+2 TOVECA: .WORD DD$VEC+6 .ASSUME .-DDSTRT LE 1000 .SBTTL INTERRUPT ENTRY .ENABL LSB BR DDABRT DDINT:: BCS 1$ JSR R5,@$INPTR .WORD ^C&^O340 CLR (PC)+ FKFLG: .WORD 0 JMP @I$INTR 1$: MOV R4,-(SP) CALL @I$INTR MOV (SP)+,R4 RTI .DSABL LSB .SBTTL INTERRUPT EXIT INIRTN: BIS #CS$INT,@TICSRA BR INPRTN OUTCHR: MOV R5,@TOBFRA OUTRTN: INPRTN: MOV (SP)+,I$INTR INTRTN: RETURN .SBTTL COMPLETION EXIT COMPLT: BCS ERR1 .IF NE ERL$G TST FKFLG BNE 1$ CALL FORK 1$: TST SCSFLG BNE PDEXIT MOV #DD$COD*400+377,R4 MOV DDCQE,R5 CALL @$ELPTR .ENDC PDEXIT: .DRFIN DD .SBTTL FORK ROUTINE FORK: MOV (SP)+,FKFLG MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV FKFLG,-(SP) JSR PC,@(SP)+ MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 RTS PC .SBTTL DDABRT - ABORT ENTRY DDABRT::BIC #1,@TIVECA BIC #1,@TOVECA .MTPS #340 BIC #CS$INT,@TICSRA BIS #CS$INT,@TOCSRA CLR (PC)+ 5$: .BLKW 10$: MOV #R$INIT,R5 CALL OUTCHR DECB 5$ BEQ 15$ TSTB @TICSRA BPL 10$ CALL TXINIT 15$: BR PDEXIT .SBTTL STARIO - START I/O CODE .ENABL LSB STARIO::CLR PK$UNT MOV DDCQE,R3 MOVB Q$UNIT(R3),R0 BIC #^C<7>,R0 ASR R0 .IF EQ DDT$O BNE 10$ .ENDC BCC 1$ INC PK$UNT 1$: .IF NE DDT$O SET$L1: MOV #DD$CSR,R3 SET$L2: MOV #DD$VEC+2,R2 .ASSUME .-DDSTRT LE 1000 ASR R0 BNE 10$ BCC 2$ SET$L3: MOV #DD$CS2,R3 SET$L4: MOV #DD$VC2+2,R2 .ASSUME .-DDSTRT LE 1000 2$: .ADDR #TICSRA,R1 CMP R3,@R1 BEQ 4$ MOV #4,R0 3$: MOV R3,(R1)+ TST (R3)+ SOB R0,3$ MOV R2,(R1)+ CMP (R2)+,(R2)+ MOV R2,@R1 4$: .ENDC DRETRY = .+2 MOV #DDCNT,I$ERCT .ASSUME .-DDSTRT LE 1000 CLR RETIO TST I$ABRT BNE RETRY .ADDR #ABORT,R1 BR GO RETRY: MOV DDCQE,R3 TST RETIO BEQ 7$ ADD #Q$WCNT,R3 MOV @R3,R1 BPL 5$ NEG R1 5$: ASL R1 SUB I$BYTC,R1 ROR R1 CLRB R1 MOV R1,R2 TST @R3 BPL 6$ NEG R1 6$: SUB R1,@R3 .IF EQ MMG$T .ASSUME Q$WCNT-2 EQ Q$BUFF ADD R2,-(R3) ADD R2,@R3 .ASSUME Q$BUFF-2 EQ Q$FUNC TST -(R3) .IFF MOV R2,R1 ASHC #-5,R1 ADD R1,Q$PAR-Q$WCNT(R3) .ASSUME Q$WCNT-4 EQ Q$FUNC CMP -(R3),-(R3) .ENDC SWAB R2 .ASSUME Q$FUNC-2 EQ Q$BLKN ADD R2,-(R3) 7$: MOV #R$$RED,PK$OPC CLRB PK$SSQ CLR PK$SSQ+1 MOV Q$WCNT(R3),R1 BPL 8$ MOVB #R$$WRT,PK$OPC NEG R1 8$: ASL R1 BNE 9$ MOVB #R$$POS,PK$OPC 9$: MOV Q$BUFF(R3),I$ADRS .IF NE MMG$T MOV Q$PAR(R3),I$PAR .ENDC MOV R1,I$BYTC MOV R1,PK$BCT MOV @R3,PK$RCD .ADDR #TXGO,R1 GO: MOV R1,I$INTR BIS #CS$INT,@TOCSRA TST (SP)+ 10$: RETURN .DSABL LSB .SBTTL TXGO - START TRANSFER FROM INTERRUPT LEVEL TXGO: CALL FORK MOV #R$MSG,PK$FLG MOV #R$MSIZ,R2 .ADDR #PK$OPC,R1 CALL SNDPKT 1$: CMPB PK$OPC,#R$$WRT BNE 2$ JSR R5,RCVPKT .WORD R$CONT 2$: MOV I$ADRS,R1 MOV I$BYTC,R2 BEQ TXEND CMP R2,#R$DSIZ BLOS 3$ MOV #R$DSIZ,R2 3$: CMPB PK$OPC,#R$$WRT BNE 4$ MOVB #R$DATA,PK$FLG CALL SNDPKT CMP I$BYTC,#R$DSIZ BLOS TXEND JSR R5,RCVPKT .WORD R$CONT BR 5$ 4$: JSR R5,RCVPKT .WORD R$DATA 5$: .IF EQ MMG$T ADD #R$DSIZ,I$ADRS .IFF ADD #2,I$PAR .ENDC SUB #R$DSIZ,I$BYTC BHI 2$ CLR I$BYTC .SBTTL TXEND - READ THE END PACKET AFTER A TRANSFER TXEND: .ADDR #I$MBFR,R1 MOV #R$MSIZ,R2 JSR R5,RCVPKT .WORD R$MSG .SBTTL ERROR - ANALYZE AN END PACKET ERROR: CMPB PK$FLG,#R$MSG BNE ABORTR CMPB I$MOPC,#R$$END BNE ABORTR TSTB I$MSUC .IF EQ ERL$G BPL CPLRTN .IFF BEQ CPLRTN BLT FATAL MOV I$ERCT,R2 CALL LOGERR BR CPLRTN .ENDC FATAL: TST FKFLG BNE 1$ CALL FORK .IF NE ERL$G CLR R2 CALL LOGERR .ENDC 1$: SEC CPLRTN: BIC R4,R4 BIC #CS$INT,@TICSRA BIC #CS$INT,@TOCSRA JMP COMPLT .SBTTL ABORT - COMMUNICATIONS ERROR ABORTR: MOV SP,(PC)+ RETIO: .WORD 0 ABORT: CALL TXINIT CLR I$ABRT TST I$ERCT BLE FATAL INC I$ABRT MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) CALL 9$ MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 RETURN 9$: CALL RETRY TST (SP)+ MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 BR FATAL .IF NE ERL$G .SBTTL LOGERR - SET UP AND CALL ERROR LOGGER LOGERR: MOV R2,R4 BIS #DD$COD*400,R4 MOV DRETRY,R3 SWAB R3 ADD #DDNREG,R3 .ADDR #I$LCHR,R2 MOV DDCQE,R5 CALL @$ELPTR CLR I$LCHR RETURN .ENDC .SBTTL TXINIT - INIT THE TU58 TXINIT: BIC #CS$INT,@TOCSRA BIC #CS$INT,@TICSRA MOV (SP)+,I$SUBR 1$: .IF NE ERL$G TST I$ABRT BEQ 2$ TST FKFLG BNE 3$ CALL FORK 3$: MOV I$ERCT,R2 CALL LOGERR 2$: .ENDC .MTPS #340 MOV #177777,@TOBFRA BIS #,@TOCSRA CALL OUTRTN MOV #177777,R5 CALL OUTCHR BIC #CS$BRK,@TOCSRA MOV #R$INIT,R5 CALL OUTCHR MOV #R$INIT,R5 CALL OUTCHR BIC #CS$INT,@TOCSRA TST @TIBFRA CALL INIRTN MOV @TIBFRA,PK$FLG BIC #CS$INT,@TICSRA DEC I$ERCT BLE 9$ CMPB PK$FLG,#R$CONT BNE 1$ 9$: CALLR @I$SUBR .SBTTL SNDPKT - SEND RADIAL SERIAL PACKET SNDPKT: MOV (SP)+,I$SUBR MOV R1,I$MADR MOVB R2,PK$MBC MOV PK$FLG,PK$CKS .MTPS #340 MOVB PK$FLG,@TOBFRA BIS #CS$INT,@TOCSRA CALL OUTRTN MOVB PK$MBC,R5 CLRB I$TDAT+1 BIS #1,@TOVECA CALL OUTCHR 2$: .IF NE MMG$T MOV @#KISAR1,-(SP) MOV I$PAR,@#KISAR1 .ENDC MOVB @I$MADR,@TOBFRA MOVB @I$MADR,I$TDAT .IF NE MMG$T MOV (SP)+,@#KISAR1 .ENDC INC I$MADR ADD I$TDAT,PK$CKS ADC PK$CKS SWAB PK$CKS DECB PK$MBC BEQ 3$ RETURN 3$: BIC #1,@TOVECA ADD #4$-2$,I$INTR RETURN 4$: MOVB PK$CKS,R5 CALL OUTCHR MOVB PK$CKS+1,R5 CALL OUTCHR BIC #CS$INT,@TOCSRA PKTRTN: CALL FORK CALLR @I$SUBR .SBTTL RCVPKT - RECEIVE A RADIAL SERIAL PACKET RCVPKT: MOV (R5)+,I$EFLG MOV R5,I$SUBR MOV (SP)+,R5 MOV R1,I$MADR .MTPS #340 CALL INIRTN MOV @TIBFRA,R4 BMI 6$ MOVB R4,PK$FLG CMPB R4,I$EFLG BEQ 2$ CMPB R4,#R$MSG BNE 6$ .ADDR #I$MBFR,-(SP) MOV (SP)+,I$MADR 2$: CMPB R4,#R$CONT BEQ PKTRTN BIS #1,@TIVECA CALL INPRTN 1$: MOV @TIBFRA,R4 BMI 8$ MOVB R4,PK$MBC MOV PK$FLG,PK$CKS ADD #4$-1$,I$INTR 3$: RETURN 4$: MOV @TIBFRA,R4 BMI 8$ .IF NE MMG$T MOV @#KISAR1,-(SP) MOV I$PAR,@#KISAR1 .ENDC MOVB R4,@I$MADR .IF NE MMG$T MOV (SP)+,@#KISAR1 .ENDC INC I$MADR BIC #^C<377>,R4 ADD PK$CKS,R4 ADC R4 SWAB R4 MOV R4,PK$CKS DECB PK$MBC BNE 3$ BIC #1,@TIVECA ADD #7$-4$,I$INTR RETURN 7$: MOV @TIBFRA,R4 BMI 6$ MOVB R4,I$TDAT CALL INPRTN MOV @TIBFRA,R4 BMI 6$ MOVB R4,I$TDAT+1 BIC #CS$INT,@TICSRA CMP I$TDAT,PK$CKS BNE 5$ CMPB PK$FLG,I$EFLG BEQ PKTRTN JMP ERROR 6$: .IF NE ERL$G MOV R4,I$LCHR .ENDC 5$: JMP ABORTR 8$: .IF NE ERL$G MOV R4,I$LCHR .ENDC BIC #1,@TIVECA .ADDR #ABORTR,-(SP) MOV (SP)+,I$INTR RETURN .SBTTL DATA AREA I$ABRT: .WORD 0 I$ADRS: .WORD 0 I$BYTC: .WORD 0 I$INTR: .WORD 0 I$ERCT: .WORD 0 I$MADR: .WORD 0 I$TDAT: .WORD 0 I$SUBR: .WORD 0 .IF NE ERL$G I$LCHR: .WORD 0 .ENDC I$EFLG: .WORD 0 I$MBFR: I$MOPC: .BYTE 0 I$MSUC: .BYTE 0 .BYTE 0,0,0,0,0,0,0,0 .IF NE MMG$T I$PAR: .WORD 0 .ENDC PK$FLG: .BYTE 0 PK$MBC: .BYTE 0 PK$OPC: .BYTE 0 PK$MOD: .BYTE 0 PK$UNT: .BYTE 0 PK$SSQ: .BYTE 0,0,0 PK$BCT: .BYTE 0,0 PK$RCD: .BYTE 0,0 PK$CKS: .BYTE 0,0 .SBTTL BOOTSTRAP READ ROUTINE .DRBOT DD,BOOT1,READ . = DDBOOT+40 BOOT1: JMP @#BOOT-DDBOOT . = DDBOOT+210 READ: MOV #DDCNT,RTRCNT MOV @#B$DEVU,DDUNIT ASL R1 MOV R0,DDBLK MOV R1,DDBTCT BRESTR: MOV R2,-(SP) MOV (PC)+,R0 BOTCSR: .WORD DD$CSR+4 BIS #CS$BRK,@R0 MOV (PC)+,R3 .WORD 177777 CALL BCHROS CONRD1: TSTB @R0 BPL CONRD1 BIC #CS$BRK,@R0 MOV (PC)+,R3 .BYTE R$INIT,R$INIT CALL BCHROS TST -2(R0) CALL BICHR CMPB R3,#R$CONT BNE BFATAL MOV #B$CHK-DDBOOT,R4 CLR @R4 MOV #B$PKT-DDBOOT,R5 1$: MOV (R5)+,R3 ADD R3,@R4 ADC @R4 CALL BCHROS CMP R5,R4 BLOS 1$ BRDPKT: CALL BICHP2 MOVB R3,R4 RORB R4 MOV R1,-(SP) CMPB R1,#R$DATA BNE BEND 2$: CALL @R5 MOV R1,(R2)+ ADD R1,@SP ADC @SP DECB R4 BGT 2$ CALL (R5) CMP R1,(SP)+ BNE BFATAL BR BRDPKT BEND: CALL (R5) TSTB R3 BMI BOTH 1$: ADD R1,@SP ADC @SP CALL (R5) SOB R4,1$ CMP R1,(SP)+ BNE BFATAL MOV (SP)+,R2 CLC RETURN BOTH: TST (SP)+ BFATAL: MOV (SP)+,R2 DEC RTRCNT BNE BRESTR BR BIOERR .SBTTL BYTE INPUT ROUTINES (BOOT) BICHP2: MOV PC,R5 CLR R1 CALL @PC BICHR: TSTB -4(R0) BPL BICHR MOVB -2(R0),R3 BISB R3,R1 SWAB R1 RETURN .SBTTL BYTE OUTPUT ROUTINES (BOOT) BCHROS: CALL @PC 1$: TSTB @R0 BPL 1$ MOVB R3,2(R0) SWAB R3 RETURN B$PKT: .BYTE R$MSG,R$MSIZ,R$$RED,0 DDUNIT: .WORD 0 .BYTE 0,0 DDBTCT: .WORD 0 DDBLK: .WORD 0 B$CHK: .WORD 0 RTRCNT: .WORD 0 . = DDBOOT+606 BOOT: MOV #10000,SP MOV R0,@#B$DEVU MOV R0,-(SP) MOV #2,R0 MOV #<4*400>,R1 MOV #1000,R2 CALL READ MOV #READ-DDBOOT,@#B$READ MOV #B$DNAM,@#B$DEVN MOV (SP)+,@#B$DEVU JMP @#B$BOOT .DREND DD .END ݏe["ZY_XW^ЏHԮLЏ Ԯ$hYǀjPjj^j!j1,P L,n LP|~~X\ݼPj9iթ$ݮ < ~ݮ,<,~"k~YPk(iL"k~YPkV,P L,n LP|~~X\gPj,n TdTh*;J6G fBc<dמ`a<^۞Z[۟?;S컟軟PMPWW W_3~PWWWϞڻݏz/3φϚg[<Ͼ֞Ϻϻ<ϸڞϴϵڟϥPPWW1[(ώߏߔτωψY~XXPZVFinxVPPXPFiF(P:ZV-z A-p3ۺݏzl2ڢڟ PWW10Wp[ ρW&  +2SЬRR/R!!ĜSĠdS=ޚPPdPSPd|~~ϢݤePRRR,RPP}{ψPЬP|~DٟTP$|~|~|~T&~ P<P|~~ϐWԧЏ" ЏA |ЏA ЏP ԧ؞,nVЬV-f 䚏Fgf (fPRݬXPRRﺣPRR R #RP<`^,n䐏P""ݬ"^|"VX^,n䐏Q""ݬf^PRݬL"l$լ ݬf  RP|"VD^,nȐSȞ+"؞!ܕlլݬfЬ̑lլ  lլ,n䞭l լ Ь l լЬlլ ݬf^<`^,n䐏T!U!l լЬ^<`^,n䐏U@!!ݬ ^Ue({4 h(08@HTPX`h4pxx<fJȀЀ" ؀X x     x   < (| 0 8 @ H4 Pj X ` h pD x   Rx"VȁЁ؁ <l8j (80n8@HP(XB`zhpx&^LrȂЂ؂4Z.^ ( 0R8@HP2Xh`hpx2n0d0ADDMSGuser record successfully added$COPMSGuser record copied4DONEMSG"system authorization file modified0GRANTMSGidentifier !AS granted to !AS&LSTMSG1writing listing file2LSTMSG2 listing file SYSUAF.LIS complete(MDFYMSGuser record(s) updated< NAFADDMSG'record successfully added to NETUAF.DAT8 NAFDONEMSG#network authorization file modifiedH NAFNOMODS3no modifications made to network authorization file4 NETLSTMSG listing file NETUAF.LIS complete,NOIDNAMEno ID name was specifiedDNOMODS2no modifications made to system authorization file0PREMMSGrecord removed from NETUAF.DATH RDBADDMSG3identifier !AS value: %X!XL added to RIGHTSLIST.DATL RDBADDMSGU7identifier !AS value: [!OW,!OW] added to RIGHTSLIST.DAT* RDBCREMSGRIGHTSLIST.DAT created. RDBDONEMSGrights data base modified, RDBMDFYMSGidentifier !AS modified> RDBNOMODS)no modifications made to rights data baseL RDBREMMSG7identifier !AS value: %X!XL removed from RIGHTSLIST.DATP RDBREMMSGU;identifier !AS value: [!OW,!OW] removed from RIGHTSLIST.DAT0REMMSGrecord removed from SYSUAF.DAT$RENMSGuser record renamed4 REVOKEMSGidentifier !AS revoked from !AS6RLSTMSG$listing file RIGHTSLIST.LIS complete RONLYRead-only accessSYSMSG1!AS6 BADNODFORM improper node::remoteuser format.BADSPCno user matched spe?$ PSI_AC041.E2/-[STANNARD.OBJ.KIT.PSIUTL.E]PSIAUTHORIZE.EXE;1WuJcification.BADUSRusername does not exist \!AD\X CLIWARNMSGCWarning: /CLITABLES field may need to reflect changes to /CLI fieldNDEFPWDIDOUTRNG*identifier value is not within legal range@INVDEV/device name too long to add trailing ':'!/\!AD\0INVSTRstring too long for field \!AD\. KEYNOTFNDinvalid option name \!AD\0 KEYNOTUNQoption name not unique \!AD\*NAFAEXNETUAF.DAT already exists6 NAFUAEERR"entry already exists in NETUAF.DAT*NAFDNENETUAF.DAT does not existRNODEFPWD?Warning: DEFAULT password change has no effect on ADDed records& NODTOOBIGnode name too long8 NOGRPWILD#wild card group numbers not allowedDNOTIDFMT1id name parameter does not translate to ID formatF NOTUICFMT2user id parameter does not translate to UIC format*PWDNCH!AD password not changed$SYSMSG2ERROR CODE %X'!XL'6 WLDNOTALWD wild card user specs not allowed& ACLSYNTAXerror parsing !AD,NOACEACE is not part of ACL - !ASN ACLTOOBIG:ACL must be less then !SL bytes long, it is !SL bytes long0 NETMANQIONetwork managment QIO failed4 NFB$_ERR_FCTUnrecognized NFB$B_FCT value8 NFB$_ERR_DB!Unrecognized NFB$B_DATABASE valueNNFB$_ERR_FLAGS4Some undefined bits in the FLAGS field were not zero0 NFB$_ERR_P1The P1 buffer is too small0 NFB$_ERR_P2The P2 buffer is too small0 NFB$_ERR_P3The P3 buffer is too smalll NFB$_ERR_P4VThe P4 buffer, or one of the string cells, is too small on a SET Qio function0 NFB$_ERR_CELLIllegal NFB$B_CELL value0 NFB$_ERR_OPERIllegal NFB$B_OPER value2NFB$_ERR_OPER2Illegal NFB$B_OPER2 value8 NFB$_ERR_SRCHIllegal NFB$L_SRCH_KEY field ID:NFB$_ERR_SRCH2 Illegal NFB$L_SRCH2_KEY field ID2 NFB_BADIDbad ID in field ID list %x!XL*ADDERRunable to add user record6BADVALUE"error in value specification \!AD\@ CMDTOOLONG+command line exceeds maximum length of !4ULCONERR connect error,CREERRunable to create SYSUAF.DAT0DEFERRunable to obtain DEFAULT recordGETERR get error8GRANTERR%unable to grant identifier !AS to !AS>HELPERR,error finding or outputting HELP information INVCMDinvalid command"INVRSPinvalid response, INVUSERNAMEusername syntax error8 INVUSERSPEC!error in user specification \!AD\.LSTERRerror generating listing file*MDFYERRunable to update record6 NAFADDERR"unable to add record to NETUAF.DAT0 NAFCONERRconnect error on NETUAF.DAT0 NAFCREERRunable to create NETUAF.DAT& NAMETOOBIGusername too long,NEWMSG10unable to open SYSUAF.DAT,NEWMSG15unable to open NETUAF.DAT2NOARG!missing argument for option \!AD\8NOQUOTE%quoted string missing end quote \!AD\&NOTUNQcommand is not unique& NOUSERNAMEmissing username0 NOUSERSPECmissing user specification0 PRVNOTFNDinvalid privilege name \!AD\4 PRVNOTUNQprivilege name not unique \!AD\PUTERR put error0PWDNOLpassword not on list; try again, PWDSYNTAXinvalid password syntax8 RDBADDERR#unable to add !AS to RIGHTSLIST.DATJ RDBADDERRU4unable to add !AS value: [!OW,!OW] to RIGHTSLIST.DATF RDBADDERRV0unable to add !AS value: %X!XL to RIGHTSLIST.DAT4 RDBCREERRunable to create RIGHTSLIST.DAT4 RDBMDFYERRunable to modify identifier !AS< RDBMDFYERRU%unable to modify identifier [!OW,!OW]< RDBREMERR(unable to remove !AS from RIGHTSLIST.DAT6REMDEF%the DEFAULT record may not be removed(REMERRunable to delete record6REMSYS$the SYSTEM record may not be removed6RENDEF%the DEFAULT record may not be renamed6RENSYS$the SYSTEM record may not be renamed< REVOKEERR(unable to revoke identifier !AS from !AS2SHOWERRunable to complete show command$SHOW_ERRerror during SHOW:UAEERR)invalid username, username already exists2UICERR error in UIC specification \!AD\4 VALTOOBIGvalue too large for field \!AD\L ZCONFLICT7/PASSWORD and /GENERATE_PASSWORD are mutually exclusive0ZISQUALqualifier required; not found PSIAUTHe SHRIMGMSG@@s `Hxxx0PXP0 @80 XHP @LBRSHRLIBRTLSMGSHR SECURESHR.*[STANNARD.OBJ.KIT.PSIUTL.E]PSIAUTHORIZE.INIT;1+,5./ J 4D -/0123KPWO56 Ի 7`ӿB-89G JHJ!! ACL constructing keys!'def/key kp7 "(identifier=" /set=ident.def/key kp7 ",options=" /if=ident /set=optionsBdef/key kp7 ",access=" /if=(options,options1,options2) /set=accessDdef/key enter ")" /if=(access,access1,access2,access3) /set=default2def/key kp3 "protected+" /if=options /set=options10def/key kp3 "hidden+" /if=options1 /set=options2-def/key kp3 "none" /if=options2 /set=options/def/key kp3 "incoming+" /if=access /set=access10def/key kp3 "outgoing+" /if=access1 /set=access25def/key kp3 "reverse_charge+"/if=access2 /set=access3+def/key kp3 "none" /if=access3 /set=access! ! show keys!2def/key kp1 "Show /Rights /DTE * /Network=*" /term*def/key kp2 "Show DTE */Network=*" /term(def/key kp3 "Show Destination *" /term0*[STANNARD.OBJ.KIT.PSIUTL.E]PSIAUTHORIZEHLP.HLB;1+,6.'/ J 4'&-/0123 KPWO(56>%7`B-89G JHJ% VAX-11 Librarian V04-00`R>%F?%%H& 5 ` T$ PSI_AC041.E6/0[STANNARD.OBJ.KIT.PSIUTL.E]PSIAUTHORIZEHLP.HLB;1XE;1<1'ۭ"R ADD FDEFINEGRANTREMOVE~REVOKESETSHOW  @>%1 ADDFThis command creates an identifier and adds it to the Agent Rights Database.FormatADD/IDENTIFIER identifier 2 /IDENTIFIERFThis command creates an identifier and adds it to the Agent Rights0database. /IDENTIFIER is the default qualifier. 3 Parameter identifierFSpecifies the identifier to be added to the ACL. The identifier is aFstring of 1 through 32 alphanumeric characters. It must contain atFleast one non-numeric character  and may contain underscores and dollarsigns. 3 ExamplePSI-authorize> ADD/ID UKFThis creates the identifier UK and adds it to the Agent Rights database. 2 Parameter identifierFSpecifies the identifier to be added to the ACL. The identifier is aFstring of 1 through 32 alphanumeric characters. It must contain atFleast one non-numeric character and may contain underscores and dollarsigns. 2 ExamplePSI-authorize> ADD/ID UKFThis creates the identifier  UK and adds it to the Agent Rights database.wwC>%1 DEFINEFAssociates an equivalence string and a set of attributes with a key onFthe terminal keyboard. The terminals include VT52, VT100 series andterminals with LK201 keyboards.FTo define keys on the numeric pads of these terminals you must firstFissue the DCL commands SET TERMINAL/APPLICATION or SETTERMINAL/NONUMERIC.DNote that default key definitions are loaded from PSIAUTHORIZE$INIT.Format&DEFINE/KEY key-name equivalence-string2 /KEY4You must include this qualifier in the command line. 2 Parameterskey-name/Specifies the name of the key you are defining.equivalence stringFSpecifies the string which is to be processed when you press the key.FIf the string contains any spaces, enclose the equivalence string inquotation marks. 2 Qualifiers/ECHO/NOECHOFDetermines whether or not the equivalence string is displayed on yourFscreen after the key has been pressed. The default is /ECHO. You3cannot use /NOECHO with the /NOTERMINATE qualifier./ERASE/NOERASEFDetermines whether or not the current line is erased before the key2translation is inserted. The default is /NOERASE./IF_STATE={state-name } {state-name,...} /NOIF_STATEFSpecifies a list of one or more states, one of which must be in effectFfor the key definition to be valid. If you omit the /IF_STATEFqualifier or u se the /NOIF_STATE one the current state is used. TheFstate name is an alphanumeric string. States are established with theF /SET_STATE qualifier. If you specify only one state name you canomit the parentheses. /LOCK_STATE /NOLOCK_STATEFSpecifies that the state set by the /SET_STATE qualifier remains inFeffect until explicitly changed. If you use the /NOLOCK_STATEFqualifier the state set by /SET_STATE is in effect only for the nextFdefineable key that you press, or for the next read terminatingcharacter you type.FThe default is /NOLOCK_STATE. The /LOCK_STATE qualifier can only be(specified with the /SET_STATE qualifier./LOG/NOLOGFSpecifies whether the system displays a message indicating that theBkey definition has been successfully created. The default is /LOG/SET_STATE=state-name /NOSET_STATEFCauses the specified state-name to be set when the key is pressed..The state name can be any alphanumeric string.FIf you omit this qualifier or use /NOSET_STATE the current state thatFwas locked remains in effect. If you have not included this qualifierFwith a key definition you can use the DCL command SET KEY to changethe current state. /TERMINATE /NOTERMINATEFSpecifies whether or not the current equivalence string is to beFterminated (that is, processed) when the key is pressed. The defaultFis /NOTERMINATE, which allows you to press other keys before theFequivalence string B$ PSI_AC041.E6/0[STANNARD.OBJ.KIT.PSIUTL.E]PSIAUTHORIZEHLP.HLB;1'>"is processed. Pressing RETURN has the same effectas using /TERMINATE. 2 Examples6PSI-authorize> DEFINE/KEY PF3 "SHOW DEST *" /TERMINATEFThis example defines the key PF3 so that it performs the SHOW DEST *command.0PSI-authorize> DEFINE/KEY/IF_STATE=ONE PF1 "ONE"FThis command defines the PF1 key to be "ONE" for state ONE. The stateFis specified in the same command as the key definition. This is the#preferred method for defining keys.ww?%1 GRANTFThis command is used to grant an identifier to a specified agent. TheFagent is either a user (/USER) or a DTE (/DTE). The default is /USER.Format#GRANT/IDENTIFIER identifier {agent}# { * } 2 Parameter identifier Is the identifier to be granted. 2 Qualifiers /IDENTIFIER4You must include this qualifier in the command line./DTE"Specifies that the agent is a DTE./USER .Specifies that the agent is a user. (Default)/NETWORK=network-identifierFMust be used with the DTE qualifier to specify which network the DTEs belong to. 2 Example/PSI-authorize> GRANT/ID MAIL_USE */DTE/NET=PSS1FThis example shows you how to grant the identifier MAIL_USE to all theDTEs in the database.(PSI-authorize> GRANT/ID SEND_CALLS SCOTT@This example grants the identifier SEND_CALLS to the user SCOTT.ww?%1 REMOVEFThis command deletes an existing identifier from the Agent Rights database. FormatREMOVE/IDENTIFIER identifier 2 Parameter identifier>Specifies the name in the Agent Rights database to be deleted. 2 Qualifier /IDENTIFIER4You must include this qualifier in the command line. 2 Example!PSI-authorize> REMOVE/ID MAIL_USEFThis command deletes the identifier MAIL_USE from the Agent Rights database. ww`[?%1 REVOKEFThis command revokes an identifier for a specified agent. The agent>must be a user (/USER) or &a DTE (/DTE). The default is /USER.Format"REVOKE/IDENTIFIER identifier agent 2 Parameters identifier%Is the identifier name to be revoked.agentSpecifies the agent. 2 Qualifiers/DTESpecifies a DTE/NETWORK=network-identifierFMust be used with the DTE qualifier to specify which network the DTEs belong to./USERSpecifies a user. 2 Example%PSI-authorize> REVOKE/ID WE_PAY SCOTTDIn this example the identifier WE_PAY is revoked for the user SCOTT. ww '?%1 SETFYou can specify this command either in the form SET DESTINATION or inthe form SET DTE.FSET DESTINATION creates modifies or deletes an ACL in the DestinationAccess Control Database.FSET DTE creates modifies or deletes an ACL in the DTE Access Control Database. 2 DESTINATIONFThis command creates, modifies or deletes an ACL in the DestinationFAccess Control database. If the wildcard option (*) is used, the&action is applied to all destinations.Format'SET DESTINATION {destination-name-list}' { * } 3 Parameterdestination-name-listFSpecifies the destination or list of destinations. The wildcard (*)specifies all destinations. 3 Qualifiers /ACL=acl-listFCreates the ACL if there is no ACL on the destination already. IfDthere is, the new ACL is added to the beginning of the existing ACL./AFTER=acl-listFAllows the position of the new ACL to be situated after the existingFACL. This qualifier requires that /ACL has been previously specified./DELETE2Deletes the ACL from the specified destination(s)./LIKE=destination-nameFAllows an existing ACL from another specified destination to replacethe ACL of this destination./NEWFDeletes an existing ACL and replaces it with the new ACL specified inthe /ACL qualifier. 3 ExamplesFPSI-authorize> SET DESTINATION MAIL/ACL=(IDENTIFIER=-MAIL_USE,ACCESS=INCOMING)FThis example shows how to set up the ACL for the destination MAIL.FThe qualifier keywords IDENTIFIER and ACCESS are the Access ControlList entries for the ACL.*PSI-authorize> SET DESTINATION MAIL/DELETE&This command deletes the ACL for MAIL. 2 DTEFThis command creates, modifies or deletes an ACL in the DTE database,Faccording to the qualifier specified. If the wildcard option (*) isFused the action is applied to each entry in the database, includingthe ALL entry.FormatSET DTE {dte-address-list} { * } { ALL } 3 Parameterdte-address-listFIs the address or list of addresses to be set. The wildcard (*)Frefers to each entry in the database, ALL specifies the DTE=ALL entry.3 Command Qualifiers /ACL=acl-listFCreates the ACL if there is no ACL on the DTE already. If there is,9the new ACL is added to the end of the existing ACL list./AFTER=acl-listFAllows the position of the new ACL to be situated after the existingFACL. This qualifier requires that /ACL has been previously specified./DELETE*Deletes the ACL from the specified DTE(s)./LIKE=dte-addressFAllows an existing ACL from another specified DTE to replace the ACL of this DTE/NEWFDeletes an existing ACL and replaces it with the new ACL specified onthe /ACL qualifier./NETWORK={network-identifier} { * }FMust be used with the DTE qualifier to specify which network the DTEs belong to. 3 Examples1PSI-authorize> SET DTE */ACL=(IDENTIFIER=WE_PAY,-/ -ACCESS=INCOMING+REVERSE_CHARGE)FThis example places the ACL entry specified, at the head of each ACL#in the DTE Access Control database.>PSI-authorize> SET DTE 234273417171/LIKE=255367783421/NET=PSS1FThis command replaces the ACL of the first DTE with that of the secondDTE. wwF?%1 SHOWThis command eitherF 1. Displays Access Control Lists - when it is used in the form& SHOW DESTINATION or SHOW DTE. orF 2. Displays information on rights identifiers - when it is usedF in the form SHOW/IDENT for a particular identifier or the: form SHOW/RIGHTS for the rights of a user or DTE. 2 DESTINATIONFThis command displays the ACLs, if any, on a destination. If the8wildcard option (*) is used, all destinations are shown.!Format(SHOW DESTINATION {destination-name-list}( { * } 3 Parameterdestination-name-listFSpecifies the destination(s) to be shown. The wildcard (*) specifiesall destinations. 3 Example(PSI-authorize> SHOW DESTINATION PSI_MAILFThis example displays any ACLs on the destination PSI_MAIL, asfollows: Destination PSI_MAIL/ (IDENTIFIER=MAIL_USE,ACCESS=INCOMING) 2 DTEFThis command displays the ACLs, if a"ny, on the specified DTE(s). IfBthe wildcard option (*) is used the action is applied to all DTEs./Note that the /NETWORK qualifier is compulsory.FormatSHOW DTE {dte-address-list} { * } 3 Parameterdte-address-listFIs the address or list of addresses to be shown. The wildcard (*)#specifies all DTEs in the database. 3 Qualifier/NETWORK={network-name} { * }9Must be used to specify which network the DTEs belong to.# 3 Example1PSI-authorize> SHOW DTE 23425678/NETWORK=PSS1 ALLFThis example shows any ACLs on the DTE 23425678 on the network PSS1, as follows: Network: PSS1 DTE: 234256781 (IDENTIFIER=PSI_INCOMING,ACCESS=INCOMING)1 (IDENTIFIER=PSI_OUTGOING,ACCESS=OUTGOING) 2 /IDENTIFIERFThis command displays information about the rights identifier specified.FormatSHOW/IDENTIFIER {identifier} { * } 3 Parameter identi$fierDIs the identifier name. The wildcard (*) specifies all identifiers. 3 Qualifiers/BRIEF.Gives brief information on rights identifiers./FULL)Gives full details on rights identifiers. 3 Example+PSI-authorize> SHOW/IDENTIFIER PSI$X25_USERFThis example shows information about the identifier PSI$X25_USER, asfollows:; Name Value Attributes; PSI$X25_USER %X8001000D NORESOURCE 2 /RIGHTSFL _$ PSI_AC041.E6/0[STANNARD.OBJ.KIT.PSIUTL.E]PSIAUTHORIZEHLP.HLB;1'!$!%This command displays the rights identifiers held by the specifiedFagent. The agent is either a user (/USER) or a DTE (/DTE). Thedefault is /USER.FormatSHOW/RIGHTS {agent-name} 3 Parameter agent-name5Is the user or DTE whose identifiers are to be shown. 3 Qualifiers/DTESpecifies a DTE./USERSpecifies a user./NETWORK=network-identifierFMust be used with the DTE qualifier to specify which network the DTEs belong to. 3 Example PSI- authorize> SHOW/RIGHTS SCOTTFThis example shows the identifiers belonging to the user Scott, asfollows:@Identifier Value Attributes@ PSI$PSI %X80010003 NORESOURCE@ PSI$X25_USER %X8001000D NORESOURCEww'*[STANNARD.OBJ.KIT.PSIUTL.E]PSIKDA.EXE;1+,7.Q/ J 4QQ-/0123 KPWOR56@V%7B-89G JHJ0DX0205(T% hH PSIKDA PSI V4.1-11VT%04-00*+, ?,k-p2F G ?!  LIBRTL_001 File: _.dmpsys$disk:[].lis 0<some files may not be closedKDA - KMS/KMV Dump Analyzer V!UL.!UL !%D Page 7dDump of line !AD Taken on !AD Dump of KMV line file created on !%D &Dump file analyzed = !AS Microcode Configuration Options$ --------- ------------- -------$H Microcode version number : !UB.!UB$t Line dumped on : !AD Configured as :- Discard I-frames with N(R) error" Random RX command frame allowed! 128 transmit buffers implemented"4 Tracing implemented` Odd TX buffer address allowed Large statistics set implemented" Protocol variations :- DISC expected before connection" DM never transmitted  Reset same as disconnect@ REJ sent only onced Send FRMR if unexpected F-bit Send SABM if unexpected F-bit RR command without P-bit is invalid% Hardware Configuration Options# -------- ------------- ------- $, Hardware is single line unit KMS-11/PX(X Hardware is multiple line unit KMS-11/BD* Number of initialised lines : !UB% Controller Status ---------- ------ !UL Not Configured$ !UL Initialised, Not Connected#D !UL Initialised, Connectedp !UL Invalid Status (%x!XB) !UL Invalid Status (%o!OB)C.S.R. Queue ------ -----  entry line info1 info2 info3 status response8 num. num. typeP !UL !UB !UB !UB !UB !UB !UB5t !UL !UB %x!XB %x!XB %x!XB %x!XB %x!XB7 !UL !UB %o!OB %o!OB %o!OB %o!OB %o!OB5 ( See next page for possible statuses and response types);4 Possible C.S.R. Queue Statusesx -------- ------ ----- -------- OCT DEC HEX 1 1 1 : Command correctly performed$ 376 254 FE : Command rejected, too many buffers0 374 252 FC : Non existent buffer memory(@ 373 251 FB : Buffer overflowp 372 250 FA : Disconnect received! 371 249 F9 : Command rejected, out of sequence/ 370 248 F8 : No response after N2 tries( 367 247 F7 : Non existent modem control unit-, 366 246 F6 : Modem control unit down%d 365 245 F5 : Modem down 363 243 F3 : Byte count exceeded! 362 242 F2 : Command rejected odd address* 361 241 F1 : Connect received 360 240 F0 : Connect tracing but missing frame/< 357 239 EF : Resett 356 238 EE : Transmission underrun# 355 237 ED : FCS error 354 236 EC : Reception overrun 353 235 EB : Abort received Possible C.S.R. Queue Response Types$( -------- ------ ----- -------- -----$T OCT DEC HEX 0 0 0 : Modem initialised 1 1 1 : Line initialised 2 2 2 : Line uninitialised 3 3 3 : Line connected 4 4 4 : Line disconnected  5 5 5 : Tx bufferD 6 6 6 : Rx buffer` 7 7 7 : Tx abort| 10 8 8 : Rx abort 11 9 9 : Statistic 12 10 A : Define working zone 13 11 B : Not used 14 12 C : Trace buffer 15 13 D : Trace disable4Modem ConfigurationT----- -------------p %x!XL : Modem control unit address# %o!OL : Modem control unit address# !UB : Modem timer !UB : Timer interval check !UB : Current line number for modem task,, !UB : Modem LSR status`Modem queue ----- -----  Queue is empty Entry Task line num. num. num. !UL !UB !UB !UL %x!XB !UB !UL %o!OB !UB4System Parameters -- Line number !UL&P !UB Maximum number of retransmits$ %x!XB Address field for transmit command frame/ %o!OB Address field for transmit command frame/ %x!XB Address field for receive command frame/ %o!OB Address field for receive command frame/T !UW Maximum number of bytes in I-frame) !UB Maximum number of outstanding I-frames- !UB.!UB Timer length (secs).Statistics -- Line number !UW  !5UW Number of received I-frames "H !5UW Number of transmitted I-frames %t !5UW Number of received RNR-frames $ !5UW Number of transmitted RNR-frames ' !5UW Number of received REJ-frames $ !5UW Number of transmitted REJ-frames ', !5UW Number of received FRMR-frames %\ !5UW Number of transmitted FRMR-frames ( !5UW Number of timeout (T1) occurences' !5UW Number of received SABM-frames$ !5UW Number of transmitted SABM-frames' !5UW Number of FCS errorsH !5UW Number of receive buffer overflows(l !5UW Number of transmission underruns& !5UW Number of reception overruns" !5UW Number of received frames with P-bit* !5UW Number of N(R) errors, Modem status :P Carrier detecth Clear to send Data set ready Request to send Data terminal ready Line enabled  Line status : Not initialised Not connected8 Initialised P Not connectedh Initialised  Connected  Line status : Invalid (%x!XB) Line status : Invalid (%o!OB)FullEmptyEvent Queue -- Line number !UW  num type field state@ --- ---- ----- -----d !UL !UB !UB !AS !UL %x!XB %x!XB !AS !UL %o!OB %o!OB !ASBuffers -- Line number !UW Receive Buffers ------- -------0 Transmit BuffersH -------- -------dMiscellaneous -- Line number !UW"General Information------- -----------!UB PR.N2 : Current N2 ( number of transmissions)1%x!XB PR.N2 : Current N2 ( number of transmissions)3 %o!OB PR.N2 : Current N2 ( number of transmissions)3\!UB PR.PBI : F-bit expected flag %x!XB PR.PBI : F-bit expected flag"%o!OB PR.PBI : F-bit expected flag"!UB PR.STA : Protocol state%x!XB PR.STA : Protocol state<%o!OB PR.STA : Protocol stated!UB PR.TAC : No. of acknowledged I-frames from last received N(R)A%x!XB PR.TAC : No. of acknowledged I-fradxd$ PSI_AC041.E7/'[STANNARD.OBJ.KIT.PSIUTL.E]PSIKDA.EXE;1HLP.HLB;1XE;1<1Q"mes from last received N(R)C%o!OB PR.TAC : No. of acknowledged I-frames from last received N(R)C$!UB PR.TIM : Current timerp%x!XB PR.TIM : Current timer%o!OB PR.TIM : Current timer!UB RE.CHR : Temporary received character storage 2%x!XB RE.CHR : Temporary received character storage 4%o!OB RE.CHR : Temporary received character storage 4T!UB RE.STA : Receive state%x!XB RE.STA : Receive state%o!OB RE.STA : Receive state!UB SY.CLK : Clock spy%x!XB SY.CLK : Clock spy%o!OB SY.CLK : Clock spy<!UB TB.ACR : Trace buffer to be returned by transmission8\%x!XB TB.ACR : Trace buffer to be returned by transmission:%o!OB TB.ACR : Trace buffer to be returned by transmission:!UB TB.ACT : trace buffer to be returned by reception5$%x!XB TB.ACT : trace buffer to be returned by reception7d%o!OB TB.ACT : trace buffer to be returned by reception7!UB TB.ADR : Temporary saved data for NPR transfer purpose:%x!XB TB.ADR : Temporary saved data for NPR transfer purpose<( %o!OB TB.ADR : Temporary saved data for NPR transfer purpose<l !UB TB.CCO : Current trace buffer trace count- %x!XB TB.CCO : Current trace buffer trace count/ %o!OB TB.CCO : Current trace buffer trace count/ !!UB TB.FLG : Tracing on flagX!%x!XB TB.FLG : Tracing on flag|!%o!OB TB.FLG : Tracing on flag!!UB TB.LOS : Missing recorded frame(s) between consecutive trace buf flagsJ!%x!XB TB.LOS : Missing recorded frame(s) between consecutive trace buf flagsL "%o!OB TB.LOS : Missing recorded frame(s) between consecutive trace buf flagsLt"!UB TB.RST : Reception trace state""%x!XB TB.RST : Reception trace state$"%o!OB TB.RST : Reception trace state$ #!UB TB.SCO : Final trace buffer frame count+L#%x!XB TB.SCO : Final trace buffer frame count-#%o!OB TB.SCO : Final trace buffer frame count-#!UB TB.TST : Transmission trace count%#%x!XB TB.TST : Transmission trace count' $%o!OB TB.TST : Transmission trace count'P$!UB TB.TTS : Reception frame status#$%x!XB TB.TTS : Reception frame status%$%o!OB TB.TTS : Reception frame status%$!UB TB.TTT : Transmission frame status& %%x!XB TB.TTT : Transmission frame status(<%%o!OB TB.TTT : Transmission frame status(l%!UB TB.TDA : Temporary saved data for NPR transfer purpose:%%x!XB TB.TDA : Temporary saved data for NPR transfer purpose<%%o!OB TB.TDA : Temporary saved data for NPR transfer purpose<$&!UB TC.BUS : Busy flagh&%x!XB TC.BUS : Busy flag&%o!OB TC.BUS : Busy flag&!UB TC.CTR : Last received control field with N(R) info.8&%x!XB TC.CTR : Last received control field with N(R) info.:'%o!OB TC.CTR : Last received control field with N(R) info.:L'!UB TC.DA1 : Data 1 to transmit'%x!XB TC.DA1 : Data 1 to transmit!'%o!OB TC.DA1 : Data 1 to transmit!'!UB TC.DA2 : Data 2 to transmit(%x!XB TC.DA2 : Data 2 to transmit!8(%o!OB TC.DA2 : Data 2 to transmit!d(!UB TC.DA3 : Data 3 to transmit(%x!XB TC.DA3 : Data 3 to transmit!(%o!OB TC.DA3 : Data 3 to transmit!(!UB TC.DA4 : Data 4 to transmit)%x!XB TC.DA4 : Data 4 to transmit!8)%o!OB TC.DA4 : Data 4 to transmit!d)!UB TC.IGN : Ignore flag)%x!XB TC.IGN : Ignore flag)%o!OB TC.IGN : Ignore flag)!UB TC.INF : Transmit I-frame flag")%x!XB TC.INF : Transmit I-frame flag$$*%o!OB TC.INF : Transmit I-frame flag$P*!UB TC.NR : Last valid sent N(R) |*%x!XB TC.NR : Last valid sent N(R)"*%o!OB TC.NR : Last valid sent N(R)"*!UB TC.NS : Last valid received N(R) %*%x!XB TC.NS : Last valid received N(R) ',+%o!OB TC.NS : Last valid received N(R) '\+!UB TC.REJ : Reject recovery flag!+%x!XB TC.REJ : Reject recovery flag#+%o!OB TC.REJ : Reject recovery flag#+!UB TC.TRC : Timer recovery flag ,%x!XB TC.TRC : Timer recovery flag"8,%o!OB TC.TRC : Timer recovery flag"d,!UB TC.VR : Contains V(R) , receive state variable2,%x!XB TC.VR : Contains V(R) , receive state variable4,%o!OB TC.VR : Contains V(R) , receive state variable4-!UB TC.VS : Contains V(S) , send state variable/D-%x!XB TC.VS : Contains V(S) , send state variable1|-%o!OB TC.VS : Contains V(S) , send state variable1-!UB TC.X : Temporary receive control field*-%x!XB TC.X : Temporary receive control field,(.%o!OB TC.X : Temporary receive control field,\.!UB TR.CH1 : Temporary transmit character storage 13.%x!XB TR.CH1 : Temporary transmit character storage 15.%o!OB TR.CH1 : Temporary transmit character storage 15 /!UB TR.CH2 : Temporary transmit storage 2)L/%x!XB TR.CH2 : Temporary transmit storage 2+/%o!OB TR.CH2 : Temporary transmit storage 2+/!UB TR.STA : Transmit state/%x!XB TR.STA : Transmit state 0%o!OB TR.STA : Transmit state40 Used \0 Free l0 Current receive buffer :|0 length = !UW address = %x!XW 0 length = !UW address = %o!OW 0 num length addr status0 !UL !UW %x!XW !AS1 !UL !UW %o!OW !AS<1 Transmitted Unacknowledged\1 Untransmitted 1 Unused1 Current transmit buffer :1 length = !UW address = %x!XW 1 length = !UW address = %o!OW 1 num length addr status2 !UL !UW %x!XW !ASD2 !UL !UW %o!OW !ASh2DCX Impure Area.2--- ------ -----2!UW $PDVTA !UW2!XW $PDVTA !XW2!OW $PDVTA !OW2!UW $SLTMA !UW 3!XW $SLTMA !XW(3!OW $SLTMA !OWD3!UW $LLCTA !UW`3!XW $LLCTA !XW|3!OW $LLCTA !OW3!UW $PDVNM !UW3!XW $PDVNM !XW3!OW $PDVNM !OW3!UW $SLTNM !UW4!XW $SLTNM !XW$4!OW $SLTNM !OW@4!UW $CCBNM !UW\4!XW $CCBNM !XWx4!OW $CCBNM !OW4!UW $CCBSZ !UW4!XW $CCBSZ !XW4!OW $CCBSZ !OW4!UW $RDBNM !UW5!XW $RDBNM !XW 5!OW $RDBNM !OW<5!UW $RDBSZ !UWX5!XW $RDBSZ !XWt5!OW $RDBSZ !OW5!UW $CCBCT !UW5!XW $CCBCT !XW5!OW $CCBCT !OW5!UW $RDBCT !UW6!XW $RDBCT !XW6!OW $RDBCT !OW86!UW $CCBAF !UWT6!XW $CCBAF !XWp6!OW $CCBAF !OW6!UW $RDBAF !UW6!XW $RDBAF !XW6!OW $RDBAF !OW6!UW $LDBAF !UW6!XW $LDBAF !XW7!OW $LDBAF !OW47!UW $RDBTH !UWP7!XW $RDBTH !XWl7!OW $RDBTH !OW7!UW $CMPDV !UW7!XW $CMPDV !XW7!OW $CMPDV !OW7!UW $STKDP !UW7!XW $STKDP !XW8!OW $STKDP !OW08!UW $FRKHD !UWL8!XW $FRKHD !XWh8!OW $FRKHD !OW8!UW $FRKHD2 !UW8!XW $FRKHD2 !XW8!OW $FRKHD2 !OW8!UW $CCBLH !UW8!XW $CCBLH !XW9!OW $CCBLH !OW,9!UW $RDBLH !UWH9!XW $RDBLH !XWd9!OW $RDBLH !OW9!UW $RDQSL !UW9!XW $RDQSL !XW9!OW $RDQSL !OW9!UW $RDQCT !UW9!XW $RDQCT !XW :!OW $RDQCT !OW(:!UW $CLKCT !UWD:!XW $CLKCT !XW`:!OW $CLKCT !OW|:!UW $CLKDC !UW:!XW $CLKDC !XW:!OW $CLKDC !OW:!UW $STMDA !UW:!XW $STMDA !XW;!OW $STMDA !OW$;!UW $STMDB !UW@;!XW $STMDB !XW\;!OW $STMDB !OWx;!UW $STFNC !UW;!XW $STFNC !XW;!OW $STFNC !OW;!UW $LTFNC !UW;!XW $LTFNC !XW<!OW $LTFNC !OW <!UW $HIGH !UW<<!XW $HIGH !XWT<!OW $HIGH !OWl<LLC Reverse Mapping Table.<--- ------- ------- ------<!UW !UW<!XW !XW<!OW !OW<Process Descriptor Vectors.=------- ---------- --------8=DCX NOT LOADED\=pointer invalid - address out of range?'t=pointer invalid - address out of range?'=!UW $PDVTB+!UB !UW=!XW $PDVTpq$ PSI_AC041.E7/'[STANNARD.OBJ.KIT.PSIUTL.E]PSIKDA.EXE;1HLP.HLB;1Q" B+!UB !XW=!OW $PDVTB+!UB !OW> . 4> . LLC Process DescriptorD> . DLC/DDM Process Descriptor!l> . !UW Z.DSP !UW> . !XW Z.DSP !XW> . !OW Z.DSP !OW> . pointer invalid - address out of range?-> . . 0? . . DISPATCH TABLED? . . !UW XMT EN !UW h? . . !XW XMT EN !XW ? . . !OW XMT EN !OW ? . . !UW RCV EN !UW ? . . !XW RCV EN !XW @ . . !OW RCV EN !OW 0@ . . !UW KLL EN !UW X@ . . !XW KLL EN !XW @ . . !OW KLL EN !OW @ . . !UW CTR EN !UW @ . . !XW CTR EN !XW @ . . !OW CTR EN !OW A . . !UW TIM EX !UW HA . . !XW TIM EX !XW pA . . !OW TIM EX !OW A . . !UW XMT CM !UW A . . !XW XMT CM !XW A . . !OW XMT CM !OW B . . !UW RCV CM !UW 8B . . !XW RCV CM !XW `B . . !OW RCV CM !OW B . . !UW KLL CM !UW B . . !XW KLL CM !XW B . . !OW KLL CM !OW C . . !UW CTR CM !UW (C . . !XW CTR CM !XW PC . . !OW CTR CM !OW xC . . C . !UW Z.NAM !UWC . !XW Z.NAM !XWC . !OW Z.NAM !OWC . !UW Z.LLN !UBD . !XW Z.LLN !XB8D . !OW Z.LLN !OB\D . !UW !UBD . !XW !XBD . !OW !OBD . !UW Z.SCH !UBD . !XW Z.SCH !XB E . !OW Z.SCH !OB,E . !UW Z.FLG !UWLE . !XW Z.FLG !XWlE . !OW Z.FLG !OWE . !UW Z.DAT !UWE . !XW Z.DAT !XWE . !OW Z.DAT !OWE . pointer invalid - address out of range?- F . . DF . . LLC LINE TABLE - FIRST 10. WORDS-XF . . !UW !UWF . . !XW !XWF . . !OW !OWF . . G .GSLT Index. (G--- ------ ff+fQQfefPPf fePQ1Q fe fgPgQQPgRRPPlhPhQQPhRRPPR1eKePeQQPeRRP4dQdPPQdRRQQdPdRRPdSSPPЏPQddPdQQPdRRP@ddid@jiPjQPQ P Q@Џ"PP pSpR.bccbsbDPPTSR|~Sd$paqqqRR(dpRRXdyXXxdoYmXWVUThihihqf~tRTeRe0eRTeRfP~~|~\gRTeRp|~|gĘeRTeRfPRTeRefPRTeRefPRTeRefPRTeR<efPRTeRdefPRTeRĐefP!RTeRİeeefPRTeR efP RTeRfPRTeR<efPRTeRdRTeRČefPRTeRļeRTeReefPRTeRDRTeRxefP%RTeRЦP~n|~ĨgRTeReefPPSSRSЦPP`PP R|~P R|~, P R|~TgPRĤ~|gSRfPPHfP PYfPPSSRRݦgSR=XHWV~hƸggRVgR g0gRVgRЬPUUЬSTTHzT~{ RRB~B~B~B~B~Bc~Rưp UTRVgR4g~hRVgR\gƄgRVgRƘgRVgRgg,gTgƀgƸgg gP gp gƜ g g g0 gL gx gƘ g g gRVgR g< gRVgRP gRVgRt gƘ gƼ g g g g8 gT gp gƌ gƴ g g g gW!ViU~RUfR, fH fRUfRЬR ~Š ~t g ~|~ g ~|~ g~|~g~|~@gSUfSTfhfSUfSŀfSUfSŜfŸfSUfSTTSS+zS~{RR>BP~?B~R gTSЬR0ݬR%ݬRݬRݬR<UTS~RSeRݬ|~<dRSeRЬR¡~|~hd¢~~àd£~H~d<¤~|~|d¦~|~ôd§PzP~{ ~n§P P~|~dRSeR|VAU0TRTfRݬ|~eRTfRЬR<@~n|~0eUT~ RTeRd:eĈ:eRTeR@SB|ݞR:ĸ:Ġ:6 RRS% [Z<5]P@\Y~RZR:;RZzR\0; `;[<\WR==k<~ʌ>d><>k<~?>ʴ>k<~|?T?,?k< ~ ??ʤ?k< ~ l@D@@k<~@ʼ@ʔ@k<~\A4A AkpA<~AʰAʐAkX~E,ZSD)LDTZP@YYRZkRDk EkRZkR Z 9*[STANNARD.OBJ.KIT.PSIUTL.E]PSI_PROVIDE_SECURITY_COM.COM;1+,8./ J 4bP-/0123KPWO56D+7B-89G JHJ$ !$ ! psi_provide_securit_com.com$ !=$ ! Construct psi_security_com.com callback from a record in $ ! psi_kit_descriptions.dat.$ ! $ ! NOTE:$ !4$ ! This cannot be combined with psi_provide_dcl.com:$ ! because vmsinstal only allows callbacks from kitinstal$ ! and its direct callees.$ !$*$ on control_y then vmi$callback control_y$ !+$ ! Only provide security if it is required$ !<$ if .not. (psi$all_util .or. psi$security_wanted) then exit$$$ vmi$callback find_fi ݑ$ PSI_AC041.E8/9[STANNARD.OBJ.KIT.PSIUTL.E]PSI_PROVIDE_SECURITY_COM.COM;1bCle psi$file - ; vmi$root:[sysmgr]psi_security.com "" so psi$security_file'$ if psi$security_file .nes. "S" then -8 vmi$callback provide_file psi$file psi_security.com -* vmi$root:[sysmgr] o ! on specific root$b$ set file/protection=(s:rwed,o:rwed,g,w) psi$file ! psi_security.com should not be world readable$$ exit6*[STANNARD.OBJ.KIT.PSIUTL.E]PSI_PROVIDE_TRACE_DCL.COM;1+,=./ J 4J-/0123KPWO56n+7@;B-89G JHJ$ !$ ! psi_provide_trace_dcl.com$ !<$ ! Construct provide_dcl_command callback from a record in $ ! psi_kit_descriptions.dat.$ ! $ ! NOTE:$ !4$ ! This cannot be combined with psi_provide_dcl.com:$ ! because vmsinstal only allows callbacks from kitinstal$ ! and its direct callees.$ !$*$ on control_y then vmi$callback control_y$%$ if .not. psi$trace_wanted then exit$+$ debug "trace is wanted so process fields"E$ src_field = f$edit( f$element (2, ",", P1), "TRIM,UPCASE" ) - ","E$ dest_field = f$edit( f$element (3, ",", P1), "TRIM,UPCASE" ) - ","J$ psi$dcl_file = f$parse(src_field,,,"NAME") + f$parse(src_field,,,"TYPE")$7$ if dest_field .nes. "" then psi$dcl_file = dest_field$!$ debug "src_field = ", src_field#$ debug "dest_field = ", dest_field'$ debug "psi$dcl_file = ", psi$dcl_file$ debug "P1 = ", P1$1$ vmi$callback provide_dcl_command 'psi$dcl_file'$ $ exit7*[STANNARD.OBJ.KIT.PSIUTL.E]PSI_PROVIDE_TRACE_HELP.COM;1+,>./ J 4K-/0123KPWO56@9>0+7`B-89G JHJ$ !$ ! psi_provide_trace_help.com$ !9$ ! Construct provide_dcl_help callback from a record in $ ! psi_kit_descriptions.dat.$ ! $ ! NOTE:$ !5$ ! This cannot be combined with psi_provide_help.com:$ ! because vmsinstal only allows callbacks from kitinstal$ ! and its direct callees.$ !$*$ on control_y then vmi$callback control_y$%$ if .not. psi$trace_wanted then exit$E$ src_field = f$edit( f$element (2, ",", P1), "TRIM,UPCASE" ) - ","E$ dest_field = f$edit( f$element (3, ",", P1), "TRIM,UPCASE" ) - ","K$ psi$help_file = f$parse(src_field,,,"NAME") + f$parse(src_field,,,"TYPE")$8$ if dest_field .nes. "" then psi$help_file = dest_field$!$ debug "src_field = ", src_field#$ debug "dest_field = ", dest_field)$ debug "psi$help_file = ", psi$help_file$ debug "P1 = ", P1$/$ vmi$callback provide_dcl_help 'psi$help_file'$$ exit6*[STANNARD.OBJ.KIT.PSIUTL.E]PSI_PROVIDE_TRACE_SEC.COM;1+,?./ J 4hL-/0123KPWO56?+7C-89G JHJ$ !$ ! psi_provide_trace_sec.com$ !:$ ! Construct provide_trace_sec callback from a record in $ ! psi_kit_descriptions.dat.$ !$*$ on control_y then vmi$callback control_y$ !($ ! Only provide trace if it is required$ !9$ if .not. (psi$all_util .or. psi$trace_wanted) then exit$B$ ! This has been changed so that the security file is updated but*$ ! not purged. This MAY be removed later.$ !$b$! vmi$callback find_file psi$file vmi$root:[sysmgr]psi_trace_security.com "" so psi$security_file($! if psi$security_file .nes. "S" then -$>$ vmi$callback provide_file psi$file psi_trace_security.com -) vmi$root:[sysmgr] K ! on common root$h$ set file/protection=(s:rwed,o:rwed,g,w) psi$file ! psi_trace_security.com should not be world readable($ $ exit8*[STANNARD.OBJ.KIT.PSIUTL.E]PSI_PROVIDE_TRACE_START.COM;1+,k ./ J 4eB-/0123KPWO56d+7#C-89G JHJ$ !$ ! psi_provide_trace_start.com$ !$*$ on control_y then vmi$callback control_y$ !($ ! Only provide trace if it is required$ !9$ if .not. (psi$all_util .or. psi$trace_wanted) then exit$#$ vmi$callback find_file psi$file -; vmi$root:[sysmgr]psi_trace_start.com "" so psi$start_file$$$ if psi$start_file .nes. "S" then -; vmi$callback provide_file psi$file psi_trace_start.com -' vmi$root:[sysmgr] ! on common root$e$ set file/protection=(s:rwed,o:rwed,g,w) psi$file ! psi_trace_start.com should not be world readable$$ exit-*[STANNARD.OBJ.KIT.PSIUTL.E]PSI_SECURITY.COM;1+,o./ J 4>-/0123KPWO56`k+7),C-89G JHJ$ !$ ! PSI_SECURITY.COM$ !>$ ! This command procedure is used to set up the PSI security $ ! database when PSI is loaded$ !$$ !8$ ! PSIAUTHORIZE commands should follow this RUN command$ ! $ run = "run"$ status = %x10000001$$ on error then goto sec_failed#$ on control_y then goto sec_failed$$ run sys$system:psiauthorize!! For example, !7! SET DTE ""/NET=network/ACL=(IDENTIFIER=*,ACCESS=NONE)7! SET DTE "3110"/NET=network/ACL=(IDENTIFIER=INCOMING,-! ACCESS=INCOMING)!8! See the VAX PSI Management Utilities Guide for details! $ all_exit:$ exit 'status$ $ sec_failed:$ status = %x10000002$ goto all_exit3*[STANNARD.OBJ.KIT.PSIUTL.E]PSI_TRACE_SECURITY.COM;1+,} ./ J 4J-/0123KPWO56&YR7^8C-89G JHJ$ !$ ! PSI_TRACE_SECURITY.COM$ !?$ ! This command procedure is used to set which nodes/users are!$ ! allowed to trace this node. <$ ! See the VAX PSI Problem Solving Guide for full details.$ !@$ ! Edit this command file to change the list of users that are $ ! allowed to trace.$ !#$ required_privs = "SYSNAM,SYSPRV"$%$ on error then goto trace_sec_failed)$ on control_y then goto trace_sec_failed$($ prev_privs = f$setprv(required_privs)7$ if f$privilege (required_privs) then goto local_usersJ$ write sys$output " Insufficient privileges to modify PSI trace security".$ write sys$output " Required privileges are:"$ write sys$output ""%$ write sys$output " ",required_privs$ write sys$output ""$ goto trace_sec_failed$ local_users:$!$ on error then goto remote_users$ !=$ ! Only users with OPER privilege can start or stop tracing.C$ ! In addition only users with [SYSTEM] uic and users with SYSPRV B$ ! or BYPASS privilege can start tracing on their l!>$$ PSI_AC041.E} /3[STANNARD.OBJ.KIT.PSIUTL.E]PSI_TRACE_SECURITY.COM;1Joocal system. ;$ ! This can be extended by setting up an ACL on the trace $ ! collector's mailbox. ?$ ! This is an example of how to set up a suitable ACL to allow;$ ! users with UIC [TEST,*] (with OPER privilege) to trace $ ! their local system.$ !F$ !mbdevice = f$trnlnm ("NETTRACE$DECLARE", "NETTRACE$PROCNAME_TABLE")+$ !set acl /object_type=device 'mbdevice' -2$ ! /acl=(identifier=[TEST,*],ACCESS=WRITE+DELETE)$ remote_users:$ ! )$ ! Create the table of logical names and1$ ! delete any entries (if table already existed)$ !%$ on error then goto trace_sec_failedF$ create/name_table/parent_table=lnm$system_directory/executive_mode - nettrace$_privileges8$ deassign/table=nettrace$_privileges/executive_mode/all=$ define = "define/table=nettrace$_privileges/executive_mode"$ !C$ ! Add entries here for those remote nodes/users to be allowed to $ ! trace$ !B$ ! Entries have the following format (wildcards (*) are allowed):$ ! $ !define NODENAME::USER 1$ !$ exit:%$ prev_privs = f$setprv( prev_privs )$ exit 'status$$ trace_sec_failed:$ status = %x10000002 $ goto exit0*[STANNARD.OBJ.KIT.PSIUTL.E]PSI_TRACE_START.COM;1+,./ J 4@N-/0123KPWO56 gL7`FC-89G JHJ$ !$ ! PSI_TRACE_START.COM$ !=$ ! This command procedure creates a detached trace collector$ ! to start tracing.@$ ! Edit this command file if you want to start tracing whenever$ ! PSI starts up.$ !3$ ! For example, to start tracing all level 2 lines;$ ! trace/psi start x25l2/output=sys$errorlog:psi_trace.dat&*[STANNARD.OBJ.KIT.PSIUTL.E]TRACE.CLD;2+,./ J 4L\-/0123KPWO56@o7`ORC-89G JHJ MODULE trace IDENT "1.0-6"!!! COPYRIGHT (c) 1985, 1986 BY5! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.!H! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIEDH! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THEH! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHERH! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANYH! OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY! TRANSFERRED.!H! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICEH! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT! CORPORATION.!H! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS9! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.!!++ ! FACILITY:! ! NETTRACE! ! ABSTRACT:!! DCL TRACE command syntax!! ENVIRONMENT:! ! VMS DCL! ! AUTHOR:!(! Tony Staw, CREATION DATE: 29-May-1985!!! Edit Author Date Reason! ---- ------ ---- ------!C! 01 Tony Staw 05-Jun-1986 Change /PROTOCOL to get values instead! of using keywords.A! 02 Tony Staw 02-Sep-1986 Use type $quoted_string for nodename! parametersB! 03 Dave Marsh 11-Sep-1986 Add /ROUTER to the trace command for! the Microserver?! 04 Tony Staw 14-Nov-1986 Add /VOTS to the trace command.!L! 05 Mike Lincoln 15-Dec-1986 Add /DIRECTORY and /TRANSPORT_CONNECTION! for VOTSC! 06 Tony Staw 23-Jan-1987 Change SAVE_BUFFER to SAVE_BUFFER_SIZE!-- !%! This file defines the verb TRACE. !define verb TRACE image nettrace,& qualifier PSI, syntax = psi_trace & qualifier ROUTER, syntax = psi_trace & qualifier VOTS, syntax = psi_trace ' parameter p1, value (type=tra_command)define syntax psi_trace ! image same' parameter p1, value (type=tra_command)define type tra_command$ keyword START, syntax = tra_start," keyword STOP, syntax = tra_stop," keyword SHOW, syntax = tra_show,( keyword ANALYZE, syntax = tra_analyze,! keyword HELP, syntax = tra_help!! Define TRACE START syntax!define syntax tra_start' parameter p1, value (type=tra_command)" parameter p2, label = tracepoint,3 value (list, default = "",type = $quoted_string) qualifier LIVE. qualifier PROCESS_NAME, label = process_name, value. qualifier CAPTURE_SIZE, label = capture_size, value (type = $number)" qualifier OUTPUT, label = output, value (type = $file)" qualifier BLOCKS, label = blocks, value (type = $number) qualifier VERSION_LIMIT, label = version_limit, value (type = $number) qualifier MAXIMUM_BUFFERS, label = maximum_buffers, value (type = $number) qualifier BUFFER_SIZE, label= buffer_size, value (type = $number)& qualifier TIME_OUT, label = time_out, value (type = $number)& qualifier PRIORITY, label = priority, value (type = $number)I disallow (PRIORITY or OUTPUT or BLOCKS or VERSION_LIMIT or PROCESS_NAME) and LIVEH disallow (neg PRIORITY or neg OUTPUT or neg BLOCKS or neg VERSION_LIMIT or neg PROCESS_NAME) and LIVE+ qualifier PROTOCOL, value (required, list)* qualifier SELECT, value (required, list) < qualifier DISPLAY, value (required, type = disp_type, list), qualifier L3CHANNEL, value (required, list): qualifier DATA, value (required, type = data_type, list); qualifier EVENT, value (required, type = event_type, list)2 qualifier PAGE, value (required, type = $number)2 qualifier WIDTH, value (required, type = $number) qualifier TRUNCATE qualifier REVERSE qualifier FULL qualifier BRIEF" qualifier NAME, value (required)< qualifier SAVE_BUFFER_SIZE value (required, type = $number) qualifier DIRECTORY5 qualifier TRANSPORT_CONNECTION value (required,list) disallow FULL and BRIEF disallow neg FULL and neg BRIEFE disallow (neg PROTOCOL or neg SELECT or neg DISPLAY or neg L3CHANNEL6 or neg DATA or neg EVENT or neg PAGE or neg WIDTH < or neg TRUNCATE or neg REVERSE or neg FULL or neg BRIEF 8 or neg NAME or neg SAVE_BUFFER_SIZE or neg DIRECTORY! or neg TRANSPORT_CONNECTION)  and not LIVEF disallow (PROTOCOL or SELECT or DISPLAY or L3CHANNEL or DATA or EVENT= or PAGE or WIDTH or TRUNCATE or REVERSE or FULL or BRIEF , or NAME or SAVE_BUFFER_SIZE or DIRECTORY or TRANSPORT_CONNECTION)  and not LIVEdefine syntax tra_stop' parameter p1, value (type=tra_command)# parameter p2, label = process_namedefine syntax tra_show1 parameter p1, value (required, type=tra_command) parameter p2, label = show_type value (type = show_options)define type SHOW_OPTIONS- keyword TRACE_COLLECTOR, syntax = show_trace keyword KEY, syntax = show_keydefine syntax SHOW_TRACE' parameter p1, value (type=tra_command)* parameter p2, value (type = show_options)# parameter p3, label = process_name value (type = $quoted_string) qualifier FULL define syntax SHOW_KEY' parameter p1, value (type=tra_command)* parameter p2, value (type = show_options) parameter P3, label = key_name value $ qualifier ALL, syntax=SHOW_ALL_KEYS& qualifier STATE, value(required,list) qualifier BRIEF qualifier FULL qualifier LOGdefine syntax SHOW_ALL_KEYS' parameter p1, value (type=tra_command)) parameter p2, value(type = show_options)define syntax tra_analyze' parameter p1, value (type=tra_command) parameter p2, label = infile, value (type = $file)$ qualifier OUTPUT, label = outfile,  value (type=$file)5 qualifier BEFORE, value (required, type = $datetime)5 qualifier SINCE, value (required, type = $datetime) ) qualifier TRACE_LEVEL, value (required), nonnegatable !0 ! These qualifiers are also valid in START/LIVE !+ qualifier PROTOCOL, value (required, list)* qualifier SELECT, value (required, list) < qualifier DISPLAY, value (required, type = disp_type, list), qualifier L3CHANNEL, value (required, list): qualifier DATA, value (required, type = data_type,"$ PSI_AC041.E/&[STANNARD.OBJ.KIT.PSIUTL.E]TRACE.CLD;21HLP.HLB;1XE;1<1L6 list); qualifier EVENT, value (required, type = event_type, list)2 qualifier PAGE, value (required, type = $number)2 qualifier WIDTH, value (required, type = $number) qualifier TRUNCATE qualifier REVERSE qualifier FULL qualifier BRIEF qualifier SCROLL" qualifier NAME, value (required)< qualifier SAVE_BUFFER_SIZE value (required, type = $number) qualifier DIRECTORY6 qualifier TRANSPORT_CONNECTION value (required, list) disallow neg SCROLL and OUTFILE disallow FULL and BRIEF disallow neg FULL and neg BRIEFdefine syntax tra_help' parameter p1, value (type=tra_command)* parameter p2, value (type=$rest_of_line), label = trace_helpdefine type disp_type keyword ALL, negatable keyword TIME, negatable keyword EVENT, negatable keyword SIZE, negatable keyword NAME, negatable keyword FLAG, negatable% keyword FUNCTION_CODE, negatable keyword STATUS, negatabledefine type event_type keyword TRANSMIT keyword RECEIVE keyword ALLdefine type data_type keyword HEXADECIMAL keyword DECIMAL keyword OCTAL keyword ASCII&*[STANNARD.OBJ.KIT.PSIUTL.E]TRACE.HLP;1+,.-/ J 4H-+-/0123KPWO.567\C-89G JHJ 1 TRACE  *o TRACE /PSI runs the PSI TRACE utility.  HThis allows you to monitor the flow of packets and frames into and out Hof your VAX PSI or Access system. Refer to the VAX P.S.I. Problem 1Solving Guide for full details of this utility.  Fo TRACE /ROUTER runs the DECrouter 2000 and X25router TRACE utility.  HThis allows you to monitor the flow of data on your DECrouter 2000 or HX25router. Refer to the DECrouter 2000 or the X25router Problem 1Solving Guide for full details of this utility.  Format:   TRACE /PSI [command,...]  TRACE /ROUTER [command,...]   HIf you do not specify a command, you can then enter commands at the NETTRACE> prompt.  2 START  , Sets up tracepoints and starts tracing.  Format:  ! START (tracepoint[,...])  3 tracepoint  B You may specify one or more tracepoints, separated by commas.  / Tracepoints have the following formats:   [node::]ETHERNET ! [node::]DDCMP.line-id  [node::]NSP [node::]ROU_ETHERNET ) [node::]ROU_SYNC.circuit_name  ! [node::]X25L2.dev-c-u % [node::]X25L3LINE.dev-c-u - [node::]X25L3CHANNEL.circuit_name " [node::]X25GAP.channel & X25GATEWAY.network.dev-c-u  $ [node::]LLC2LINE.dev-c-u ' [node::]LLC2CHANNEL.channel  H If you specify more than one tracepoint, they must all be on the  same node.  H Note that you need not specify the tracepoint name in full. The H second part of the tracepoint name may be shortened or omitted H altogether. For example X25L3LINE.KMX will trace all KMX lines at level 3.  H The default tracepoint is X25L2, which traces all PSI lines at level 2.  4 ETHERNET  H This starts tracing the Ethernet line. There are no options for A use with this tracepoint and only one channel can be traced.  4 DDCMP   DDCMP.line-id  H This starts tracing the synchronous lines on line line-id. If the H line name is not specified, all currently defined lines are traced.  4 NSP  H This starts tracing the NSP logical links. There are no options " for use with this tracepoint.  4 ROU_ETHERNET  H This starts the tracing of routing on the Ethernet circuit. There H are no options for use with this tracepoint and only one channel  can be traced.  4 ROU_SYNC   ROU_SYNC.circuit_name  H This starts the tracing of routing on the synchronous circuits. If H the circuit name is not specified, all currently defined circuits  are traced.  4 X25L2   X25L2.dev-c-u  C This starts tracing at level 2 (Frame level) on line dev-c-u. C Both level 2 and level 3 headers will be captured (but see  START /CAPTURE_SIZE).  4 X25L3LINE   X25L3LINE.dev-c-u  C This starts tracing at level 3 (Packet Level) on line dev-c-u.  4 X25L3CHANNEL   X25L3CHANNEL.circuit_name  C This starts tracing at level 3 (Packet Level) on the named  virtual circuit.  5 circuit_name  C The format of circuit_name depends on the type of circuit  being traced.  7 . For PVCs, circuit_name is the name of the PVC.  C . For outgoing SVCs, circuit_name is the NW: device unit % number (for example, NWA23).  C . For incoming SVCs, circuit_name takes the format  dev-c-u_lcn_nn, where:  C dev-c-u is the name of the line on which the call arrived, C lcn is the logical channel number of this virtual circuit  (in hexadecimal), ) nn is a 2-digit sequence number.   6 Examples  > To trace all outgoing SVCs at level 3, specify the  tracepoint X25L3CHANNEL.NW  > To trace all incoming SVCs with a logical channel number > of 420 on line dpv-0-0, specify the tracepoint  X25L3CHANNEL.DPV-0-0_420  4 X25GAP   X25GAP.channel  ; This starts tracing the Gateway Access Protocol (GAP).  C To trace on an Access system specify channel in the form HOSTnnn.  C To trace on a Multi-host machine specify channel in the form  GATEWAYnnn.  C As with all tracepoints, the channel name can be shortened or  omitted altogether.  4 X25GATEWAY  ! X25GATEWAY.network.[dev-c-u]  C This starts tracing on an X.25 Gateway. See the VAX P.S.I. , Problem Solving Guide for full details.  4 LLC2LINE   LLC2LINE.dev-c-u  C This starts tracing at the Medium Access Control (IEEE 802.3) C level for the LLC 2 (IEEE 802.2) line dev-c-u. Both the MAC 2 and LLC 2 frame information will be captured.  4 LLC2CHANNEL   LLC2CHANNEL.channel  C This starts tracing at the LLC2 (IEEE 802.2) frame level. C Both LLC 2 (IEEE 802.2) frame level and L3 packet level " information will be captured.  5 channel  C To trace a particular LLC 2 data-link connection, specify the 3 corresponding DTE address as the channel name.  3 /LIVE  /LIVE /NOLIVE  H Determines whether tracing and analysis are done in real time, or H whether the unanalyzed data is stored in a file for later analysis.  H If you specify /NOLIVE a detached process is created which writes H trace records to a file. If you specify /LIVE, analyzed output H will appear on your screen. You can then issue ANALYZE commands to + change the type of analysis performed.  H /LIVE is not valid with /PRIORITY, /OUTPUT, /BLOCKS, /VERSION_LIMIT  or /PROCESS_NAME.  H In addition a number of analysis option may be specified if /LIVE H is specified. These are /PAGE, /WIDTH, /DATA, /TRUNCATE, /EVENT, H /DISPLAY, /REVERSE, /PROTOCOL, /SELECT, /L3CHANNEL, /NAME and D /SAVE_BUFFER_SIZE. These qualifiers are only valid with /LIVE.   The default is /NOLIVE.  3 /PROCESS_NAME   /PROCESS_NAME=process-name  H Allows you to specify an alternative name for the detached process H that is created in a START/NOLIVE command. If you do not specify 4 process-name, the default is username$NETTRACE.  $ Not valid with /LIVE qualifier.  3 /CAPTURE_SIZE   /CAPTURE_SIZE=n  = #T$ PSI_AC041.E/&[STANNARD.OBJ.KIT.PSIUTL.E]TRACE.HLP;1_SECURITY_COM.COM;1H-" The amount of data, in bytes, captured from each record.  H For example, if you are only interested in level 2 headers, specify H a capture_size of 5 or 6 bytes. Specify a low value for 4 CAPTURE_SIZE to avoid trace records being lost.   The default value is 140.  3 /OUTPUT   /OUTPUT=output filename  H The name of the output filename. This file will contain unanalyzed H data. While this file is being written, it can be read by another process.  H The default filename is TRACE.DAT in your current default  directory.  $ Not valid with /LIVE qualifier.  3 /BLOCKS   /BLOCKS=n  H The approximate size (in blocks) of each output file. Once the ? file reaches this size it is closed and a new one created.   The default value is 200.  $ Not valid with /LIVE qualifier.  3 /VERSION_LIMIT   /VERSION_LIMIT=n  H The limit on the number of versions of the output file that are > kept. Older versions are purged as new ones are created.   The default value is 10.  $ Not valid with /LIVE qualifier.  3 /MAXIMUM_BUFFERS   /MAXIMUM_BUFFERS=n  H The number of buffers that are used internally by TRACE to hold E data. Increasing this value may avoid trace records being lost.  H The default value is 3 if a remote node is being traced or 10 if # tracing is being done locally.  3 /BUFFER_SIZE   /BUFFER_SIZE=n  H The size of the buffers that are used internally by TRACE to hold E data. Increasing this value may avoid trace records being lost. .  The default value is 500.  3 /TIME_OUT  " /TIME_OUT=n (units of 100 ms)  H The time that TRACE will wait before sending partially full trace buffers. m + The default value is 2. (i.e 200 ms). r 3 /PRIORITY f  /PRIORITY=baspri 0 = The base priority of the detached process to be created. s H In order to avoid losing trace data it is advisable to run the 1 detached trace collector at a high priority. c  The default value is 8.  $ Not valid with /LIVE qualifier.  3 /DATA  /NODATA  /DATA=(data-type,...)  6 Use /DATA to specify the format(s) of the output.  ' See ANALYZE/DATA for full details. y % Only valid with /LIVE qualifier. a 3 /PAGE  /PAGE=n  " The number of lines per page.  % Only valid with /LIVE qualifier. . 3 /WIDTH  /WIDTH=n  & The width of the analyzed output.  % Only valid with /LIVE qualifier.  3 /TRUNCATE .  /[NO]TRUNCATE  H Determines whether analyzed data that will not fit on one line is . truncated or is printed on the next line.  / For LIVE tracing the default is /TRUNCATE. I % Only valid with /LIVE qualifier. . 3 /REVERSE   /[NO]REVERSE a H Determines whether parts of the output will be displayed in REVERSE H video (if your terminal supports this). If you specify /REVERSE H received data will be displayed in reverse video, and titles will  be displayed in bold.   The default is /REVERSE.  % Only valid with /LIVE qualifier. o 3 /EVENT   /EVENT=(event-type,...)  H Determines what types of events are included in the analyzed output.  ( See ANALYZE/EVENT for full details.  % Only valid with /LIVE qualifier.  3 /DISPLAY   /NODISPLAY " /DISPLAY=(display-option,...)  H Specifies which fields appear in the analyzed output. Valid H display options are EVENT, SIZE, TIME, NAME, FLAG, STATUS,  FUNCTION_CODE and ALL  * See ANALYZE/DISPLAY for full details.  % Only valid with /LIVE qualifier.  3 /PROTOCOL a  /NOPROTOCOL ( /PROTOCOL=(protocol-identifier,...)  + See ANALYZE/PROTOCOL for full details. e % Only valid with /LIVE qualifier. _ 3 /SELECT U  /NOSELECT " /SELECT=(protocol-identifier)  ) See ANALYZE/SELECT for full details. t % Only valid with /LIVE qualifier. r 3 /L3CHANNEL   /NOL3CHANNEL # /L3CHANNEL=(channel-range,...)  H A list of channel numbers and ranges. Only trace records H containing a Packet Level channel number within a selected range H will be displayed. Each channel range can be either a single H value, or a range of values, or *. This is only valid for PSI H trace records that contain a packet level field (X25L2, : LLC2CHANNEL, X25L3CHANNEL, X25L3LINE and X25GATEWAY).  0 /NOL3CHANNEL will select all trace records.  H For example /L3CHANNEL=(0,%x100-*) selects channel 0 and channel 4 numbers greater than or equal to 256 (decimal).  % Only valid with /LIVE qualifier. c 3 /NAME   /NAME=channel-name  H If you specify /NAME only trace records on channels that match with H this name will be selected for analysis. If you specify only part H of a channel name then all records that start with this string will H be selected. You can use the /DISPLAY=NAME option to see the & channel name in the trace record.  % Only valid with /LIVE qualifier.  3 /SAVE_BUFFER_SIZE S  /SAVE_BUFFER_SIZE=n  H The number of screens of saved lines that will be kept. These ? lines can be examined by using the NEXT and BACK commands.   The default value is 30. 3 % Only valid with /LIVE qualifier.  2 STOP  + Deletes tracepoints and stops tracing. c Format:   STOP [process-name]  3 process-name   process-name  4 For live tracing do not specify a process-name.  H For non-live tracing specify the name of the detached trace process H that you want to stop, for example SMITH$NETTRACE. The default ' process name is username$NETTRACE. r 2 SHOW  H Shows you all the tracing that is taking place on a particular node.  3 TRACE_COLLECTOR l Format:  F SHOW TRACE_COLLECTOR [node::][process-name-string][/[NO]FULL]  4 node  ) The node where data is being traced. E 4 process-name-string h H Process-name-string is a string which is matched against the H process names that are running TRACE. A match occurs with all H TRACE processes that begin with process-name-string. '*' will  match all TRACE processes.  H If you omit process-name-string from the command, all trace ( collecting processes are displayed.  4 /FULL p HIf you specify /FULL, the names of the lines or channels being traced are also displayed. r 2 ANALYZE c H Starts analysis of trace data, or changes the type of analysis  performed. i Format:   ANALYZE [filename]  3 filename  < The name of a file that contains unanalyzed trace data.  3 /OUTPUT   /OUTPUT=filename  A This is the name of the output listing file that is created.   The default is SYS$OUTPUT. m 3 /DATA / /NODATA  /DATA=(data-type,...)  6 Use /DATA to specify the format(s) of the output.   Valid data-types are:  * DECIMAL, OCTAL, ASCII and HEXADECIMAL  3 /TRACE_LEVEL  + /TRACE_LEVEL=(protocol_identifier,...) ,H This specifies the type of tracepoint you wish to analyze, if a 4 file contains more than one type of tracepoint.  C See ANALYZE/PROTOCOL for a list of valid protocol identifiers. C 6 Protocol identifiers take the following defaults:  7 Tracepoint Default Protocol Identifiers t * DDCMP DDCMP - ETHERNET ETHERNET e( NSP NSP , ROU_ETHERNET ROUTING , ROU_SYN ROUTING 6 X25L2 L2, L3 or L2E, L3 ' X25L3LINE L3 ' X25L3CHANNEL L3 f( X25GAP GAP ( X25GATEWAY GTW 7 LLC2LINE IEEE8023, IEEE8022 1 LLC2CHANNEL IEEE8022, L3  3 /SINCE  /NOSINCE a /SINCE=[time]  > Allows you to analyse data traced since a specified time.  3 /BEFORE a  /NOBE$ 'Q$ PSI_AC041.E/&[STANNARD.OBJ.KIT.PSIUTL.E]TRACE.HLP;1ECURITY.COM;1H-FORE  /BEFORE=[time] a ? Allows you to analyse data traced before a specified time. c 3 /PAGE  /PAGE=n  H The number of lines per page. If data is being output to a file, ) the default value is SYS$LP_LINES-6. O 3 /WIDTH  /WIDTH=n z H The width of the output. If data is being output to a file, the H default value is 132. If data is being output to your terminal, < the default value is the width of your terminal screen.  3 /TRUNCATE l  /[NO]TRUNCATE  H Determines whether data that will not fit on one line is truncated $ or is printed on the next line.  The default is /NOTRUNCATE.  3 /REVERSE   /[NO]REVERSE  H Determines whether parts of the output will be displayed in REVERSE H video (if your terminal supports this). If you specify /REVERSE H received data will be displayed in reverse video, and titles will  be displayed in bold.   The default is /REVERSE. / 3 /EVENT   /EVENT=(event-type,...)  F Determines what types of events should be included in the output.   Event types are: e ( TRANSMIT - transmitted data only % RECEIVE - received data only T ALL - all events T  The default is /EVENT=ALL  3 /DISPLAY   /NODISPLAY f" /DISPLAY=(display-option,...)  ? Specifies which fields will appear in the analyzed output. 0 H Display options are [NO]EVENT, [NO]SIZE, [NO]TIME, [NO]NAME, 8 [NO]FLAG, [NO]STATUS, [NO]FUNCTION_CODE and [NO]ALL  4 EVENT o H Shows whether this was a received or transmitted data buffer, or  some other event.  4 SIZE  * The original size of the data buffer.  4 TIME  4 The time at which the trace record was created.  4 NAME  2 The name of the line or channel being traced.  4 FLAG  % A flag word in the trace record.  4 STATUS  H The status field in the trace record. For some types of tracing E this will show whether the I/O operation completed successfully. l 4 FUNCTION_CODE y B The function code of the event that caused this trace record.  4 ALL  = ALL is equivalent to specifying all the DISPLAY options. e 3 /PROTOCOL h  /NOPROTOCOL ( /PROTOCOL=(protocol-identifier,...)  H Use /NOPROTOCOL if you want to examine the data without any & protocol headers being formatted.  H The /PROTOCOL qualifier will change the type of analysis that is & done, so it is not normally used.  H The /PROTOCOL qualifier will also change the protocols that are ' displayed (see /SELECT qualifier). i H The default protocol-identifiers depend on the tracepoint being  analyzed.  4 Protocol-identifiers  % Valid protocol identifiers are :  8 DDCMP - DECnet protocol for synchronous lines 7 ETHERNET - Ethernet protocol for Ethernet lines t8 NSP - DECnet protocol for NSP logical links = ROU_ETHERNET - Ethernet protocol for Ethernet circuits c; ROU_SYNC - DECnet protocol for synchronous circuits i@ L2 - Level 2 protocol for lines with protocol LAPB A L2E - Level 2 protocol for lines with protocol LAPBE # L3 - Level 3 protocol D* GAP - Gateway Access Protocol 5 GTW - used for tracing X.25 gateway only Y. IEEE8022 - LLC 2 frame level protocol. < IEEE8023 - LLC 2 Medium Access Control level format.  H See ANALYZE/TRACE_LEVEL for the default protocols for each type of  tracepoint.  3 /SELECT d  /NOSELECT " /SELECT=(protocol-identifier)  H The /SELECT qualifier allows you to specify which of the protocol . headers you want to appear in the output.  B The default is to format and display all the protocol headers  4 protocol-identifier  / See ANALYZE/PROTOCOL=(protocol-identifier)  3 /L3CHANNEL   /NOL3CHANNEL # /L3CHANNEL=(channel-range,...) E H A list of channel numbers and ranges. Only trace records H containing a Packet Level channel number within a selected range H will be displayed. Each channel range can be either a single H value, or a range of values, or *. This is only valid for PSI H trace records that contain a packet level field (X25L2, : LLC2CHANNEL, X25L3CHANNEL, X25L3LINE and X25GATEWAY).  0 /NOL3CHANNEL will select all trace records.  H For example /L3CHANNEL=(0,%x100-*) selects channel 0 and channel 4 numbers greater than or equal to 256 (decimal).  3 /NAME   /NAME=channel-name l H If you specify /NAME only trace records on channels that match with H this name will be selected for analysis. If you specify only part H of a channel name then all records that start with this string will H be selected. You can use the /DISPLAY=NAME option to see the & channel name in the trace record.  3 /SAVE_BUFFER_SIZE i  /SAVE_BUFFER_SIZE=n  H The number of screens of saved lines that will be kept. These ? lines can be examined by using the NEXT and BACK commands. t  The default value is 30. r  2 Examples  ) TRACE/ROUTER START/LIVE NODDY::DDCMP F 9 Will start tracing all DDCMP lines on node NODDY s , TRACE/ROUTER START/LIVE NODDY::ROU_SYNC  H Will start tracing routing on all synchronous circuits on node  NODDY. e 5 TRACE/PSI START/LIVE NODDY::X25L3LINE.KMX  F Will start tracing at level 3 on all kmx lines on node NODDY.   TRACE/PSI START  H Will create a detached process which will trace all PSI lines ? at level 2 and write the unanalyzed data to TRACE.DAT. p 7 TRACE/PSI START/LIVE X25L3LINE/NODISPLAY/NOSELECT- + _/CAPTURE_SIZE=20/DATA=ASCII/WIDTH=132 T H Will start tracing all PSI lines at level 3 and write the data H to your terminal. Only the data part of each trace record will  be displayed.  > TRACE/PSI ANALYZE /DISPLAY=NAME/DATA=(HEX,ASC)/NOTRUNCATE  H Will attempt to open and analyze trace.dat and will write the ( analyzed data to your terminal.  * TRACE/PSI SHOW TRACE_COLLECTOR */FULL  ? Will show all tracing being done on your current node. u)*[STANNARD.OBJ.KIT.PSIUTL.E]TRACEHLP.HLB;1+,.B/ J 4BB-/0123 KPWOC56`7dC-89G JHJ% VAX-11 Librarian V04-00`4A$B5 ANALYZE<*ATTACH5BACK6CLEAR1DEFINE3.DELETE/<Examples/hEXITHELP>Keypad4LNEXT6dREFRESHvSHOW6SPAWNSTARTSTOP%[y$ PSI_AC041.E/)[STANNARD.OBJ.KIT.PSIUTL.E]TRACEHLP.HLB;1P.HLB;1XE;1<1B$"`3A1 HELP< TRACE allows you to monitor and analyze network activity.F See the Problem Solving Guide for the networking product you are using for full details.wwB1 START* Sets up tracepoints and starts tracing. Format: START (tracepoint[,...]) 2 tracepoint@ You may specify one or more tracepoints, separated by commas.* Tracepoints have the following formats: [node::]ETHERNET [node::]DD CMP.line-id [node::]NSP [node::]ROU_ETHERNET' [node::]ROU_SYNC.circuit_name [node::]X25L2.dev-c-u# [node::]X25L3LINE.dev-c-u+ [node::]X25L3CHANNEL.circuit_name [node::]X25GAP.channel$ X25GATEWAY.network.dev-c-u" [node::]LLC2LINE.dev-c-u% [node::]LLC2CHANNEL.channelF If you specify more than one tracepoint, they must all be on the same node.F Note that you need not specif y the tracepoint name in full. TheF second part of the tracepoint name may be shortened or omittedF altogether. For example X25L3LINE.KMX will trace all KMX lines at level 3.F The default tracepoint is X25L2, which traces all PSI lines at level 2. 3 ETHERNETF This starts tracing the Ethernet line. There are no options for? use with this tracepoint and only one channel can be traced.3 DDCMP DDCMP.line-idF This starts tracing the synch ronous lines on line line-id. If theF line name is not specified, all currently defined lines are traced.3 NSPF This starts tracing the NSP logical links. There are no options for use with this tracepoint.3 ROU_ETHERNETF This starts the tracing of routing on the Ethernet circuit. ThereF are no options for use with this tracepoint and only one channel can be traced. 3 ROU_SYNC ROU_SYNC.circuit_nameF This starts the tracing of routing on the syn chronous circuits. IfF the circuit name is not specified, all currently defined circuits are traced.3 X25L2 X25L2.dev-c-uF This starts tracing at level 2 (Frame level) on line dev-c-u. BothF level 2 and level 3 headers will be captured (but see START /CAPTURE_SIZE). 3 X25L3LINE X25L3LINE.dev-c-uA This starts tracing at level 3 (Packet Level) on line dev-c-u.3 X25L3CHANNEL X25L3CHANNEL.circuit_nameF This starts tracing at level 3  (Packet Level) on the named virtual circuit.4 circuit_nameA The format of circuit_name depends on the type of circuit being traced.5 . For PVCs, circuit_name is the name of the PVC.A . For outgoing SVCs, circuit_name is the NW: device unit# number (for example, NWA23).A . For incoming SVCs, circuit_name takes the format dev-c-u_lcn_nn, where:A dev-c-u is the name of the line on which the call arrived,A lcn is the logical channel number of this virtual circuit (in hexadecimal),' nn is a 2-digit sequence number. 5 Examples< To trace all outgoing SVCs at level 3, specify the tracepoint X25L3CHANNEL.NW< To trace all incoming SVCs with a logical channel number< of 420 on line DPV-0-0, specify the tracepoint: X25L3CHANNEL.DPV-0-0_4203 X25GAP X25GAP.channel9 This starts tracing the Gateway Access Protocol (GAP).D To trace on an Access system specify channel in the form HOSTnnn.F To trace on a Multi-host machine specify channel in the form GATEWAYnnn.F As with all tracepoints, the channel name can be shortened or omitted altogether. 3 X25GATEWAY X25GATEWAY.network.[dev-c-u]F This starts tracing on an X.25 Gateway. See the VAX P.S.I.* Problem Solving Guide for full details. 3 LLC2LINE LLC2LINE.dev-c-uA This starts tracing at the Medium Access Control (IEEE 802.3)A level for the LLC 2 (IEEE 802.2) line dev-c-u. Both the MAC0 and LLC 2 frame information will be captured. 3 LLC2CHANNEL LLC2CHANNEL.channelA This starts tracing at the LLC2 (IEEE 802.2) frame level.A Both LLC 2 (IEEE 802.2) frame level and L3 packet level information will be captured. 4 channelA To trace a particular LLC 2 data-link connection, specify the1 corresponding DTE address as the channel name.2 /LIVE /LI VE /NOLIVEF Determines whether tracing and analysis are done in real time, orF whether the unanalyzed data is stored in a file for later analysis.F If you specify /NOLIVE a detached process is created which writesF trace records to a file. If you specify /LIVE, analyzed outputF will appear on your screen. You can then issue ANALYZE commands to) change the type of analysis performed.F /LIVE is not valid with /PRIORITY, /OUTPUT, /BLOCKS, /VERSION_LIMIT or /PROCESS_NAME.F In addition a number of analysis option may be specified if /LIVEF is specified. These are /PAGE, /WIDTH, /DATA, /TRUNCATE, /EVENT,F /DISPLAY, /REVERSE, /PROTOCOL, /SELECT, /L3CHANNEL, /NAME andB /SAVE_BUFFER_SIZE. These qualifiers are only valid with /LIVE. The default is /NOLIVE.2 /PROCESS_NAME /PROCESS_NAME=process-nameF Allows you to specify an alternative name for the detached processF that is created in a START/NOLIVE command.  If you do not specify2 process-name, the default is username$NETTRACE." Not valid with /LIVE qualifier.2 /CAPTURE_SIZE /CAPTURE_SIZE=n; The amount of data, in bytes, captured from each record.F For example, if you are only interested in level 2 headers, specifyF a capture_size of 5 or 6 bytes. Specify a low value for2 CAPTURE_SIZE to avoid trace records being lost. The default value is 140. 2 /OUTPUT /OUTPUT=output filenameF The name of the output filename. This file will contain unanalyzedF data. While this file is being written, it can be read by another process.F The default filename is TRACE.DAT in your current default directory." Not valid with /LIVE qualifier. 2 /BLOCKS /BLOCKS=nF The approximate size (in blocks) of each output file. Once the= file reaches this size it is closed and a new one created. The default value is 200." Not valid with /LIVE qualifier.2 /VERSION_LIMIT /VERSION_LIMIT=nF The limit on the number of versions of the output file that are< kept. Older versions are purged as new ones are created. The default value is 10." Not valid with /LIVE qualifier.2 /MAXIMUM_BUFFERS /MAXIMUM_BUFFERS=nF The number of buffers that are used internally by TRACE to holdC data. Increasing this value may avoid trace records being lost.F The default value is 3 if a remote node is being tr&tW$ PSI_AC041.E/)[STANNARD.OBJ.KIT.PSIUTL.E]TRACEHLP.HLB;1CURITY_COM.COM;1Bz"aced or 10 if! tracing is being done locally.2 /BUFFER_SIZE /BUFFER_SIZE=nF The size of the buffers that are used internally by TRACE to holdC data. Increasing this value may avoid trace records being lost. The default value is 500. 2 /TIME_OUT /TIME_OUT=n (units of 100 ms)F The time that TRACE will wait before sending partially full trace buffers.) The default value is 2. (i.e 200 ms). 2 /PRIORITY /PRIORITY=baspri; The base priority of the detached process to be created.F In order to avoid losing trace data it is advisable to run the/ detached trace collector at a high priority. The default value is 8." Not valid with /LIVE qualifier.2 /DATA /NODATA /DATA=(data-type,...)4 Use /DATA to specify the format(s) of the output.% See ANALYZE/DATA for full details.# Only valid with /LIVE qualifier.2 /PAGE /PAGE=n The number of lines per page.# Only valid with /LIVE qualifier.2 /WIDTH /WIDTH=n$ The width of the analyzed output.# Only valid with /LIVE qualifier. 2 /TRUNCATE /[NO]TRUNCATEF Determines whether analyzed data that will not fit on one line is, truncated or is printed on the next line.- For LIVE tracing the default is /TRUNCATE.# Only valid with /LIVE qualifier. 2 /REVERSE /[NO]REVERSEF Determines whether parts of the output will be displayed in REVERSEF video (if your terminal supports this). If you specify /REVERSEF received data will be displayed in reverse video, and titles will be displayed in bold. The default is /REVERSE.# Only valid with /LIVE qualifier.2 /EVENT /EVENT=(event-type,...)F Determines what types of events are included in the analyzed output.& See ANALYZE/EVENT for full details.# Only valid with /LIVE qualifier. 2 /DISPLAY /NODISPLAY /DISPLAY=(display-option,...)F Specifies which fields appear in the analyzed output. ValidF display options are EVENT, SIZE, TIME, NAME, FLAG, STATUS, FUNCTION_CODE and ALL( See ANALYZE/DISPLAY for full details.# Only valid with /LIVE qualifier. 2 /PROTOCOL /NOPROTOCOL& /PROTOCOL=(protocol-identifier,...)) See ANALYZE/PROTOCOL for full details.# Only valid with /LIVE qualifier. 2 /SELECT /NOSELECT /SELECT=(protocol-identifier)' See ANALYZE/SELECT for full details.# Only valid with /LIVE qualifier. 2 /L3CHANNEL /NOL3CHANNEL! /L3CHANNEL=(channel-range,...)F A list of channel numbers and ranges. Only trace recordsF containing a Packet Level channel number within a selected rangeF will be displayed. Each channel range can be either a singleF value, or a range of values, or *. This is only valid for X.25F trace records that contain a packet level field (X25L2,8 LLC2CHANNEL, X25L3CHANNEL, X25L3LINE and X25GATEWAY).. /NOL3CHANNEL will select all trace records.F For example /L3CHANNEL=(0,%x100-*) selects channel 0 and channel2 numbers greater than or equal to 256 (decimal).# Only valid with /LIVE qualifier.2 /NAME /NAME=channel-nameF If you specify /NAME only trace records on channels that match withF this name will be selected for analysis. If you specify only partF of a channel name then all records that start with this string willF be selected. You can use the /DISPLAY=NAME option to see theF channel name in the trace record. /NAME=* will display all records.# Only valid with /LIVE qualifier.2 /SAVE_BUFFER_SIZE /SAVE_BUFFER_SIZE=nF The number of screens of saved lines that will be kept. These= lines can be examined by using the NEXT and BACK commands. The default value is 30.# Only valid with /LIVE qualifier.ww$[1 STOP)  Deletes tracepoints and stops tracing. Format: STOP [process-name]2 process-name process-name2 For live tracing do not specify a process-name.F For non-live tracing specify the name of the detached trace process5 that you want to stop, for example SMITH$NETTRACE.1 The default process name is username$NETTRACE.ww\1 SHOWF Either shows you all the tracing that is taking place on a6 particular node, or shows you your key definitions.2 TRACE_COLLECTORFormat:@ SHOW TRACE_COLLECTOR [node::][process-name-string][/[NO]FULL]3 node' The node where data is being traced.3 process-name-stringF Process-name-string is a string which is matched against theF process names that are running TRACE. A match occurs with allF TRACE processes that begin with process-name-string. '*' will match all TRACE processes.F If you omit process-name-string from the co mmand, all trace& collecting processes are displayed.3 /FULLF If you specify /FULL, the names of the lines or channels being traced are also displayed.2 KEYFormat: SHOW KEY [key-name]F Displays the key definitions defined by the DEFINE/KEY command, orF definitions that have been read from the NETTRACE key definitionF file. This file is pointed at by the logical name NETTRACE$KEY_INIT.3 /ALLF Will display all the k!ey definitions. If you use the /ALL( qualifier, do not specify a key name.3 /STATE /NOSTATE /STATE=state-nameF Specifies the name of a state table for which the specified keyF definitions are to be displayed. If you do not specify /STATE,9 then the key definitions for all states are displayed.3 /FULLFRequests that all qualifiers that are associated with a definition are displayed.The default is /NOFULL.ww_ 1 ANALYZEF" Starts analysis of trace data, or changes the type of analysis performed. Format: ANALYZE [filename] 2 filename: The name of a file that contains unanalyzed trace data. 2 /OUTPUT /OUTPUT=filename? This is the name of the output listing file that is created. The default is SYS$OUTPUT.2 /DATA /NODATA /DATA=(data-type,...)4 Use /DATA to specify the format(s) of the output. Valid data-types are:( DECIMAL, OCTAL, ASC#II and HEXADECIMAL2 /TRACE_LEVEL) /TRACE_LEVEL=(protocol_identifier,...)F This specifies the type of tracepoint you wish to analyze, if a2 file contains more than one type of tracepoint.A See ANALYZE/PROTOCOL for a list of valid protocol identifiers.4 Protocol identifiers take the following defaults:5 Tracepoint Default Protocol Identifiers( DDCMP DDCMP+ ETHERNET ETHERNET& NSP $ NSP* ROU_ETHERNET ROUTING* ROU_SYN ROUTING4 X25L2 L2, L3 or L2E, L3% X25L3LINE L3% X25L3CHANNEL L3& X25GAP GAP& X25GATEWAY GTW5 LLC2LINE IEEE8023, IEEE8022/ LLC2CHANNEL IEEE8022, L32 /SINCE /NOSINCE /SINCE=[time]< Allows you to analyse data trac%ed since a specified time. 2 /BEFORE /NOBEFORE /BEFORE=[time]= Allows you to analyse data traced before a specified time.2 /PAGE /PAGE=nF The number of lines per page. If data is being output to a file,' the default value is SYS$LP_LINES-6.2 /WIDTH /WIDTH=nF The width of the output. If data is being output to a file, theF default value is 132. If data is being output to your terminal,: the default value is the width of your term&inal screen. 2 /TRUNCATE /[NO]TRUNCATEF Determines whether data that will not fit on one line is truncated" or is printed on the next line. The default is /NOTRUNCATE. 2 /REVERSE /[NO]REVERSEF Determines whether parts of the output will be displayed in REVERSEF video (if your terminal supports this). If you specify /REVERSEF received data will be displayed in reverse video, and titles will be displayed in bold. The default is /REVERSE. ';|$ PSI_AC041.E/)[STANNARD.OBJ.KIT.PSIUTL.E]TRACEHLP.HLB;1RITY.COM;1BT8"&'2 /SCROLL /[NO]SCROLLF Determines whether data is typed a page at a time, or continuously.F If you specify /NOSCROLL you have to issue the NEXT or BACK commandF to display the next screen. /NOSCROLL is not valid if output is to a file.F ANALYZE/SCROLL will display data continuously following a NEXT orF BACK command, in the direction determined by that NEXT or BACK command. The default is /SCROLL.2 /EVENT /EVENT=(event-type,...)D Determine(s what types of events should be included in the output. Event types are:& TRANSMIT - transmitted data only# RECEIVE - received data only ALL - all events The default is /EVENT=ALL 2 /DISPLAY /NODISPLAY" /DISPLAY = (display-option,...)= Specifies which fields will appear in the analyzed output.F Display options are [NO]EVENT, [NO]SIZE, [NO]TIME, [NO]NAME,6 [NO]FLAG, [NO]STATUS, [NO]FUNCTION_CODE and [NO]ALL3 EVENTF S)hows whether this was a received or transmitted data buffer, or some other event.3 SIZE( The original size of the data buffer.3 TIME2 The time at which the trace record was created.3 NAME0 The name of the line or channel being traced.3 FLAG# A flag word in the trace record.3 STATUSF The status field in the trace record. For some types of tracingC this will show whether the I/O operation completed successfully.3 FUNCTION_CODE@ The f*unction code of the event that caused this trace record.3 ALL; ALL is equivalent to specifying all the DISPLAY options. 2 /PROTOCOL /NOPROTOCOL& /PROTOCOL=(protocol-identifier,...)F Use /NOPROTOCOL if you want to examine the data without any$ protocol headers being formatted.F The /PROTOCOL qualifier will change the type of analysis that is$ done, so it is not normally used.F The /PROTOCOL qualifier will also change the protocols that are% + displayed (see /SELECT qualifier).F The default protocol-identifiers depend on the tracepoint being analyzed.3 Protocol-identifiers# Valid protocol identifiers are :6 DDCMP - DECnet protocol for synchronous lines5 ETHERNET - Ethernet protocol for Ethernet lines6 NSP - DECnet protocol for NSP logical links; ROU_ETHERNET - Ethernet protocol for Ethernet circuits9 ROU_SYNC - DECnet protocol for synchronous circuits> L2 - Level, 2 protocol for lines with protocol LAPB? L2E - Level 2 protocol for lines with protocol LAPBE! L3 - Level 3 protocol( GAP - Gateway Access Protocol3 GTW - used for tracing X.25 gateway only, IEEE8022 - LLC 2 frame level protocol.: IEEE8023 - LLC 2 Medium Access Control level format.F See ANALYZE/TRACE_LEVEL for the default protocols for each type of tracepoint. 2 /SELECT /NOSELECT /SELECT=(protocol-identifier)F T-he /SELECT qualifier allows you to specify which of the protocol, headers you want to appear in the output.@ The default is to format and display all the protocol headers3 protocol-identifier- See ANALYZE/PROTOCOL=(protocol-identifier) 2 /L3CHANNEL /NOL3CHANNEL! /L3CHANNEL=(channel-range,...)F A list of channel numbers and ranges. Only trace recordsF containing a Packet Level channel number within a selected rangeF will be displayed. Each ch .annel range can be either a singleF value, or a range of values, or *. This is only valid for X.25F trace records that contain a packet level field (X25L2,F LLC2CHANNEL, X25L3CHANNEL, X25L3LINE and X25GATEWAY). Note thatF channel numbers are displayed in HEXADECIMAL in the analyzed output.. /NOL3CHANNEL will select all trace records.F For example /L3CHANNEL=(0,%x100-*) selects channel 0 and channel2 numbers greater than or equal to 256 /(decimal).2 /NAME /NAME=channel-nameF If you specify /NAME only trace records on channels that match withF this name will be selected for analysis. If you specify only partF of a channel name then all records that start with this string willF be selected. You can use the /DISPLAY=NAME option to see the$ channel name in the trace record.2 /SAVE_BUFFER_SIZE /SAVE_BUFFER_SIZE=nF The number of screens of saved lines that will be kept. These= l0ines can be examined by using the NEXT and BACK commands. The default value is 30.ww!x1 EXITF Exits from TRACE. If live tracing is in progress, it is stopped,F and the tracepoints deleted. Any detached trace processes are unaffected by this command.ww!x 1 Examples$ NETTRACE> START/LIVE NODDY::DDCMP7 Will start tracing all DDCMP lines on node NODDY' NETTRACE> START/LIVE NODDY::ROU_SYNCF Will start 1tracing routing on all synchronous circuits on node NODDY., NETTRACE> START/LIVE NODDY::X25L3LINE.KMXD Will start tracing at level 3 on all KMX lines on node NODDY. NETTRACE> STARTF Will create a detached process which will trace all PSI lines= at level 2 and write the unanalyzed data to TRACE.DAT.5 NETTRACE> START/LIVE X25L3LINE/NODISPLAY/NOSELECT-) _/CAPTURE_SIZE=20/DATA=ASCII/WIDTH=132F Will start tracing all PSI lines at level 3 a2nd write the dataF to your terminal. Only the data part of each trace record will be displayed.< NETTRACE> ANALYZE /DISPLAY=NAME/DATA=(HEX,ASC)/NOTRUNCATEF Will attempt to open and analyze trace.dat and will write the& analyzed data to your terminal.( NETTRACE> SHOW TRACE_COLLECTOR */FULL= Will show all tracing being done on your current node.wwy1 DEFINE DEFINE/KEYF Associates a string and a set of attributes w3ith a key on the6 terminal keyboard. The /KEY qualifier is required.F See the DCL help on DEFINE/KEY for a full definition of this command. Format:0 DEFINE/KEY key-name equivalence-string 2 key-nameF The key-name you are defining. See the DCL help on DEFINE/KEY for a list of these keys.2 equivalence-stringF Specifies the string to be processed when you press the key. IfF the string contains any spaces, enclose the string in q!4uotation marks.2 /ECHO! See the DCL help on DEFINE/KEY 2 /IF_STATE! See the DCL help on DEFINE/KEY 2 /LOCK_STATE! See the DCL help on DEFINE/KEY 2 /SET_STATE! See the DCL help on DEFINE/KEY 2 /TERMINATE! See the DCL help on DEFINE/KEYww|1 DELETE DELETE/KEYF Deletes key definitions that have been defined by the DEFINE/KEY, command. The /KEY qualifier is required.F See the DCL help on DELETE/KEY for 5 a full definition of this command. Format: DELETE/KEY key-name 2 key-name The key-name you are deleting2 /STATEF Specifies the state for which the specified key defintion is beingF deleted. The default is the current state. See the DCL help on DELETE/KEYww@Ђ1 NEXT Format: NEXTF This command types out the next screen of analyzed data. If youF are analyzing a file, this also 6has the effect of anF ANALYZE/NOSCROLL command, so that only one screen of data at a timeF will be displayed. ANALYZE/NOSCROLL has no effect if you are tracing /LIVE.wwV1 BACK Format: BACKF This command types out the last screen of analyzed data. This isF saved data that has already been analyzed and so will not beF affected by any trace analysis options that have changed. ThisF also has the effect of an AN7ALYZE/NOSCROLL command, so that only2 one screen of data at a time will be displayed.wwV 1 REFRESHF This command redraws the screen. By default the key will issue this command. Format: REFRESHww݅1 CLEARF This command clears the screen of analyzed data. By default the( key will issue this command. Format: CLEARww݅1 SPAWNF Creates a subproces(8D$ PSI_AC041.E/)[STANNARD.OBJ.KIT.PSIUTL.E]TRACEHLP.HLB;1P.HLB;1XE;1<1B,U78s of the current process. See the DCL help on SPAWN for full details. Format: SPAWN [command-string]2 command-stringF Specifies a command string to be executed in the context of theF created subprocess. When the command completes, the subprocessF terminates and control is returned to the parent process. If youF use both the /INPUT qualifier and a command string, commands areF obtained from the input file after the specified command stri9ng executes.2 /INPUT /INPUT=file-specF Specifies an input file containing one or more DCL commands to beF executed by the spawned subprocess. If you specify a commandF string with the SPAWN command and an input file with the /INPUTF qualifier, the command string is processed before the input file.F Once processing of the input file is complete, the subprocess is terminated.2 /LOGICAL_NAMES /[NO]LOGICAL_NAMESF Determines whether the :system passes process logical names andF logical name tables to the subprocess. The default is /LOGICAL_NAMES 2 /OUTPUT /OUTPUT=file-specF Requests that the output from the SPAWN operation be written to the specified file. 2 /PROCESS /PROCESS=subprocess-nameF Specifies the name of the subprocess to be created. By default, aF unique process name is assigned with the same base name as theF parent process and a unique number. The ; default subprocess name format is: usernamen 2 /PROMPT /PROMPT[=string]F Specifies the prompt string for DCL to use in the subprocess. ByD default, SPAWN copies the current prompt from the parent process. 2 /SYMBOLS /[NO]SYMBOLSF Determines whether the system passes DCL global and local symbols to the subprocess. The default is /SYMBOLS2 /WAIT /[NO]WAITF Controls whether the system waits until the current subprocess isF com <pleted before allowing more commands to be issued in the parentF process. The /NOWAIT qualifier allows you to issue new commandsF while the specified subprocess is running. When you use theF /NOWAIT qualifier interactively, be sure to use the /OUTPUTF qualifier as well so that output from the subprocess is directed toF a file rather than to your terminal. Otherwise, your terminal will5 be used by more than one process at the same time.1 See the DCL help on= SPAWN for further details.ww`q1 ATTACHF Enables you to switch control from your current process to anotherF process in your job. You can only specify one of process-name, /IDENTIFICATION or /PARENT. Format: ATTACH [process-name]2 process-nameF Specifies the name of the process to which the connection is to be/ made. You cannot connect to the process if:/ o The process is your current process7 o The >process is not part of your current job& o The process does not existF If you specify process-name you cannot specify /PARENT or /IDENTIFICATION.2 /IDENTIFICATION /IDENTIFICATION=pidF Specifies the process identification (PID) of the process to which% terminal control will be switched.F If you specify /IDENTIFICATION you cannot specify /PARENT or process-name. 2 /PARENT /PARENTF This is only valid if issued from a sub?-process. It specifies that- you want to attach to your parent process.F If you specify /PARENT you cannot specify process-name or /IDENTIFICATION.ww1 KeypadF The NETTRACE keypad is set up from the file pointed to by theF logical name NETTRACE$KEY_INIT. In addition you can define keys byF using the DEFINE/KEY command in NETTRACE. The command SHOW KEY6 /ALL will display a list of currently defined keys. 2 Default; @ +-----------------------------------+; | GOLD |HELP KEY|SHOW KEY|SHOW TR |; | | | | |; | | | |SH TR/FU|; |--------+--------+--------+--------|; | ASCII | HEX | OCTAL | DEC |; | | | | |; | | | | |; A |--------+--------+--------+--------|; |ASC ONLY| |DISP ALL|TRUNCATE|; | | | | |; | | | NODISP | NOTRUN |; |--------+--------+--------+--------|; | | START | STOP | |; | | | | |; | |STAR/LIV| | |; |-----------------+--------| |; | NEXT | BACK | |; | | | |; | ANALYZE/SCROLL | | |;  000000.DIR BACKUP.SYS BADBLK.SYS BADLOG.SYS  BITMAP.SYS CONTIN.SYS CORIMG.SYS INDEXF.SYS= PSI_AC041.E VOLSET.SYS  P~(d JINDEXF.SYS;1 %q.%q. @@ @@:(d JBITMAP.SYS;1 %q.%q. @B(d JBADBLK.SYS;1 %q.%q. (d  J000000.DIR;1 %q.%q. @T(d JCORIMG.SYS;1 %q.%q. (d@@ JVOLSET.SYS;1 %q.%q. ' (d$$ JPSI_AC041.E;1 %q.%q. @(d JBACKUP.SYS;1 %q.%q. (d  JBADLOG.SYS;1 %q.%q. ۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m۶m(d JINDEXF.SYS;1 %q.%q. @@ @@: +-----------------------------------+ww )w&mceo d{zt|.COM;1d4o->]6hH"ڳv!Y,EF`/_ ]&@GqPwn( ML_/ #&BjiH=9.V%Z2DšvΉ^YG2WV8c52Y*3ĐAQCG֓tNxh]a]cv"SA᮷--N^O*&8ef X7N,X E&Bknk9,vh3AH`F8 2 gIyl1Z~Aʒ!YKqZ0k7M]}l)e%b\4DJă|I+wAK>: #AX[eģ)2rOo)8abKU _=R7w " Rfl<&y$Z_2\ uŅ4Mxc\^ѢĂ?N)n}|#:~!v."-f(ib ׍*Pk.[ALּL脗b#. ݐޯuz/ =üv>D)a~*>U@ =yO}JJ sliW jY 2h샳-3ӱ0_ډ[\ 𥥣Ҕ=Ԏi'!ש1$஧ xs,Nb !Hm[_$!o\Yt7)PRqecUu/lBNމwWwJ봚AR7,_B?tViנg૆QR˒mHcP 6ʏ- *o9m8iq} ~ D>]|:7AvH֞(gHrY{wZ_F oi{ %91oၭB~ 62wc6}$ y;z"*۔ejsk'kpϬhw,?Aw[FvBeUX(݊grԑSt!zRHYq~!0VVL^x6NMqWM:n^r@jq4f혘WCkʃ{hoݕ=+=oif؃hSOyЁ@gʥ)8@4lgg:I$U jĜyY?mvu-eZC5{GV9UqiTw$$Plβ!~&_ݐy?l -%2ǖǼN̛hak Kh27>6NnkRiFd3e^|}2p37i}8v`r2 Qg;kPFLXmblam5m/+U_TĆ=òe"ExeKi~"Q\2~vb:M/{p z{hDN̈0 _*YA{u\dnm^LZ*>|SPH7I=5i[1AbaOL!4"O}DQ)P2dYH3/HW//2{X' Z$Nt-YB,ͼU HN['<WYe1@k! }\dsA)N m'5H!Q](޵M/pl*9ܒvhؖ##dCJN#TBZk-Qf%Ы0k241h@t`k-#8,9 T#@u0)/cHZ=bNL;^7qҮa%EIHIԔ9o[ȧ_DtJ1eCTU)ekZ{r'nMG? %z=/^6yX#~2soUt'n* w|rˊ.~Bʿ{YۛVW^>"h;gILBH/؎3jW~{{L9#pJŠ8UxCt1YSy,^nwlq9QrlT PPcnvKQD&Vz` 5ُ+rWR!gRBM+螉~ xC{) &迏鋅lUvB-xzAheeBnc+"r%IClDnA ;_Nٜӟ*rɶ{_[vayDc=9K.fAV͌{x`ʟ~n+Ud:OF{~bҨm݃ł]HxHC6ip3l35B{hk*1 VMj J~GGa~yw@| )c^ƚvg!>"h0,bgGNW zҡ9xH"68̇?Ԉh4) f2'myUrhP!"ln)L X l `-3gU~ ckT]!SSͧ' GWlE18 S` 1/kCE@=\$G| ŽWED,5]f#q4h:H]ͣ 1E;= !A6UY_ 2OfeLYΖy|x 5k*%vy|h]s,1|UGH$]sJ^o\UAC{/xl,8 m%DtW /^8_0|³n,yi3^S/:\41.QaJg҆S7gͶKܰ=ETJ枼O NN:0 /ꌈ"IWeUR]w QĮ!qW^fIͣ,6MОiv`[ek~/<#h;FQF5P;HWaOV9ζgV*ȤR=eF DQ! .ѭ+dnZr-'U5La`h WsS:PR7ΟͻƿtXXk9Q -|M>%ئeS殉,m Z뀵@sǜ#AZL$;-ԔjC] }b2rG%~V>Vۆ.JJ\OJcK&g0?G ]?3Cd]NOtŇ :Ͱ,x2p $ft!2DвCoȪ}.h:G ֧ pFX9}N~[Sd=`SqP#Ig[clZ˷5NܙVA2tK|~+74}pF 1 aHejv 5q02D OQ8!:}8D$<ۡu=M(}cp!٩*(& FL3ړ 6y((d7hG 0/NS.iYVBBws̆D dh@f{J)<)5,} R=C\r2O¶5?Ożs8&y|"AQₒ+Ѹ6|zAƿDHfAK>!/V<g\i$&?9w1W;͚"ب++kZ57g:-yeaS=ڝwcV_Op^ %$톘3j^@[uK: 8żXMn'ٶIP˨d `830Z}ƭO5!%IMcy;,^4/orO,(B_Δ<}Ws-5Ob5-Wcq ۛ"NfvwNɋ*zl.\t2 i3kXM,J(7鄵{W`dkFTYj3&J M?'L|Ѐ[<&MPI> +ك*ZY=h"*sO'Y b ;CJΜuO +:}mi0tqI$xyAڹo[zHJoPŔ-rq#֦t*0~ђ(= ګW%ߗ9N9q]B7E=;M:s )|ODt q+xχ_+\?Pvw4m-rnwW-(rJZ]ŭ~RP{e?mkM{ Kuӡ%gk\W8hg~ !1b$|&Be>,y@M6zIU0jKWXUE5s y4t xVsCq//c؆7)@`F-}Br=<_u6{c9O_beɒvyI Qp`j{> E]ȬK.go{^<"] S9#Š d@C&wh҇j#m30չZzHŽ=.CE;e-*$ D&GɋX5vbr:8g8.)S-T=6|T&VMGi?"g`֖&2uMhmKеv|x!>b  %8:?ՀOD㯜#' [BN׃k]C,7A^oaVM"( B{~`~iI813ؘ$\\u0)]\îzz&l5W }x=]k[_s$|Ԃr;mY+}d /{ NZKT -fZSE_I!6u/IX\GzSczKIU÷] w(ե%d0&"(R% .VK%>vGEPڳOzHarJ(ZIuck𠀹Hd#;UA62>l{͘a"^Rk!t