*DECK CSSATR USETEXT TEXTCS; USETEXT TEXTSS; USETEXT TXCMDCS; USETEXT TXTSMCS; USETEXT TXTAPSS; USETEXT TXTSUSS; PROC CSSATR; # TITLE CSSATR - ACTION TEST REQUEST COMMAND # BEGIN # CSSATR # # ** CSSATR - ACTION TEST REQUEST COMMAND. * * C. BRION 82/06/09. * * THIS PROCEDURE PROCESSES THE DIAGNOSTIC TEST REQUEST COMMAND. * * PROC CSSATR * * ENTRY: * * HDRCMD = COMMAND HEADER WORD. * * EXIT: * * AN OLDIN SM MAY BE SENT TO THE NPU. * A COMMAND TEXT EVENT MAY BE SENT TO THE EVENT PROCESSOR FOR * ENTRY INTO THE NETWORK LOG FILE. * THE OCB AND NPUCB WILL BE UPDATED. # # **** PROC CSSATR XREF LIST # XREF BEGIN PROC SSBSBW; # SS-SET BIT IN WORD # PROC SSBTBW; # SS-TEST BIT IN WORD # PROC SSTAQE; # SS-ACCEPT QUEUE ENTRY # PROC MOVE; # MACREL MOVE MEMORY # END # **** # ITEM I U; # LOOP INDUCTION VAR # ITEM OORD U; # OCB ORDINAL # ITEM NORD U; # NPUCB ORDINAL # ITEM FOUND B; # NOR FOUND FLAG # ITEM RUNNING B; # ONLINE DIAG RUNNING FLAG # # * FLG$WORD - BASED ARRAY THAT POINTS TO THE ONLINE DIAGNOSTICS * OPERATOR BIT MAP. # BASED ARRAY FLG$WORD [00:00] S(NPCBSZ$); BEGIN ITEM FW$WORD I(00,00,60); END # * TREQ - OLD REQUEST TEXT MESSAGE ARRAY. # ARRAY TREQ [00:00] S(4); BEGIN ITEM TRE$NP C(00,00,07); # NPU NAME # ITEM TRE$TX1 C(00,42,06) = ["/OLD: "]; ITEM TRE$TX2 C(01,18,17); ITEM TRE$TX3 C(02,00,10) = [" INITIATED"]; ITEM TRE$ZERO U(03,00,60) = [0]; END OORD = HDR$OPORD[0]; # * FIND THE NPUCB ORDINAL VIA THE NOR PARAMETER IN THE CMD. # FOUND = FALSE; FOR I = 0 STEP 1 WHILE NOT FOUND DO BEGIN IF PAR$PCODE[I] EQ "NOR" THEN BEGIN FOUND = TRUE; NORD = PAR$ORD[I]; END END # * OLD PROGRAM MAY ALREADY BE BUSY WITH ANOTHER OPERATOR. IF SO, * SEND IN USE MESSAGE TO ORIGIN OPERATOR. # # * SET THE NPU NAME IN THE TEXT MESSAGE. # TRE$NP[0] = NPU$NAME[NORD]; SSBTBW(NPU$OVFLGS[NORD],OORD,RUNNING); IF RUNNING THEN BEGIN TRE$TX2[0] = "ALREADY"; WCB$IAF[1] = TRUE; END ELSE # * OLD NOT BUSY. SETUP OCB AND NPUCB. SET UP OUTGOING OLDIN SM * HEADER WORDS. # BEGIN P = LOC(NPU$OVFLGS[NORD]); SSBSBW(FLG$WORD,OORD); OC$CNPU[OORD] = NORD; OC$VERB[OORD] = "TS0"; ABHDN[1] = NPU$NID[NORD]; ABHSN[1] = NPU$HID[NORD]; ABHABT[1] = APPSUP; ABHBT[1]= APPSUP; ABHACT[1] = ACTCSNP$; PFCSFC[1] = OLDIN; OLDDO[1] = OORD; ABHTLC[1] = NOLDIN; WCB$SMID[1] = SMID"OLDIN"; WCB$WC[1] = LOLDIN + 2; # * SEND OLDIN SM TO NPU # SSTAQE(P,WCBUF[1],ABH[1],CSSM[1]); # * SEND CMD TXT ENTRY TO EVENT PROCESSOR FOR LOGGING INTO NETWORK * LOG FILE. # WCB$WORD[1] = 0; ABHWORD[1] = 0; WCB$SMID[1] = SMID"CMDTXT"; ABHADR[1] = OORD; P = LOC(CMD$TEXT[0]); MOVE(HDR$TXWCNT[0],PARMS[0],MSCMD[0]); CMD$TNAM[0]= OC$TNAM[OORD]; WCB$WC[1] = HDR$TXWCNT[0] + 4; SSTAQE(P,WCBUF[1],ABH[1],CMDLINE[0]); # * SET UP REQUEST INITIATED MESSAGE. # TRE$TX2[0] = "REQUEST"; WCB$IAF[1] = FALSE; END # * SET UP THE WORD COUNT WORD AND ABH WORD FOR CNQ ENTRY. # WCB$SMID[1] = SMID"TTEXT"; WCB$WC[1] = 6; ABHWORD[1] = 0; ABHADR[1] = OORD; SSTAQE(P,WCBUF[1],ABH[1],TREQ[0]); END #CSSATR# TERM