*DECK NP$RLOC *IF,DEF,XFR USETEXT NX$ACBF USETEXT AIPDEF USETEXT HEADER USETEXT NX$MSG USETEXT NP$STAT USETEXT NP$DB USETEXT NP$NWL USETEXT NP$MODE USETEXT NP$GETS USETEXT NX$ACBX PROC NP$RLOC; BEGIN # ** * 1. PROC NAME AUTHOR DATE * * NP$RLOC Y. C. YIP 07/12/1984 * * 2. FUNCTIONAL DESCRIPTION. * * NP$RLOC COMPUTES ADDITIONAL MEMORY NEEDED FOR A * INTRAHOST BINARY FILE TRANSFER AND ALLOCATES THE * ADDITIONAL BUFFERS NEEDED. * * 3. METHOD USED. * * NP$RLOC CLOSES THE FILE AND RELEASES THE ALLOCATED * MEMORY FOR A PRU FILE TRANSFER. * NEXT IT COMPUTES THE TOTAL MEMORY NEEDED INCLUDING * THE CMB BUFFER, THE NETBUF AND THE CHECKMARK BUFFER. * IT CALLS NP$CMAF TO ALLOCATES BUFFER SPACE. * FINALLY, IT PERFORMS NETFET INITIALIZATION AND * ALSO SET THE FTTNOTRAN FLAG IN THE FTT. * * 4. ENTRY CONDITIONS: * * FTTINDEX MUST BE POINTING TO THE * VALID ENTRY IN THE FTT. * * * 5. EXIT CONDITIONS: * * ADDITIOAL BUFFER SIZE NEEDED FOR A INTRAHOST BINARY FILE * TRANSFER IS ALLOCATED. * NETWORK FET GET INITIALIZED. * LIMIT POINTER OF THE DISK FET RESET TO A BIGGER VALUE. * FLAG FTTNOTRAN SET TO TRUE # # **** # XREF BEGIN PROC NP$MSG; # GENERATE DAYFILE MESSAGE # PROC NP$ZWDS; # PROC TO ZERO OUT WORDS # FUNC NP$CDD C(10); # FUNCTION FOR CONVERTING # # INTEGER TO DISPLAY CODE # FUNC NP$CMAF U; # COMPASS ROUTINE TO ALLOCATE # # BUFFER SPACE # PROC NP$CMFF; # PROC TO DEALLOCATE SPACE # PROC NP$CIO; # CALL CIO MACRO # PROC NP$ZRBK; # CONVERTS BLANKS TO ZERO # END # BUFFER SPACE # # **** # ITEM BUFLENGTH; # LENGTH OF BUFFER TO BE # # ALLOCATED # ITEM BUFADR; # FIRST WORD ADDRESS OF NEWLY # # ALLOCATED SPACE # ITEM NET$WORD; # SIZE OF NETBUF # ITEM ITEMP; # INTEGER TEMPORARY # ITEM SAVEN C(7); # CHARACTER TEMPORARY # CONTROL EJECT; # ************************************************************************ * * * CODE OF NP$RLOC BEGINS HERE * * * ************************************************************************ # NP$CIO(CIO$CLOSE); # CLOSE THE FILE # P = FTTFETADR[FTTINDEX];# SET DISK FET TEMPLATE # SAVEN = FETLFNC[0]; # SAVE FILE NAME # NP$CMFF(P); # RELEASE OLD SPACE ALLOCATED # NET$WORD = (FTTBSIZE[FTTINDEX]*2)/15; # ESTIMATE NETBUF SIZE # BUFLENGTH = LEN$FET + LEN$CIOB + LEN$CMB + LEN$FETW + NET$WORD + LEN$CHK; BUFADR = NP$CMAF(BUFLENGTH,0,GROUPNAME); # ALLOCATE SPACE # NP$ZWDS(BUFADR,BUFLENGTH); # ZERO OUT ALLOCATED SPACE # FTTFETADR[FTTINDEX] = BUFADR; # SAVE NEW FET ADDRESS # P =FTTFETADR[FTTINDEX]; # SET TEMPLATE TO FET ADDRESS # FETLFNC[0] = SAVEN; # SET FILENAME # FETCOMP = TRUE; # SET COMPLETION BIT # NP$ZRBK(LOC(FETWD[0]),1); # CONVERTS BLANK TO ZERO # FETFETL[0] = LEN$FET - 5; # BUILD DISK FET # FETFIR = P + LEN$FET; # FIRST POINTER # FETIN[0] = FETFIR[0]; FETOUT[0] = FETFIR[0]; FETLIM[0] = FETFIR[0] + LEN$CIOB; # LIMIT POINTER # FTTCMV$BLK[FTTINDEX] = BUFADR + LEN$FET + LEN$CIOB; # CMB BUFFER ADDRESS # FTTFETW[FTTINDEX] = FTTCMV$BLK[FTTINDEX] + LEN$CMB; # NETWORK FET ADDRESS # FTTCKTBL[FTTINDEX] = FTTFETW[FTTINDEX] + LEN$FETW + NET$WORD; # CHECKMARK STATUS BUFFER # P = FTTFETW[FTTINDEX]; # ADDRESS FOR NETFET # FETNAME[0] = FETLFNC[0]; # SET FILE NAME # FETWFIRST[0] = P + LEN$FETW; # SET FIRST WORD ADR OF # # BUFFER # FETWIN[0] = FETWFIRST[0]; # SET IN AND OUT PTR FOR # FETWOUT[0] = FETWFIRST[0]; # NETBUF # FETWLIMIT[0] = FETWFIRST[0]+ NET$WORD; # SET LIMIT PTR # P = FTTCMV$BLK[FTTINDEX]; CMB$NBUF[0] = 0; # SET NETBUF FULL/EMPTY FLAG # CMB$DBUF[0] = 0; # SET DISKBUF FULL/EMPTY FLAG # CMB$STEP[0] = 6; # TREAT IT AS C6 # IF FTTOPCODE[FTTINDEX] EQ SEND # IF SENDER # THEN BEGIN CMB$DBIT[0] = CMB$STEP[0]; # SET DBIT TO STEP # NP$CIO(CIO$OPENR); # OPEN FOR READ ACCESS # END ELSE BEGIN # RECEIVER # CMB$DBIT[0] = WORDLENGTH - CMB$STEP[0]; NP$CIO(CIO$OPENW); # OPEN FOR WRITE ACCESS # END FTTMFACIL[FTTINDEX] = FALSE; FTTRFACIL[FTTINDEX] = FALSE; FTTNRETRY[FTTINDEX] = 0; FTTNOTRAN[FTTINDEX] = TRUE; # SET NO TRANSLATION FLAG # IDFM$LFN[INTR$BIN] = FETNAME[0]; # GET FILE NAME CONCERNED # NP$MSG(IDFM$MSG[INTR$BIN],XFRDTYPE);#GENERATE DAYFILE # RETURN; # RETURN TO CALLER # END # END OF PROC NP$RLOC # TERM *ENDIF