*DECK HPPUT USETEXT NIPDEF USETEXT ACB USETEXT ACNB USETEXT ACNT USETEXT AHEADER USETEXT APPSTAT USETEXT AT USETEXT DBGBUF USETEXT DRHDR USETEXT DUMPFLG USETEXT KDIS USETEXT LLCB USETEXT NCNB USETEXT NBT USETEXT NHEADER USETEXT NWLHEAD USETEXT NWLNTRY USETEXT OVERLAY USETEXT PARAMP USETEXT PARAMS USETEXT PT USETEXT STATTAB USETEXT SUPMSG PROC HPPUT; # PROCESS A *NET PUT* WORK LIST ENTRY # STARTIMS; # *1DC HPPUT * * 1. PROC NAME AUTHOR DATE * HPPUT J. J. LYON 75/05/02 * Y HSIEH 77/05/10 * C. BITTNER 81/07/17 * * 2. FUNCTIONAL DESCRIPTION. * THIS ROUTINE IS RESPONSIBLE FOR PROCESSING A *NET PUT* WORK * LIST ENTRY. THIS IS DONE VIA SEVERAL JUMP TABLES. * * 3. METHOD USED. * EDIT ENTRY * IF ABT = 1 OR 2 * IF IN NORMAL CONDITION (ALL DATA ALLOWED) THEN CALL * NFOB TO QUEUE DATA TO THE PIP OUTBOUND CHAIN * (BYPASS THE STATE TABLES) ELSE * CALL HOST BLOCK PROTOCOL STATE TABLE PROCESSOR (HBSTTP) * TO PUT-DATA * IF ABT = 3 THEN USE APP JUMP TABLE * IF ABT = 4 AND MSG TO NIP * VALIDATE THAT MESSAGE IS FROM NS OR CS * LINK MESSAGE TO PIP OUTBOUND CHAIN BASED * ON SOURCE NODE (COUPLER NUMBER) * * 4. ENTRY PARAMETERS. * NWLABT APPLICATION BLOCK TYPE * NWLEABH APPLICATION BLOCK HEADER * NWLOP OPPUTF OR OPPUT * ACBADDR CURRENT APPLICATION"S ACB * WLADDR CURRENT WORKLIST ENTRY * * 5. EXIT PARAMETERS. * NWLADR PROCESS NUMBER OF APPLICATION * OVLNAME ROUTINE TO PROCESS NIP PFC/SFC MESSAGES * PARAMS1 REASON CODE FOR LGL/ERR,IF ONE OCCURS * * 6. COMDECKS CALLED AND SYMPL TEXTS USED. * ACB ACNB APPSTAT AT * DBGBUF DRHDR NIPDEF * NWLHEAD NWLNTRY OVERLAY PARAMS * PT STATTAB SUPMSG * ACNT AHEADER LLCB * NCNB PARAMP * * 7. ROUTINES AND OVERLAYS CALLED. * HLGLERR OVL ISSUE LGL/ERR SUP MSG * HPUTF OVL READ FRAGMENTED TEXT ARRAY INTO NIP FL * HRDPUT READ PUT THAT DIDN-T FIT IN W/L * HRELPWL RELEASE USED PORTION OF NWL * HUPDDAW UPDATE DATA AVAILABLE WORD * OVLCALL LOAD OVERLAY * XTRACE TRACES CALLS * XCTLW COMPUTE MSG LENGTH IN CM WORDS * HBCHECK VALIDATE CHARACTER TYPE * LOCLLCB LOCATE LLCB * NFOB LINK MESSAGE TO PIP OUTBOUND CHAIN * FROM APPLICATION JUMP TABLE * HBSTTP HOST BLOCK PROTOCOL STATE TABLE PROCESSOR * HCHGICT OVL CHANGE INPUT CHARACTER TYPE IN ACNB * HCSTTP HOST CONNECTION STATE TABLE PROCESSOR * HDCTRU OVL SET DATA TRUNCATION MODE IN ACNB OR ACB * HLONOFF OVL TURN ON/OFF ACN IN LIST X * HLSTDX OVL SET HALF/FULL DUPLEX * HPDBGST OVL PROCESS DBG/STOP * HPKDISP OVL PROCESS HOP COMMAND * HPNPDRL OVL PROCESS NPD/REL * HPSHISD OVL PROCESS SH/ISD (SHUTDOWN) * HPNOFFN OVL PROCESS NET/OFF/N AND FAIL/APPL/N * NGIGO OVL SEND GARBLED MESSAGE TO DAYFILE * NLOPIP OVL LINK MSG FROM NIP,NS,CS TO PIP OUTBOUND CHA * HPNONVF OVL PROCESS *NET ON* RESPONSE FROM NVF * * 8. DAYFILE MESSAGES. NONE * THIS PROCEDURE IS CALLED BY HWLP. * # STOPIMS; # EXTERNAL VARIABLES # XREF BEGIN PROC HBCHECK ; PROC HBSTTP; # HOST SIDE STATE TABLE PROCESSOR # PROC HCSTTP; # HOST CONNECTION STATE TABLE PROCESSOR # PROC HRDPUT; # READ *PUT* THAT DID NOT FIT IN W/L # PROC HRELPWL; # RELEASE USED PORTION OF THE NWL # PROC HUPDDAW; # UPDATE DATA AVAILABLE WORD # PROC LOCLLCB ; PROC MGETS ; # PROC TO GET BUFFER FOR FREE CHAIN # PROC MRELS; # RELEASE UNUSED BUFFER SPACE # PROC NFOB ; PROC OVLCALL; # LOAD OVERLAY # PROC XDROP; # DROP PIP (AND NIP) # PROC XCTLW; PROC XTRACE; # TRACE CALL # PROC RDUMP; END # INTERNAL VARIABLES # ITEM RETURNF U ; # TABLE OF UCP PFC/SFC CODES # 000900 DEF ENDTAB1 #46#; # SIZE OF PFC/SFC PROCESSING TABLE # ARRAY UCPPFCSFCTAB [0:ENDTAB1]; 001200 BEGIN 001300 ITEM VACNFLAG B(00,00,01) = [TRUE,TRUE,TRUE,FALSE,FALSE, TRUE,FALSE,FALSE, FALSE,TRUE,FALSE,FALSE,FALSE,FALSE, TRUE,TRUE,FALSE,TRUE,TRUE, TRUE,TRUE, TRUE,TRUE,FALSE,FALSE,FALSE, FALSE,FALSE,FALSE,FALSE,FALSE, FALSE,FALSE,FALSE,FALSE,FALSE, FALSE, FALSE,FALSE, FALSE,FALSE,FALSE,FALSE,FALSE, FALSE,FALSE, TRUE]; ITEM UCPPFCSFC U(00,42,18) = [LSTOFF,LSTON,LSTSWH,LSTFDX,LSTHDX, DCCICT,DBGSTOP,DCSTMR, DCTRU,PRUON,HOPDIS,HOPLG,HOPALT,HOPDAY, CONREQN,CONREQA,CONACR,CONEND,INTRRSP, INTRAPP,FCBRK, FCRST,FCINITN,NPDREL,NETONN,NETONA, SHISD,CRITEN,CRITEA,CRRAPN,CRRAPA, CRIAPN,CRIAPA,CRSWH,CRRCNN,CRTRM, CRRCNA, NETOFFN,FAIAPPN, FNTDMS,FNTDSM,FNTIFL,FNTIFR,FNTIAR, SACNCL,SAFSAR, 0]; END 001700 001900 # JUMP TABLE FOR UCP-PFC/SFC PROCEDURES # 002400 SWITCH UCPPFCSFCJT UCPL0,UCPL0,UCPL1,UCPL2,UCPL2, UCPL4,UCPL7,UCPL5, UCPL8,UCPL10,UCPL13,UCPL13,UCPL13,UCPL13, UCPL14A,UCPL14B,UCPL14C,UCPL14D,UCPL15A, UCPL15AA,UCPL15BB, UCPL15B,UCPL15C,UCPL16,UCPL17B,UCPL17A, UCPL18,UCPL19A,UCPL19B,UCPL19C,UCPL19D, UCPL19E,UCPL19F,UCPL19G,UCPL19H,UCPL19I, UCPL19J, UCPL20,UCPL21, UCPL22A,UCPL22A,UCPL22C,UCPL22D,UCPL22E, UCPL23,UCPL24, UCPL25; 002900 # JUMP TABLE FOR ABT CODES # SWITCH ABTJT ABT0,ABT1,ABT2,ABT3,ABT4,ABT0,ABT6,ABT7; ITEM COUNT ; ITEM DV; # DEVICE TYPE # ITEM FOUND B ; ITEM INDEX; # INDEX FOR SEARCHING THROUGH TABLES # ITEM TEMP ; ITEM SWTCH B; ITEM WLOPCODE; # WORKLIST OPCODE # ITEM WORDCOUNT; # SIZE OF MSG (IN WORDS) # ITEM ACNTINDX; # INDEX INTO ACNT # ITEM ABT; # APPLICATION BLOCK TYPE # ITEM ACN; # APPLICATION CONNECTION NUMBER # ITEM TRIG; # TRIGGER FOR STATE TABLE PROCESSOR # #**********************************************************************# BEGIN CONTROL IFEQ DEBUG,1 ; XTRACE("HPPUT") ; CONTROL FI; P = WLADDR; # ADDR OF NETPUT WORKLIST ENTRY # WLOPCODE = NWLOP[0]; # WORKLIST OPCODE # P = ACBADDR; PARAMS7 = 0 ; # CLEAR ERROR PARAMS # # STEP 1 EDIT FIELDS IN NWL ENTRY # TEMP = 0; #INITIALIZE TEMP # ABT = NWLABT[0]; # APPLICATION BLOCK TYPE # IF ABT LS APPBLK OR ABT GR APPQMSG THEN BEGIN TEMP = RLG"IAB"; # ILLEGAL ABT # GOTO PPUT75; END IF ( NWLACT[0] GQ ACTMAX OR NWLACT LQ 0 ) THEN BEGIN TEMP = RLG"IA" ; GOTO PPUT75 ; END XCTLW(NWLEABH[0],WORDCOUNT); IF ABT EQ APPCMD AND WORDCOUNT EQ 0 THEN BEGIN TEMP = RLG"ISM"; # RC=7 ILLOGICAL SM # GOTO PPUT75; END IF WORDCOUNT GR TLWMAX OR NWLTLC[0] GR TLCMAX OR (( WLOPCODE NQ WLOPPUTF) AND ( WORDCOUNT NQ NWLEBS - HDRSIZE) AND ( NWLTA EQ 0)) OR (( WLOPCODE EQ WLOPPUTF) AND (NWLELTAA NQ NWLEBS - FLSIZE) AND ( NWLTA EQ 0)) THEN BEGIN TEMP = RLG"IT" ; GOTO PPUT75 ; END IF NWLTA NQ 0 THEN BEGIN IF WLOPCODE EQ WLOPPUTF THEN COUNT = NWLELTAA ; ELSE COUNT = WORDCOUNT ; HRDPUT(COUNT) ; IF NOT DONE THEN RETURN; END IF WLOPCODE EQ WLOPPUTF THEN BEGIN OVLNAME = HPUTFP; # NAME OF OVERLAY TO LOAD # OVLCALL; # LOAD AND EXECUTE OVERLAY # IF (PARAMP1 EQ 0) OR # BAD NETPUTF CALL # (NOT DONE) # TEXT DID NOT GET READ INTO NIP-S MEMORY # THEN # CANNOT CONTINUE PROCESSING NETPUTF REQ # BEGIN RETURN; # ***** EXIT FROM ROUTINE ***** # END END P = WLADDR; # RESET CURRENT WORKLIST ADDRESS # NWLIBU[0] = FALSE; # PRECAUTION TO CLEAR IBU BIT # CONTROL IFEQ DEBUG,1; PNVALUE[0] = ACBAN[0]; # APPLICATION NUMBER # BPUTW[BPUTP] = PNWORD[0]; # STORE AN IN DEBUG BUFFER # BPUTP = BPUTP + 1; # INCREMENT BUFFER OFFSET PTR # IF BPUTP GR 999 THEN # END OF BUFFER HAS BEEN REACHED # BPUTP = 0; # INITIALIZE OFFSET PTR TO BEG OF BUFFER # # COPY DATA BLOCK TO DEBUG BUFFER # P = WLADDR; P = WLADDR; # NETWORK WORKLIST ENTRY ADDRESS # FOR TRAPINDEX = 0 STEP 1 UNTIL DRBS[0] - 1 DO BEGIN BPUTW[BPUTP] = WORD[TRAPINDEX]; BPUTP = BPUTP + 1; # INCREMENT BUFFER OFFSET PTR # IF BPUTP GR 999 THEN # END OF BUFFER HAS BEEN REACHED # BPUTP = 0; # INTIALIZE OFFSET PTR TO BEG OF BUFFER # END CONTROL FI; # STEP 2 SWITCH ON ABT # P = WLADDR + AIPHSIZE ; # APPLICATION BLOCK HEADER # P = WLADDR + AIPHSIZE + ABHSIZE; # ADDRESS OF SUP MSG # P = P; INDEX = 0; P = ACBACNT[0]; # ADDRESS OF APPL CONNECTION TABLE # P = 0; IF ABT NQ APPPN THEN # VALIDATE ACN # BEGIN IF NWLADR[0] NQ 0 THEN # CONNECTION DATA OR SYCH SM # ACN = NWLADR[0]; ELSE BEGIN # SM # IF ABT NQ APPCMD THEN # DATA SENT ON CONNECTION ZERO # BEGIN # SEND ERROR LOGICAL TO APPLICATION # TEMP = RLG"ACN"; # INVALID ACN REASON CODE # GOTO PPUT75; END ACN = SPACN[0]; UCPPFCSFC[ENDTAB1] = PFCSFC[0]; # GUARANTEES A MATCH # PPUT10: IF UCPPFCSFC[INDEX] EQ PFCSFC[0] THEN GOTO PPUT20; INDEX = INDEX + 1; GOTO PPUT10; # CHECK NEXT ENTRY IN JUMP SWITCH # END PPUT20: IF INDEX EQ ENDTAB1 AND PFC[0] NQ IFC AND PFC[0] NQ OFC AND PFC[0] NQ SET AND PFC[0] NQ IFT AND PFC[0] NQ OFT AND PFC[0] NQ XFT THEN BEGIN TEMP = RLG"ISM"; GOTO PPUT75; END IF (ACN NQ 0 AND PFC[0] NQ HOP) OR VACNFLAG[INDEX] THEN # VALIDATE ACN # BEGIN IF ACN NQ 0 AND ACN GQ ACNTMINACN[0] AND ACN LQ ACNTHCN[0] THEN BEGIN ACNTINDX = ACN - ACNTMINACN[0] + ACNTHSIZE; P = ACNTACNB[ACNTINDX]; IF P NQ 0 THEN GOTO ABT$; # SWITCH ON APPLICATION BLOCK TYPE # END TEMP = RLG"ACN"; # RC=4 INVALID ACN # GOTO PPUT75; END END ABT$: IF P NQ 0 THEN # ACNB EXISTS, GET NCNB ADDRESS # BEGIN P = ACNBNCNB[0]; DV = NCNBDT[0]; # DEVICE TYPE OF CONNECTION # END GOTO ABTJT[ABT]; # SWITCH ON APPLICATION BLOCK TYPE # ABT0: TEMP = RLG"IAB"; # ABT = 0 IS ILLEGAL # GOTO PPUT75; # SEND LGL/ERR MSG TO APPL # ABT6: # QBLK BLOCK PROCESSING # ABT7: # QMSG BLOCK PROCESSING # IF P NQ 0 AND ((DV NQ DT$INTA AND DV NQ DT$ATOA) OR ACNBBLK[0]) # NO INTERMIXING OF BLK/MSG WITH QBLK/QMSG # THEN # QBLK/QMSG ALLOWED ON A-A CONNECTION ONLY # BEGIN # ISSUE ERROR LOGICAL RC = 9 TO APPLICATION # TEMP = RLG"NCE"; GOTO PPUT75; END IF ABT EQ APPQBLK THEN # RECEIVED QBLK OF A MULTI-BLOCK QUALIFIED MESSAGE # ACNBQBLK[0] = TRUE; # SET QBLK OUTSTANDING FLAG # ELSE # RECEIVED QMSG BLOCK # ACNBQBLK[0] = FALSE; GOTO ABT$BLK; # PROCESS AS A BLK/MSG BLOCK # ABT1: ABT2: IF ACNBQBLK[0] THEN # QBLK BLOCK OUTSTANDING, NO QMSG RECEIVED YET # BEGIN # NO INTERMIXING OF QBLK AND REGULAR BLOCK ALLOWED # TEMP = RLG"NCE"; # SEND ERROR LOGICAL RC=9 # GOTO PPUT75; END IF ABT EQ APPBLK THEN # RECEIVED BLK BLOCK OF A MESSAGE # ACNBBLK[0] = TRUE; ELSE # RECEIVED MSG BLOCK OF A MESSAGE # ACNBBLK[0] = FALSE; ABT$BLK: IF P NQ 0 THEN # NETWORK CONNECTION BLOCK EXISTS # BEGIN IF ACNTABO[ACNTINDX] GQ ACNBABL[0] THEN # APPLICATION BLOCK LIMIT EXCEEDED ON CONNECTION # BEGIN TEMP = RLG"ABL"; GOTO PPUT75; # ISSUE ERR/LGL # END ELSE # VALIDATE APPLICATION CHARACTER TYPE USED # BEGIN IF (NWLACT[0] EQ CT60TRANS AND DV EQ DT$CONS) # ACT ON CONSOLE CONNECTION # OR (DV EQ DT$ATOA AND NOT (NWLACT[0] EQ CT8ASCII OR NWLACT[0] EQ CT12ASCII)) # ACT 1 OR 4 ON INTER-H # OR ( DV EQ DT$INTA # IN-TRA HOST WITH ACT 4# AND NWLACT[0] EQ CT6DISPLAY ) # IS NOT ALLOWABLE # THEN # INVALID ACT ON DOWNLINE BLOCK # BEGIN TEMP = RLG"IA"; GOTO PPUT75; # ISSUE ERR/LGL # END END IF NWLACT[0] EQ CT6DISPLAY AND DV EQ DT$CONS THEN NWLXPT[0] = FALSE; # CLEAR TRANSPARENT MODE BIT # IF NCNBBST[0] EQ NBALLD # ALL DATA ALLOWED ON NETWORK SIDE # AND ACNTIS[ACNTINDX] EQ HBALLD # ALL DATA ALLOWED ON HOST SI # THEN BEGIN # QUEUE DOWNLINE DATA DIRECTLY # ACNTABO[ACNTINDX] = ACNTABO[ACNTINDX] + 1; IF ACNBTLO[0] AND (ABT EQ APMSG OR ABT EQ APPQMSG) THEN # TURN OFF TLO FLAG ON HALF DUPLEX CONNECTION # BEGIN ACNBTLO[0] = FALSE; # CLEAR TEMPORARY LIST OFF FLAG # HUPDDAW(P,P,0,ACNBBLKSQ[0]); END NFOB(P,P); GOTO PPUT77; END END HBSTTP(P,RMSG,P); # CALL BLOCK STATE PROCESSOR # GOTO PPUT77; ABT3: CONTROL IFEQ STAT,1; # STATISTICS ON # ST$LNB = ST$LNB + 1; # INCREMENT *LOCAL NON-DATA BLOCKS* # ST$LNC = ST$LNC + NWLTLC[0]; # INC *LOCAL NON-DATA CHARACTERS* # CONTROL FI; IF NWLADR[0] NQ 0 THEN BEGIN # SYN SM # IF NWLACT[0] NQ CT8ASCII AND NWLACT[0] NQ CT12ASCII THEN BEGIN TEMP = RLG"IA" ; GOTO PPUT75 ; END ELSE GOTO ABT1; END # SYN SM # ELSE IF NWLACT[0] NQ CT60TRANS THEN BEGIN TEMP = RLG"IA" ; GOTO PPUT75 ; END GOTO UCPPFCSFCJT[INDEX]; UCPL0: # TURN ON/OFF ACN IN LIST X # OVLNAME = HLONOFFP; # NAME OF OVERLAY PROGRAM TO LOAD # GOTO PPUT76; UCPL1: # SWITCH LISTS # IF ACNBLO[0] THEN # CONNECTION HAS LIST PROCESSING OFF # BEGIN ACNBLO[0] = FALSE; # TURN LIST PROCESSING ON FOR NEW LIST # HUPDDAW(P,P,0,ACNBBLKSQ[0]); # UPDATE NO OF DELIV # END ACNBALN[0] = LSTALN[0];# NEW LIST NUMBER FOR CONNECTION # GOTO PPUT77; UCPL2: # SET HALF OR FULL DUPLEX MODE # OVLNAME = HLSTDXP; # NAME OF OVERLAY PROGRAM TO LOAD # GOTO PPUT76; UCPL4: # CHANGE INPUT CHARACTER TYPE # OVLNAME = HCHGICTP; # NAME OF OVERLAY PROGRAM TO LOAD # GOTO PPUT76; UCPL5: # CHANGE INACTIVITY TIMER TO APPLICATION SPECIFIED VALUE # OVLNAME = HDCSTMRP; # NAME OF OVERLAY PROGRAM TO LOAD # GOTO PPUT76; UCPL7: CONTROL IFEQ DEBUG,1; IF KNAMDB[0] THEN # ACTIVATE DYNAMIC DEBUG CODE # BEGIN OVLNAME = HPDBGSTP; # CALL DEBUG/STOP PROCESSOR # GOTO PPUT76; END CONTROL FI; UCPL8: # SET DATA TRUNCATION MODE # OVLNAME = HDCTRUP; # NAME OF OVERLAY PROGRAM TO LOAD # GOTO PPUT76; UCPL10: # PROCESS A PRU/ON SUPERVISORY MESSAGE FROM APPLICATION # PARAMP1 = 0 ; HBSTTP(P,PRUONR,P) ; IF PARAMP1 EQ 0 THEN BEGIN # PRU/ON WAS O.K. # P = ACNBNCNB[0] ; # NETWORK CONNECTION TABLE # IF P NQ 0 THEN BEGIN FOUND = FALSE ; FOR TEMP = 0 STEP NBTFETNO WHILE ( ( TEMP LQ NBTMAXID) AND NOT FOUND ) DO BEGIN # SEARCH FOR NBT ENTRY # IF NBTHN[TEMP] EQ NCNBHN[0] AND NBTIUF[TEMP] THEN BEGIN # HAVE FOUND # FOUND = TRUE ; INDEX = TEMP + OSTFET ; # INDEX INTO OUTBOUND # END END MGETS(2,TEMP,TRUE) ; # GET 1-WORD BUFFER FOR SPECIAL # P = TEMP ; # OUT BOUND BUFFER TO PIP # BLKID[0] = PRUSPECID ; # WITH THIS SPECIAL ID VALUE # P = TEMP + BLKHSIZE ; # SET NETWORK HEADER HAS THE# NHWORD[0] = P ; # NCNB ADDRESS FOR LATER USE# P = NBTIN[INDEX] ; # LINK TO PIP-OUTBOUND BUFFER # IF P NQ 0 THEN NEXTPTR[0] = TEMP ; # NOT THE FIRST ONE IN CHAIN # ELSE NBTFIRST[INDEX] = TEMP ; NBTIN[INDEX] = TEMP ; OUTREL = TRUE; END # NON - ZERO NCNB # END # PRU/UN WAS O.K. # ELSE # PRU/ON SUPERVISORY MESSAGE WAS REJECTED # BEGIN IF ACNTIS[ACNTINDX] EQ HBPRU THEN # NEED TO RESTORE BLOCK PROTOCOL STATE # BEGIN HBSTTP(P,HBPRUFN,0); # CHANGE HOST BLK PROTOCOL STATE # END END GOTO PPUT77 ; UCPL13: # PROCESS HOP/DIS, HOP/LG AND HOP/ALT # IF ATK[ACBAN[0]] THEN BEGIN # APPLICATION VALIDATED FOR K-DISPLAY # OVLNAME = HPKDISPP ; GOTO PPUT76; # LOAD AND EXECUTE OVERLAY # END ELSE BEGIN TEMP = RLG"ISM"; # RC=7 ILLOGICAL SM # GOTO PPUT75; # ISSUE ERR/LGL # END UCPL14A: TRIG = NCONREQ; # TRIGGER FOR CON/REQ/N # GOTO UCPL14; UCPL14B: TRIG = ACONREQ; # TRIGGER FOR CON/REQ/A # ACNBRC[0] = RCRC"ARC"; # RC=5 APPL REFUSED CONN # GOTO UCPL14; UCPL14C: IF WORDCOUNT LS RACRSIZE # IF WORD COUNT LESS THAN 2 # THEN BEGIN TEMP = RLG"NFI"; # REASON CODE 10 # GOTO PPUT75; # GENERATE ERRLGL # END ELSE BEGIN TRIG = CONACRQ; # TRIGGER FOR CON/ACRQ/R # ACN = 0; GOTO UCPL14; END UCPL14D: TRIG = CONENDR ; # TRIGGER CON/END/R # UCPL14: # PROCESS CON/REQ/N,A CON/ACRQ/R AND CON/END/R # HCSTTP(P,ACN,TRIG,P); # HOST CONN STP # GOTO PPUT77; UCPL15A: TRIG = INTRSP; # TRIGGER FOR INTR/RSP # GOTO UCPL15; UCPL15AA: TRIG = INTRAPL ; # TRIGGER FOR INTR/APP # GOTO UCPL15 ; UCPL15B: TRIG = RFCRST; # TRIGGER FOR FC/RST # GOTO UCPL15; UCPL15BB: TRIG = RFCBRK; # TRIGGER FOR FC/BRK # GOTO UCPL15; UCPL15C: TRIG = NFCINIT; # TRIGGER FOR FC/INIT/N # UCPL15: # PROCESS INTR/RSP/U, FC/RST/U, FC/BRK/U AND FC/INIT/N # HBSTTP(P,TRIG,P); GOTO PPUT77; UCPL16: # PROCESS NPD/REL # CONTROL IFEQ DEBUG,1; IF ACBAN[0] NQ PROCAN[NSORD] THEN BEGIN TEMP = RLG"ISM"; # ILLEGAL SM # GOTO PPUT75; # ISSUE ERR/LGL # END OVLNAME = HPNPDRLP ; CONTROL FI ; GOTO PPUT76; # LOAD AND EXECUTE OVERLAY # UCPL17A: # PROCESS NET/ON/A RESPONSE FROM NVF # ATNVFA[NETAN[0]] = TRUE ; # SET NET/ON/A RESPONSE BIT # UCPL17B: # PROCESS NET/ON/N RESPONSE FROM NVF # OVLNAME = HPNONVFP; # PROCESS NET/ON/R FROM NVF # GOTO UCPL19; UCPL18: # PROCESS SH/ISD (SHUTDOWN) # PARAMS1 = P ; OVLNAME = HPSHISDP ; GOTO UCPL19; UCPL19A: TRIG = RCRITEN; # NAM RECEIVES CR/ITE/N FROM NVF # GOTO UCPL19; UCPL19B: TRIG = RCRITEA; # NAM RECEIVES CR/ITE/A FROM NVF # GOTO UCPL19; UCPL19C: TRIG = RCRRAPN; # NAM RECEIVES CR/RAP/N FROM NVF # GOTO UCPL19; UCPL19D: TRIG = GCRRAPA; # NAM RECEIVES CR/RAP/A FROM NVF # GOTO UCPL19; UCPL19E: TRIG = RCRIAPN; # NAM RECEIVES CR/IAP/N FROM NVF # GOTO UCPL19; UCPL19F: TRIG = GCRIAPA; # NAM RECEIVES CR/IAP/A FROM NVF # GOTO UCPL19; UCPL19G: TRIG = RCRSWHR; # NAM RECEIVES CR/SWH/R FROM NVF # GOTO UCPL19; UCPL19H: TRIG = RCRRCNN; # NAM RECEIVES CR/RCN/N FROM NVF # GOTO UCPL19; UCPL19I: TRIG = RCRTRMR; # NAM RECEIVES CR/TRM/R FROM NVF # GOTO UCPL19 ; UCPL19J: TRIG = RCRRCNA ; # NAM RECEIVES CR/RCN/A FROM NVF# GOTO UCPL19 ; UCPL19: # PROCESS CR/ITE/N,A CR/RAP/N,A CR/IAP/N,A CR/SWH CR/RCN/N AND CR/TRM REJECT IF SM IS NOT FROM NVF # IF ACBAN[0] NQ NVFAN THEN BEGIN TEMP = RLG"ISM"; # RC=7 ILLOGICAL SM # GOTO PPUT75; # ISSUE ERR/LGL # END IF NWLACT[0] NQ CT60TRANS THEN BEGIN TEMP = RLG"IA"; # INVALID ACT # GOTO PPUT75; END IF PFC[0] EQ CR THEN BEGIN ACN = CRACN[0]; HCSTTP(P,ACN,TRIG,P); GOTO PPUT77; END ELSE GOTO PPUT76; # LOAD AND EXECUTE OVERLAY # UCPL20: UCPL21: OVLNAME = HPNOFFNP ; OVLCALL ; GOTO PPUT77 ; UCPL22A: # PROCESSING FNT/DMS PROCESSING FNT/DSM # PARAMS1 = TDMS ; GOTO UCPL22X ; UCPL22B: # UNUSE ACTION # GOTO UCPL22X ; UCPL22C: # PROCESSING FNT/IFL # PARAMS1= TIFL ; GOTO UCPL22X ; UCPL22D: # PROCESSING FNT/IFR # PARAMS1 = TIFR ; GOTO UCPL22X ; UCPL22E: # PROCESSING FNT/IAR # PARAMS1 = TIAR ; GOTO UCPL22X ; UCPL22X: PARAMS2 = ACBAN[0] ; # ACB OF THE SENDING S.M. APPLICATION # PARAMS3 = P ; OVLNAME = HFNTSMP ; # PROCESS THE FNT S.M. ACCORDINGLY # OVLCALL ; GOTO PPUT77 ; UCPL23: # PROCESSING SAC/NCL SM FROM APPLICATION # ACBABTC[0] = SACABTC[0] ; # SAVE THE ABORT # # CONDITION CODE # GOTO PPUT77 ; UCPL24: # PROCESSING SAF/SAR SM FROM APPLICATION # PARAMP1 = P ; # ACB OF SPAWNNING APPL # OVLNAME = HFSPAWNP ; # PROCESS THE SAF/SAR S.M. # OVLCALL ; GOTO PPUT77 ; ABT4: P = WLADDR + AIPHSIZE; # ADDRESS OF ABH # IF (((PFC[0] GQ MNNS AND PFC[0] LQ MXNS) AND (ACBAN[0] EQ PROCAN[NSORD])) OR ((PFC[0] GQ MNCS AND PFC[0] LQ MXCS) AND (ACBAN[0] EQ PROCAN[CSORD]))) THEN # FROM NS OR CS # BEGIN IF ABHCN[0] NQ 0 THEN # CN NON-ZERO # TEMP = RLG"ACN"; # RC=4 INVALID ACN # ELSE IF ABHBT[0] NQ APPPN THEN # BT NOT 4 # TEMP = RLG"IAB"; # RC=3 ILLEGAL ABT # ELSE BEGIN # BT = 4 # IF NWLACT[0] NQ CT8ASCII THEN TEMP = RLG"IA" ; # ILLEGAL ACT # END # BT = 4 # IF TEMP NQ 0 THEN GOTO PPUT75; # ISSUE ERR/LGL # ELSE BEGIN PARAMP1 = P ; OVLNAME = NLOPIPP; #NAME OF OVERLAY TO SEND S M TO PIP # GOTO PPUT76; # LOAD AND EXECUTE OVERLAY # END END ELSE # INVALID SM ON ABT 4 # BEGIN TEMP = RLG"IAB" ; # ILLEGAL ABT # GOTO PPUT75; # ISSUE ERR/LGL # END GOTO PPUT77; # EXIT # UCPL25: IF (PFC[0] EQ IFC OR PFC[0] EQ OFC OR PFC[0] EQ SET) THEN # ITS A PRU INTERFACE SUPERVISORY MESSAGE # BEGIN HBSTTP(P,PRUMSG,0) ; GOTO PPUT77 ; END ELSE BEGIN IF PFC[0] EQ IFT OR PFC[0] EQ OFT OR PFC[0] EQ XFT THEN BEGIN IF SFC[0] EQ OFF OR PFCSFC[0] EQ XFTIER THEN BEGIN TRIG = HXFTOFR; # TRIGGER FOR HOST CONNECTION STATE TBL # HCSTTP(P,ACN,TRIG,P); END ELSE HBSTTP(P,PRUMSG,P); GOTO PPUT77 ; END ELSE BEGIN TEMP = RLG"ISM" ; GOTO PPUT75 ; END END PPUT76: OVLCALL ; # LOAD AND EXECUTE OVERLAY # IF PARAMS7 NQ 0 THEN # RETURNED ERROR CODE IS NOT ZERO # BEGIN TEMP = PARAMS7 ; PPUT75: PARAMS1 = TEMP ; # PROCESS ERROR CODE # OVLNAME = HLGLERRP ; OVLCALL ; END # RETURN # PPUT77: IF NWLEID[0] EQ POBIDVALUE OR NWLEID[0] EQ HHQIDVALUE OR NWLEID[0] EQ PWLIDVALUE OR NWLEID[0] EQ DRIDVALUE THEN # BUFFER QUEUED ON PIP OUTBOUND CHAIN OR ON A-A INTRA-HOST QUEUE OR LINKED ON PCNB OR LINKED ON NCNB # BEGIN # DELINK WORKLIST ENTRY FROM NWL # HRELPWL; # RELEASE USED PORTION OF NWL # END RETURN; END TERM