*DECK CSSATD USETEXT TEXTCS; USETEXT TEXTSS; USETEXT TXCMDCS; USETEXT TXTAPSS; USETEXT TXTSUSS; USETEXT TXTSMCS; PROC CSSATD; # TITLE CSSATD - ACTION TEST DROP COMMAND. # BEGIN # CSSATD # # ** CSSATD - ACTION TEST DROP COMMAND. * * C. BRION 82/06/09. * * THIS PROCEDURE PROCESSES THE DIAGNOSTIC TEST DROP COMMAND * REQUEST. * * PROC CSSATD * * ENTRY: * * HDRCMD = COMMAND HEADER WORD. * PARMS = COMMAND PARAMETER ARRAY. * * EXIT: * * AN OVL/TM SM MAY BE SENT TO THE NPU. * A NULL TTEXT ENTRY MAY BE SENT TO THE OPERATOR. # # **** PROC CSSATD XREF LIST # XREF BEGIN PROC SSBCBW; # SS-CLEAR BIT IN WORD # PROC SSBTBW; # SS-TEST BIT IN WORD # PROC SSTAQE; # SS-ACCEPT QUEUE ENTRY # END # **** # DEF NOLDTM$ # 2 #; # CHAR LEN OF SM # ITEM OORD U; # OCB ORDINAL # ITEM NORD U; # NPUCB ORDINAL # ITEM I U; # LOOP INDUCTION VAR # ITEM RUNNING B; # ONLINE DIAG RUNNING FLAG # # * DMTXT - DROP MESSAGE TEXT. # ARRAY DMTXT [00:00] S(4); BEGIN ITEM DMT$NP C(00,00,07); # NPU NAME # ITEM DMT$TX1 C(00,42,06) = [": OLD "]; ITEM DMT$TX2 C(01,18,20) = ["NO PRIOR REQUEST CMD"]; ITEM DMT$ZERO U(03,18,42) = [0]; END # * FLG$WORD - THIS BASED ARRAY POINTS TO THE ONLINE DIAGNOSTIC * OPERATOR BIT MAP IN THE NPUCB. # BASED ARRAY FLG$WORD [00:00] S(NPCBSZ$); BEGIN ITEM FW$WORD I(00,00,60); END # * SET OCB ORDINAL AND THE NPUCB ORDINAL. * ALSO, SET UP TEXT MESSAGE NPU NAME AND THE OUTGOING SM ENTRY * HEADER WORDS. # OORD = HDR$OPORD[0]; FOR I = 0 STEP 1 UNTIL (HDR$TXWCNT[0] + HDR$SPCNT[0] + HDR$APCNT[0]) DO BEGIN IF PAR$PCODE[I] EQ "NOR" THEN NORD = PAR$ORD[I]; END DMT$NP[0] = NPU$NAME[NORD]; WCB$WORD[0] = 0; ABHWORD[0] = 0; WCB$WORD[1] = 0; ABHWORD[1] = 0; ABHADR[0] = OORD; # * IF ORIGIN OPERATOR NOT CURRENT OVERLAY OPERATOR OF NPU, THEN * INFORM WITH ERROR MESSAGE. # SSBTBW(NPU$OVFLGS[NORD],OORD,RUNNING); IF NOT RUNNING THEN BEGIN WCB$SMID[1] = SMID"TTEXT"; WCB$IAF[1] = TRUE; WCB$WC[1] = 6; ABHADR[1] = OORD; SSTAQE(P,WCBUF[1],ABH[1],DMTXT[0]); END ELSE # * THE CURRENT OPERATOR MAY BE DROPPING THE OVERLAY REQUEST PRIOR * TO COMPLETION OF THE REQUEST. SET THE CURRENT OVERLAY ORDINAL * OF THE NPUCB OUT OF RANGE. OTHERWISE, CLEAR THE NPUCB AND SET * OVERLAY STATE TO IDLE. # BEGIN P = LOC(NPU$OVFLGS[NORD]); SSBCBW(FLG$WORD,OORD); # * SET UP OUTGOING OVERLAY TERMINATE SM. # ABHDN[1] = NPU$NID[NORD]; ABHSN[1] = NPU$HID[NORD]; ABHABT[1] = APPSUP; ABHBT[1] = APPSUP; ABHACT[1] = ACTCSNP$; ABHTLC[1] = NOLDTM$; PFCSFC[1] = OLDTM; OLDDO[1] = OORD; WCB$WC[1] = ((ABHTLC[1] + 9)/10) + 2; WCB$SMID[1] = SMID"OLDTM"; SSTAQE(P,WCBUF[1],ABH[1],CSSM[1]); # * SET UP AND SEND NULL TTEXT ENTRY TO OPERATOR TO CAUSE READY.. # WCB$WC[1] = 2; WCB$SMID[1] = SMID"TTEXT"; WCB$IAF[1] = TRUE; ABHADR[1] = OORD; SSTAQE(P,WCBUF[1],ABH[1],CSSM[1]); END END #CSSATD# TERM