*DECK BLDACNB USETEXT NIPDEF USETEXT ACNT USETEXT ACNB USETEXT ACB USETEXT AT USETEXT MSGIDX USETEXT NCNB USETEXT OVERLAY USETEXT PARAMP USETEXT PT USETEXT KDIS USETEXT KHDRX USETEXT SUPMSG USETEXT SYSTIME PROC BLDACNB; # BUILD ACNB # STARTIMS; # *1DC BLDACNB * 1. PROC NAME AUTHOR DATE * BLDACNB C. BITTNER 81/03/12 * * 2. FUNCTIONAL DESCRIPTION * CREATE ACNB AND UPDATE ASSOCIATED HEADER AND ENTRY * PARAMETERS. ALSO UPDATE ACNT ENTRY. * * 3. METHOD * ALLOCATE A CONNECTION NUMBER. * CHECK IF APPLICATION CONNECTION TABLE (ACNT) IS FULL. * IF FULL, REQUEST FOR AN EXTENDED BUFFER (CALLING MGETS) * AND UPDATE ACNT ADDRESS IN ACB. UPDATE ACNT HEADER * AND INITIALIZE ENTRY PARAMETERS. REQUEST A * BUFFER FOR THE APPLICATION CONNECTION BLOCK(ACNB). * FILL IN INFORMATION FOR ACNB AND LINK TO ACNT AND NCNB. * UPDATE TOTAL NUMBER OF CONNECTIONS CURRENTLY HELD BY * THIS APPLICATION IN THE ACB. * * 4. ENTRY PARAMETERS * PARAMP1 - ADDRESS OF SM BUFFER (TEXT) ICN/TE/R * PARAMP2 - ACB ADDRESS * * 5. EXIT PARAMETERS * PARAMP3 - ACNB ADDRESS * PARAMP4 - ACNT ADDRESS * * 6. COMDECKS CALLED AND SYMPL TEXTS USED * ACNT NIPDEF * ACNB ACB * AT * MSGIDX NCNB * PARAMP PARAMS * PT SUPMSG * SYSTIME * * 7. ROUTINES AND OVERLAYS CALLED * MGROW - EXPAND BUFFER * MGETS - ALLOCATE A BUFFER * HALLOCN - ALLOCATE CONNECTION NUMBER * OMSG - OUTPUT DAYFILE MESSAGE * OVLCALL - LOAD AND EXECUTE OVERLAY * RDUMP - DUMP NIP * XTRACE - RECORD PROCEDURE CALL * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * "NIP INTERNAL ERROR - BLDACNB" * THIS PROCEDURE IS CALLED BY PRIMARY OVERLAY STRTCON VIA * HCSTTP. * * # STOPIMS; # EXTERNAL VARIABLES # XREF BEGIN PROC HALLOCN ; PROC KPUT ; PROC MGETS; # ALLOCATE A BUFFER # PROC MGROW; # EXPAND BUFFER # PROC OMSG; # DAYFILE MESSAGE # PROC OVLCALL; # LOAD AND EXECUTE OVERLAY # PROC ABORT ; PROC XTRACE; # RECORD PROCEDURE CALLS # END # INTERNAL VARIABLES # ITEM ACNBADDR; # ACNB ADDRESS # ITEM ACNTINDX; # INDEX INTO ACNT # ITEM FLAG; # FLAG RET IF MOVE SUCCESSFUL - MGROW # ITEM INDX; # INDUCTION LOOP VARIABLE # ITEM SIZE ; ITEM ACNX; # APPLICATION CONNECTION NUMBER # #**********************************************************************# BEGIN CONTROL IFEQ DEBUG,1; XTRACE("BACNB") ; CONTROL FI; P = PARAMP2; HALLOCN(P,ACNX); # ALLOCATE NEW CONNECTION NUMBER # ACBNCN[0] = ACBNCN[0] + 1 ; # UPDATE NUMBER OF CONN TO APP# IF KDIS$RT AND ACBKNDX[0] NQ 0 AND ACBKNDX[0] GQ KDAPPST[0] AND ACBKNDX[0] LQ KDAPPND[0] THEN KPUT(KHDRNP[0],ACBKNDX[0]-KDAPPST[0],KPAPNCN,ACBNCN[0]); P = ACBACNT[0]; # BASE ACNT # ACNTINDX = ACNX + ACNTHSIZE - ACNTMINACN[0]; # ACNT INDX # # BUILD ACNB # IF PARAMP1 EQ 0 THEN SIZE = ACNBSIZE + ACNBAPEN ; ELSE SIZE = ACNBSIZE ; MGETS(SIZE,ACNBADDR,TRUE); # ALLOCATE ACNB BUFFER # P = ACNBADDR; # BASE ACNB # ACNBID[0] = ACNBIDVALUE; # SET ID OF ACNB # ACNBAN[0] = ACNTAN[0]; # APPLICATION NUMBER # ACNBACN[0] = ACNX; # APPLICATION CONNECTION NUMBER # ACNBD[0] = ATT[ACNBAN[0]]; # DATA TRUNCATION FLAG # ACNBH[0] = ATH[ACNBAN[0]]; # HALF DUPLEX FLAG # ACNBTLO[0] = ATDIS[ACNBAN[0]]; # TEMP LIST OFF FLAG # ACNBTIMERP[0] = ACBTIMERP[0]; # SET APP SPECIFIED TIMEOUT FLAG # ACNBTIMERF[0] = ACBTIMERP[0]; # SET APP SPECIFIED TIMEOUT FLAG # IF ACNBTIMERP[0] THEN # APP SPECIFIED TIMEOUT INTERVAL # BEGIN ACNBTIMER[0] = ACBTIMER[0]; # SAVE TIMEOUT INTERVAL IN ACNB # ACNBINACT[0] = RTSECS[0] + ACNBTIMER[0]; # TIMEOUT RTIME VALUE# END ELSE # USE NETWORK TIMEOUT INTERVAL # BEGIN ACNBINACT[0] = RTSECS[0] + INACTVAL; # TIMEOUT RTIME VALUE # END ACNBINTR[0] = 0 ; # CLEAR INTERUPT CHARACTER # IF PARAMP1 NQ 0 # REQUEST TRIGGERED FROM NETWORK SIDE # THEN BEGIN P = PARAMP1 ; P = PARAMP1; # BASE SM TEXT ICN/TE/R # IF PFCSFC[0] EQ ICNTE THEN ACNBABL[0] = ICNABL[0]; # SET ABL FROM ICN/TE/R # ACNBNCNB[0] = NCNBADD; # LINK NCNB ADDRESS # P = NCNBADD; CONTROL IFEQ DEBUG,1; IF P EQ 0 THEN BEGIN D27M2[0] = "BLDACNB"; OMSG(DFMSG27,0); # DAYFILE "NIP INTERNAL ERROR" # ABORT(0,0) ; END CONTROL FI; NCNBACNB[0] = P; # LINK ACNB ADDRESS # ACNBDT[0] = NCNBDT[0]; # DEVICE TYPE # ACNBTC[0] = NCNBTC[0]; # TERMINAL CLASS # END ACNTACNB[ACNTINDX] = ACNBADDR; # LINK ACNB ADDR IN ACNT # # SET EXIT PARAMETERS # PARAMP3 = ACNBADDR; # ACNB ADDRESS # PARAMP4 = P; # ACNT ADDRESS # RETURN ; END TERM