cdc:nos2.source:nam5871:np_init
Table of Contents
NP$INIT
Table Of Contents
- [00008] PROC NP$INIT (ACN, FILENAME, OPCODE, STATIS, DATADEC, TIMEOUT, ABL,
- [00010] NP$INIT - INITIALIZE FILE TRANSFER.
- [00090] PROC NP$BFET
- [00091] PROC NP$CIO
- [00092] FUNC NP$CMAR U
- [00093] FUNC NP$CMAF U
- [00094] PROC NP$CMSF
- [00095] PROC NP$CMFF
- [00096] FUNC NP$CS63 B
- [00097] PROC NP$ERR
- [00098] FUNC GMEMCMM U
- [00099] PROC NP$RTIM
- [00100] PROC NP$S63
- [00101] PROC NP$ZWDS
- [00102] PROC NP$INFO
- [00103] PROC NP$ZRBK
- [00104] PROC NP$OSIF
Source Code
- NP$INIT.txt
- *DECK NP$INIT
- *IF DEF,XFR
- USETEXT AIPDEF
- USETEXT NX$ACBF
- USETEXT NX$ACBX
- USETEXT NX$MSG
- USETEXT NX$CHAR
- PROC NP$INIT (ACN, FILENAME, OPCODE, STATIS, DATADEC, TIMEOUT, ABL,
- BSIZE,CWS,ICKVAL);
- # TITLE NP$INIT - INITIALIZE FILE TRANSFER. #
- BEGIN # NP$INIT #
- #
- ***
- * PROC NAME: AUTHOR DATE
- * NP$INIT L.T.NGUYEN 03/20/83
- *
- * NP$INIT PERFORMS THE INITIALIZATION REQUIRED PRIOR TO ACTUAL DATA
- * TRANSFER.
- *
- * PROC NP$INIT (ACN, FILENAME, OPCODE, STATIS, DATADEC, TIMEOUT, ABL
- * ,BSIZE)
- *
- * ENTRY ACN - APPLICATION CONNECTION NUMBER.
- * FILENAME - FILE NAME TO BE TRANSFERRED, IN DISPLAY
- * CODE, 7 CHARACTERS MAXIMUM.
- * OPCODE = 0, FILE IS TO BE READ FROM THE NETWORK.
- * = 1, FILE IS TO BE WRITTEN TO THE NETWORK.
- * STATIS - CALLING PROGRAM REPLY STATUS
- * WORD.
- * DATADEC - FORMAT OF DATA BEING TRANSFERRED -
- * - 0, UH
- * - 1, US
- * - 2, UU
- * - 3, C6
- * - 4, C8.
- * TIMEOUT - TIME IN SECONDS TO WAIT FOR A FUNCTION
- * RESPONSE BEFORE TIMING OUT.
- * ABL - APPLICATION BLOCK LIMIT.
- * BSIZE - BLOCK SIZE TO TRANSMIT.
- * CWS - CHECK MARK WINDOW SIZE.
- * ICKVAL - INITIAL CHECK MARK VALUE.
- * PRESNO - PRU OFFSET AND BIT OFFSET.
- *
- * EXIT FTTINDEX - INDEX INTO FTT TABLE. ( GLOBAL )
- *
- * PROCESS INITIALIZE VALUES IN COMMON BLOCKS COMACBX AND COMADFM.
- * IF ACN IS NOT WITHIN ALLOWABLE RANGE,
- * THEN:
- * CALL NP$ERR TO WRITE DAYFILE ERROR MESSAGE AND
- * ABORT C.P.
- * SET STATUS TO INDICATE ACN NOT WITHIN ALLOWABLE
- * RANGE.
- * ELSE:
- * IF COMACBX HAS NOT BEEN INTIALIZED,
- * THEN
- * INITIALIZE VARIOUS DATA CELLS IN COMACBX.
- * CALL GMEMCMM TO OBTAIN MEMORY FOR FETS, BUFFERS,
- * AND RHF PARAMETER BLOCK.
- * SET FTTTIMEOUT[FTTINDEX] = TIMEOUT.
- * SET FTTDIRECN[FTTINDEX] = OPCODE.
- * SET FTTSTATADR[FTTINDEX] = STATUS ADDRESS.
- * SET FTTDXPA = OK (P$ES$OK).
- * SET FTTERRORD = 0 (NO ERROR).
- * CALL BUILDFT TO BUILD FETS, ALLOCATE BUFFER, AND
- * BUILD RHF NETXFR REQUEST/REPLY PARAMETER BLOCK.
- * CALL CALLCIO TO OPEN LOCAL FILE WITHOUT RECALL.
- * SET FTTSTATE[FTTINDEX] = 1 TO INDICATE WAITING FOR
- * COMPLETION OF OPEN FILE REQUEST.
- *
- #
- ITEM ACN I; # APPLICATION CONNECTION NUMBER #
- ITEM FILENAME C(7); # FILE NAME #
- ITEM OPCODE I; # READ OR WRITE CODE #
- ITEM STATIS I; # STATUS WORD #
- ITEM DATADEC I; # DATA FORMAT DECLARATION #
- ITEM TIMEOUT I; # SECONDS TO TIME OUT #
- ITEM ABL I ;
- ITEM BSIZE U ;
- ITEM CWS U ;
- ITEM ICKVAL U ;
- #
- **** PROC NP$INIT - XREF LIST BEGIN.
- #
- XREF
- BEGIN
- PROC NP$BFET; # BUILT FETS #
- PROC NP$CIO ; # CALL CIO #
- FUNC NP$CMAR U; # ASSIGN GROUP NAME #
- FUNC NP$CMAF U;
- PROC NP$CMSF; # SHRINK FIXED MEMORY #
- PROC NP$CMFF; # FREE FIXED MEMORY #
- FUNC NP$CS63 B; # DETERMINE IF 63 CHAR SET #
- PROC NP$ERR ; # WRITE DAYFILE MESSAGE #
- FUNC GMEMCMM U; # GET CENTRAL MEMORY VIA CMM #
- PROC NP$RTIM ; # INITIALIZE FTTTIME #
- PROC NP$S63; # SET TRANSLATION FOR 63 SET #
- PROC NP$ZWDS; # CLEAR CM BLOCK #
- PROC NP$INFO ; # GET FILE STATUS #
- PROC NP$ZRBK ;
- PROC NP$OSIF ;
- END
- #
- **** PROC NP$INIT - XREF LIST END.
- #
- ITEM FOUND B ; # FLAG FOR LOCATING EMPTY FTT ENTRY #
- ITEM I ;
- ITEM BUFFERADR I ; # ADDRESS OF TOTAL BUFFER #
- ITEM BUFLENGTH I ; # TOTAL LENGTH OF BUFFER NEEDED #
- ITEM CODE I ; # CODE FOR CIO OPEN #
- ITEM CIO$WORD U ; # LENGTH OF DISK BUFFER #
- ITEM NET$WORD U ; # LENGTH OF NETWORKING BUFFER #
- ITEM FSTATUS I;
- CONTROL EJECT;
- IF NUMFILEXFR EQ 1
- THEN
- BEGIN
- GROUPNAME = NP$CMAR(0); # ASSIGN GROUP NAME #
- END
- FOUND = FALSE ;
- FOR I = 0 STEP 1 WHILE I LS MAXFILEXFR
- AND NOT FOUND
- DO
- BEGIN # LOOP THROUGH FTT ENTRIES TO FIND AN EMPTY ONE #
- IF FTTACN[I] EQ ACN
- THEN
- BEGIN # SECOND FILE ON SAME CONN. #
- P<STATUSWORD> = LOC(STATIS) ;
- STATUSWD = S$XFR$2 ; # SET STATUS FLAG #
- RETURN ; # THEN RETURN TO NETXFR #
- END
- ELSE
- IF FTTACN[I] EQ 0
- THEN
- BEGIN
- # REMEMBER THIS IS EMPTY ENTRY #
- FTTINDEX = I ;
- FOUND = TRUE ;
- END
- END # LOOP TO FIND FTT ENTRY #
- IF NOT FOUND
- THEN
- NP$ERR("48") ; # NO EMPTY ENTRY IN FTT FOUND #
- # SEND DAYFILE MSG THEN ABORT C.P. #
- #
- READY TO BUILD FTT ENTRY.
- #
- NP$ZWDS(LOC(FTT$WD0[FTTINDEX]),FTTENTRYSIZE); # ZERO OUT ENTRY #
- NP$RTIM(TIME$WORD) ; # GET CURRENT TIME #
- FTTACN[FTTINDEX] = ACN ; # EMPTY ENTRY IN FTT, SAVE ACN #
- FTTSTATE[FTTINDEX] = STATX ; # INITIALIZE CURRENT STATE #
- *IF DEF,DEBUG,2
- FTTPREST[FTTINDEX] = STATX ; # INITIALIZE PREV. STATE #
- FTTPRETRIG[FTTINDEX] = NOCHG ; # INITIALIZE PREV. TRIG #
- # ASSIGNING THE STATE TABLE ORDINAL #
- FTTSTORD[FTTINDEX] = ASSIGNORD[DATADEC] - OPCODE ;
- FTTOPCODE[FTTINDEX] = OPCODE ;
- FTTTIME[FTTINDEX] = TIME$SEC[0] ; # SAVE THE INITIAL TIME #
- FTTTIMOUT[FTTINDEX] = TIMEOUT ; # SET TIME OUT TIME #
- FTTSTATUS[FTTINDEX] = LOC(STATIS) ; # SAVE STATUS ADDRESS #
- FTTUDD[FTTINDEX] = DATADEC ; # DATADECLARARION #
- FTTABL[FTTINDEX] = ABL ;
- FTTCURBLK[FTTINDEX] = ABL; # COPY ABL TO RUNNING ABL #
- # WINDOW #
- FTTOUTCWS[FTTINDEX] = 0; # ZERO OUT OUTSTANDING #
- # CHECKMARKS #
- FTTBLK$MS[FTTINDEX] = MSWINDOWSZ; # SET CHECK MARK WINDOW #
- # VALUE #
- FTTNOTRAN[FTTINDEX] = FALSE; # DEFAULT IS TRANSLATION #
- # NEEDED #
- IF MFAC[0] EQ 1 # IF MFACIL USED #
- THEN
- BEGIN
- FTTMFACIL[FTTINDEX] = TRUE; # SET MFACIL FLAG TO TRUE #
- END
- IF RFAC[0] EQ 1 # IF RFACIL SPECIFIED #
- THEN
- BEGIN
- FTTRFACIL[FTTINDEX] = TRUE; # RFACIL SPECIFIED #
- FTTNRETRY[FTTINDEX] = MAXRETRY; # MAXIMUM RETRY COUNT #
- END
- FACILWD[0] = 0; # CLEAR BIT MASK #
- FTTTBN[FTTINDEX] = 0 ; # INITIALIZE SERIAL BLOCK #
- FTTCWS[FTTINDEX] = CWS ;
- FTTOPENB[FTTINDEX] = ABL ;
- FTTOPENC[FTTINDEX] = CWS ;
- FTTICKVAL[FTTINDEX] = ICKVAL ;
- FTTCURPRU[FTTINDEX] = 1 ; # INITIALIZE TO ONE #
- IF DATADEC GQ C6
- THEN
- BEGIN # IVT CONN. NEED TO BUILD FET #
- #
- * OBTAIN MEMORY FOR LOCAL FETS (CIO AND WORKING FET ) AND
- * BUFFER FOR CIO AND WORKING AREAS.
- #
- NET$WORD = (( BSIZE + TBH$HSIZE) * OCTETSIZE)/WORDLENGTH + 3;
- # CALCULATE SIZE OF NETWORK #
- IF OPCODE EQ RECEIVE # IF RECEIVER #
- THEN
- BEGIN
- NET$WORD = NET$WORD + TOTALHDRBLK; # ADD HDR BLOCK SIZE #
- FTTBSIZE[FTTINDEX] = NET$WORD; # BUFFER SIZE OF NETWORK #
- END
- ELSE
- BEGIN
- FTTBSIZE[FTTINDEX] = BSIZE + TBH$HSIZE;
- END
- CIO$WORD = LEN$CIOB ;
- BUFLENGTH = LEN$FET # LENGTH OF CIO FET #
- + LEN$FETW # LENGTH OF WORKING FET #
- + LEN$CMB # LENGTH OF CONVERSION PARAM BLK#
- + LEN$CIOB # LENGTH OF CIO DISK BUFFER #
- + NET$WORD # LENGTH OF NETWORK BUFFER #
- + LEN$CHK;# LENGTH OF CHECKMARK BUFFER #
- BUFFERADR = NP$CMAF(BUFLENGTH,0,GROUPNAME);
- FTTFETADR[FTTINDEX] = BUFFERADR ; # CIO BUFFER AREA#
- FTTCMV$BLK[FTTINDEX] = BUFFERADR + LEN$FET + LEN$CIOB ;
- FTTFETW[FTTINDEX] = BUFFERADR + LEN$CMB + LEN$FET + LEN$CIOB ;
- FTTCKTBL[FTTINDEX] = FTTFETW[FTTINDEX] + NET$WORD + LEN$FETW;
- FTTCURPRU[FTTINDEX] = 0; # START WITH 0 PRU NUMBER #
- END # IVT CONN. NEED TO BUILD FET #
- ELSE
- BEGIN # PRU CONECTION #
- BUFLENGTH = LEN$FET ;
- CIO$WORD = 64 + 1 ; # MIM CIO BUFFER, FOR OPEN #
- BUFFERADR = NP$CMAF(BUFLENGTH+CIO$WORD,0,GROUPNAME);# GET BUF#
- # FOR FET AND IO ONLY #
- FTTFETADR[FTTINDEX] = BUFFERADR ;
- FTTFETW[FTTINDEX] = 0 ;
- FTTBSIZE[FTTINDEX] = BSIZE ;
- END # PRU CONNECTION #
- NP$ZWDS(BUFFERADR,BUFLENGTH) ; # ZERO OUT ALLOCATED MEMORY #
- FTTBUFSIZE[FTTINDEX] = BUFLENGTH ;
- NP$BFET(FILENAME,CIO$WORD,NET$WORD) ;
- IF OPCODE EQ SEND
- THEN # READ FILE #
- BEGIN
- CODE = CIO$OPENR ; # CALL CIO TO OPEN READ #
- NP$CIO(CODE);
- END
- ELSE
- BEGIN
- CODE = CIO$OPENW ; # CALL CIO TO OPEN WRITE #
- NP$CIO(CODE);
- IF DATADEC LS C6 # IF PRU RECEIVER #
- THEN
- BEGIN
- CODE = CIO$WRITEF; # PREPARE EOF MARKER ON FILE #
- NP$CIO(CODE); # WRITEF #
- END
- END
- NP$ZRBK(LOC(FILENAME),1) ; # ZERO TRAILLING BLANK #
- NP$INFO(FILENAME,FSTATUS) ; # GET STATUS OF FILE #
- IF FSTATUS NQ 0
- THEN
- BEGIN # ILLEGAL FILE TYPE FOR TRANSFERRING #
- STATUSWD = ILL$FTP ;
- FTTACN[FTTINDEX] = 0 ; # AGAIN FREE THE ENTRY IN FTT #
- NP$CMFF(BUFFERADR) ; # RELEASE THE ALLOCATED BUFFER #
- END # ILLEGAL FILE TYPE FOR TRANSFERRING #
- RETURN ;
- END # NP$INIT #
- TERM
- *ENDIF
cdc/nos2.source/nam5871/np_init.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator