cdc:nos2.source:nam5871:nip
Table of Contents
NIP
Table Of Contents
- [00002] PRGM NIP
- [01140] PROC IRECVR
- [01141] PROC OVLCALL
- [01142] PROC XEXEC
Source Code
- NIP.txt
- *DECK NIP
- PRGM NIP;
- CONTROL PRESET;
- *IF DEF,IMS
- #
- * W 12
- * NN NN A MM MM
- * NNN NN AAA MMM MMM
- * NNNN NN AA AA MMMM MMMM
- * NN NN NN AA AA MM MM MM MM
- * NN NN NN AA AA MM MM MM MM
- * NN NN NN AA AA MM MMMM MM
- * NN NN NN AA AA MM MM MM
- * NN NN NN AAAAAAAAA MM MM
- * NN NN NN AAAAAAAAAAA MM MM
- * NN NNNN AA AA MM MM
- * NN NNN AA AA MM MM
- * NN NN AA AA MM MM
- * NETWORK PRODUCTS DOCUMENTATION PAGE
- * NAM INTERNAL SPECIFICATION DATE.
- * NAM GENERAL DESCRIPTION
- *1DC NAM GENERAL DESCRIPTION
- * *****************************************************************
- * * PLEASE REFER TO THE RECENT HARD COPY OF NAM IMS. *
- * *****************************************************************
- *
- *
- * THE NETWORK ACCESS METHOD(NAM) PROVIDES AN INTERFACE FOR PROGRAMS
- * EXECUTING IN A CYBER 70/170 FOR EXCHANGING DATA WITH TERMINALS
- * IN THE NETWORK AS WELL AS OTHER EXECUTING PROGRAMS IN THE NETWORK.
- *
- * NAM PROVIDES THE FOLLOWING FEATURES AND/OR ADVANTAGES TO THE
- * APPLICATION PROGRAM
- *
- * .ISOLATION OF APPLICATION COMMUNICATIONS FROM THE OPERATING
- * SYSTEM
- *
- * .MANAGEMENT OF NETWORK PROTOCOL
- *
- * .DYNAMIC ESTABLISHMENT, MAINTENANCE AND TERMINATION OF DATA PATHS
- * BETWEEN TERMINALS AND PROGRAMS OR BETWEEN PROGRAMS.
- *
- * .BUFFERING AND QUEUING OF DATA FOR REGULATION OF DATA FLOW
- *
- * .SUPPORT A WIDE VARIETY OF TERMINALS THROUGH NORMALIZATION OF
- * DATA FORMATS
- *
- * .MECHANISM FOR ANY PROGRAM TO COMMUNICATE WITH A NUMBER OF
- * TERMINALS WHICH MAY BE ADDRESSED INDIVIDUALLY OR BE GROUPED
- * TOGETHER AND ADDRESSED AS A MEMBER OF A GROUP (LIST).
- *
- * NAM IS MADE UP OF THE FOLLOWING 3 MAJOR MODULES
- *
- * .NIP - A CP PROGRAM WRITTEN MOSTLY IN SYMPL AND RUNNING AT
- * A DEDICATED CONTROL POINT. NIP HAS SYSTEM CONTROL POINT
- * PRIVILEGES, I.E. IT CAN READ AND WRITE INTO THE FIELD LENGTH
- * OF SO CALLED USER CONTROL POINTS UPON REQUEST OF THESE
- * CONTROL POINTS.
- *
- * .PIP - A DEDICATED PPU PROGRAM RUNNING AT NIP"S CONTROL POINT.
- * ONE OR MORE COPIES OF PIP MAY RESIDE IN PPU-S (DEPENDING ON
- * THE EST CONFIGURATION OF ENABLED NETWORK NODES) AND WILL
- * OCCUPY THOSE PPU-S AS LONG AS THERE ARE NETWORK NODES ENABLED.
- *
- * .AIP - A COLLECTION OF RELOCATABLE SUBROUTINES RESIDING IN THE
- * APPLICATIONS FIELD LENGTH, WHICH ENABLE THE APPLICATION TO
- * COMMUNICATE WITH NIP, USING THE OPERATING SYSTEM SYSTEM
- * CONTROL POINT FEATURE.
- *
- * THE READER OF THIS DOCUMENT IS EXPECTED TO BE FAMILIAR WITH THE
- * NAM REFERENCE MANUAL, THE NOS REFERENCE MANUAL AND DETAILS
- * OF THE NOS SYSTEM CONTROL POINT FEATURE. THE DOCUMENTATION FOR
- * THIS NOS OPERATING SYSTEM FEATURE IS PENDING.
- *
- * THE REMAINDER OF THIS DOCUMENT IS ORGANIZED IN THE FOLLOWING
- * MANNER:
- *
- * 1.0 NIP PROGRAM STRUCTURE
- * 2.0 MESSAGE TRANSMISSION THROUGH NAM
- * 3.0 NIP TABLE STRUCTURE
- * 4.0 SYSTEM CONTROL POINT COMMUNICATION
- * 5.0 NIP DETAILED DESCRIPTION
- * 6.0 NIP CROSS REFERENCE TABLE
- * 7.0 AIP PROGRAM STRUCTURE
- * 8.0 AIP TABLE STRUCTURE
- * 9.0 AIP DETAILED DESCRIPTION
- * 10.0 AIP CROSS REFERENCE TABLE
- * 11.0 PIP PROGRAM STRUCTURE
- * 12.0 PIP DETAILED DESCRIPTION
- (
- *
- * NETWORK PRODUCTS DOCUMENTATION PAGE
- * NAM INTERNAL SPECIFICATION DATE.
- * 1.0 NIP PROGRAM STRUCTURE
- *1DC 1.0 NIP PROGRAM STRUCTURE
- *
- * NIP GLOBAL STRUCTURE IS PICTURED BELOW
- * ---------------------------------------------------------
- * I I
- * I I
- * I SYSTEM COMMUNICATION, RESIDENT TABLES, CONSTANTS I
- * I (1100O) I
- * ---------------------------------------------------------
- * I I
- * I I
- * I I
- * I I
- * I I
- * I MAIN PROGRAM AND FREQUENTLY USED SUBROUTINES I
- * I I
- * I (16000O) I
- * ---------------------------------------------------------
- * I I
- * I OVERLAYS (1400O) I
- * I I
- * ---------------------------------------------------------
- * I I
- * I DYNAMICALLY ALLOCATED BUFFER AREA I
- * I I
- * ---------------------------------------------------------
- *
- * ALL OCTAL NUMBERS INDICATING SIZES OF THE VARIOUS PORTIONS ARE
- * APPROXIMATE.
- *
- * UNDER SYSTEM COMMUNICATION OF COURSE WE HAVE THE FIRST 111O WORDS
- * OF CORE, SOME OF WHICH IS BEING UTILIZED FOR SYSTEM CONTROL POINT
- * COMMUNICATION. THIS AREA ALSO CONTAINS THE FOLLOWING POINTERS AND
- * TABLES NEEDED BY NIP TO FUNCTION.
- *
- * COPYRT COPYRIGHT COMMON BLOCK
- * APPSTAT NETWORK WORKLIST PROCESSING TABLE
- * BACKBUF SPECIAL BUFFER FOR DOWNLINE BACKS
- * FREETAB BUFFER MANAGEMENT PROCESSING TABLE
- * KDIS K-DISPLAY SUPPORT TABLE
- * OVERLAY OVERLAY PROCESSING TABLE
- * OVLNAMEP OVERLAY NAME TABLE
- * PARAMP BUFFER FOR PASSING PARAMS TO/FROM PRIMARY OVERLAYS
- * PARAMS BUFFER FOR PASSING PARAMS TO/FROM SECONDARY OVRLAYS
- * PITTAB PIP INTERFACE TABLE
- * PT POINTER TABLE
- * SSTCOM SYSTEM CONTROL POINT FILE TRANSFER TABLE
- * TIME SYSTEM TIME TABLE
- *
- * THE MAIN PROGRAM FOR NIP IS ALSO CALLED NIP, AND IS THE FIRST
- * PROGRAM ON THE PL. IT IS THE ONLY PROGRAM THAT HAS THE COMMON
- * DECKS USED BY NIP LISTED. IN ALL OTHER ROUTINES SYMPL TEXT IS
- * USED. COMMON DECKS FOR SUPERVISORY MESSAGES USED THROUGHOUT
- * NETWORK HOST PRODUCTS MAY BE LISTED BY EXECUTING THE
- * FOLLOWING JOB:
- *
- * (JOB AND ACCOUNT CARDS)
- * (OBTAIN A COPY OF NAMPL)
- * UPDATE(Q,P=NAMPL)
- * RFL(60000)
- * COMPASS(I)
- * 7-8-9
- * *C NP$SYM
- * 6-7-8-9
- *
- *
- * THE STRUCTURE OF NIP ON THE PL IS AS FOLLOWS:
- * . COMMON DECKS IN ALPHABETICAL ORDER
- * . THE MAIN PROGRAM NIP FOLLOWED BY ALL THE ROUTINES WRITTEN IN
- * SYMPL IN ALPHABETICAL ORDER (NIP THROUGH XTERMST). NOTE THAT
- * ROUTINES WHICH ARE OVERLAYS ARE RESIDING INTERSPERSED WITH
- * ROUTINES IN THE RESIDENT OVERLAY. THIS IS SO THAT A ROUTINE
- * CAN BE EASILY LOCATED.
- * . THE ROUTINES WRITTEN IN COMPASS FOLLOW THE SYMPL PROGRAMS FOR
- * OTHER NHP PRODUCTS. THESE ROUTINES ARE ALSO ARRANGED ALPHABE-
- * TICALLY AND CURRENTLY THIS INCLUDES ALL THE ROUTINES FROM ABORT
- * TO XTRACE.
- * . IN ADDITION TO THAT ON THE NAMPL THERE IS A COMPASS SKELETON
- * DECK (DECKNAME SKENIP) THAT CONTAINS OVERLAY CARDS FOLLOWED
- * BY A COMPASS ROUTINE CONSISTING OF ONLY AN IDENT AND END
- * CARD FOR EACH OF THE ROUTINES IN A PARTICULAR OVERLAY.
- *
- * THUS AFTER COMPILING AND ASSEMBLING ALL OF THE NIP ROUTINES
- * ALL ONE HAS TO DO IS REPLACE THE ROUTINES IN SKELETON WITH THE
- * CORRESPONDING REAL ROUTINES TO GET A BINARY STRUCTURE WITH THE
- * PROPER OVERLAY CARDS IN IT.
- *
- * THE MAIN PROGRAM NIP IS JUST ABOUT A DO-NOTHING. IT SIMPLY CALLS
- * THE INITIALIZATION OVERLAY AND THEN CALLS XEXEC WHICH IS REALLY
- * THE MAIN EXECUTIVE FOR NIP. THE LOGIC FLOW OF XEXEC IS A GOOD
- * REPRESENTATION OF THE LOGIC FLOW FOR NIP AND MAY BE SUMMARIZED
- * AS FOLLOWS:
- *
- * START : CALL INIP
- * LOOP: IF HALF A SECOND HAS ELAPSED,
- * CHECK FOR SWAPPED IN APPLICATIONS.
- * IF 5 SECONDS HAVE ELAPSED,
- * CHECK FOR INACTIVE CONNECTIONS,
- * IF 10 SECONDS HAVE ELAPSED,
- * CHECK IF GARBAGE COLLECTION NEEDS TO BE DONE,
- * IF SO, PERFORM GARBAGE COLLECTION.
- * IF 10 SECONDS HAVE ELAPSED,
- * CHECK FOR EST TABLE CHANGES.
- * CHECK IF PIP NEEDS MORE PRU BUFFERS AND ALLOCATE THEM.
- * RELEASE ANY OUTBOUND BUFFERS PROCESSED BY PIP,
- * IF NIP NOT IN REGULATION LEVEL 0,
- * CALL HHIR.
- * CALL NEIB.
- * PROCESS REGULATION LEVEL CHANGE IF ANY.
- * UPDATE NIP K-DISPLAY.
- *
- * LOOP2: IF NO WORKLIST FROM APPLICATION OR
- * PIP HAS NO WORK FOR NIP TO DO OR
- * HALF A SECOND HAS NOT ELAPSED,
- * GO INTO RECALL.
- * GO TO LOOP2.
- * GO TO LOOP.
- *
- * AS CAN BE SEEN FROM THE ABOVE, NIP EXECUTES UNTIL
- * NETWORK SHUTDOWN. THE ROUTINES CALLED BY XEXEC ARE THE MAJOR
- * FUNCTIONAL MODULES OF NIP AND A BRIEF DESCRIPTION FOR EACH
- * FOLLOWS:
- *
- * . INIP IS RESPONSIBLE FOR INITIALIZING BUFFERS AND BUFFER
- * POINTERS
- * . XSACB IS RESPONSIBLE FOR CHECKING THE STATE OF APPLICATIONS
- * AND TAKING APPROPRIATE ACTION.
- * . XCHKPCR IS RESPONSIBLE FOR CHECKING CONNECTION FOR INACTIVITY
- * AND DETERMINE IF INTRA-HOST A TO A LOGICAL LINK EXISTS AND CAN
- * BE DELETED.
- * . MGBGCLT IS THE GARBAGE COLLECTION ROUTINE TO COMPACT THE
- * DYNAMICALLY ALLOCATED BUFFERS.
- * . XCHKCET IS RESPONSIBLE FOR UPDATING THE COUPLER
- * EQUIPMENTS TABLE ( CET ).
- * . XCHKABC IS RESPONSIBLE FOR ALLOCATE MORE PRU BUFFERS IF PIP
- * REQUESTED THEM.
- * . NEIB EMPTIES THE NETWORK (PIP) INPUT BUFFER OF UPLINE DATA
- * MESSAGES.
- * . HHIR IS RESPONSIBLE FOR PROCESSING AN INCOMING SYSTEM CONTROL
- * POINT REQUEST. HHIR CALLS NFOB TO QUEUE MESSAGES FOR PIP TO BE
- * DELIVERED TO THE NPU.
- *
- * EACH OF THESE MAJOR MODULES CALL SEVERAL SUBMODULES. THE MAJOR
- * MODULES AS WELL AS THE SUBMODULES ARE DISCUSSED IN MORE DETAIL
- * IN CHAPTER 5, IN NIP DETAILED DESCRIPTION. IN GENERAL,HOWEVER,
- * IT SHOULD BE NOTED THAT THE FIRST LETTER OF THE ROUTINE NAME
- * HAS FUNCTIONAL SIGNIFICANCE AS FOLLOWS
- * .NAMES BEGINNING WITH A B ARE ASSOCIATED WITH NIPS BUFFERING
- * FUNCTION (I.E. BUFFERING OF DATA BETWEEN APPLICATIONS AND
- * THE TERMINAL.) EXAMPLES ARE BDELINK TO DELINK A DATA BLOCK FROM
- * THE DATA RING, AND BCONV TO CONVERT INBOUND DATA FROM ASCII
- * TO DISPLAY CODE.
- * .NAMES BEGINNING WITH AN H ARE ASSOCIATED WITH HOST SIDE PROCES-
- * SING. THAT IS THE H ROUTINES PROCESS THE APPLICATIONS REQUEST.
- * EXAMPLES ARE HPPUT TO PROCESS A NETPUT, HPGET TO PROCESS A
- * NETGET, ETC.
- * .NAMES BEGINNING WITH AN I ARE ASSOCIATED WITH THE INITIALIZA-
- * TION PROCESS. THUS INIP INITIALIZES NIP FETS.
- * .NAMES BEGINNING WITH AN M ARE ASSOCIATED WITH THE MEMORY MANAGE-
- * MENT FUNCTIONS, SUCH AS MGETS, MRELS TO GET AND RELEASE MEMORY
- * SPACE.
- * .NAMES BEGINNING WITH N ARE ASSOCIATED WITH NETWORK SIDE
- * PROCESSING, THAT IS THE MOVEMENT OF DATA BETWEEN NIP AND PIP.
- * EXAMPLES ARE NEIB TO EMPTY THE NETWORK INPUT BUFFER, OR
- * NGIGO TO PROCESS A GARBAGE IN GARBAGE OUT MESSAGE FROM THE
- * NETWORK
- * .NAMES BEGINNING WITH O ARE ASSOCIATED WITH OPERATING SYSTEM
- * INTERFACES SUCH AS OSCPSI TO SWAP IN AN APPLICATION.
- * .NAMES BEGINNING WITH R ARE FOR RECOVERY. CURRENTLY THERE IS
- * ONLY ONE, RDUMP TO TAKE A DUMP IN CASE OF A FAILURE.
- * .NAMES BEGINNING WITH X ARE MISCELLANEOUS ROUTINES.
- * .NAMES BEGINNING WITH K ARE FOR K-DISPLAY PROCESSING ROUTINES.
- *
- * ACB -S , ACNB-S AND NCNB-S WILL BE DESCRIBED LATER.
- *
- * THE NIP OVERLAY AREA IS DIVIDED INTO TWO BUFFERS: ALL PRIMARY
- * OVERLAYS ARE LOADED INTO THE FIRST BUFFER AND ALL SECONDARY
- * OVERLAYS ARE LOADED INTO THE SECOND BUFFER. BECAUSE THE BUFFERS
- * ARE FIXED IN SIZE EXTRA CARE MUST BE TAKEN TO ASSURE THAT AN
- * OVERLAY DOES NOT EXCEED THE BUFFER SIZE. ALLOWED SIZES ARE DEFINED
- * IN CHAPTER 3 (NIP TABLE STRUCTURE OF THIS GID).
- *
- * THE PHILOSOPHY ON PUTING THINGS INTO OVERLAYS IS OBVIOUS: IN-
- * FREQUENTLY CALLED FUNCTIONS ARE DONE IN OVERLAYS. EXAMPLES OF
- * SUCH FUNCTIONS ARE NETON/NETOFF PROCESSING, CREATING/DELETING/
- * SWITCHING ACB-S AND ACNB-S ETC. FOR A COMPLETE LIST SEE COMMON
- * BLOCK OVLNAME IN CHAPTER 3.
- * FINALLY WE SHOULD DISCUSS NIP"S DYNAMICALLY ALLOCATED BUFFER
- * AREA. NIP USES A VARIABLE LENGTH BUFFER ALLOCATION MECHANISM.
- * WHEN SPACE IS NEEDED. THE REQUESTING ROUTINE SPECIFIES THE
- * NUMBER OF WORDS NEEDED, CALLS MGETS AND RECEIVES THE FWA OF
- * THE ACQUIRED SPACE. THE FIRST WORD OF THE ACQUIRED BUFFER
- * HAS THE FOLLOWING FORMAT
- * NOTE THAT HERE AS IN THE REMAINDER OF THIS IMS BITS ARE NUMBERED
- * FROM LEFT TO RIGHT, ACCORDING THE SYMPL LANGUAGE CONVENTIONS.
- * W 9
- * 2 5
- * 0 6 4 9
- * I--------I-------I-------------------------I
- * I I I I
- * I ID I BS I FREE I
- * I I I I
- * I--------I-------I-------------------------I
- *
- * WHERE ID IS THE BLOCK ID, SET TO 0 WHEN THE CALLER RECEIVES
- * THE BUFFER, AND BS IS THE ACTUAL SIZE OF THE BLOCK ACQUIRED.
- * THE CALLER MUST IMMEDIATELY SET THE BLOCK ID TO THE TYPE OF
- * BLOCK THE BLOCK IS GOING TO BE, AND MUST NEVER CHANGE THE BLOCK
- * SIZE FIELD. THE REMAINDER OF THE WORD AS WELL AS THE BS-1
- * NUMBER OF WORDS FOLLOWING IT ARE AVAILABLE FOR THE CALLER
- *
- * IF A BUFFER IS TO BE RETURNED TO THE FREE POOL,THEN THE MRELS
- * ROUTINE MUST BE CALLED WITH THE FWA OF THE BLOCK TO BE
- * THE FORMAT OF A FREE BLOCK IN THE FREE RING IS AS FOLLOWS:
- *
- * 0 6 22 4 5
- * 34 2 9
- * 1----1-----------------1------------------1----------------1
- * 1 1 1 1 1
- * 1 0 1 BS 1 FRBFBBP 1 FRBFBFP 1
- * 1 1 1 1 1
- * 1----1-----------------1------------------1----------------1
- *
- * AS CAN BE SEEN THE FREE BUFFER ID IS ALWAYS 0. AGAIN BS
- * REPRESENTS THE BLOCK SIZE. FRBFBBP AND FRBFBFP ARE THE FREE
- * BUFFER BACKWARD AND FORWARD POINTER RESPECTIVELY. AT ANY ONE TIME
- * LOCATION FREETAB IN LABELLED COMMON IS THE DOMINANT MEMBER OF
- * THE FREE CHAIN,I.E. IT HAS FORWARD AND BACKWARD POINTERS TO
- * THE FIRST AND LAST BLOCK, RESPECTIVELY IN THE CHAIN.
- *
- * IN ORDER TO ACQUIRE SPACE NIP WILL LOOK THROUGH THE FREE CHAIN
- * FOR THE REQUIRED SIZE OF FREE BLOCK. A BLOCK IS OBTAINED EITHER
- * ON A FIRST OR BEST FIT BASIS, DEPENDING ON AN INSTALLATION
- * SPECIFIED UPDATE OPTION. CURRENTLY THE BUFFER WHICH IS RETURNED
- * TO THE CALLER HAS A BS WHICH IS THE EXACT SIZE REQUESTED BY
- * THE CALLER. HOWEVER THERE MUST BE NO CODE RELYING ON THIS FACT
- * SINCE WE MIGHT EXPERIMENT WITH NOT RETURNING THE REMAINDER
- * OF THE BUFFER TO THE FREE CHAIN IF THE REMAINDER IS ONLY A
- * FEW WORDS LONG. THE MEMORY MANAGEMENT FUNCTIONS MUST REMAIN
- * MODULAR AND TOTALLY INDEPENDENT OF THE REST OF THE CODE.
- *
- * IF THERE IS NO ROOM IN THE FREE BUFFER CHAIN FOR A BLOCK OF THE
- * REQUIRED SIZE MEMORY WILL BE REQUESTED FROM THE OPERATING SYSTEM.
- *
- * IN ORDER TO RETURN A BLOCK TO THE FREE CHAIN THE BLOCK IS SIMPLY
- * INSERTED INTO THE FREE CHAIN. THE FREE CHAIN IS ORDERED BY
- * INCREASING FWA OF THE BLOCK. IN ORDER TO MINIMIZE BUFFER
- * FRAGMENTATION,IF A BLOCK BEING INSERTED INTO THE FREE CHAIN FORMS
- * A CONTIGUOUS BLOCK WITH EITHER THE BLOCK BEFORE IT OR THE BLOCK
- * AFTER IT,THEN THESE BLOCKS ARE COMBINED INTO A SINGLE BLOCK.
- *
- * OTHER STEPS TAKEN TO MINIMIZE BUFFER FRAGMENTATION INCLUDE
- * GARBAGE COLLECTION. GARBAGE COLLECTION CONSIST OF MOVING DOWN
- * ALL MOVABLE BUFFERS TO LOWER ADDRESSES SO THAT FREE BUFFERS
- * MAY BE COMBINED INTO A SINGLE FREE BUFFER AT HIGH CORE. THE
- * BLOCK ID"S DURING THIS MOVE ARE EXTREMELY IMPORTANT. THE
- * BLOCK ID FIELD IS USED IN THE FIRST PLACE TO DETERMINE IF
- * THE BUFFER IS MOVABLE OR NOT. BUFFERS WAITING FOR OPERATING
- * SYSTEM ACTION (SUCH AS COMPLETION OF AN SCP SWAPIN REQUEST)
- * OR BUFFERS INVOLVED IN PIP COMMUNICATION ARE NOT MOVABLE.
- * ANY BUFFER THAT HAS BIT 0 OF ITS BLOCK ID SET IS A NONMOVABLE
- * BUFFER.
- * NOTE THAT THE SAME CORE AREA CAN ALTERNATE FROM BEING MOVABLE
- * TO NONMOVABLE EVEN WHILE IT CONTAINS THE SAME INFORMATION.
- *
- * THE BLOCKID FIELD IS ALSO USED TO TELL THE GARBAGE COLLECTION
- * ROUTINE WHAT SPECIFIC ACTION TO TAKE IN MOVING THE BLOCK.
- * SOME TYPES OF BLOCK ARE MEMBERS OF SEVERAL DIFFERENT KINDS OF
- * RINGS WITH POINTERS IN OTHER BLOCKS POINTING TO THEM, WHICH
- * OBVIOUSLY HAVE TO BE UPDATED WHEN THE BLOCK POINTED TO IS BEING
- * MOVED. THIS ALSO MEANS THAT ANY BLOCK WHICH IS POINTED TO BY
- * ANOTHER BLOCK MUST ITSELF HAVE A POINTER TO THAT BLOCK IN ORDER
- * FOR THE GARBAGE COLLECTION ROUTINE TO BE ABLE TO EASILY LOCATE
- * THE BLOCK POINTING TO THE BLOCK BEING MOVED.
- *
- * FOR THE DETAILS ON WHEN GARBAGE COLLECTION TAKES PLACE SEE THE
- * DETAILED DOCUMENTATION ON XEXEC.
- *
- * SOME OF THE MORE SIGNIFICANT BLOCKS IN THE DYNAMICALLY ALLOCATED
- * BUFFER AREA ARE AS FOLLOWS:
- *
- * . ACB ( APPLICATION CONTROL BLOCK) A ACB EXISTS FOR EACH APPL.
- * THAT HAS NETTED ON SUCCESSFULLY, UNTIL THAT APPLICATION
- * DOES A NETOFF OR FAILS. A LLCB ALSO EXISTS FOR EACH LOGICAL
- * LINK. A LOGICAL LINK IS A LINK
- * BETWEEN A HOST NODE (PHYSICALLY THIS CAN BE THOUGHT OF AS
- * THE COUPLER) AND A TERMINAL NODE (PHYSICALLY THIS CAN BE
- * THOUGHT OF AS ANY 255X TO WHICH THERE ARE TERMINALS ATTACHED)
- * ON WHICH DATA TRAFFIC MAY TAKE PLACE.
- * THE ACB CONTAINS INFORMATION UNIQUE TO THE PROCESS AND
- * PROVIDES NIP WITH A CONVENIENT WAY OF CONTROLLING ACTIVITY OF
- * THE PROCESS.
- * THE ACB ALSO SERVES AS A ACNB ( APLLICATION CONNNECTION
- * CONTROL BLOCK) FOR CONNECTION ZERO ( SUPERVISORY MESSAGE) I.E.
- * A CONTROL BLOCK FOR QUEUING SUPERVISORY MESSAGES AND OR SERVICE
- * MESSAGES.
- * ACB CONTAINS A POINTER TO ACNT ( APPLICATION CONNECTION TABLE)
- * WHICH IS THE TABLE OF ALL EXISTING ACNB ( APPLICATION CONNECTION
- * CONTROL BLOCK / EACH FOR EACH CONNECTION TO APPL. ) THE CN/ACN
- * SERVE AS AN INDEX INTO THE TABLE. SEE THE NIP TABLES SECTION
- * OF THIS DOCUMENT.
- *
- * . ACNB/NCNB ( APPLICATION CONNECTION CONTROL BLOCK/NETWORK
- * CONNECTION CONTROL BLOCK). A PAIR OF THESE EXIST FOR EACH
- * LOGICAL CONNECTION ON THE NETWORK. A LOGICAL CONNECTION CAN
- * BE THOUGHT OF AS A CONNECTION BETWEEN AN APPLICATION AND
- * A TERMINAL,OR A CONNECTION BETWEEN TWO APPLICATIONS. A MULTI-
- * TERMINAL SUPPORT APPLICATION WOULD HAVE A PAIR OF ACNB/NCNB FOR
- * EACH OF THE TERMINALS CONNECTED TO THAT APPL. THE ACNB/NCNB
- * PAIR HOLDS ALL INFORMATION UNIQUE TO THAT CONNECTION AND
- * IS USED TO CONTROL ALL DATA TRAFFIC ON THAT CONNECTION. EACH
- * ACNB IS POINTED TO BY ACNT, A TABLE OF ALL ACNB'S ASSOCIATE
- * WITH THIS APPLICATION. NCNB IS POINTED TO BY NCNT, TABLE OF
- * ALL NCNB'S ASSOCIATE WITH THIS LOGICAL LINK.
- * ACB ALSO BY THE APPLICATION NUMBER IN THE ACNB.
- *
- *
- * MESSAGES BEING SENT ON CONNECTION ARE QUEUED ON ACNB/NCNB
- * WHICH REPRESENT THEIR DESTINATION. THUS DATA TRAFFIC THROUGH
- * THE NETWORK IS ACCOMPLISHED BY DEQUEUING DATA FROM BUFFERS
- * (WHERE DATA IS MIXED REGARDLESS OF DESTINATION) SUCH AS IN THE
- * NETWORK INPUT BUFFER PROCESSED BY NEIB, OR THE HOST SIDE
- * BUFFER PROCESSED BY HHIR, AND QUEUING MESSAGE BLOCKS ON THEIR
- * RESPECTIVE NCNB/ACNB.
- *
- * . ACNT ( APPLICATION CONNECTION TABLE ) -
- * TABLE OF ACNB ADDRESSES POINTED TO BY ACB .
- * . NCNT ( NETWORK CONNECTION TABLE ) -
- * TABLE OF NCNB ADDRESSES POINTED TO BY LLCB
- *
- *
- * . NWL (NIP WORK LIST) IS A FIXED SIZE DYNAMICALLY
- * ALLOCATED BUFFER TO RECEIVE THE WORKLIST OF REQUESTS FROM
- * APPLICATIONS. A POINTER TO THE NWL IS STORED IN RA.SSC,
- * WHICH IS USED BY THE OPERATING SYSTEM TO DETERMINE WHERE TO
- * PLACE WORKLISTS FROM APPLICATIONS. NIP WILL MAINTAIN TWO NWL
- * BUFFERS AT ALL TIMES, EXCEPT WHEN SHUTDOWN IS IN
- * PROCESS. AFTER THE OPERATING SYSTEM HAS PLACED
- * A WORKLIST IN THE FIRST NWL, NIP WILL UPDATE RA.SSC TO POINT
- * TO THE SECOND NWL BEFORE IT BEGINS PROCESSING THE FIRST NWL.
- * IF THE WORKLIST CONTAINS ANY MESSAGES TO BE QUEUED, THIS
- * QUEUING IS DONE BY INSERTING THE MESSAGE IN THE DATA RING
- * ASSOCIATED WITH APPROPRIATE ACB/ACNB. THIS IS DONE BY
- * INSERTING APPROPRIATE FORWARD AND BACKWARD POINTERS IN THE
- * BLOCK HEADER. THEN WHEN ALL THE MESSAGES IN THE NWL HAVE BEEN
- * PROCESSED, THE REST (REMAINS) OF THE NWL IS RELEASED. A NEW
- * NWL IS THEN ALLOCATED (EVEN IF NWL PROCESSING WAS SUSPENDED).
- *
- * . AWL (APPLICATION WORK LIST) IS A SIX WORD ENTRY IN ACB
- * WHICH NIP FORMS ITS REPLY TO CERTAIN REQUESTS IN THE NWL.
- * THE AWL GETS SENT BACK TO AIP.
- *
- * . PBI IS THE PIP INPUT BUFFER, ONE PER FRONT END NPU/MDI, INTO
- * WHICH PIP DUMPS ALL UPLINE MESSAGES FROM THE NETWORK. WHENEVER
- * PIP INDICATES THAT THE NEXT MESSAGE DOES NOT FIT INTO THE
- * REMAINDER OF THE CURRENT BUFFER NIP WILL ALLOCATE A NEW
- * INPUT BUFFER. ACCESS TO PBI IS CONTROLLED BY PSEUDO FET"S
- * IN THE PREALLOCATED LABELLED COMMON AREA BUFFTAB.
- *
- * . THE BULK OF THE DYNAMICALLY ALLOCATED BUFFER AREA IS USED FOR
- * ACTUAL MESSAGES, EITHER TO OR FROM TERMINALS (AND APPLICATIONS)
- * OR SUPERVISORY AND SERVICE MESSAGES.
- * MESSAGES GET DEQUEUED FROM THE NWL OR PBI, QUEUED ON AN APPROP-
- * RIATE ACB/ACNB AND THEN DELIVERED TO ITS DESTINATION BY EITHER
- * BEING QUEUED IN THE PIP OUTPUT BUFFER FOR DOWNLINE DATA,
- * OR BEING WRITTEN TO THE APPLICATION"S FIELD LENGTH.
- *
- * 2.0 MESSAGE TRANSMISSION THROUGH NAM
- * IN ORDER TO UNDERSTAND HOW MESSAGES TRAVEL THROUGH NAM IT SEEMS
- * BEST TO DESCRIBE THE FATE OF VARIOUS MESSAGE TYPES FROM THEIR
- * SOURCE TO THEIR DESTINATION.
- *
- * 2.1 DOWNLINE DATA
- *
- * DOWNLINE DATA (ALSO REFERRED TO AS OUTPUT) IS TRIGGERED BY AN AIP
- * CALL NETPUT OR NETPUTF. THE CALLER SPECIFIES THE HEADER ADDRESS
- * AND THE FWA OF THE MESSAGE TEXT. AIP CREATES A WORKLIST ENTRY
- * FOR THE PUT IN NP$NWL BY PUTING A ONE WORD WORKLIST IDENTIFIER
- * IN THE NEXT AVAILABLE WORD IN THE WORK LIST INDICATING THAT THIS
- * IS A PUT (AS OPPOSED TO GET, WAIT, ETC) REQUEST, COPYING THE
- * HEADER ABH BEHIND THIS WORD IN THE NP$NWL AND BY EITHER COPYING
- * THE TEXT OF THE MESSAGE INTO NP$NWL, IF THERE IS ROOM, OR
- * BY INSERTING A POINTER TO THE TEXT AREA INTO THE FIRST WORD
- * (WORKLIST IDENTIFIER) OF THE ENTRY IF THERE IS NO ROOM.
- * IN EITHER CASE AIP WILL REQUEST THE OPERATING SYSTEM TO TRANSFER
- * THIS WORK LIST TO NIP-S RECEIVING BUFFER USING A SYSTEM CONTROL
- * POINT CALL. AIP WILL DO THIS AT THE EARLIEST OCCURANCE OF ONE
- * OF THE FOLLOWING EVENTS:
- *
- * A. THE WORKLIST IS FULL
- * B. THE CURRENT REQUEST EXCEEDS THE SIZE OF THE REMAINING SPACE
- * IN THE WORKLIST
- * C. THE APPLICATION HAS DONE A NETWAIT
- * D. THE APPLICATION HAS DONE A GET TYPE CALL
- * E. THE APPLICATION HAS DONE A NETPUTF WHICH CANNOT BE HANDLED
- * AS A NETPUT.
- * F. THE APPLICATION HAS DONE A NETPUT ABT=4.
- * G. THE APPLICATION HAS DONE A NETCHEK CALL.
- *
- * THE WORKLIST GETS TO A BUFFER IN NIP"S FL POINTED TO BY WORD
- * RA.SCC(51B). NIP PROCESSES EACH ENTRY IN THE WORK LIST
- * SEQUENTIALLY. (FOR THE FORMAT OF THE WORK LIST SEE THE TABLES
- * SECTION OF THIS IMS) NIP WILL KNOW WHICH PARTICULAR APPLICATION
- * THE WORKLIST CAME FROM BY TWO INDEPENDENT PIECES OF INFORMATION
- * IN THE WORKLIST, NAMELY:
- *
- * A. THE JOB IDENTIFIER THAT THE OPERATING SYSTEM PLACES IN FRONT
- * OF THE WORK LIST SENT BY AIP
- * B. THE APPLICATION NUMBER AS ESTABLISHED AT NETON TIME BY NIP
- * AND PASSED BACK WITH EACH WORKLIST
- *
- *
- * AT ANY RATE PROCESS HHIR WILL RECOGNIZE THAT A NEW WORKLIST ENTRY
- * ARRIVED AND WILL CALL HWLP TO PROCESS EACH WORKLIST ENTRY. HWLP
- * RECOGNIZES THAT THE CURRENT ENTRY IS A NETPUT AND CALLS PROCESS
- * HPPUT TO PROCESS THE REQUEST. HPPUT AND ITS HELPER ROUTINE
- * WILL PROCESS THE MESSAGE PUT BY THE APPLICATION AS FOLLOWS:
- *
- * . IF THE MESSAGE TEXT DID NOT FIT INTO THE WORK LIST THEN READ
- * THE MESSAGE TEXT FROM THE APPLICATIONS FIELD LENGTH INTO
- * NIP-S FIELD LENGTH.
- *
- * . IF THE MESSAGE IS A DATA MESSAGE, NIP WILL QUEUE THE MESSAGE
- * IMMEDIATELY TO THE NETWORK OUTBOUND CHAIN UNLESS THE DOWNLINE
- * BLOCK LIMIT FOR THE CONNECTION HAS BEEN REACHED IN WHICH CASE
- * THE MESSAGE IS QUEUED ONTO THE NCNB. THE NCNB IS FOUND BY
- * SEARCHING THROUGH THE VARIOUS TABLES. THE APPLICATION NUMBER
- * ALLOWS NIP TO FIND THE APPROPRIATE APPLICATION CONTROL BLOCK
- * (ACB). THE ACB HAS A POINTER TO THE APPLICATION CONNECTION
- * TABLE (ACNT). KNOWING THE APPLICATION CONNECTION NUMBER OF
- * THE DATA MESSAGE, THE ACNT IS INDEXED TO FIND THE APPROPRIATE
- * APPLICATION CONNECTION BLOCK (ACNB). THE ACNB HAS A POINTER
- * TO THE CORRESPONDING NETWORK CONNECTION BLOCK (NCNB).
- *
- * . FOR ABT=3 NIP CHECKS IF THE MESSAGE IS A SYNCHRONOUS
- * SUPERVISORY MESSAGE OR AN ASYNCHRONOUS SUPERVISORY MESSAGE.
- * IF IT IS A SYNCHRONOUS SUPERVISORY MESSAGE, IT IS PROCESSED
- * AS A DATA MESSAGE. IF IT IS AN ASYNCHRONOUS SUPERVISORY
- * MESSAGE, NIP WILL PROCESS IT IF IT IS LEGAL. IF NOT A LEGAL
- * ASYNCHRONOUS SUPERVISORY MESSAGE, NIP WILL REJECT IT AND
- * SEND AN ERROR LOGICAL SUPERVISORY MESSAGE BACK TO THE
- * APPLICATION THAT SENT IT. THE ASYNCHRONOUS SUPERVISORY
- * MESSAGES WHICH MOST APPLICATIONS ARE ALLOWED TO SEND ARE:
- *
- * . CON/ACRQ - NIP WILL CONVERT THE SUPERVISORY MESSAGE INTO A
- * CR/IAP SUPERVISORY MESSAGE AND SEND IT TO NVF.
- *
- * . CON/END - NIP WILL VERIFY THE APPLICATION HAS THE
- * CONNECTION SPECIFIED IN THE ACN FIELD OF THIS MESSAGE.
- * IF NOT VALID, THE SUPERVISORY MESSAGE IS REJECTED AND AN
- * ERROR LOGICAL SUPERVISORY MESSAGE IS SENT TO THE
- * APPLICATION. IF VALID, A NORMAL RESPONSE IS SENT BACK TO
- * THE APPLICATION AND THE CONNECTION IS SWITCHED TO NVF
- * (NVF WILL BE SENT A CR/RCN SUPERVISORY MESSAGE).
- *
- * . CON/REQ/N/A - NIP WILL CHECK THE STATE OF THE CONNECTION
- * TO VERIFY IT WAS EXPECTING THIS SUPERVISORY MESSAGE FOR
- * THE CONNECTION SPECIFIED IN THE ACN FIELD. IF NOT, THE
- * SUPERVISORY MESSAGE IS REJECTED AND AN ERROR LOGICAL
- * SUPERVISORY MESSAGE IS SENT TO THE APPLICATION. IF THE
- * SUPERVISORY MESSAGE WAS EXPECTED AND IS AN ABNORMAL
- * RESPONSE, THE CONNECTION IS SWITCHED BACK TO NVF. IF
- * IT WAS A NORMAL RESPONSE THEN A INITR NETWORK ELEMENT IS
- * SENT TO THE NETWORK AND THE STATE OF THE CONNECTION IS
- * CHANGED TO WAITING FOR AN INITN ELEMENT RESPONSE. AN
- * CR/ACC SUPERVISORY MESSAGE IS ALSO SENT TO NVF.
- *
- * . DBG/STOP - IF DEBUG MODE IS ON, NIP WILL TAKE A DUMP OF
- * ITS FIELD LENGTH, SIGNAL PIP TO STOP THE NPU(S), AND DROP.
- *
- * . DC/CICT - NIP WILL CHANGE THE INPUT CHARACTER TYPE IN
- * THE ACNB.
- *
- * . DC/TRU - NIP WILL SET DATA TRUNCATION BIT IN ACNB
- * SPECIFIED BY THE ACN. IF THE ACN VALUE IS ZERO, THEN
- * THE ACB AND ALL ITS ACNB WILL HAVE THE FLAG SET.
- *
- * . FC/BRK - NIP WILL FORMAT A NETWORK BREAK ELEMENT (SEE
- * CCP IMS) AND QUEUE IT DIRECTLY TO THE OUTBOUND CHAIN.
- * ANY DOWNLINE DATA QUEUED IN THE NCNB IS DISCARDED. THE
- * STATE OF THE CONNECTION IS SET TO WAITING FOR A NETWORK
- * RESET ELEMENT. ANY UPLINE DATA RECEIVED AHEAD OF THE
- * RESET ELEMENT IS DISCARDED.
- *
- * . FC/INIT/N - NIP WILL FORMAT A NETWORK INITR ELEMENT (SEE
- * CCP IMS) AND QUEUE IT DIRECTLY TO THE NETWORK OUTBOUND
- * CHAIN. ANY DOWNLINE DATA QUEUED IN THE NCNB IS DISCARDED.
- * THE STATE OF HE CONNECTION IS SET TO WAITING FOR A NETWORK
- * INITN ELEMENT. ANY UPLINE DATA RECEIVED AHEAD OF THE
- * INITN ELEMENT ARE QUEUED IN THE ACNB FOR THE APPLICATION.
- *
- * . FC/RST - NIP WILL FORMAT A NETWORK RESET ELEMENT (SEE
- * CCP IMS) AND QUEUE IT DIRECTLY TO THE NETWORK OUTBOUND
- * CHAIN UNLESS NIP WAS NOT EXPECTING THE APPLICATION TO
- * SEND THIS SUPERVISORY MESSAGE, IN WHICH CASE NIP DISCARDS
- * IT AND SENDS AN ERROR LOGICAL SUPERVISORY MESSAGE BACK
- * TO THE APPLICATION. IF THE MESSAGE WAS EXPECTED, NIP
- * WILL UPDATE THE STATE OF THE CONNECTION AND DISCONTIUE
- * DISCARDING ALL UPLINE DATA MESSAGES FOR THAT CONNECTION.
- *
- * . HOP/ALT - NIP WILL VERIFY IF THE APPLICATION IS VALIDATED
- * FOR THE NAM K-DISPLAY. IF NOT, THE SUPERVISORY MESSAGE
- * IS REJECTED AND AN ERROR LOGICAL SUPERVISORY MESSAGE IS
- * SENT TO THE APPLICATION. IF VALID AND THE OPERATOR HAS
- * NOT DIRECTED NIP TO IGNORE ALERTS FROM THIS APPLICATION,
- * NIP WILL POST THE APPLICATION NAME ON ITS ALERT LINE.
- *
- * . HOP/DIS - NIP WILL VERIFY IF THE APPLICATION HAS THE
- * K-DISPLAY ASSIGNED TO IT. IF NOT, THE SUPERVISORY MESSAGE
- * IS REJECTED AND AN ERROR LOGICAL SUPERVISORY MESSAGE IS
- * SENT TO THE APPLICATION. IF VALID, NIP WIL UPDATE ITS
- * K-DISPLAY BUFFERS.
- *
- * . HOP/LOG - NIP WILL WRITE THE MESSAGE TEXT TO ITS DAYFILE.
- *
- * . INTR/APP - NIP WILL FORMAT A ICMD NETWORK ELEMENT AND
- * SEND IT TO THE NETWORK.
- *
- * . INTR/RSP - NIP WILL VERIFY THIS SUPERVISORY MESSAGE WAS
- * EXPECTED FOR THE CONNECTION SPECFIED IN THE ACN FIELD.
- * IF NOT, THE MESSAGE IS REJECTED AND AN ERROR LOGICAL
- * SUPERVISORY MESSAGE IS SENT TO THE APPLICATION. IF IT WAS
- * EXPECTED, NIP WILL FORM A ICMDR NETWORK ELEMENT AND SEND
- * IT TO THE NETWORK. THE STATE OF THE CONNECTION WILL ALSO
- * BE UPDATED TO NO LONGER EXPECT AN INTERRUPT RESPONSE.
- *
- * . LST/FDX OR LST/HDX - NIP WILL CLEAR OR SET THE HALF DUPLEX
- * FLAG IN THE ACNB SPECIFIED BY ACN . IF THE ACN VALUE IS
- * ZERO, THEN THE ACB AND ALL ITS ACCB"S WILL HAVE THE HALF
- * DUPLEX FLAG CLEARED OR SET.
- *
- * . LST/ON OR LST/OFF - NIP WILL TURN THE LIST ON FLAG ON
- * OR OFF IN THE ACNB SPECIFIED IN THE ACN OF THE MESSAGE.
- *
- * . LST/SWH - NIP WILL UPDATE THE LIST NUMBER IN THE ACNB
- * SPECIFIED BY THE ACN FIELD OF THE MESSAGE.
- *
- * . PRU/ON - NIP VERIFIES THE APPLICATION IS ALLOWED TO SEND
- * THIS SUPERVISORY MESSAGE. IF NOT, IT IS DISCARDED AND
- * AN ERROR LOGICAL SUPERVISORY MESSAGE IS RETURNED TO THE
- * APPLICATION. IF VALID, THE NCNB IS FOUND AND CONVERTED
- * TO A PCNB. THE PCNB IS LINKED TO THE PRU CONNECTION
- * RING.
- *
- * NIP PROCESSES ONE SPECIAL SUPERVISORY MESSAGE FROM NS. IF
- * ANY OTHER APPLICATION SENDS THIS SUPERVISORY MESSAGE TO NIP,
- * NIP WILL REJECT THE MESSAGE AND SEND THE APPLICATION AN ERROR
- * LOGICAL SUPERVISORY MESSAGE. THIS SUPERVISORY MESSAGE IS THE
- * FOLLOWING
- *
- * . NPD/REL/R - NIP WILL SEND A HOP/REL SUPERVISORY MESSAGE
- * TO ALL APPLICATIONS.
- *
- * NIP ALSO PROCESSES A SET OF ASYNCHRONOUS SUPERVISORY MESSAGES
- * WHICH ARE ALLOWED ONLY FROM NVF. IF ANY OTHER APPLICATION
- * TRIES TO SEND THEM, NIP WILL REJECT THE MESSAGE AND SEND THE
- * APPLICATION AN ERROR LOGICAL SUPERVISORY MESSAGE. THOSE
- * SUPERVISORY MESSAGES ARE ARE THE FOLLOWING:
- *
- * . CR/IAP/N/A - NVF HAS ACCEPTED OR REJECTED THE APPLICATION
- * TO APPLICATION CONNECTION REQUEST. IF NVF HAS ACCEPTED
- * IT, NIP WILL SEND A ICN/AP/R SUPERVISORY MESSAGE TO THE
- * NETWORK AND THE STATE OF THE CONNECTION IS UPDATED. IF
- * NVF HAS REJECTED THE A-A CONNECTION REQUEST, A CON/ACRQ/A
- * SUPERVISORY MESSAGE IS SENT BACK TO THE APPLICATION AND
- * ALL APPLICABLE TABLE STRUCTURES FOR THE CONNECTION ARE
- * CLEARED.
- *
- * . CR/ITE/N/A - NVF HAS ACCEPTED OR REJECTED THE TERMINAL
- * CONNECTION. IF NVF HAS ACCEPTED IT, NIP WILL SEND AN
- * ICN/TE/N SUPERVISORY MESSAGE RESPONSE AND INITR NETWORK
- * ELEMENT TO THE NETWORK AND UPDATE THE STATE OF THE
- * CONNECTION ACCORDINGLY. IF NVF HAS REJECTED THE TERMINAL
- * CONNECTION, AN ICN/TE/A SUPERVISORY MESSAGE IS SENT TO
- * THE NETWORK AND ALL APPLICABLE TABLE STRUCTURES FOR THE
- * CONNECTION ARE CLEARED.
- *
- * . CR/RAP/N/A - NVF HAS ACCEPTED OR REJECTED THE APPLICATION
- * TO APPLICATION CONNECTION REQUEST. IF NVF HAS ACCEPTED
- * IT, NIP WILL SEND AN ICN/AP/N OR ICN/EX/N SUPERVISORY
- * MESSAGE RESPONSE AND INITR NETWORK ELEMENT TO THE NETWORK
- * AND UPDATE THE STATE OF THE CONNECTION ACCORDINGLY.
- * IF NVF HAS REJECTED THE A-A CONNECTION REQUEST, AN
- * ICN/AP/A OR ICN/EX/A SUPERVISORY MESSAGE IS SENT TO
- * THE NETWORK AND ALL APPLICABLE TABLE STRUCTURES FOR THE
- * CONNECTION ARE CLEARED.
- *
- * . CR/RCN/N/A - NVF HAS ACCEPTED OR REJECTED THE RECONNECT
- * OF A NETWORK CONNECTION. IF NVF HAS ACCEPTED IT, NIP
- * WILL SEND IT AN FC/INIT/R SUPERVISORY MESSAGE AND UPDATE
- * THE STATE OF THE CONNECTION ACCORDINGLY. IF NVF REJECTS
- * THE RECONNECT, IT IS BECAUSE THE CONNECTION WAS BEING
- * SWITCHED TO A SECONDARY APPLICATION AND COULD NOT BE
- * SWITCHED. NIP WILL THEN RECONNECT THE TERMINAL TO THE
- * PRIMARY APPLICATION, SEND IT A CON/REQ/R SUPERVISORY
- * MESSAGE, AND UPDATE THE STATE OF THE CONNECTION.
- *
- * . CR/SWH/R - NVF IS SWITCHING THE CONNECTION FROM ITSELF
- * TO ANOTHER APPLICATION. NIP WILL SWITCH THE CONNECTION
- * TO THE SPECIFIED APPLICATION, SEND THAT APPLICATION A
- * CON/REQ/R SUPERVISORY MESSAGE, AND UPDATE THE STATE OF
- * THE CONNECTION UNLESS THE SPECIFIED APPLICATION IS NO
- * LONGER AVAILABLE IN WHICH CASE, NIP WILL SEND A CR/RCN/R
- * SUPERVISORY MESSAGE BACK TO NVF. IN ANY CASE NIP ALWAYS
- * RESPONDS TO THE CR/SWH/R SUPERVISORY MESSAGE WITH A
- * CR/SWH/N SUPERVISORY MESSAGE RESPONSE.
- *
- * . CR/TRM/R - NVF IS TERMINATING ONE OF ITS CONNECTIONS.
- * NIP WILL CLEAN UP ANY DATA STRUCTURES ASSOCIATED WITH THE
- * HOST SIDE PROCESSING OF THE CONNECTION AND SEND NVF A
- * CR/TRM/N SUPERVISORY MESSAGE RESPONCE. ON THE NETWORK
- * SIZE OF THE CONNECTION, NIP WILL SEND A TCN/TA/R
- * SUPERVISORY MESSAGE TO THE NETWORK AND UPDATE THE STATE
- * OF THE CONNECTION ACCORDINGLY.
- *
- * . FAIL/APP/N - NIP WILL TERMINATE ALL SCP LONG AND SHORT
- * TERM CONNECTIONS IT HAS WITH THE APPLICATION. ALL DATA
- * STRUCTURES ASSOCIATED WITH THE APPLICATION ARE ALSO
- * CLEARED.
- *
- * . NET/OFF/N - NIP WILL TERMINATE ALL SCP LONG AND SHORT
- * TERM CONNECTIONS IT HAS WITH THE APPLICATION. ALL DATA
- * STRUCTURES ASSOCIATED WITH THE APPLICATION ARE ALSO
- * CLEARED.
- *
- * . NET/ON/N/A - NVF HAS ACCEPTED OR REJECTED THE NETON
- * REQUEST OF THE APPLICATION. IF NVF HAS ACCEPTED THE
- * NETON REQUEST, NIP WILL SWAP IN THE APPLICATION, SET UP
- * A SCP LONG TERM CONNECTION WITH THE APPLICATION AND WRITE
- * BACK TO AIP-S FIELD LENGTH TO INFORM IT THE NETON WAS
- * ACCEPTED. IF NVF REJECTED THE NETON REQUEST, NIP WILL
- * SWAP IN THE APPLICATION, WRITE BACK TO AIP-S FIELD
- * LENGTH THE REASON CODE FOR WHY THE NETON WAS REJECTED,
- * AND TERMINATE THE SCP SHORT TERM CONNECTION IT HAS WITH
- * THE APPLICATION.
- *
- * . FOR ABT= 4 NIP ASSURES THAT THE SENDER IS EITHER NS OR CS.
- * IF NOT NIP REJECTS THE MESSAGE. THESE MESSAGE HAVE A
- * SPECIAL APPLICATION BLOCK HEADER WORD THAT IS ACTUALLY A
- * NETWORK HEADER WORD. NIP SENDS THESE ASYNCHRONOUS
- * SUPERVISORY MESSAGES TO THE NETWORK FOR THE NPU TO PROCESS.
- *
- * IN SUMMARY THEN, A NETPUT CALL TO AIP RESULTS IN THE MESSAGE THUS
- * PUT BEING EITHER COMPLETELY PROCESSED AND DISCARDED BY NIP
- * OR CONVERTED TO A NEW MESSAGE OR NETWORK ELEMENT AND/OR QUEUED TO
- *
- * A. PIP OUTBOUND CHAIN (FOR PIP TO SEND TO NETWORK),
- *
- * B. A NCNB ( IF IT WAS A DATA MESSAGE OR SYNCHRONOUS SUPERVISORY
- * MESSAGE AND THE LOGICAL LINK IS IN REGULATION OR THE
- * CONNECTIONS-S DOWNLINE BLOCK LIMIT HAS BEEN REACHED.
- *
- * C. A SPECIAL NIP CHAIN (IF IT WAS A MESSAGE FOR A INTRAHOST
- * APPLICATION TO APPLICATION CONNECTION).
- *
- * D. NVF-S ACB FOR SPECIAL ASYCHRONOUS SUPERVISORY MESSAGE
- * PROCESSING.
- *
- * DOWNLINE NETWORK MESSAGES ARE PLACED IN THE PIP OUTBOUND CHAIN OR
- * NCNB OR SPECIAL NIP CHAIN BY CALLING SUBROUTINE NFOB.
- * DOWNLINE NETWORK MESSAGES ARE ALWAYS IN ONE OF THREE PRIORITIES.
- * NIP THUS HAS THREE DIFFERENT CHAINS FOR DOWNLINE MESSAGES, ONE
- * FOR EACH PRIORITY. THE HIGHEST PRIORITY MESSAGES ARE ASYNCHRONOUS
- * SUPERVISORY MESSAGES QUEUED FOR EITHER PIP, CCP, OR THE MDI TO
- * PROCESS. THESE MESSAGES ORIGINATE FROM EITHER NIP, NS, OR CS.
- * DOWNLINE BACK NETWORK ELEMENTS ARE ALSO SENT ON THIS HIGHEST
- * PRIORITY CHAIN TO HELP PREVENT CCP FROM GOING INTO REGULATION.
- * THE SECOND HIGHEST PRIORITY CHAIN IS USED FOR HIGH PRIORITY
- * CONNECTIONS. ALL NETWORK ELEMENTS EXCEPT BACKS FOR HIGH PRIORITY
- * CONNECTIONS ARE SENT ON THE SECOND CHAIN. THE THIRD CHAIN IS
- * USED FOR SENDING MESSAGES ON LOW PRIORITY CONNECTIONS.
- * THERE IS A SET OF THREE OUTBOUND CHAINS FOR EACH FRONT END NPU
- * AND MDI.
- *
- * . FOR BT = BLK, MSG, QBLK, OR QMSG, THE 8 BIT STATUS FIELD FROM
- * THE ABH FIELD IS MOVED INTO THE NETWORK BLOCK DBC FIELD.
- * THE APPLICATION BLOCK HEADER IN CONVERTED TO A NETWORK HEADER
- * USING ADDRESSING INFORMATION FROM THE NCNB.
- *
- * . THE CHARACTER COUNT AND ACT FIELDS FROM THE ABH ARE PASSED
- * TO PIP IN THE CM WORD CONTAINING THE NETWORK BLOCK HEADER
- * + OPTIONAL DBC.
- *
- * . FOR ALL DATA MESSAGES AND SYNCHRONOUS SUPERVISORY MESSAGES,
- * AN ACKNOWLEDGE QUEUE ENTRY IS CREATED WHEN THE MESSAGE IS
- * QUEUED TO THE NETWORK OUTBOUND CHAIN. THE ACK QUEUE ENTRY IS
- * JUST A COPY OF THE ABH, EXCEPT THAT A BSN IS INSERTED IN
- * THE ADR FIELD OF THE ABH.
- *
- * THE DOWNLINE OUTBOUND CHAIN IS CONTROLED THROUGH THE NETWORK
- * BUFFER TABLE (NBT). THERE IS ONE NBT ENTRY FOR EACH
- * FRONT END NPU AND MDI. THE NBT ENTRY ITSELF IS MADE UP OF
- * FIVE PSEUDO FETS. THE FIRST TWO PSEUDO FETS ARE USED FOR UPLINE
- * MESSAGE PROCESSING. THE LAST THREE PSEUDO FETS ARE USED FOR
- * DOWNLINE MESSAGE PROCESSING, ONE FOR EACH OF THE THREE PRIORITIES.
- * THE DOWNLINE MESSAGE PSEUDO FETS ARE DIFFERENT FROM THE USUAL
- * CONCEPT OF A FET SINCE IT DOES NOT POINT TO A CONTIGUOUS BUFFER
- * IN CORE, RATHER IT POINTS TO MESSAGES LINKED TOGETHER BY FORWARD
- * POINTERS. QUEUEING THE MESSAGE IN THE OUTBOUND CHAIN CONSISTS OF
- * THE FOLLOWING STEPS:
- *
- * .INITIALLY ALL FET POINTERS EQ 0. THEN THEY ARE USED AS FOLLOWS
- *
- * FIRST = ADDR OF FIRST BUFFER IN OUTBOUND CHAIN
- * IN = ADDR OF LAST BUFFER QUEUED IN OUTBOUND CHAIN
- * OUT = ADDR OF LAST BUFFER IN OUTBOUND CHAIN PROCESSED BY
- * PIP
- * LIMIT = UNUSED
- *
- * .IF OUT " 0, PIP HAS PROCESSED MESSAGES QUEUED ON THE OUTBOUND
- * CHAIN. FIRST IS RESET TO OUT AND ALL MESSAGES BETWEEN FIRST
- * AND OUT ARE RELEASED TO THE FREE BUFFER CHAIN.
- *
- * .IF IN " 0, NIP HAS QUEUED MESSAGES TO THE OUTBOUND CHAIN. THE
- * FORWARD POINTER OF THE LAST ENTRY QUEUED BY NIP IS UPDATED TO
- * POINT TO THE NEW ENTRY.
- *
- * .IF IN = 0, THIS IS FIRST MESSAGE TO BE QUEUED IN THE OUTBOUND
- * CHAIN. SET FIRST TO POINT TO THE FIRST MESSAGE.
- *
- * .SET IN TO POINT TO THE NEW MESSAGE.
- *
- * ONCE A MESSAGE IS PUT IN PIP-S OUTPUT BUFFER IT IS A NONMOVABLE
- * BUFFERS AND STAYS NONMOVABLE UNTIL IT GETS RELEASED TO THE FREE
- * SPACE.
- *
- * PIP WILL READ AND DELIVER TO THE NPU MESSAGES IN PRIORITY ORDER.
- * IT WILL SEND TO THE NPU/MDI ALL THE ASYCHRONOUS SUPERVISORY
- * MESSAGES FIRST. THEN IT WILL SEND ALL HIGH PRIORITY CONNECTION
- * MESSAGES UNTIL THERE ARE NONE LEFT OR AN ASYNCHRONOUS
- * SUPERVISORY MESSAGE GETS QUEUED TO BE SENT TO THE NPU/MDI.
- * FINALLY IT WILL SEND ALL LOW PRIORITY CONNECTION MESSAGES UNTIL
- * THERE ARE NONE LEFT OR AN HIGHER PRIORITY MESSAGE IS QUEUED.
- *
- * PIP"S PROCESSING OF AN OUTBOUND MESSAGE CONSIST OF THE FOLLOWING
- * STEPS:
- *
- * . IF IN = OUT ALL MESSAGES IN THIS BUFFER HAVE BEEN PROCESSED
- *
- * . IF IN " OUT THERE ARE SOME MESSAGES IN THE CHAIN TO BE
- * PROCESSED. IF OUT = 0 THE NEXT MESSAGE TO BE PROCESSED IS
- * POINTED TO BY FIRST. IF OUT "0 THEN OUT POINTS TO THE
- * FWA OF THE LAST MESSAGE OUTPUT. THE FORWARD POINTER IN THE
- * LAST MESSAGE THEN POINTS TO THE NEXT MESSAGE TO BE OUTPUT.
- *
- * . ONCE PIP DETERMINES WHERE THE NEXT MESSAGE IS IT READS IT UP
- * FROM CM. AFTER IT HAS READ THE MESSAGE IT DETERMINES IF THE
- * DESTINATION NODE NUMBER IS PIP-S OWN NODE NUMBER (THE HOST
- * NODE NUMBER ORIGINALLY FOUND IN THE EST). IF IT IS, THEN
- * PIP WILL COMPLETELY PROCESS THAT MESSAGE (IT IS A MESSAGE
- * FROM NS TO PIP. THIS IS THE MECHANISM USED TO LOAD, DUMP, OR
- * STATUS THE SAM PROGRAM OR NPU OR MDI). OTHERWISE PIP WILL
- * REFORMAT THE MESSAGE AS FOLLOWS:
- *
- * . IF ACT IS 4 CONVERT TO ASCII, ONE ASCII CHARACTER PER
- * 12 BIT PP BYTE. 12-66 BITS OF ZEROES GET CONVERTED TO
- * A <US>.
- *
- * . CHANGE 8 BIT ASCII TO 12 BIT ASCII
- *
- * . IF BT = BLK, MSG, QBLK, OR QMSG, TAKE THE 8 BITS FROM THE
- * HEADER AND MAKE IT THE FIRST BYTE OF THE MESSAGE TEXT
- * TO BE TRANSMITTED (DBC)
- *
- * . THUS THE MESSAGE TRAMSMITTED BY PIP TO CCP/MDI IS IN
- * NETWORK FORMAT. FOR ITS EXACT FORMAT SEE THE NHP/CCP IFS.
- * OVER THE COUPLER THE UPPER 4 BITS OF EACH 12 BIT BYTE ARE
- * STRIPPED SO THAT ONLY THE 8 BITS ARRIVE AS 8 BIT BYTES
- * TO BE RECEIVED BY CCP.
- *
- * . AFTER THE MESSAGE IS PROCESSED BY PIP EITHER BY PERFORMING
- * THE APPROPRIATE ACTION OR BY SENDING THE MESSAGE OVER THE
- * COUPLER TO THE NPU, IT WILL UPDATE THE PSEUDO FET IN NIP
- * SUCH THAT THE OUT POINTER POINTS TO THE LAST MESSAGE OUTPUT.
- *
- * NIP WILL RELEASE MESSAGES PROCESSED BY PIP BY UPDATING THE
- * FIRST POINTER (FIRST=OUT) AND BY CALLING MRELS TO RELEASE
- * THE VARIOUS LINKED MESSAGES BETWEEN THE OLD FIRST POINTER AND
- * THE NEW FIRST POINTER.
- * THE ONLY OTHER ASPECT TO REMEMBER ABOUT DOWNLINE DATA IS THAT
- * ANYTHING (BLK-S, MSG-S, QBLK-S, QMSG-S, OR CMD-S) SENT ON A
- * CONNECTION WILL BE ACKNOWLEDGED
- * BY CCP/MDI, AND THIS ACKNOWLEDGEMENT WILL BE DELIVERED
- * TO THE APPLICATION. THE METHOD BY WHICH THIS IS DONE WILL BE
- * DISCUSSED IN THE UPLINE DATA (NEXT) SECTION OF THIS IMS.
- *
- *
- * 2.2 UPLINE DATA
- *
- * UPLINE DATA (ALSO REFERRED TO AS INPUT OR INBOUND DATA) ORIGINATES
- * FROM EITHER PIP, CCP, THE MDI, A TERMINAL DEVICE CONNECTED TO THE
- * NETWORK, OR FROM ANOTHER APPLICATION RESIDING IN A HOST CONNECTED
- * TO THE NETWORK.
- *
- * AS MENTIONED EARLIER, THE NETWORK BUFFER TABLE CONTAINS TWO PSUEDO
- * FETS FOR UPLINE DATA PROCESSING. TWO PSUEDO FETS ARE USED BECAUSE
- * A DOUBLE BUFFERING SCHEME IS USED FOR RECEIVING UPLINE DATA. NIP
- * INITIALLY ALLOCATES ONE BUFFER FOR RECEIVING UPLINE DATA. THIS
- * BUFFER IS POINTED TO BY ONE OF THE PSEUDO FET. THE BUFFER IS BIG
- * ENOUGH TO HOLD THE LARGEST NETWORK MESSAGE (WHICH IS 2043
- * CHARACTERS) BUT WILL NORMALLY CONTAIN SEVERAL SMALLER MESSAGES
- * SINCE PIP WRITES MULTIPLE MESSAGES INTO THE BUFFER UNTIL THE
- * BUFFER IS NOT BIG ENOUGH FOR THE NEXT UPLINE MESSAGE. EACH
- * MESSAGE BEGINS WITH A BUFFER HEADER WORD WHICH CONSISTS OF A
- * BUFFER ID AND A BUFFER SIZE WHICH IS THE SIZE OF THE UPLINE
- * MESSAGE IN WORDS INCLUDING THE BUFFER HEADER WORD. WHEN PIP
- * DETECTS THAT THE BUFFER IS NO LONGER BIG ENOUGH, IT WILL SET A
- * FLAG IN THE PSEUDO FET INFORMING NIP THAT IT IS NO LONGER USING
- * THE BUFFER AND NIP CAN RELEASE THE REMAINING BUFFER SPACE.
- * NIP ALLOCATES A NEW BUFFER WHEN EITHER THE EXISTING BUFFER IS OVER
- * HALF USED OR PIP HAS SET THE FLAG INDICATING IT IS THROUGH WITH
- * THE EXISTING BUFFER AND NIP NEEDS TO ALLOCATE A NEW ONE.
- * THE NEW BUFFER IS POINTED TO BY THE FET THAT IS CURRENTLY NOT
- * BEING USED. THUS NIP AND PIP TOGGLE BETWEEN USING THE TWO FETS.
- * AFTER NIP ALLOCATES THE BUFFER,
- * NIP SETS A FLAG IN THE PSEUDO FET TO INFORM PIP THAT THE PSUEDO
- * FET CONTAINS VALID BUFFER POINTERS. NIP PROCESSES UPLINE MESSAGES
- * FROM ONE UPLINE BUFFER AT A TIME EVEN THOUGH TWO BUFFERS MAY
- * EXIST. NIP BEGINS PROCESSING WITH THE FIRST BUFFER ALLOCATED AND
- * CONTINUES PROCESSING THAT UPLINE BUFFER UNTIL PIP INFORMS NIP THAT
- * IT IS THROUGH USING THE BUFFER AND IT CAN BE RELEASED. AT THAT
- * POINT, NIP WILL SWITCH TO THE SECOND BUFFER (IF NOT ALREADY
- * ALLOCATED, IT IS ALLOCATED AT THIS POINT). WHEN PIP DETECTS THAT
- * THE UPLINE BUFFER IS IS CURRENTLY USING IS NOT BIG ENOUGH FOR THE
- * NEXT MESSAGE, IT WILL SWITCH TO THE SECOND UPLINE DATA BUFFER IF
- * IT HAS ALREADY BEEN ALLOCATED.
- *
- * WHEN PIP IS READY TO RECEIVE DATA FROM THE LOCAL NPU, IT FUNCTIONS
- * THE COUPLER TO READ THE NPU STATUS WORD. WHEN THE NPU RETURNS A
- * -INPUT AVAILABLE, LESS THAN 256 CHARACTERS OR LESS THAN 2043
- * CHARACTERS- STATUS, PIP PROCEEDS TO DETERMINE IF THERE IS ENOUGH
- * SPACE IN NIP-S INBOUND BUFFER TO ACCOMODATE THE INCOMING MESSAGE.
- * IF THERE IS NOT ENOUGH BUFFER SPACE AND NIP HAS NOT ALLOCATED A
- * SECOND BUFFER, PIP SENDS A - NOT READY FOR INPUT - ORDER WORD TO
- * NOTIFY THE NPU THE HOST IS NOT YET READY TO
- * ACCEPT THE INPUT. IF THERE IS SPACE
- * AVAILABLE, PIP WOULD FUNCTION THE COUPLER TO INPUT DATA AND
- * ACTIVATE THE CHANNEL TO RECEIVE UPLINE DATA VIA THE IAM INSTRUCT-
- * ION. INPUT DATA TRANSFER TERMINATES WHEN COUPLER DISCONNECTS THE
- * CHANNEL FOLLOWING TRANSFER OF THE LAST CHARACTER (WITH BIT 11 SET)
- * OF THE UPLINE DATA. PIP DETERMINES
- * THE AMOUNT OF DATA IT RECEIVES FROM THE A-REGISTER CONTENT WHEN
- * THE IAM INSTRUCTION IS COMPLETED, SINCE THE A-REGISTER
- * NOW HOLDS THE BLOCK LENGTH (A-REGISTER CONTENT WHEN IAM
- * IS CALLED) MINUS THE NUMBER OF REAL DATA WORDS READ. THE NETWORK
- * SENDS A MAXIMUM OF 2043 CHARACTERS FOR EACH UPLINE BLOCK. FOR
- * SUCH LARGE BLOCKS, BECAUSE OF THE LIMITED PIP BUFFER SPACE, IT
- * MAY TAKE MORE THAN ONE INPUT OPERATIONS TO COMPLETE THE INPUT
- * TRANSFER. PIP WRITES THE INPUT DATA TO NIP-S INBOUND BUFFER AND
- * UPDATES THE -IN- POINTER IN THE INPUT FET TO POINT TO THE LAST
- * MESSAGE INPUT. MESSAGE TEXT LENGTH IN THE NETWORK HEADER IS ALSO
- * UPDATED TO REFLECT THE PROPER CHARACTER COUNT (CHARACTER TRANS-
- * FERRED MINUS THE HEADER SIZE, FOR BLOCK TYPES -BLK- AND -MSG- AN
- * ADDITIONAL CHARACTER FOR THE DATA BLOCK CLARIFIER IS INCLUDED IN
- * THE HEADER).
- *
- * INBOUND DATA IS ALL DATA FROM NETWORK TO NIP. ALL DATA IS
- * TRANSMITTED TO NIP BY PIP AND PLACED IN INBOUND MESSAGE BUFFERS
- * PROVIDED BY NIP.
- *
- * NIP INBOUND FET PROTOCOL CONSISTS OF:
- *
- * . FET INITIALIZATION STATE
- *
- * . WHEN NIP LINKS A BUFFER TO FET, FIRST POINTER = IN = OUT
- * = START OF BUFFER. LIMIT POINTER = BUFFER LAST WORD
- * ADDRESS + 1 AND NIP CLEARS THE BUSY BIT IN THE LAST WORD
- * OF THE FET.
- *
- * . IF OUT " IN, NIP USES THE OUT POINTER TO GET THE UPLINE MSG
- * ADDRESS. NIP DELINKS A MESSAGE FROM THE INBOUND CHAIN AND
- * UPDATES OUT TO POINT TO THE NEXT UPLINE MSG. IF IN = OUT, ALL
- * MESSAGES HAVE BEEN PROCESSED FROM THE CURRENT BUFFER. IF
- * OUT IS GREATER THAN THE MIDDLE BUFFER POINTER, A NEW BUFFER IS
- * ALLOCATED FOR THE SECOND INBOUND FET. ITS FET POINTERS ARE
- * INITIALIZED AS MENTIONED ABOVE. NIP ALSO SETS THE FLAG TO
- * INFORM PIP THE FET CONTAINS VALID BUFFER POINTERS.
- *
- * . IF THE RELEASE BIT IS SET IN THE INBOUND FET, NIP CHECKS IF
- * A SECOND BUFFER HAD NOT ALREADY BEEN ALLOCATED. IF NOT, IT
- * ALLOCATES IT RIGHT AWAY. IT THEN PROCESSES THE MESSAGES IN
- * THE CURRENT INBOUND BUFFER AND RELEASES ANY REMAINING SPACE
- * AFTER IT IS THROUGH PROCESSING ALL THE MESSAGES.
- *
- * PIP INBOUND FET PROTOCOL CONSISTS OF:
- *
- * . PIP USES IN POINTER TO BEGIN THE POT HEADER STORAGE FOLLOWED
- * BY THE MESSAGE. PIP SETS IN = ADDRESS OF THE NEXT FREE
- * LOCATION IN THE BUFFER.
- *
- * . IF THE MESSAGE CANNOT FIT IN BUFFER, PIP SETS THE RELEASE FLAG
- * FET.
- *
- * . IF THE RELEASE FLAG IS SET OR THE BUFFER AVAILABLE FLAG IS NOT
- * SET, PIP WILL NOT USE THIS BUFFER.
- *
- * THE NIP ROUTINE NEIB EMPTIES THE INPUT BUFFER(PBI) THAT PIP HAS
- * FILLED WITH NETWORK DATA.
- *
- * . IF IN = OUT THEN THE PIP INPUT BUFFER IS EMPTY AND NIP RETURNS
- * TO ITS MAIN LOOP IN XEXEC.
- *
- * . IF IN " OUT THEN THE INPUT BUFFER IS NOT EMPTY. THE CURRENT
- * MESSAGE IS LOCATED AT OUT.
- *
- * ONCE NIP HAS RECEIVED A MESSAGE FROM PIP, NIP CONVERTS THAT
- * MESSAGE"S NETWORK HEADER (DN,SN,CN,...) TO AN APPLICATION BLOCK
- * HEADER (ABT,ABN,ACT,TLC...).
- *
- * IF THE MESSAGE"S CONNECTION NUMBER (CN) IS ZERO, THEN THE MESSAGE
- * IS AN ASYNCHRONOUS SUPERVISORY MESSAGES DESTINED FOR EITHER NIP,
- * NS, OR CS TO PROCESS. NIP DETERMINES WHO PROCESSES THE
- * MESSAGE BASED ON THE PFC VALUE OF THE SUPERVISORY MESSAGE.
- * MESSAGES DESTINED FOR CS HAVE A PFC VALUE IN THE RANGE OF 14 TO
- * 47. MESSAGES DESTINED FOR NS HAVE A PFC VALUE IN THE RANGE OF
- * 0 TO 13. FOR NETWORK MESSAGES DESTINED FOR CS/NS, NIP DOES NOT
- * CREATE THE NORMAL APPLICATION BLOCK HEADER WORD. INSTEAD THE
- * NETWORK HEADER IS SHIFTED TO THE LEFT AND THE SPECIAL BLOCK HEADER
- * TYPE OF 4 IS ADDED. THE MESSAGE IS THEN QUEUED TO NS/CS-S ACB.
- * IF THE SUPERVISORY MESSAGE IS NOT IN THESE RANGES, THEN NIP CHECKS
- * IF IT IS ONE OF THE ONES FOR NIP TO PROCESS. IF NOT, NGIGO IS
- * CALLED TO DISCARD THE MESSAGE. NPNIPSM IS CALLED TO PROCESS ALL
- * SUPERVISORY MESSAGES DESTINED FOR NIP.
- * IF THE CURRENT MESSAGE-S CONNECTION NUMBER (CN) IS NON-ZERO, THEN
- * THE MESSAGE IS PROCESSED BY THE NETWORK BLOCK STATE TABLE
- * PROCESSOR UNLESS IT IS A DATA MESSAGE IN WHICH CASE THE STATE
- * TABLE PROCESSOR IS BYPASSED. THE MESSAGE IS QUEUED TO THE
- * ACNB OF THE APPLICATION CONNECTION CORRESPONDING TO THE NETWORK
- * CONNECTION OF THE UPLINE MESSAGE. PROCESSING OF THE MESSAGE BY
- * THE NETWORK BLOCK STATE TABLE PROCESSOR IS DETERMINED BY THE STATE
- * OF THE CONNECTION AND THE BLOCK TYPE OF THE UPLINE MESSAGE.
- *
- * . BLK,MSG,CMD,QMSG,QBLK - IF STILL BEING ESTABLISHED, NIP
- * DISCARDS THESE BLOCK TYPES. OTHERWISE
- * THE MESSAGE IS QUEUED TO THE ACNB
- * AND THE APPLICATION IS SWAPPED IN
- * IF IT HAD PREVIOUSLY BEEN SWAPPED
- * OUT (OSCHAPP CALLED).
- *
- * . BACK - NIP VERIFIES THE BSN OF THE BACK MATCHES THE ONE IT WAS
- * EXPECTED. IF IT MATCHES, A FC/ACK SUPERVISORY MESSAGE
- * IS CREATED AND QUEUED ON THE APPLICATION-S ACB DATA
- * RING. THE ASSOCIATED ACKNOWLEDGE QUEUE ENTRY FOR THAT
- * BACK IS RELEASED. IF THE BSN DOES NOT MATCH, THE
- * ENTIRE ACKNOWLEDGE QUEUE IS SEARCHED FOR A MATCH. IF
- * NONE IS FOUND, THE BACK BLOCK IS DISCARDED. IF A MATCH
- * IS FOUND, A FC/NAK SUPERVISORY MESSAGE IS CREATED FOR
- * EACH ACKNOWLEDGE QUEUE ENTRY BEFORE THE MATCHING ONE.
- * A FC/ACK SUPERVISORY MESSAGE IS THEN CREATED FOR THE
- * MATCHING ONE AND ALL ACKNOWLEDGE QUEUE ENTRIES FOR
- * WHICH AN FC/ACK OR FC/NAK WAS CREATED ARE RELEASED.
- *
- * . BRK - NIP RELEASES ALL DATA AND SYNCHRONOUS SUPERVISORY
- * MESSAGES QUEUED DOWNLINE IN THE NCNB. A FC/BRK
- * SUPERVISORY MESSAGE IS CREATED AND QUEUED TO THE
- * THE APPLICATION-S ACB DATA RING.
- * THE STATE OF THE CONNECTION IS CHANGED TO WAITING
- * FOR FC/RST SUPERVISORY MESSAGE RESPONSE FROM THE
- * APPLICATION.
- *
- * . ICMD - NIP CREATES A INTR/USR SUPERVISORY MESSAGE AND QUEUES
- * IT TO THE APPLICATION-S ACB DATA RING. THE STATE
- * OF THE CONNECTION IS UPDATED TO EXPECT A INTR/RSP
- * SUPERVISORY MESSAGE RESPONSE FROM THE APPLICATION.
- *
- * . ICMDR - NIP CREATES A INTR/RSP SUPERVISORY MESSAGE AND QUEUES
- * IT TO THE APPLICATION-S ACB DATA RING. THE STATE
- * OF THE CONNECTION IS UPDATED TO REFLECT RECEIVING
- * THE ICMDR BLOCK.
- *
- * . INITR - NIP RESPONDS TO THE INITR BLOCK BE SENDING A INITN
- * BLOCK BACK TO THE NETWORK IN RESPONSE. THE UPLINE
- * DATA PATH HAS NOT BEEN INITIALIZED.
- *
- * . INITN - NIP CREATES A FC/INIT SUPERVISORY MESSAGE AND QUEUES
- * IT TO THE APPLICATION-S ACB DATA RING. THE STATE
- * OF THE CONNECTION IS UPDATED TO EXPECT AN FC/INIT/N
- * SUPERVISORY MESSAGE FROM THE APPLICATION.
- *
- * . RST - NIP CREATES A FC/RST SUPERVISORY MESSAGE AND QUEUES
- * IT TO THE APPLICATION-S ACB DATA RING. THE STATE
- * OF THE CONNECTION IS UPDATED TO REFLECT RECEIVING
- * THE RESET BLOCK.
- *
- * . TERM - IF THE TERM IS IN RESPONSE TO A PREVIOUS TERM SENT BY
- * NIP TO THE NETWORK, NIP RESPONDS WITH A TCN/TA/N
- * SUPERVISORY MESSAGE AND CLEANS UP ALL DATA STRUCTURES
- * ASSOCIATED WITH THE NETWORK SIDE OF THE CONNECTION.
- * IF THE TERM IS IN RESPONSE TO A TCN/TA/R SUPERVISORY
- * MESSAGE SENT BY NIP TO THE NETWORK, NIP RESPONDS
- * WITH A TERM BLOCK RESPONSE. THE STATE OF THE
- * CONNECTION IS UPDATED TO EXPECT THE TCN/TA/N
- * SUPERVISORY MESSAGE.
- *
- * IF THE MESSAGE IS UNRECIGNIZABLE (ILLEGAL BLOCK TYPE, ACB OR
- * ACNB NOT FOUND) THEN NGIGO IS CALLED TO DAYFILE THE MESSAGE
- * TO NIP DAYFILE.
- *
- * AN APPLICATION MAY READ THE MESSAGES QUEUED FOR IT BY CALLING
- * NETGET,NETGETL,NETGETF, OR NETGTFL. THESE AIP ROUTINES COMMUNICATE
- * WITH NIP VIA SYSTEM CONTROL POINT CALLS. NIP WILL WRITE THE TEXT
- * OF THE MESSAGE DIRECTLY TO THE AREA THAT THE APPLICATION HAS
- * RESERVED FOR THE TEXT. AIP WILL WRITE THE APPLICATION BLOCK HEADER
- * TO THE HEADER AREA RESERVED BY THE APPLICATION.
- *
- * AS TO A TEXT THAT IS LONGER THAN THE APPLICATION SPECIFIED BUFFER,
- * THERE ARE OPTION SET IN ACNB BY SENDING OR NOT SENDING DC/TRU
- * SUPERVISORY MESSAGES FOR THE ACNB TO NIP.
- * IF AN APPLICATION HAS NOT SENT THE DC/TRU MESSAGE, THEN THE
- * TEXT WILL NOT BE DELIVERED AND AIP OR NIP SETS A FLAG IN ABH TO
- * INDICATE THAT THE INPUT BLOCK WAS NOT DELIVERABLE. THE TEXT LENGTH
- * IN CHARACTERS SPECIFIED IN THE ABH WILL BE THE ACTUAL SIZE OF THE
- * TEXT,SO THAT THE APPLICATION MAY REPEAT THE GET REQUEST WITH A
- * LARGER BUFFER SIZE. IF AN APPLICATION HAS SENT THE DC/TRU,
- * THEN NIP SETS A FLAG IN ABH TO INDICATE THAT THE MESSAGE IS
- * TRUNCATED AND DELIVERS THE MESSAGE TRUNCATED TO THE LENGTH
- * OF THE SPECIFIED BUFFER.
- *
- * IF AN APPLICATION HAS REQUESTED THAT HALF DUPLEX MODE IS ON
- * (BY SENDING NIP A LST/HDX SUPERVISORY MESSAGE), THEN AFTER
- * ONE MSG BLOCK HAS BEEN READ FROM THE HOST SIDE ACNB, A
- * TEMPORARY LIST OFF FLAG IS SET AND THIS ACNB IS LONGER
- * CHECKED FOR UPLINE DATA UNTIL THE APPLICATION SENDS A DOWN-
- * LINE MSG OR RETURNS TO FULL DUPLEX MODE BY SENDING NIP THE
- * SUPERVISORY MESSAGE LST/FDX. HALF DUPLEX ON ALLOWS THE
- * APPLICATION TO IMPLEMENT TYPE-AHEAD FOR TERMINAL USERS.
- *
- * NETWORK PRODUCTS DOCUMENTATION PAGE
- * NAM INTERNAL SPECIFICATION DATE.
- * 3.0 NIP TABLE STRUCTURE
- *
- * NAM COMMON DECKS CONTAIN TEMPLATES FOR VARIOUS TABLES, COMMON
- * BLOCKS, AND VALUES FOR FREQUENTLY USED VARIABLES. NIP COMMON
- * DECKS ARE ARRANGED ALPHABETICALLY EXCEPT WHEN ONE COMMON DECK
- * USES VALUES FROM ANOTHER COMMON DECK. THE DOCUMENTATION THAT
- * FOLLOWS COVERS COMMON DECKS USED BY NAM ONLY, BUT NOT
- * THE COMMON DECKS USED THROUGHOUT NETWORK HOST PRODUCTS FOR THE
- * VARIOUS SUPERVISORY MESSAGES. THE SUPERVISORY MESSAGE FORMATS
- * ARE DOCUMENTED IN THE NAM RM (FOR USER APPLICATION SUPERVISORY
- * MESSAGES) AND IN THE SUPERVISION (CS-NS) IMS FOR MESSAGES USED
- * BY THE SUPERVISORS.
- #
- *ENDIF
- CONTROL EJECT;
- XREF BEGIN
- PROC IRECVR; # INITIATE RECOVERY #
- PROC OVLCALL; # LOAD OVERLAY #
- PROC XEXEC; # GOTO EXECUTION CONTROL PROCEDURE #
- END
- #* * * * * * * * * * ---------- TLIST ----------* * * * * * * * * * #
- CONTROL EJECT;
- # * * * * * * * * * * * * * * * --- CRCOM --- * * * * * * * * * * * * *#
- *CALL CRCOM
- *CALL CYBERDEFS
- *CALL MISDEF
- *IF,DEF,IMS
- *CALL IMSPT
- *CALL IMSNBT
- *CALL IMSPIT
- *CALL IMSCET
- *CALL IMSTNT
- *CALL IMSAT
- *CALL IMSLLCB
- *CALL IMSNCNT
- *CALL IMSNCNB
- *CALL IMSACB
- *CALL IMSACNT
- *CALL IMSACNB
- *CALL IMSPCNB
- *CALL IMSPOA
- #
- *1DC ACKNOWLEDGE QUEUE HEADER
- * THERE IS AN ACKNOWLEDGE QUEUE OF LENGTH ABL (APPLICATION BLOCK
- * LIMIT - SEE NDL REFERENCE MANUAL) FOR EACH ACTIVE CONNECTION ON
- * THE NETWORK. THE ACKNOWLEDGE QUEUE HAS THE ABH (APPLICATION
- * BLOCK HEADER) OF EACH MESSAGE THAT HAS BEEN SENT FROM NIP TO
- * PIP BUT HAS NOT YET BEEN ACKNOWLEDGE BY CCP. THE ACKNOWLEDGE
- * QUEUE ENABLES NIP TO MATCH THE BLOCK SEQUENCE NUMBER RECEIVED
- * FROM CCP TO THE CORRECT APPLICATION BLOCK NUMBER SENT BY THE
- * APPLICATION, SO THAT NIP MAY RETURN THE ABN IN THE FC/ACK
- * MESSAGE TO THE APPLICATION.
- * THE ACKNOWLEDGE QUEUE IS CONTROLLED BY THE ACKNOWLEDGE QUEUE
- * HEADER OF THE FOLLWING FORMAT:
- * 2 4 5
- * 0 6 4 2 9
- * I----------I----------I---------------I-------------I
- * I I I I I
- * I ACKQID I ACKQBS I ACKQLBSN I ACKNCNB I
- * I I I I I
- * I----------I----------I---------------I-------------I
- *
- * WHERE
- * ACKQID = ACKNOWLEDGE QUEUE BLOCK ID =3
- * ACKBS = ACKNOWLEDGE QUEUE BLOCK SIZE = ABL+1
- * ACKQLBSN = LAST BSN BACKED FROM CCP
- * ACBNCNB = ADDRESS OF NCNB.
- *
- * ENTRIES IN THE ACKNOWLEDGE QUEUE HAVE THE SAME FORMAT AS THE ABH,
- * EXCEPT THAT THE ADR FIELD CONTAINS THE BSN SENT TO CCP ON THE
- * OUTGOING MESSAGE.
- *
- * THE ACKNOWLEDGE QUEUE IS A MOVABLE BUFFER UNDER THE DEFAULT NIP
- * INSTALLATION OPTION PERF1 OF DYNAMIC ALLOCATION. (SEE INPARU
- * DOCUMENTATION BELOW). WHEN THE ACKNOWLEDGE QUEUE IS STATICALLY
- * ALLOCATED, IT IS MOVABLE ONLY WITH ITS QCB. UNDER STATIC
- * ALLOCATION THE ACKNOWLEDGE QUEUE IS CREATED WHEN THE NETWORK
- * SIDE QCB IS CREATED. UNDER DYNAMIC ALLOCATION, THE ACKNOWLEDGE
- * QUEUE IS ONLY CREATED WHEN IT IS NEEDED.
- #
- *ENDIF
- *CALL ACKHEAD
- #* * * * * * * * * * ---------- AHEADER ----------* * * * * * * * * * #
- BASED ARRAY AHEADER[0:0] P(1); # APPLICATION BLOCK HEADER #
- BEGIN
- *CALL HEADER
- END
- *IF,DEF,IMS
- #
- *1DC APPSTAT
- * APPSTAT IS A COMMON BLOCK OF VARIABLES THAT DESCRIBE THE STATUS
- * OF THE WORKLIST CURRENTLY BEING PROCESSED. SEE SYMPL LISTING
- * FOR THE LIST OF VARIABLES IN THIS COMMON BLOCK
- #
- *ENDIF
- *CALL APPSTAT
- #* * * * * * * * * * ---------- AWLHEAD ----------* * * * * * * * * * #
- *IF,DEF,IMS
- #
- *1DC AWL - APPLICATION WORK LIST
- * THE AWL IS THE MIDDLE PART OF THE ACB. IT CONTAINS NIP-S
- * REPLY TO THE NWL (NETWORK WORK LIST). FOR THE FORMAT OF
- * THE NWL SEE NWL DESCRIPTION BELOW. THE AWL HAS A SIZE OF 6 WORDS
- * LONG AND IS WRITTEN BACK TO AIP WHENEVER A NWL IS RECEIVED THAT
- * REQUIRES A REPLY. THIS WOULD BE A NWL THAT CONTAINED EITHER A
- * NETON, GET, GETL, GETF, GTFL, GETMM, OR GETSM ENTRY. IF THE NWL
- * CONTAINS A NETON NWL ENTRY, IT WILL BE THE ONLY ENTRY AND THE AWL
- * WILL CONTAIN THE NETON RESPONSE BEGINNING IN THE FIRST WORD OF THE
- * AWL. FOR NORMAL AWLS THE 6 WORDS ARE DIVIDED INTO 3 TWO WORD
- * ENTRIES. THE FIRST 2 WORDS WILL ALWAYS CONTAIN THE GET, GETL,
- * GETF, OR GTFL RESPONSE. THE FIRST WORD OF THE
- * TWO WORD ENTRY HAS THE FORMAT
- * 3 5 5 5
- * 0 6 6 4 9 9
- * I-------I---------I-I-------I-------I
- * I I I I I I
- * I AWLRC I GETSMND I I AWLOP I AWLCB I
- * I I I I I I
- * I-------I---------I-I-------I-------I
- * WHERE:
- * GETSMND = NO OF SUPERVISORY MESSAGES DELIVERED, WHEN AWLOP=GETSM
- * AWLOP = THE AWL OP CODE. POSSIBLE OP CODES IN THE AWL ARE
- * WLOPGET (2) FOR NETGET
- * WLOPGETL (3) FOR NETGETL
- * WLOPGETS (4) FOR NETGETSM, I.E GET SUPERVISORY MESSAGES
- * WLOPNON (6) FOR NETON
- * WLOPGETF (8) FOR NETGETF
- * WLOPGTFL (10)FOR NETGTFL
- * THERE IS NO AWL ENTRY (REPLY) FOR NETOFF, NETPUT,
- * NETPUTF, OR NETWAIT.
- * AWLCB = THE COMPLETION BIT-IN THE ORIGINAL REQUEST IT IS CLEARED
- * BY AIP, AND IT IS SET TO 1 BY NIP.
- *
- * THE FORMAT OF THE SECOND WORD OF THE AWL ENTRY DEPENDS ON THE
- * OP CODE FIELD IN THE FIRST WORD. IF THE OP CODE IS GET, GETL,
- * GETF OR GETL THEN THE SECOND WORD IS THE ABH FOR THE MESSAGE
- * (NOTE THAT THE TEXT OF THE MESSAGE IS WRITTEN DIRECTLY TO THE
- * TA AREA SPECIFIED BY THE APPLICATION IN THE AIP CALL)
- *
- * FOR AN OPCODE OF GETMM THE FORMAT IS AS FOLLOWS:
- *
- * 4 5
- * 0 8 9
- * I--------------------I---------I
- * I I I
- * I I GETMMNW I
- * I I I
- * I--------------------I---------I
- *
- * WHERE
- * GETMMNW = NO OF WORDS OF DATA MESSAGES DELIVERED TO AIP-S
- * DATA QUEUE.
- *
- *
- * FOR AN OP CODE OF GETS (GET SUPERVISORY MESSAGES) THE FORMAT
- * OF THE SECOND WORD IS AS FOLLOWS
- * 4 5
- * 0 6 8 9
- * I---------I----------I---------I
- * I I I I
- * I GETSMNL I I GETSMNW I
- * I I I I
- * I---------I----------I---------I
- *
- * WHERE
- * GETSMNL = IS THE LENGTH OF THE NEXT SUPERVISORY MESSAGE NOT YET
- * DELIVERED TO AIP. WHEN ZERO THERE ARE NO MORE SUPER-
- * VISORY MESSAGES.
- *
- * GETSMNW = NO OF WORDS OF SUPERVISORY MESSAGES DELIVERED TO AIP
- * USED BY AIP TO UPDATE ITS POINTERS TO THE CIRCULAR
- * SUPERVISORY MESSAGE BUFFER. SEE AIP DOCUMENTATION
- * AND ALSO DETAILED DOCUMENTATION OF HPGETSM, IN NIP.
- *
- * WHEN AN APPLICATION DOES A -NETON-, THE GLOBAL 5-WORD NWL WORKLIST
- * ENTRY IS NOT USED, RATHER A LOCAL (ASSOCIATED WITH THE
- * APPLICATION) 3-WORD AWL IS CREATED. THIS IS
- * BECAUSE THERE CAN ONLY BE ONE ENTRY IN THE AWL, A NETON RESPONSE
- * ENTRY. IF THE NETON WAS REJECTED, AWLRC WILL CONTAIN THE REASON
- * CODE FOR REJECTING THE NETON.IF THE NETON WAS ACCEPTED, THE SECOND
- * WORD OF THE AWL ENTRY WILL CONTAIN THE PROCESS NUMBER ASSIGNED TO
- * THIS APPLICATION AND WHICH WILL BE USED BY AIP IN FUTURE
- * WORKLISTS.
- *
- #
- *ENDIF
- #* * * * * * * * * * ---------- AWLNTRY ----------* * * * * * * * * * #
- *CALL AWLNTRY
- #* * * * * * * * * * ---------- INPARU ----------* * * * * * * * * *#
- *IF DEF,IMS
- #
- *1DC INPARU
- *
- * INPARU IS A COMMON DECK OF INSTALLATION PARAMETERS WHICH ARE
- * AVAILABLE TO THE USERS
- *
- * THESE ARE COMPILATION TIME OPTIONS, WHICH ARE IN ADDITION TO THE
- * UPDATE TIME OPTIONS.
- *
- * THE UPDATE TIME OPTIONS THAT EFFECT NAM ARE AS FOLLOWS
- *
- * SUBAREA EFFECTED
- * NIP AIP PIP
- *
- * IMS - WHEN DEFINED IN THE UPDATE RUN IT YES YES YES
- * TURNS EXTENSIVE IMS DOCUMENTATION ON.
- * THE RELEASE VALUE IS IMS NOT DEFINED.
- * IN THAT STATE ONLY MINIMAL IMS DOCU-
- * MENTATION IS INCLUDED IN THE LISTING.
- *
- * DEBUG WHEN DEFINED DEBUG WILL BE TURNED ON. YES YES YES
- * THE EFFECT OF DEBUG ON THE NAM COMPO-
- * NENTS IS AS FOLLOWS
- * NIP - INTERNAL TRACE BUFFERS WILL BE
- * USED BY NIP TO TRACE MESSAGES SENT
- * AND RECEIVED AS WELL AS TO TRACE
- * SUBROUTINE AND OVERLAY CALLS.
- * DEBUG WILL ALSO EFFECT NIP-S ACTION
- * UPON DETECTING ERROR CONDITIONS.
- * MOST OF THESE ARE DOCUMENTATED IN THE
- * NAM ERS. ON THE RELEASE VERSION
- * DEBUG FOR NIP IS TURNED OFF.
- * AIP - WITH DEBUG ON AIP WILL PRODUCE
- * AN AIP TRACE FILE. BOTH THE DEBUG
- * AND NONDEBUG VERSIONS OF AIP
- * ARE RELEASED ON LIBRARIES NETIOD AND
- * NETIO RESPECTIVELY.
- *
- * PIP - WHEN DEBUG IS ON PIP WILL HANG
- * THE PP ON CERTAIN ERROR CONDITIONS.
- * WITH DEBUG TURNED OFF PIP WILL EITHER
- * ATTEMPT TO CONTINUE OR JUST ABORT THE
- * NETWORK DEPENDING ON THE PARTICULAR
- * ERROR.
- *
- * STAT -WHEN DEFINED STATISTICS OPTION WILL BE YES YES NO
- * TURNED ON IN NIP AND AIP.
- * THE RESULTS OF NIP-S STATISTICS
- * GATHERING APPEARS IN THE NIP DAYFILE.
- * THE FOLLOWING INFORMATION IS DAYFILED:
- *
- * 1. AT THE TIME NIP IS TERMINATED THE
- * NO OF TIMES EACH OVERLAY WAS CALLED,
- * AS WELL AS THE STATISTICS VARIABLES
- * IN COMMON BLOCK STATTAB (FOR DOCU-
- * MENTATION SEE BELOW).
- * 2. AT THE TIME A PCB IS DELETED THE
- * STATISTICS INFORMATION IN THE PCB.
- * (SEE PCB DOCUMENTATION BELOW)
- * 3. AT THE TIME A QCB IS DELETED OR
- * SWITCHED THE STATISTICS INFORMA-
- * TION IN THE QCB (SEE QCB DOCUMEN-
- * TATION BELOW.)
- *
- * THE ABOVE 3 UPDATE TIME OPTIONS ARE MADE AVAILABLE TO THE USERS
- * BY DOCUMENTATION IN THE IHB (INSTALLATION HANDBOOK)
- * THE ADDITIONAL UPDATE TIME OPTIONS ARE FOR USE BY THE NAM PROJECT
- * ONLY
- *
- * BFSC - IF DEFINED, NIP WILL EXAMINE THE FREE BUFFER CHAIN
- * FOR ANY DISCREPANCIES AFTER EVERY MGETS, MRELS OR MACQ
- * CALL. IF ERROR IS DETECTED, NIP WILL ABORT WITH DAYFILE
- * MESSAGE. THIS OPTION WILL SLOW NIP DOWN COMSIDERABLY
- * AND SHOULD ONLY BE USED IN EXTREME DEBUG SITUATION.
- *
- * DELAY - IF DEFINED NIP WILL DELAY 2 SECONDS AFTER IT HAS
- * DECIDED THAT THERE IS EXTRA CORE TO RELEASE BEFORE ACTUALLY
- * RELEASING THAT CORE. IT WILL NOT BE DEFINED ON THE RELEASE
- * VERSION OF NIP. THAT IS, EXTRA CORE ABOVE 400B WORDS WILL BE
- * IMMEDIATELY RELEASED. SINCE WE DO KEEP THE 400B WORDS THIS IS
- * CONSIDERED TO BE ADEQUATE TO AVOID MEMORY THRASHING.
- *
- * BESTFIT - IF DEFINED, THE MEMORY ALLOCATION ROUTINE WILL SEARCH
- * FOR A BUFFER EXACTLY THE SAME SIZE AS REQUESTED. IF ONE IS NOT
- * FOUND, IT WILL USE THE BUFFER COMING CLOSEST (BUT ALWAYS GREATER)
- * TO THE REQUESTED SIZE. IF NOT DEFINED, FIRST FIT BUFFER
- * ALLOCATION SCHEME IS USED. UNDER THIS SCHEME, THE FIRST BUFFER
- * GREATER THAN OR EQUAL TO THE REQUESTED SIZE IS USED. THE RELEASE
- * VALUE IS BESTFIT NOT DEFINED.
- *
- * LIBRES - IF DEFINED NIP WILL NOT CHECK LIBRARY RESIDENCY OF
- * NS AND CS. THIS IS USED DURING DEVELOPMENT SO THAT NS AND CS
- * MAY RUN EXPERIMENTAL VERSIONS OFF OF A FILE. THE RELEASE
- * VALUE OF COURSE IS TO NOT HAVE LIBRES DEFINED.
- *
- * PERF1 - IF DEFINED THE ACKNOWLEDGE QUEUE IN NIP WILL BE ALLOCATED
- * AT THE TIME THE QCB IS CREATED. IF NOT DEFINED IT WILL BE
- * ALLOCATED AND RELEASED DYNAMICALLY. THE MORE DYNAMIC HANDLING
- * OF ACK. Q"S OBVIOUSLY REQUIRES MORE CPU TIME BUT LESS CORE SIZE
- * IN NIP. THE RELEASE VALUE IS TO HAVE IT ASSIGNED DYNAMICALLY.
- *
- * ZZDN - IF DEFINED, ALL INBOUND/OUTBOUND MESSAGES WILL BE RECORDED
- * IN A FILE CALLED ZZZZZDN, WHICH SERVES AS INPUT TO
- * POSTPROCESSOR DLFP.
- *
- * ALL OF THE ABOVE UPDATE OPTIONS TRANSLATE INTO COMPILATION TIME
- * OPTIONS IN NIP. THIS CAN BE READILY PERCEIVED BY LISTING, THROUGH
- * UPDATE, ALL OF THE ACTIVE CARDS IN NIP. THEREFORE THE VARIABLES
- * MENTIONED ABOVE SHOW UP AS VARIABLES IN THE INSTALLATION PARAMETER
- * COMMON DECKS(INPARU FOR USER AND INPAR FOR NAM PROJECT).
- *
- * THE FOLLOWING ADDITIONAL COMPILATION OPTIONS ARE AVAILABLE.
- *
- * MAXNIP - THIS DEFINES THE MAXIMUM FIELD LENGTH THAT NIP MAY USE.
- * THE DEFAULT VALUE IS 20480=50000B. THE RANGE IN VALUE IS FROM
- * 15000B TO 377777B.
- *
- * NFBUFF - WHEN THE NUMBER OF FREE BUFFERS EXCEED NFBUFF, NIP WILL
- * START GARBAGE COLLECTION AFTER TBUF SECONDS. THE RANGE IN VALUE IS
- * FROM 2 TO 16000B. THE DEFAULT VALUE IS 64 (100B).
- *
- * NFSIZE - WHEN THE SIZE OF THE FREE BUFFER CHAIN EXCEEDS NFSIZE
- * NUMBER OF WORDS, THEN NIP WILL CALL GARBAGE COLLECTION AFTER TBUF
- * SECONDS. THE RANGE IN VALUE IS FROM 2 TO 16000B. THE DEFAULT IS
- * 2048.
- *
- * NMBUF - THIS PARAMETER IS THE MINIMUM NUMBER OF IDLE FREE BUFFERS
- * WHICH WILL INITIATE GARBAGE COLLECTION. IT IS COMPARED TO THE
- * NUMBER OF FREE BUFFERS MINUS THE NUMBER OF CONNECTIONS (ASSUMING
- * AN AVERAGE NEED OF ONE FREE BUFFER FOR EACH CONNECTION). THE
- * DEFAULT VALUE IS 20. THE RANGE IN VALUE IS FROM 2 TO 16000B.
- *
- * NTIME - NO SWAPOUT NETWAIT TIME. THIS PARAMETER IS THE MAXIMUM
- * TIME (IN SECONDS) FOR WHICH THE APPLICATION WILL NOT BE SWAPPED
- * OUT. THE RANGE IN VALUE IS FROM 1 TO 3777B. THE DEFAULT VALUE IS
- * TWO SECONDS. THE PARAMETER SERVES THE PURPOSE OF AVOIDING
- * DISK ACCESS WHEN THE SWAPIN/SWAPOUT PROCESS MAY TAKE AS LONG
- * AS THE NETWAIT TIME SPECIFIED.
- *
- * TBUF - THIS PARAMETER IS THE MINIMUM TIME INTERVAL (IN SECONDS)
- * BETWEEN CHECKS TO SEE IF NFBUFF BUFFERS OR NFSIZE WORDS ARE FREE
- * SO THAT GARBAGE COLLECTION CAN BE INITIATED. THE RANGE IN VALUE IS
- * FROM 1 TO 777777B. THE DEFAULT VALUE IS 64 SECONDS (=100B).
- *
- #
- #
- INSTALLATION PARAMETERS--USER
- BFSC SCAN FREE BUFFER CHAIN OPTION
- THIS PARAMETER TURNS ON SCAN FREE BUFFER CHAIN CODE IN
- NIP.
- ASSIGN BFSC A VALUE OF 0 TO TURN IT OFF (DEFAULT).
- ASSIGN BFSC A VALUE OF 1 TO TURN IT ON.
- DEBUG DEBUG OPTION
- THIS PARAMETER TURNS ON/OFF DEBUG CODE IN NIP WHICH WOULD
- OTHERWISE NOT BE COMPILED.
- THE VALUE IS 0 TO TURN IT OFF (DEFAULT).
- THS VALUE IS 1 TO TURN IT ON.
- DELAY RELEASE FL DELAY OPTION
- THIS PARAMETER TURNS ON/OFF DELAY OPTION CODE
- IN GARBAGE COLLECTION ROUTINE MGBGCLT TO CONTROL
- WHETHER TO WAIT 2 SECONDS TO RELEASE EXTRA NIP FL OR NOT.
- THE VALUE IS 0 TO TURN IT OFF (DEFAULT).
- THE VALUE IS 1 TO TURN IT ON.
- BESTFIT BUFFER ALLOCATION METHOD OPTION
- THIS PARAMETER SPECIFIES WHETHER MGETS USES BEST FIT OR
- FIRST FIT STRATEGY WHEN A BUFFER IS DYNAMICALLY ALLOCATED.
- THE VALUE IS 1 FOR BEST FIT.
- THE VALUE IS 0 FOR FIRST FIT (DEFAULT).
- IMSLIST IMS DOCUMENTATON OPTION
- THIS PARAMETER TURNS ON/OFF LISTING OF IMS DOCUMENTATION.
- THE VALUE IS 0 TO TURN IT OFF (DEFAULT).
- THE VALUE IS 1 TO TURN IT ON.
- LIBRES SYSTEM RESIDENT CHECK IPTION
- THIS PARAMETER TURNS ON/OFF CHECK TO SEE IF CS AND NS ARE
- SYSTEM ORIGINATED PROGRAMS.
- THE VALUE IS 0 TO TURN IT ON (DEFAULT).
- THE VALUE IS 1 TO TURN IT OFF.
- MAXNIP MAXIMUM FIELD LENGTH
- THIS PARAMETER IS THE MAXIMUM FIELD LENGTH THAT NIP MAY
- REACH.
- THE RANGE IN VALUE IS FROM 15000B TO 377777B
- (DEFAULT = 50000B).
- NFBUFF NUMBER OF FREE BUFFERS FOR GARBAGE COLLECTION
- THIS PARAMETER IS THE MINIMUM NUMBER OF FREE BUFFERS
- WHICH WILL INITIATE GARBAGE COLLECTION AFTER TBUF SECONDS.
- THE RANGE IN VALUE IS FROM 2 TO 16000B (DEFAULT = 100B).
- NFSIZE NUMBER OF FREE WORDS FOR GARBAGE COLLECTION
- THIS PARAMETER IS THE MINIMUM NUMBER OF FREE WORDS
- WHICH WILL INITIATE GARBAGE COLLECTION AFTER TBUF SECONDS.
- THE RANGE IN VALUE IS FROM 2 TO 16000B (DEFAULT = 1500B).
- NMBUF NUMBER OF IDLE FREE BUFFERS FOR GARBAGE COLLECTION
- THIS PARAMETER IS THE MINIMUM NUMBER OF IDLE FREE BUFFERS
- WHICH WILL INITIATE GARBAGE COLLECTION. IT IS COMPARED
- TO THE NUMBER OF FREE BUFFERS MINUS THE NUMBER OF
- CONNECTIONS (ASSUMING A AVERAGE NEED OF ONE FREE BUFFER
- FOR EACH CONNECTION).
- THE RANGE IN VALUE IS FROM 2 TO 16000B (DEFAULT = 24B).
- NTIME NO-SWAPOUT NETWAIT TIME
- THIS PARAMETER IS THE MAXIMUM NETWAIT TIME (IN SECONDS)
- FOR WHICH THE APPLICATION WILL NOT BE SWAPPED OUT.
- THE RANGE IN VALUE IS FROM 1 TO 3777B (DEFAULT = 2).
- PERF1 PERFORMANCE OPTION NUMBER 1
- THIS PARAMETER WILL DETERMINE IF THE ACKNOWLEDGE QUEUE
- WILL BE ALLOCATED DYNAMICALLY (I.E. ONLY WHEN NEEDED) OR
- STATICALLY (I.E. AT QCB CREATION TIME).
- THE VALUE IS 0 TO ALLOCATE DYNAMICALLY (DEFAULT).
- THE VALUE IS 1 TO ALLOCATE STATICALLY.
- STAT STATISTICS OPTION
- THIS PARAMETER TURNS ON/OFF STATISTICS PRODUCING CODE IN NI
- WHICH WOULD OTHERWISE NOT BE COMPILED.
- THE VALUE IS 0 TO TURN IT OFF (DEFAULT).
- THE VALUE IS 1 TO TURN IT ON.
- TBUF TIME INTERVAL FOR GARBAGE COLLECTION CHECK
- THIS PARAMETER IS THE MINIMUM TIME INVERVAL (IN SECONDS)
- BETWEEN CHECKS TO SEE IF NFBUFF BUFFERS OR NFSIZE WORDS
- ARE FREE SO THAT GARBAGE COLLECTION CAN BE INITIATED.
- THE RANGE IN VALUE IS FROM 1 TO 777777B (DEFAULT = 100B).
- ZZDN TRACE PIP IN/OUT BOUND MESSAGES
- THIS OPTION WILL INCLUDE CODE TO RECORD ALL PIP IN/OUT
- BOUND MESSAGES IN A FILE NAMED ZZZZZDN.
- SET TO 1 TO TURN IT ON.
- SET TO 0 TO TURN IT OFF (DEFAULT).
- #
- *ENDIF
- *CALL INPARU
- *CALL IMSBB
- # * * * * * * * * * * * * * --- BACKBUF --- * * * * * * * * * * * * * *#
- *CALL BACKBUF
- # * * * * * * * * * * * * * * * --- BPIPBUF --- * * * * * * * * * * * *#
- *IF DEF,IMS
- #
- *1DC BPIPBUF
- *
- * BPIPBUF IS A COMMON BLOCK USED BY ZZDN OPTION. WHEN NIP IS
- * GENERATED WITH ZZDN, ALL MESSAGES INBOUND OR OUTBOUND THROUGH
- * PIP ARE RECORDED IN A FILE CALLED ZZZZZDN. BPIPBUF CONTAINS
- * CIO BUFFER FOR ZZZZZDN AND ITS FETS.
- * INTERNAL FORMAT OF ZZZZZDN -
- *
- * HEADER WORD 0 -
- * W 7
- * 4
- * 0 2
- * I----------------------------I
- * I I
- * I NIP I
- * I I
- * I----------------------------I
- *
- * WHERE
- * THE LEFTMOST 42 BITS CONTAINS DISPLAY CODE LITERALS NIP WITH
- * ZERO FILL.
- *
- * HEADER WORD 1 -
- * W 7
- * 2
- * 0 4
- * I---------------------I-----------------------I
- * I I I
- * I SECONDS I MILLISECONDS I
- * I I I
- * I---------------------I-----------------------I
- *
- * WHERE
- *
- *
- * SECONDS = ELAPSED TIME SINCE DEADSTART IN SECS.
- * MILLISECONDS = ELAPSED TIME SINCE DEADSTART IN MILLISECONDS.
- *
- * HEADER WORD 2 -
- *
- * W 7
- * 1 2 3 4 5
- * 6 8 4 6 2 4
- * I----I------I-----I------I-----I------I-----I
- * I I I I I I I I
- * I I HH I . I MM I . I SS I . I
- * I I I I I I I I
- * I----I------I-----I------I-----I------I-----I
- *
- *
- * WHERE
- *
- * HH = HOUR IN DISPLAY CODE.
- * MM = MINUTE IN DISPLAY CODE.
- * SS = SECONDS IN DISPLAY CODE.
- *
- *
- * HEADER WORD 3 -
- * W 7
- * 1 2 3 4 5
- * 6 8 4 6 2 4
- * I----I------I-----I------I-----I------I-----I
- * I I I I I I I I
- * I I YY I / I MM I / I DD I / I
- * I I I I I I I I
- * I----I------I-----I------I-----I------I-----I
- *
- *
- * WHERE
- *
- * YY = YEAR IN DISPLAY CODE.
- * EG. 1978 WILL BE EXPRESSED AS 4243B.
- * MM = MONTH IN DISPLAY CODE.
- * DD = DATE OF THE MONTH IN DISPLAY CODE.
- *
- *
- * THE HEADER IS FOLLOWED BY INDIVIDUAL ZZZZZDN ENTRY CONTAINING AN
- * INBOUND OR OUTBOUND MESSAGE.
- * INTERNAL FORMAT OF EACH ZZZZZDN ENTRY -
- *
- *
- * WORD 0 -
- *
- * W 7
- * 2
- * 0 4
- * I---------------------I-----------------------I
- * I I I
- * I SECONDS I MILLISECONDS I
- * I I I
- * I---------------------I-----------------------I
- *
- * WHERE
- *
- *
- * SECONDS = ELAPSED TIME SINCE DEADSTART IN SECS.
- * MILLISECONDS = ELAPSED TIME SINCE DEADSTART IN MILLISECONDS.
- *
- *
- * WORD 1 -
- *
- * W 7
- * 2
- * 6 3
- * I----------I----------I
- * I I I
- * I BPIPID I BPIPBS I
- * I I I
- * I----------I----------I
- *
- *
- * WHERE
- *
- * BPIPID = BLOCK ID.
- * 14 FOR INBOUND, 15 FOR OUTBOUND.
- * BPIPBS = BLOCK SIZE. SIZE OF ZZZZZDN ENTRY MINUS ONE.
- *
- *
- * WORD 2 -
- *
- * W 5
- * 1 2 2 2 3 4 4 4
- * 0 8 6 4 5 8 2 0 4 8
- * I--I--I--I-----I-----I--I-----I-----I-I--I
- * IDNISNICNINHPRIINHBNSIBTINHDBCINHACTIBICCI
- * I--I--I--I-----I-----I--I-----I-----I-I--I
- *
- * SEE NHEADER FOR EXPLANATION OF THE ABOVE FIELDS.
- * MESSAGE TEXT WILL FOLLOW THIS WORD.
- *
- #
- *ENDIF
- *CALL BPIPBUF
- *CALL IMSNBT
- *ENDIF
- # * * * * * * * * * * * * * ----- CET ----- * * * * * * * * * * * * * *#
- *CALL CET
- *CALL SMPFC
- *CALL SMAPPFC
- *CALL SMAPDEF
- *CALL SMDEF
- *IF DEF,IMS
- #
- *1DC DBGBUF
- *
- * DBGBUF IS A PREALLOCATED COMMON BLOCK WHICH CONSISTS OF 5 TRACE
- * BUFFERS TO RECORD ALL DATA TRAFFIC GOING THROUGH NIP. THEY ARE
- * USED PRIMARILY FOR DEBUGGING PURPOSES AND ARE COMPILED ONLY WHEN
- * THE INSTALLATION DEFINED PARAMETER -DEBUG- IS TURNED ON.
- *
- * EACH CIRCULAR TRACE BUFFER HAS A SIZE OF 1001 WORDS .IE. A HEADER
- * WORD WHICH CONTAINS THE OFFSET POINTER OF THE NEXT AVAILABLE
- * WORD IN THE BUFFER TO BE FILLED, AND 1000-WORDS FOR LOGGING
- * DATA MESSAGES. THESE BUFFERS ARE ALLOCATED IN THE FOLLOWING
- * ORDER :
- *
- * . BGET RECORDS NON-SUPERVISORY DATA SENT TO APPLICATION(S)
- * . BGETSM RECORDS SUPERVISORY DATA SENT TO APPLICATION(S)
- * . BPIPIN RECORDS DATA RECEIVED FROM NPU(S)
- * . BPIPOUT RECORDS DATA SENT TO NPU(S)
- * . BPUT RECORDS DATA RECEIVED FROM APPLICATION(S)
- *
- * EVERY TIME NIP PROCESSES NETWORK DATA (INBOUND OR OUTBOUND), IT
- * WILL FIRST STORE IN THE TRACE BUFFERS (BPIPIN AND BPIPOUT) THE
- * ELAPSED TIME THE OPERATING SYSTEM HAS BEEN UP. TO RECOGNIZE THE
- * WORD CONTAINING THE TIME, THE LEFTMOST PART OF THE WORD WILL
- * CONTAIN THE LETTERS -TIME- IN DISPLAY CODE. EACH NETWORK MESSAGE
- * IS PRECEDED BY A BLOCK HEADER WORD. THIS CONSISTS OF A BLOCK TYPE
- * IN BITS 0-3 (SYMPL BIT NUMBERING SCHEME) AND A BLOCK SIZE IN BITS
- * 4-11. FOR NETWORK INBOUND MESSAGES THE BLOCK TYPE IS 14 (70B) AND
- * FOR NETWORK OUTBOUND MESSAGES THE BLOCK TYPE IS 15 (74B) .
- *
- * EVERY TIME NIP PROCESSES AIP GET OR PUT FUNCTIONS, IT WILL FIRST
- * STORE IN THE TRACE BUFFERS (BGET, BGETSM, AND BPUT) THE PROCESS
- * NUMBER OF THE APPLICATION WHOSE WORKLIST IS BEING PROCESSED. TO
- * RECOGNIZE THE WORD CONTAINING THE PROCESS NUMBER, THE LEFTMOST
- * PART OF THE WORD WILL CONTAIN THE LETTERS -PN- IN DISPLAY CODE.
- * DATA RECEIVED BY NIP FROM APPLICATIONS WILL BE PRECEDED BY THE
- * AIP OPCODE WORD IN THE BPUT TRACE BUFFER. ENTRIES IN THE BGET
- * TRACE BUFFERS MAY HAVE DIFFERENT ACT AND/OR ADR VALUES IN THE
- * ABH WORD THAN WHAT IS ACTUALLY SENT TO THE APPLICATION.
- *
- #
- *ENDIF
- *CALL DBGBUF
- *IF DEF,IMS
- #
- *# #
- *1DC DEQCOM
- *
- * DEQCOM IS A PREALLOCATED COMMON BLOCK CONTAINING VARIABLES WHICH
- * ARE USED IN PERFORMING CHARACTER CONVERSIONS FOR UPLINE DATA,
- * BUFFER MOVE FOR GARBAGE COLLECTION FUNCTIONS, AND NIP-S FIELD
- * LENGTH DUMP FOR ERROR CONDITIONS. SEE SYMPL LISTING FOR LIST
- * OF VARIABLES IN THE COMMON DECK.
- *
- #
- #
- *#
- *ENDIF
- *CALL DEQCOM
- #* * * * * * * * * * ---------- DRHDR ----------* * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC DRHDR
- *
- * DRHDR CONTAINS THE TEMPLATE FOR THE DATA RING HEADER WORD. EACH
- * DATA POT IN NIP-S FIELD LENGTH HAS A DATA RING HEADER ASSOCIATED
- * WITH IT. BASICALLY IT IS USED TO CHAIN TOGETHER DATA POTS QUEUED
- * ON THE SAME CONNECTION SO AS TO SPEED UP THE QUEUEING AND DE-
- * QUEUEING PROCESS WITHIN NIP. IT HAS THE FOLLOWING FORMAT:
- *
- * 2 4 5
- * 0 6 4 2 9
- * I--------I------I---------I---------I
- * I I I I I
- * I DRID I DRBS I BACKPTR I NEXTPTR I
- * I I I I I
- * I--------I------I---------I---------I
- *
- *
- * WHERE :
- *
- * DRID = DATA RING BLOCK ID = 7.
- * DRBS = DATA RING BLOCK SIZE.
- * BACKPTR = DATA RING BACK POINTER. POINTS TO FWA OF LAST DATA
- * POT WHICH HEADS THIS DATA POT IN THE RING.
- * NEXTPTR = DATA RING NEXT POINTER. POINTS TO FWA OF NEXT DATA
- * POT WHICH TRAILS THIS DATA POT IN THE RING.
- *
- #
- *ENDIF
- *CALL DRHDR
- #* * * * * * * * * ---------- FLIST ---------- * * * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC FLIST
- *
- * FLIST CONTAINS TEMPLATE FOR SYSTEM CONTROL POINT (SCP) FUNCTION
- * LIST WHEN THERE IS A PCB FOR THE USER CONTROL POINT (UCP).
- *
- * SCP FUNCTION LIST IS A DYNAMICALLY MOVABLE BUFFER. IT ALLOWS NAM
- * TO ISSUE SUBSYSTEM FUNCTION REQUESTS TO THE O/S. FOR A NON-LIST
- * SFCALL FUNCTION, IT IS A 3-WORD ENTRY WITH A HEADER WORD PLUS A
- * 2-WORD PARAMETER BLOCK ( FOR THE EXTENDED SF.READ / SF.WRIT
- * FUNCTIONS, THERE IS A 3-WORD PARAMETER BLOCK TO ALLOW FOR THE
- * EXTENDED TRANSFER LENGTH OF MORE THAN 100B WORDS ). FOR A LIST
- * SFCALL FUNCTION (SF.LIST), IT IS A (3+N)-WORD ENTRY WITH A HEADER
- * WORD PLUS A 2-WORD PARAMETER BLOCK, FOLLOWED BY N CONTIGUOUS ONE
- * WORD LIST ENTRIES ( FOR AN EXTENDED LIST SFCALL FUNCTION (SF.XLST)
- * EACH LIST ENTRY IS 2 WORDS LONG WITH THE SECOND WORD RESERVED FOR
- * ALL BUT THE EXTENDED SF.READ AND SF.WRIT FUNCTIONS ). THE FORMAT
- * IS AS FOLLOWS:
- *
- * 0 6 24 48 59
- * I---------I------I------------------I---------I
- * I FLID I FLBS I I FLPN I HEADER WORD
- * I---------I------I------------------I---------I
- *
- * ( 2-WORD PARAMETER BLOCK FOR SFCALL FUNCTION )
- *
- * 0 6 18 36 54 58 59
- * I------I------I--------I--------I------I------I
- * I FLRC I FLFP I FLUCPA I FLSCPA I FLFC I FLCB I
- * I------I------I--------I--------I------I------I
- *
- * 0 42 59
- * I-----------------------------------I---------I
- * I FLNAME I FLJDT I
- * I-----------------------------------I---------I
- *
- * ( 1 ADDITIONAL WORD IN PARAMETER BLOCK FOR EXTENDED SF.READ /
- * SF.WRIT FUNCTIONS )
- *
- * 0 1 2 12 36 59
- * I-----I-----I-----I-------------I-------------I
- * I FLU I FLS I I FLXUCPA I FLXSCPA I
- * I-----I-----I-----I-------------I-------------I
- *
- *
- *
- * ( CONTIGUOUS LIST ENTRIES FOR SF.LIST OR SF.XLST FUNCTIONS )
- *
- * 0 6 18 36 54 58 59
- * I-------I-------I---------I---------I-------I-------I
- * I FLERC I FLEFP I FLEUCPA I FLESCPA I FLEFC I FLECB I ENTRY 1
- * I-------I-------I---------I---------I-------I-------I
- *
- * ( SECOND WORD OF SF.XLST FUNCTION LIST ENTRY FOR EXTENDED SF.READ
- * AND SF.WRIT FUNCTIONS ONLY )
- *
- * 0 1 2 12 36 59
- * I------I------I-----I---------------I---------------I
- * I FLEU I FLES I I FLEXUCPA I FLEXSCPA I
- * I------I------I-----I---------------I---------------I
- * .
- * .
- * . FUNCTION LIST ENTRIES
- * .
- * .
- * 0 6 18 36 54 58 59
- * I-------I-------I---------I---------I-------I-------I
- * I FLERC I FLEFP I FLEUCPA I FLESCPA I FLEFC I FLECB I ENTRY N
- * I-------I-------I---------I---------I-------I-------I
- *
- * ( SECOND WORD OF SF.XLST FUNCTION LIST ENTRY FOR OTHER SFCALL
- * FUNCTIONS )
- *
- * 0 59
- * I---------------------------------------------------I
- * I RESERVED I
- * I---------------------------------------------------I
- *
- * WHERE :
- *
- * FLID = FUNCTION LIST BLOCK ID = 4.
- * FLBS = FUNCTION LIST BLOCK SIZE. 3 TO 64 WORDS ALLOWED.
- * FLPN = PROCESS NUMBER OF UCP. USED ONLY BY GARBAGE
- * COLLECTION ROUTINES WHEN MOVING THE FUNCTION
- * LIST BUFFER.
- *
- * FLRC = REPLY CODE. SET BY THE OPERATING SYSTEM IF AN
- * ERROR IS DETECTED WHILE PROCESSING THE SF.LIST
- * REQUEST. IF RC = 40B, THEN THE FUNCTION LIST
- * MUST BE SEARCHED FOR THE FIRST LIST ENTRY WITH
- * A NON-ZERO RC FIELD TO DETERMINE THE ACTUAL
- * ERROR CONDITION. FOR DETAILED RC VALUES, SEE
- * DOCUMENTATION ON SCPCOM COMDECK.
- * FLFP = FUNCTION PARAMETER. FOR SF.LIST REQUEST, THIS
- * CONTAINS THE NUMBER OF ENTRIES IN THE LIST,
- * INITIALLY SET BY NIP WHEN ISSUEING THE FUNCTION
- * REQUEST AND UPDATED BY THE OPERATING SYSTEM.
- * IF IT RETURNS WITH A ZERO VALUE, THE ENTIRE LIST
- * HAS BEEN PROCESSED BY THE OPERATING SYSTEM. IF IT
- * RETURNS WITH A NON-ZERO VALUE, IT INDICATES THAT
- * THE OPERATING SYSTEM HAS ABANDONED PROCESSING OF
- * THE LIST. THE VALUE OF FLFP IS SET TO THE NUMBER
- * OF ENTRIES REMAINING IN THE LIST AND FLSCPA IS
- * SET TO THE ADDRESS OF THE FIRST ENTRY IN THE
- * REMAINING LIST.
- * FLUCPA = RELATIVE ADDRESS WITHIN THE UCP. FOR THE SF.LIST
- * LIST, THIS IS SET TO 0.
- * FLSCPA = RELATIVE ADDRESS WITHIN THE SCP. THIS CONTAINS
- * FWA OF FIRST LIST ENTRY IN THE FUNCTION LIST.
- * FLFC = SCP FUNCTION CODE (SF.LIST = 30B) .
- * FLCB = SCP COMPLETION BIT. SET BY THE OPERATING SYSTEM
- * WHEN IT COMPLETES PROCESSING OF THE SF.LIST CALL.
- * FLNAME = A 7-CHARACTER UCP JOB NAME.
- * FLJDT = UCP-S FNT ADDRESS.
- *
- * FLU = ECS ADDRESS IN UCP FLAG. BIT IS CLEARED IF
- * FLXUCPA IS THE UCP CM ADDRESS.
- * FLS = ECS ADDRESS IN SCP FLAG. BIT IS CLEARED IF
- * FLXSCPA IS THE SCP CM ADDRESS.
- * FLXUCPA = EXTENDED MODE READ / WRITE UCP CM OR ECS ADDRESS.
- * FLXSCPA = EXTENDED MODE READ / WRITE SCP CM OR ECS ADDRESS.
- * FLERC = REPLY CODE. SET BY THE OPERATING SYSTEM IF ERROR
- * IS DETECTED IN PROCESSING THE FUNCTION LIST ENTRY.
- * FOR DETAILED RC VALUES, SEE SCPCOM.
- * FLEFP = FUNCTION PARAMETER FOR THE SCP REQUEST OF THE
- * LIST ENTRY.
- * FLEUCPA = RELATIVE ADDRESS WITHIN THE UCP.
- * FLESCPA = RELATIVE ADDRESS WITHIN THE SCP.
- * FLEFC = SCP FUNCTION CODE. FOR DETAILED SCP FUNCTIONS
- * AVAILABLE, SEE DOCUMENTATION IN SCPCOM COMDECK.
- * FLECB = SCP COMPLETION BIT. SET BY THE OPERATING SYSTEM
- * WHEN IT COMPLETES PROCESSING THE SCP REQUEST OF
- * THE LIST ENTRY.
- *
- * FLEU = SAME AS FLU.
- * FLES = SAME AS FLS.
- * FLEXUCPA = SAME AS FLUCPA.
- * FLEXSCPA = SAME AS FLXSCPA.
- *
- * LIST ENTRIES ARE PROCESSED SEQUENTIALLY BY THE OPERATING SYSTEM.
- *
- * FOR MORE INFORMATION ON THE SPECIFIC FORMAT OF EACH AVAILABLE
- * SCP FUNCTION CALLS, SEE DOCUMENTATION ON SYSTEM CONTROL POINT.
- *
- #
- *ENDIF
- *CALL FLIST
- *IF DEF,IMS
- #
- *# #
- *1DC DUMPFLG
- *
- * DUMPFLG CONTAINS A SINGLE WORD BUFFER USED TO STORE THE REASON
- * CODES FOR DUMPING NIP-S FIELD LENGTH. IF THE INSTALLATION DEFINED
- * OPTION -DEBUG- IS TURNED ON. RDUMP WOULD ONLY DUMP NIP-S FIELD
- * LENGTH IF THE PROBLEM AS SPECIFIED BY THE REASON CODE HAD NOT
- * OCCURRED ONCE ALREADY.
- *
- *
- #
- #
- *#
- *ENDIF
- *CALL DUMPFLG
- *CALL IMSAT
- *ENDIF
- #* * * * * * * * * * ---------- INPAR ----------* * * * * * * * * * #
- *CALL INPAR
- #* * * * * * * * * * ---------- FREETAB ----------* * * * * * * * * * #
- *IF DEF,IMS
- #
- *# #
- *1DC FREETAB
- *
- * FREETAB IS A PREALLOCATED COMMON BLOCK USED TO CONTROL THE FREE
- * CHAIN. IT IS A 3-WORD ENTRY HAVING THE FOLLOWING FORMAT :
- *
- * 0 1 23 41 59
- * I--------I----------I-----------I-----------I
- * I FREMFL I I FREFBBP I FREFBFP I
- * I--------I----------I-----------I-----------I
- * I FRENOFB I
- * I-------------------------------------------I
- * I FRESFB I
- * I-------------------------------------------I
- *
- * WHERE :
- *
- * FREMFL = NIPLWA REACHES MAXNIP FLAG. SET IF THE INSTALLATION
- * DEFINED MAXIMUM NIP FIELD LENGTH HAS BEEN REACHED
- * WHEN MGETS TRIES TO GET A NEW BUFFER.
- * FREFBBP = FREE RING BACKWARD POINTER. IT POINTS TO THE LAST
- * AVAILABLE (HIGHEST ADDRESS) FREE BUFFER. IF THERE
- * IS NO FREE BUFFERS, IT POINTS TO ITSELF.
- * FREFBFP = FREE RING FORWARD POINTER. IT POINTS TO THE FIRST
- * AVAILABLE (LOWEST ADDRESS) FREE BUFFER. IF THERE
- * IS NO FREE BUFFERS, IT POINTS TO ITSELF.
- * FRENOFB = NUMBER OF FREE BUFFERS IN THE FREE RING.
- * FRESFB = TOTAL SIZE OF FREE BUFFER SPACE IN WORDS.
- *
- * FOLLOWING THE FRETAB ARRAY, THERE ARE 8 ADDITION WORDS USED
- * GENERALLY BY THE MEMORY MANAGER OF NIP.
- *
- * MAXFL MAXIMUN PERMISSIBLE PROGRAM LENGTH
- * CTLSFWA FWA OF DYNAMICALLY CONTROLLED STORAGE
- * CTLSLWA LWA OF DYNAMICALLY CONTROLLED STORAGE
- * MCUR CURRENT FREE BUFFER EXAMINED BY MGBGCLT
- * MCHG NEW ADDRESS OF MOVED BUFFER USED BY MGBGCLT
- * MOLD FWA OF BLOCK TO BE COPIED BY OMOVE
- * MNEW FWA OF BLOCK TO BE COPIED TO BY OMOVE
- * MSIZE SIZE OF BLOCK TO BE COPIED BY OMOVE
- *
- * THIS COMMON BLOCK IS USED IN ASSEMBLY ROUTINES MGETS
- * MRELS, MSEIZE, OMOVE. ANY CHANGES TO THIS COMMON
- * BLOCK SHOULD BE FOLLOWED BY CHANGES IN THOSE
- * ROUTINES.
- #
- #
- *#
- *ENDIF
- *CALL FREETAB
- *IF DEF,IMS
- #* * * * * * * * * * * * * * --- MEM --- * * * * * * * * * * * * * * *#
- *IF DEF,IMS
- #
- *1DC MEM
- * MEM IS AN EXTERNAL ARRAY WITH ADDRESS 0 USED TO
- * ADDRESS ANY LOCATION WITHIN PROGRAM LENGTH. IT
- * IS SET IN MGETS.
- #
- *ENDIF
- *CALL INPARUT
- #
- *1DC KDIS
- * KDIS IS THE COMMUNICATION AREA FOR ALL APPLICATIONS
- * USING THE K-DISPLAY
- * IT HOLDS POINTERS TO SCREEN,BUFFERS AND STATUS FLSGS
- *
- * THE DISTAIL COMMON HOLDS THE BASIC DATA THAT SHOULD
- * ALWAYS BE DISPLAYED AT BOTTOM OF SCREEN
- *
- #
- #
- *****
- * K-DISPLAY INTERFACES
- *
- * K-DISPLAY IN NAM HAS TWO MODES - "NAM" MODE AND "APPLIACTION"
- * MODE.
- * THE GENERAL SCENARIO FOR USING NAM K-DISPLAY IS AS FOLLOWS.
- * FIRST, THE HOP ASSIGNS THE K-DISPLAY TO NAM IN THE NORMAL
- * FASHION. NEXT, THE HOP ENTERS THE COMMAND THAT SELECTS THE
- * SUPERVISORY APPLICATION WITH WHICH TO BE INTERFACED. AT THIS
- * POINT THE HOP MAY ENTER THE SELECTED APPLICATION ACCORDING TO
- * THE SYSTAX RULES IN NAM REFERENCE MANUAL. TO CLEAR THE APPL.
- * MODE, ENTER AN ASTERISK AND K-DISPLAY WILL RETURN TO NAM MODE.
- *
- * THE GENERAL FORMAT OF THE NAM K-DISPLAY AS FOLLOWS:
- *
- * +-------------------------------------------+
- * I RESERVED FOR SYSTEM USAGE I LINE 50
- * I . I .
- * I . I .
- * I-------------------------------------------I LINE 44
- * I I LINE 43
- * I APPLICATION CONTROL DISPLAY I
- * I (ACD) I LINE 12
- * I-------------------------------------------I
- * I BLANK LINE I 11
- * I-------------------------------------------I
- * I ALERT I 10
- * I-------------------------------------------I
- * I BLANK LINE I 09
- * I-------------------------------------------I
- * I APPL-NAME TYPE IN REPEAT MSGI 08
- * I-------------------------------------------I
- * I BLANK LINE I
- * I-------------------------------------------I
- * I RESERVED FOR SYSTEM USE I
- * I . I
- * I . I
- * I-------------------------------------------I 00
- *
- * K-DISPLAY COMMANDS: (FORMAT K.-----)
- * AP = APPLNAME DISPLAY THE RECENT HISTORY OF THE SPECIFIED
- * APPLICATION.
- * DEFAULT TO THE APPLICATION NAME ON THE LEFT
- * MOST ON THE ALERT LINE.
- * IG DISABLE ANY ALERT FROM APPLICATION NAME ON
- * THE LEFT MOST OF THE ALERT LINE AND THEN
- * CLEAR THIS FIELD.
- * END CLEAR THE K-DISPLAY OF NAM.
- * * CLEAR THE APPLICATION MODE AND GET BACK TO
- * NAM MODE.
- * / ABORT THE PREVIOUS K-DISPLAY COMMAND. RESPOND
- * BY READY AT K-DISPLAY.
- * + TURN ON THE PAGE WAIT IF NOT ON. IF ON, ROLL
- * IN THE NEXT PAGE.
- * - TURN OFF THE PAGE WAIT. IGNORE IF PAGE WAIT
- * IS NOT ON.
- * ST START UP NAM MODE K-DISPLAY.
- * *
- #
- *CALL KDIS
- *CALL DISTAIL
- *CALL KHDRX
- *CALL KSTTAB
- *CALL MEM
- #* * * * * * * * * * ---------- MISCOM ----------* * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC MISCOM
- * MISCOM IS A COMMON DECK CONTAINING VALUES DEFINED FOR APPLICATION
- * CHARACTER TYPES, APPLICATION BLOCK TYPES AND NETWORK BLOCK TYPES.
- * FOR DETAILS, SEE NAM REFERENCE MANUAL AND CCP IMS.
- *
- #
- *ENDIF
- *CALL MISCOM
- *IF DEF,IMS
- #
- *1DC MISDEF
- *
- * MISDEF IS A COMMON DECK CONTAINING VALUES DEFINED FOR BLOCK ID-S
- * KNOWN TO NIP. VALUES DEFINED FOR ENTRY SIZES ARE ALSO INCLUDED.
- *
- #
- *ENDIF
- #* * * * * * * * * * ---------- MSGDEF ----------* * * * * * * * * * #
- *IF DEF,IMS
- #
- *# #
- *1DC MSGIDX
- *
- * MSGIDX IS A COMMON DECK CONTAINING DAYFILE MESSAGE INDEX
- * DEFINITIONS. THE MESSAGE INDEX IS USED BY VARIOUS NIP ROUTINES
- * AS AN INPUT PARAMETER TO CALL XERRMSG TO DAYFILE A SPECIFIC
- * MESSAGE.
- #
- #
- *#
- *ENDIF
- *CALL MSGIDX
- #* * * * * * * * * * ---------- NAMLEV ----------* * * * * * * * * * #
- *CALL NAMLEV
- # * * * * * * * * * * * * * ----- NBT ----- * * * * * * * * * * * * * *#
- *CALL NBT
- #* * * * * * * * * * ---------- NHEADER ----------* * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC NHEADER
- *
- * NHEADER CONTAINS THE TEMPLATE FOR THE BLOCK HEADER OF BLOCKS IN
- * NIP-S INBOUND AND OUTBOUND BUFFERS. WE SHALL REFER TO THIS TYPE
- * OF BLOCK HEADER AS THE NETWORK HEADER. FOR DOWNLINE BLOCKS, THE
- * NETWORK HEADER IS FORMATTED BY NIP WHILE FOR UPLINE BLOCKS, IT IS
- * FORMATTED BY CCP AND PIP.
- *
- * THE NETWORK HEADER HAS THE FOLLOWING FORMAT :
- *
- * 0 8 16 24 25 28 32 40 44 48 59
- * I----I----I----I-------I-------I----I-------I-------I---I----I
- * I DN I SN I CN I NHPRI I NHBSN I BT I NHDBC I NHACT I B I CC I
- * I----I----I----I-------I-------I----I-------I-------I---I----I
- *
- * WHERE :
- *
- * DN = DESTINATION NODE NUMBER
- * SN = SOURCE NODE NUMBER
- * CN = CONNECTION NUMBER
- * NHPRI = PRIORITY BIT. SET TO 1 FOR HIGH PRIORITY DATA AND 0
- * FOR LOW PRIORITY DATA, ALL BLOCKS ON THE SAME
- * CONNECTION ARE ASSIGNED THE SAME PRIORITY. PRIORITY
- * OF A PCB/QCB IS SET AT CREATION TIME AND IS USED TO
- * DETERMINE PRIORITY FOR LOGICAL LINK REGULATION.
- * NHBSN = BLOCK SEQUENCE NUMBER (1-7). THE BSN SUPPLIED IN A
- * DOWNLINE BLOCK OF TYPE -MSG-, -BLK- OR -CMD- MUST
- * BE RETURNED IN THE BSN FIELD OF THE UPLINE -BACK-
- * WHICH ACKNOWLEDGES THAT SPECIFIC BLOCK. WHEN A -BRK-
- * OR -STP- IS SENT, THE BSN RETURNED MUST BE THE SAME
- * BSN OF LAST -BACK- SENT FOR THE CONNECTION. THE BSN
- * WILL ALWAYS BE ZERO ON OTHER UPLINE OR DOWNLINE
- * BLOCKS. THIS FIELD ALSO CONTAIN THE ISN - INIT
- * SEQUENCE NUMBER WHICH IS SET UP BY NIP FOR DOWNLINE
- * -INIT- AND BY CCP FOR UPLINE -INIT-.
- * BT = BLOCK TYPE. SEE CCP IMS FOR DETAILS.
- * NHDBC = DATA BLOCK CLARIFIER. IT EXISTS ONLY FOR BLOCK TYPES
- * -MSG- AND -BLK-, SEE CCP IMS FOR DETAILS.
- * NHACT = APPLICATION CHARACTER TYPE. ONLY CHARACTER TYPE 2
- * (ASCII-8), 3(ASCII-12) AND 4(DISPLAY CODE) ARE VALID
- * FOR DOWNLINE BLOCKS. UPLINE DATA IS ALWAYS IN ASCII-8
- * FORMAT AND THIS FIELD IS ZEROED FOR UPLINE BLOCKS.
- * B = BLOCK TYPE FOR BAD UPLINE BLOCK. WHEN PIP DETECTS
- * AN UPLINE DATA TRANSMISSION ERROR, THE BT FIELD IS
- * CLEARED SO THAT NIP MAY DAYFILE THE BAD UPLINE BLOCK.
- * CC = TEXT LENGTH IN CHARACTERS. THIS IS SET BY NIP FOR
- * DOWNLINE BLOCKS AND BY PIP FOR UPLINE BLOCKS.
- *
- #
- *ENDIF
- *CALL NHEADER
- *CALL IMSPIT
- #* * * * * * * * * * ---------- NP$TAA ---------- * * * * * * * * * *#
- *CALL NP$TAA
- *CALL NP$NWNC
- #* * * * * * * * * * ---------- NWLHEAD ----------* * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC NWLHEAD
- *
- * THE NETWORK WORKLIST (NWL) IS A DYNAMICALLY ALLOCATED NON-MOVABLE
- * BUFFER. THE NWL IS 78 WORDS LONG, OF WHICH 64 WORDS CONTAINING
- * THE HEADERS AND WORKLIST ENTRIES ARE PASSED FROM AIP, 2 WORDS
- * CONTAINING THE APPLICATION STATUS AND IDENTIFICATION INFORMATION
- * ARE PASSED FROM THE OPERATING SYSTEM, ONE BLOCK HEADER WORD IS
- * SET UP BY NIP FOR IDENTIFYING THE WORKLIST BUFFER AND 11 EXTRA
- * WORDS ARE RESERVED FOR THE SITUATION WHEN THE APPLICATION HAS
- * FAILED DURING THE NWL WORKLIST PROCESSING. A GLOBAL (FOR ANY
- * PROCESS) NWL BUFFER IS ALLOCATED WHENEVER THE PREVIOUS ONE HAS
- * BEEN ASSIGNED TO A NEW NWL FROM AIP. THE NWL HAS A 5-WORD HEADER
- * OF THE FOLLOWING FORMAT :
- *
- * 0 6 24 59
- * I----------I-------I---------------------I
- * I NWLID I NWLBS I I WORD 0
- * I----------I-------I---------------------I
- *
- * 0 36 42 59
- * I-------------------I---------I----------I
- * I I NWLSTAT I NWLHADDR I WORD 1
- * I-------------------I---------I----------I
- *
- * 0 42 59
- * I-----------------------------I----------I
- * I NWLNAME I NWLJDT I WORD 2
- * I-----------------------------I----------I
- *
- * 0 59
- * I----------------------------------------I
- * I I WORD 3
- * I----------------------------------------I
- *
- * 0 9 22 30 42 59
- * I---I-------I-------I-------I------------I
- * I I NWLPN I NWLNE I NWLWC I NWLAWLADDR I WORD 4
- * I---I-------I-------I-------I------------I
- *
- * WHERE :
- *
- * NWLID = NETWORK WORKLIST ID.
- * NWLBS = NETWORK WORKLIST BLOCK SIZE.
- *
- * ( WORDS 1 AND 2 ARE SET UP BY THE OPERATING SYSTEM AND
- * PASSED TO NIP )
- *
- * NWLSTAT = APPLICATION STATUS. SET TO NON-ZERO BY THE
- * OPERATING SYSTEM WHEN IT DETECTS THE APPLICATION
- * HAD FAILED, ZERO OTHERWISE.
- * NWLHADDR = UCP COMPLETION BIT ADDRESS. THE COMPLETION BIT
- * AT THE SPECIFIED ADDRESS IS SET TO 1 BY NIP
- * WHEN PROCESSING OF THE WHOLE NWL IS COMPLETED.
- * NWLNAME = A 7-CHARACTER JOB NAME FOR THE APPLICATION.
- * NWLJDT = FNT ADDRESS FOR THE APPLICATION.
- *
- * ( WORD 4 IS SET UP BY AIP AND PASSED TO NIP TOGETHER WITH
- * THE WORKLIST ENTRIES VIA A SCP FUNCTION CALL )
- *
- * NWLPN = APPLICATION PROCESS NUMBER.
- * NWLNE = NUMBER OF WORKLIST ENTRIES IN THE NWL.
- * NWLWC = TOTAL NUMBER OF WORDS FOR NWL ENTRIES IN NWL.
- * NWLAWLADDR = APPLICATION WORKLIST ADDRESS. THIS FIELD
- * SPECIFIES THE ADDRESS IN APPLICATION-S FIELD
- * LENGTH INTO WHICH THE AWL (NIP-S REPLY TO THIS
- * NWL) IS WRITTEN.
- *
- #
- *ENDIF
- *CALL NWLHEAD
- #* * * * * * * * * * ---------- NWLNTRY ----------* * * * * * * * * * #
- *IF,DEF,IMS
- #
- *1DC NWLNTRY (NETWORK WORKLIST ENTRY)
- * A NETWORK WORKLIST ENTRY IS AN ENTRY IN A WORKLIST WHICH IS
- * FORMATTED BY AIP AND IS PASSED TO NIP TO BE PROCESSED. AFTER
- * COMPLETING CONSTRUCTION OF A NETWORK WORKLIST, AIP WILL DO A
- * CALLSS MACRO CALL TO TRANSMIT THE WORKLIST TO NIP. UPON RECEIVING
- * THE WORKLIST, NIP WILL IDENTIFY AND VALIDATE THE CALLER, THROUGH
- * FNT ORDINAL, DECODE AND PROCESS EACH ENTRY SEQUENTIALLY.
- * SOMETIMES AN OPERATION CANNOT BE COMPLETED IMMEDIATELY. NAM WILL
- * SUSPEND THE PROCESSING OF THE WORKLIST, LINK IT TO THE CORR-
- * ESPONDING HOST PCB, OR SWAP IN RING IN CASE THE APPLICATION
- * HAS NO PCB. THE PROCESSING FOR THIS WORKLIST WILL RESUME AT A
- * LATER TIME AS NAM SEES FIT. THERE ARE TEN DIFFERENT VALID
- * OPERATIONS FOR NAM FROM AIP. EACH OPERATION TOGETHER WITH ITS
- * PARAMETERS, MAKES UP AN NETWORK WORKLIST ENTRY. AS AN OPERATION
- * IS COMPLETELY PROCESSED, ITS ENTRY SPACE IN THE NWL IS RELEASED.
- * THE INITIAL SIZE OF AN NWL IS 72 CM WORDS WITH HEADER. THE HEADER
- * CONTAINS INFORMATION ABOUT THE APPLICATION AND THE NUMBER OF
- * ENTRIES IN THE NWL. NWL IS ALWAYS NONMOVABLE BY GBGCLT ROUTINE.
- *
- * EACH ENTRY IN NWL HAS THE FOLLOWING FORMAT:
- *
- * WORD 0 -
- *
- * W 7
- * 2 3 3 5 5
- * 0 6 4 0 6 4 9
- * I----------I--------I--I------------I-------I-------I-------I
- * I I I I I I I I
- * I NWLEID I NWLEBS I I NWLELTAA I NWLTA I NWLOF I NWLCB I
- * I I I I I I I I
- * I----------I--------I--I------------I-------I-------I-------I
- *
- * WHERE
- *
- * NWLEID = BLOCK ID OF THE NWLNTRY (11)
- * NWLEBS = BLOCK SIZE OF THE NWLNTRY. THIS INCLUDES THE TEXT
- * AREA OR DESCRIPTION OF THE TEXT AREA FOLLOWING THE
- * FIRST TWO WORDS OF THE ENTRY IF ONE EXISTS.
- * NWLELTAA = USED IF OPERATION IS NETGETF, NETGETFL, NETPUTF.
- * THIS IS THE NUMBER OF ENTRIES IN THE TEXT AREA
- * DESCRIPTIONS.
- * NWLTA = ZERO IF TEXT AREA IMMEDIATELY FOLLOWS THE FIRST TWO
- * WORDS OF THE NWL ENTRY. IF THE TEXT IS STILL IN
- * APPLICATION FIELD LENGTH, THIS IS THE ADDRESS
- * POINTING TO THE FIRST WORD ADDRESS OF THE AREA.
- * NWLOP = OPERATION CODE FIELD FOR THIS ENTRY.
- * A LISTING OF ALL VALID OPERATION CODES CAN BE FOUND
- * IN NWLHEAD COMMON DECK.
- * NWLCB = COMPLETION BIT. AFTER NAM COMPLETES THE OPERATION,
- * IT WILL SET THIS BIT. THIS IS THEN TRANSFERED BACK
- * TO APP.
- *
- * WORD 1 -
- *
- * IF THE OPERATION IS NOT NETWAIT:
- *
- * W 8
- * 1 3 4 4 4 4
- * 0 6 8 6 0 1 2 3
- * I----------I--------I--------I-------I------I------I------I------I
- * I I I I I I I I I
- * I NWLABT I NWLADR I NWLABN I NWLACTI NWL- I NWL- I NWL- I NWL- I
- * I I I I I IBU I BOF I TRU I RFE I
- * I----------I--------I--------I-------I------I------I------I------I
- *
- *
- * WHERE
- *
- * NWLABT = APPLICATION BLOCK TYPE. FOR DATA MESSAGES, IT IS 1
- * OR 2. FOR SUPERVISORY MESSAGE, IT IS 3. FOR SERVICE
- * MESSAGES, IT IS 4.
- * NWLADR = APPLICATION ADDRESS. IT CONTAINS CONNECTION NUMBER
- * THIS ENTRY IS REFERING TO. FOR SUPERVISORY MESSAGES
- * THIS FIELD IS ZERO.
- * FOR NWLABT = 4, THIS IS THE PN FIELD. THIS FIELD IS
- * SET BY SENDER TO THE PROCESS NUMBER OF THE RECEIVER,
- * AND LATER SET BY NIP TO THE PN OF THE SENDER SO THAT
- * THE ONE RECEIVING IT KNOWS WHERE IT COMES FROM.
- * NWLABN = APPLICATION BLOCK NUMBER. THIS CAN BE USED BY THE
- * APP TO KEEP TRACK OF BLOCK SENT DOWNLINE. IF A BLOCK
- * GETS THROUGH TO THE TERMINAL, NIP WILL SEND APP
- * A FC/ACK WITH CORRESPONDING ABN.
- * NWLACT = APP CHARACTER TYPE. THE CHARACTER TYPE OF THE DATA
- * IN THE CURRENT BLOCK.
- * NWLIBU = INPUT BLOCK UNDELIVERABLE. SET WHEN APP REQUEST A
- * DATA BLOCK UPLINE, BUT THE BLOCK CANNOT BE DELIVERED
- * BECAUSE OF SIZE RESTRICTION IF QHDATRU OFF IN QCB.
- * NWLBOF = BREAK OCCURRED FLAG.
- * NWLTRU = UPLINE DATA TRUNCATED. SET WHEN APP REQUESTS A DATA
- * BLOCK UPLINE, AND THE BLOCK IS DELIVERED TRUNCATED
- * IF QHDATRU FLAG IS SET IN QCB.
- * NWLRFE = RESERVED FOR EXPANSION.
- *
- * W 8
- * 4 4 4 4 4 5
- * 4 5 6 7 8 9
- * I--------I--------I--------I--------I--------I
- * I I I I I I
- * I NWLNFE I NWLXPT I NWLCAN I NWLBIT I NWLTLC I
- * I I I I I I
- * I--------I--------I--------I--------I--------I
- * N W L D B C
- * WHERE
- *
- * NWLNFE = NO FORMAT EFFECTOR. SET WHEN THE FIRST CHARACTER
- * OF THE ASSOCIATED BLOCK IS NOT USED AS A FORMAT
- * CONTROL CHARACTER.
- * NWLXPT = TRANSPARENT BIT. SET WHEN TRANSPARENT MODE IS ON,
- * NO CONVERSION OF DATA TO OTHER CHARACTER TYPE IS
- * NEEDED.
- * NWLCAN = CANCEL BIT.
- * FOR UPLINE DATA, THIS MEANS THE BLOCK IS CANCELLED
- * BY TERMINAL OPERATOR.
- * FOR DOWNLINE DATA, SET WHEN A LACED CARD IS REQUESTED
- * TO BE PUNCHED IN FRONT OF THE DATA BLOCK.
- * NWLBIT = ON UPLINE DATA, THIS IS THE PARITY ERROR FLAG. ON
- * DOWNLINE DATA, THIS IS THE AUTO INPUT BIT. SEE NAM
- * REFERENCE MANUAL APPLICATION BLOCK HEADER FOR
- * DETAILS.
- * NWLACT = TEXT LENGTH IN UNITS SPECIFIED BY ACT.
- * NWLDBC = DATA BLOCK CLARIFIER. NWLNFE, NWLXPT, NWLCAN,
- * NWLBIT ARE COLLECTIVELY CALLED NWLDBC.
- *
- * THE TEXT AREA OR DESCRIPTION OF TEXT AREA IF PRESENTS WILL FOLLOW
- * THE FIRST TWO WORDS OF THE NWLNTRY.
- *
- *
- * IF OPERATION IS NETWAIT,
- * W 7
- * 4
- * 0 1 2
- * I---------I----------I-----------I
- * I I I I
- * I NWLFLAG I I NWLTIME I
- * I I I I
- * I---------I----------I-----------I
- *
- * WHERE
- *
- * NWLFLAG = FLAG FOR FORCE NETWAIT. SET IF OPERATION NETWAIT IS
- * WITH FORCE OPTION.
- * NWLTIME = TIME LIMIT FOR NETWAIT.
- *
- #
- *ENDIF
- *CALL NWLNTRY
- *CALL ON
- #* * * * * * * * * * -------- OVERLAY --------- * * * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC OVERLAY
- * COMMON BLOCK OVERLAY
- * THREE WORD BUFFER USED BY OVLCALL ROUTINE TO SET UP PARAMETER
- * FOR LOADING OVERLAYS.
- #
- *ENDIF
- *CALL OVERLAY
- #* * * * * * * * * * -------- OVLNAME ---------- * * * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC OVLNAME
- * COMMON DECK OF DEFS OF OVERLAY LEVEL NUMBERS. IT IS USED BY SKENIP
- * AND ALL SYMPL PROGRAMS USING OVERLAYS. THE DEF MACRO FROM MACDEF
- * COMMON DECK WILL CONVERT THE VALUE OF EACH EXPRESSION ENCLOSED
- * IN THE PAIR OF TRIPLE BARS JUST AFTER THE NAME INTO 4 CHARACTERS
- * OCTAL STRING. THE FIRST 2 CHARACTERS GROUP IS THE PRIMARY
- * LEVEL NUMBER FOR THE NAMED OVERLAY. THE SECOND 2 CHARACTERS GROUP
- * IS THE SECONDARY LEVEL NUMBER FOR THE OVERLAY.
- #
- *ENDIF
- *CALL OVLNAME
- #* * * * * * * * * * * ------ OVLSTAT ----- * * * * * * * * * * * * * *#
- *IF DEF,IMS
- #
- *1DC OVLSTAT
- * COMMON BLOCK TO CREATE A WORD FOR EACH EXISTING OVERLAY. IN
- * EACH ENTRY OF THE OVLNAMP COMMON BLOCK, LEFTMOST 42 BITS CONTAIN
- * THE NAME OF THE OVERLAY LEFT JUSTIFIED AND ZERO FILLED. THE
- * REST OF THE WORD WILL BE ZEROED INITIALLY, WHERE THE RIGHTMOST
- * 18 BITS ARE USED AS A COUNT OF THE TIMES THE OVERLAY CALLED.
- * THIS INITIALIZATION WILL BE DONE BY THE ITEM MACRO WHEN CALLED
- * FROM OVLCALL ASSEMBLY ROUTINE DURING COMPILATION TIME.
- * THIS COMMON BLOCK EXISTS ONLY WHEN EITHER STATISTICS OR
- * DEBUG IS ON.
- * NOTE - IT IS VERY IMPORTANT TO HAVE PRINUM, OVLNUM DEFINED
- * ACCURATELY. OTHERWISE, WRONG OVERLAY MAY BE LOADED, AND
- * INCORRECT STATISTICS MAY BE COLLECTED.
- *
- #
- *ENDIF
- *CALL OVLSTAT
- #* * * * * * * * * --------- PARAMP ----------- * * * * * * * * * * * *#
- *IF DEF,IMS
- #
- *1DC PARAMP
- * COMMON BLOCK PARAMP. A TWO WORD BUFFER TO PASS PARAMETERS TO
- * PRIMARY OVERLAY.
- #
- *CALL IMSPT
- *ENDIF
- *CALL PARAMP
- *CALL PARAMS
- # * * * * * * * * * * * * * ----- PIT ----- * * * * * * * * * * * * * *#
- *CALL PIT
- *CALL PT
- *CALL RELFILE
- *ENDIF
- #* * * * * * * * * * ---------- SCPCOM ----------* * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC SCPCOM
- * SYSTEM CONTROL POINT COMMON DECK, CONTAINING A TEMPLATE (SCPCALL)
- * FOR FIELDS IN SCP CALL PARAMETER WORDS, ALL POSSIBLE OPERATION
- * CODE, AND ALL POSSIBLE RETURN CODES FROM SCP CALLS. FOR MORE
- * DETAILS ABOUT SCP CALLS, READ DOCUMENTATION ON SCP FACILITY.
- *
- * THE FORMAT OF SCP PARAMETER BLOCK (SCPCALL TEMPLATE):
- *
- * W 7
- * 2
- * 0 6 4
- * I----------I-------I
- * I I I
- * I SCPID I SCPBS I
- * I I I
- * I----------I-------I
- *
- *
- * WORD 0 -
- *
- * WHERE
- *
- * SCPID = BLOCK ID FOR SYSTEM CONTROL POINT CALL PARAMETER
- * BLOCK.
- * SCPBS = BLOCK SIZE OF THE PARAMETER BLOCK (3 CM WORDS)
- *
- * WORD 1 -
- *
- * W 7
- * 1 3 5
- * 0 6 8 6 4
- * I-------I-------I---------I---------I-------I
- * I I I I I I
- * I SCPRC I SCPFP I SCPUCPA I SCPSCPA I SCPFC I
- * I I I I I I
- * I-------I-------I---------I---------I-------I
- *
- *
- * WHERE
- *
- * SCPRC = RETURN CODE FOR SCP CALL
- * SCPFP = FUNCTION PARAMETER.
- * SCPUCPA = USER CONTROL POINT ADDRESS. ADDRESS IN USER APP
- * FOR TRANSFER OF INFORMATION.
- * SCPSCPA = SYSTEM CONTROL POINT ADDRESS. ADDRESS IN NIP OF
- * BLOCK USED BY SFLIST, SFREAD, SFWRITE.
- * SCPFC = FUNCTION CODE VALID FOR SCP CALL.
- * RIGHTMOST BIT OF SCPFC IS ALWAYS SET BY SYSTEM
- * WHEN THE OPERATION IS COMPLETED.
- *
- * WORD 2 -
- *
- * W 7
- * 4
- * 0 2
- * I---------------I-----------I
- * I I I
- * I SCPNAME I SCPJDT I
- * I I I
- * I---------------I-----------I
- *
- *
- * WHERE
- *
- * SCPNAME = JOB SEQUENCE NUMBER OF THE APP INTERACTING WITH
- * NAM.
- * SCPJDT = FNT ORDINAL OF THE APP.
- #
- *ENDIF
- *CALL SCPCOM
- *CALL SSTCOM
- BASED ARRAY SUPMSG P(11);
- BEGIN
- *CALL SUPMSG
- *CALL SMAPPL
- *CALL SMRBF
- END
- BASED ARRAY SMNIP P(3);
- BEGIN
- *CALL SMNIP
- END
- BASED ARRAY SMNVF P(11);
- BEGIN
- *CALL SMNVF
- END
- *CALL SUPABH
- #* * * * * * * * * * ---------- STATTAB ----------* * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC STATTAB
- * STATISTICS VARIABLES COMMON BLOCK. USED ONLY IF STATISTICS IS ON
- * DURING NAM GENERATION. THE COMMON BLOCK IS USED BY SYMPL AND
- * COMPASS ROUTINES.
- * LIST OF STATISTICS VARIABLES IN THE COMMON BLOCK:
- * 1. ST$PCB NUMBER OF PCBS ASSIGNED.
- * 2. ST$PCBX NUMBER OF PCBS DELETED.
- * 3. ST$QCB NUMBER OF QCBS ASSIGNED.
- * 4. ST$QCBX NUMBER OF QCBS DELETED.
- * 5. ST$AQ NUMBER OF ACKNOWLEDGEMENT QUEUES CREATED.
- * 6. ST$AQX NUMBER OF ACKNOWLEDGEMENT QUEUES RELEASED.
- * 7. ST$NIB NUMBER OF TIMES PIP NEEDED NEW INBOUND BUFFER.
- * 8. ST$INB NUMBER OF INBOUND NON-DATA BLOCKS
- * 9. ST$INC NUMBER OF INBOUND NON-DATA CHARACTERS
- * 10. ST$IDB NUMBER OF INBOUND DATA BLOCKS
- * 11. ST$IDC NUMBER OF INBOUND DATA CHARACTERS.
- * 12. ST$ONB NUMBER OF OUTBOUND NON-DATA BLOCKS.
- * 13. ST$ONC NUMBER OF OUTBOUND NON-DATA CHARACTERS.
- * 14. ST$ODB NUMBER OF OUTBOUND DATA BLOCKS.
- * 15. ST$ODC NUMBER OF OUTBOUND DATA CHARACTERS.
- * 16. ST$LNB NUMBER OF LOCAL NON-DATA BLOCKS.
- * 17. ST$LNC NUMBER OF LOCAL NON-DATA CHARACTERS.
- * 18. ST$LDB NUMBER OF LOCAL DATA BLOCKS.
- * 19. ST$LDC NUMBER OF LDCAL DATA CHARACTERS.
- * 20. ST$ENB NUMBER OF TIMES PIP INBOUND BUFFERS WERE EMPTY.
- * 21. ST$ESB NUMBER OF TIMES SCP BUFFER EMPTY.
- * 22. ST$RCL NUMBER OF TIMES NIP DOES RECALL.
- * 23. ST$LOOP NUMBER OF TIMES XEXEC LOOP GETS EXECUTED.
- * 24. ST$SCP NUMBER OF SCP CALLS.
- * 25. ST$SI NUMBER OF TIMES OSWAPIN EXECUTED.
- #
- *ENDIF
- *CALL STATTAB
- #* * * * * * * * * *--------- STATTAB2 ---------- * * * * * * * * * * *#
- *IF,DEF,IMS
- #
- *1DC STATTAB2
- * STATISTICS VARIABLES FOR MEMORY MANAGER. USED BY BOTH
- * SYMPL AND COMPASS ROUTINES.
- * LIST OF VARIABLES IN THE BLOCK:
- *
- * 1. ST$GET NUMBER OF TIMES BUFFERS ALLOCATED.
- * 2. ST$GNB NO. OF BUFFERS TRANSVERSED BY MGETS
- * 3. ST$REL NUMBER OF TIMES BUFFERS RELEASED.
- * 4. ST$RNB NO. OF BUFFERS TRANSVERSED BY MRELS
- * 5. ST$FL NUMBER OF TIMES NIP INCREASES FIELD LENGTH.
- * 6. ST$FLW SUM OF WORDS NIP INCREASES ITS FIELD LENGTH.
- * 7. ST$FLX NUMBER OF TIMES NIP DECREASES FIELD LENGTH.
- * 8. ST$FLWX SUM OF WORDS NIP DECREASES ITS FIELD LENGTH.
- * 9. ST$FLT FIELD LENGTH * INTERVAL.
- * 10. ST$FWT FREE WORDS * TIME INTERVAL.
- * 11. ST$FBT FREE BUFFER NUMBER * TIME INTERVAL.
- * 12. ST$GBWM SUM OF WORDS MOVED IN GARBAGE COLLECTION.
- * 13. ST$GBGC NUMBER OF BUFFERS COMBINED BY GARBAGE COLLECTION.
- #
- *ENDIF
- *CALL STATTAB2
- #* * * * * * * * * * -------- SWAPIN ---------- * * * * * * * * * * * #
- *IF DEF,IMS
- #
- *1DC SWAPIN
- * COMMON DECK FOR SWAP IN RING STRUCTURE.
- * SWAPIN COMMON BLOCK IS A TWO WORD TABLE USED TO MANAGE SCP SWAPIN
- * RING. EACH ENTRY IN THE RING IS A SCP SWAPIN CALL. ENTRIES ARE
- * ADDED TO THE RING WHEN AN APPLICATION NEEDS TO BE SWAPPED IN AND
- * IT HAS NO PCB. THE SWAPIN RING ENTRIES ARE NOT MOVABLE.
- * EACH SWAPIN RING ENTRY HAS THE FOLLOWING FORMAT:
- *
- *
- * WORD 0 -
- * W 7
- * 2 4 5
- * 0 6 4 2 9
- * I----------I--------I---------I---------I
- * I I I I I
- * I SWPIID I SWPIBS I SWPINBP I SWPINFP I
- * I I I I I
- * I----------I--------I---------I---------I
- *
- * WHERE
- *
- * SWPIID = SWAP IN RING ENTRY BLOCK ID (9)
- * SWPIBS = BLOCK SIZE OF ENTRY (4)
- * SWPINBP = BACKWARD POINTER TO PREVIOUS ENTRY IN THE DOUBLY
- * LINKED SWAP IN RING.
- * SWPINFP = FORWARD POINTER TO FOLLOWING ENTRY.
- *
- *
- * WORD 1 -
- * W 7
- * 2 4
- * 0 1 4 2
- * I--------I--------------I--------I--------I
- * I I I I I
- * I SWPINC I I SWPIWR I SWPIFL I
- * I I I I I
- * I--------I--------------I--------I--------I
- *
- *
- * WHERE
- *
- * SWPINC = SET WHEN THE FUNCTION LIST ASSOCIATED WITH THE
- * ENTRY HAS BEEN USED IN A SCP CALL PREVIOUSLY.
- * SWPIWR = ADDRESS OF SCP WRITE BUFFER.
- * SWPIFL = ADDRESS OF FUNCTION LIST FOR SCP CALL.
- *
- *
- * WORD 2 -
- *
- * W 7
- * 1 3 5
- * 0 6 8 6 4
- * I--------I--------I----------I----------I--------I
- * I I I I I I
- * I SWPIRC I SWPIFP I SWPIUCPA I SWPISCPA I SWPIFC I
- * I I I I I I
- * I--------I--------I----------I----------I--------I
- *
- *
- * WHERE
- *
- * SWPIRC = RETURN CODE FROM SWAPIN SCP REQUEST.
- * SWPIFP = FUNCTION PARAMETER. NOT USED IN SWAPIN REQUEST.
- * SWPIUCPA = USER ADDRESS. NOT USED IN SWAPIN REQUEST.
- * SWPISCPA = SCP ADDRESS. NOT USED IN SWAPIN REQUEST.
- * SWPIFC = OPERATION CODE. RIGHTMOST BIT OF THIS FIELD IS THE
- * COMPLETION BIT.
- *
- * WORD 3 -
- *
- *
- * W 7
- * 4
- * 0 2
- * I-----------------I-----------I
- * I I I
- * I SWPINAME I SWPIJDT I
- * I I I
- * I-----------------I-----------I
- *
- *
- * WHERE
- *
- * SWPINAME = JOB SEQUENCE NUMBER OF THE APP ASSOCIATED WITH THIS
- * ENTRY.
- * SWPIJDT = FNT OF THE APP.
- *
- #
- *ENDIF
- *CALL SWAPIN
- # * * * * * * * * * * * --- SYSCOMD --- * * * * * * * * * * * * * * * *#
- *IF DEF,IMS
- #
- *1DC SYSCOMD
- * COMMON DECK DEFINED TO ENABLE NIP TO REFERENCE THE SYSTEM
- * COMMUNICATION AREA
- * THE ARRAYS AND ITEMS INCLUDED IN THIS COMMON DECK IS
- * 1. PGNAME PROGRAM NAME WORD IN RA
- * 2. LDPM ARRAY POINTED TO RA+LWPR
- * LWA+1 OF MAIN OVERLAY, OVERLAY CALL TYPE
- * ARE IN THIS WORD
- * 3. RASSC ARRAY FOR RA.SSC WORD FOR SYSTEM CONTROL
- * INTERFACE
- *
- * WORD 0 -
- * W 7
- * 2 2 4
- * 0 1 6 3 5 2
- * I-------I-----I-------I--------------I-------I-------I
- * I I I I I I I
- * I SSCLK I I SSCXP I SSCVF I SSCLP I SSCAP I
- * I I I I I I I
- * I-------I-----I-------I--------------I-------I-------I
- *
- *
- * WHERE
- *
- * SSCLK = SET IF NO INCOMING WORKLIST.
- * SSCXP = ADDRESS OF APP EXCHANGE PACKAGE.
- * SSCVF = SET IF VARIABLE LENGTH WORKLIST ALLOWED.
- * SSCLP = LENGTH OF SCP BUFFER FOR INCOMING WORKLIST.
- * SSCAP = ADDRESS OF SCP BUFFER
- *
- #
- *ENDIF
- *CALL SYSCOMD
- #* * * * * * * * * * -------- SYSTIME ---------- * * * * * * * * * * *#
- *IF DEF,IMS
- #
- *1DC SYSTIME
- * COMMON DECK FOR INTERFACE WITH OPERATING SYSTEM REAL TIME MACRO.
- * TIME IS A COMMON BLOCK USED BY ROUTINES IN NAM. IT CONTAINS
- * THETIME ARRAY WHICH HAS A DESCRIPTION OF THE FIELDS IN THE
- * PARAMETER WORD FOR REAL TIME MACRO CALL. NOTE - THIS IS A NOS VER-
- * SION OF REAL TIME MACRO.
- *
- * FORMAT OF THETIME PARAMETER WORD:
- *
- * WORD 0 -
- *
- * W 7
- * 2
- * 0 4
- * I----------I---------I
- * I I I
- * I RTSECS I MSECS I
- * I I I
- * I----------I---------I
- *
- *
- * WHERE
- *
- * RTSECS = REAL TIME IN SECONDS UNIT.
- * MSECS = REAL TIME IN MICRO SECONDS UNIT.
- *
- #
- *ENDIF
- *CALL SYSTIME
- # * * * * * * * * * * * * * ----- TNT ----- * * * * * * * * * * * * * *#
- *CALL TNT
- #* * * * * * * * * * ---------- TRAF ----------* * * * * * * * * * #
- BASED ARRAY TRAFLST P(10);
- BEGIN
- END
- #* * * * * * * * * * ---------- USERDEF ----------* * * * * * * * * * #
- *IF DEF,IMS
- #
- * NETWORK PRODUCTS DOCUMENTATION PAGE
- * NAM INTERNAL SPECIFICATION DATE.
- * 4.0 SYSTEM CONTROL POINT COMMUNICATION
- *
- * NIP, AS A SUBSYSTEM, USES THE NOS SYSTEM CONTROL POINT
- * FEATURE TO COMMUNICATE WITH OTHER PROGRAMS, WHICH WILL HERE-
- * AFTER BE REFERRED TO AS USER CONTROL POINTS (UCP). AS PART OF
- * ITS INITIALIZATION PHASE, NIP ISSUES A RA+1 CALL TO ESTABLISH
- * ITSELF AS A SYSTEM CONTROL POINT (SCP). THIS IS SO THE OPERATING
- * SYSTEM CAN KEEP TRACK OF WHICH SUBSYSTEMS ARE ACTIVE AS SYSTEM
- * CONTROL POINTS.
- *
- * AS A SYSTEM CONTROL POINT, NIP CAN EXECUTE THE FOLLOWING
- * FUNCTIONS:
- *
- * 1) SF.ENDT TERMINATE SHORT TERM CONNECTION BETWEEN UCP
- * AND SCP
- * 2) SF.SLTC ESTABLISH LONG TERM CONNECTIONS BETWEEN UCP
- * AND SCP
- * 3) SF.CLTC CLEAR LONG TERM CONNECTIONS BETWEEN UCP AND SCP
- * 4) SF.WRITE WRITE ANYWHERE IN AN UCP-S FIELD LENGTH
- * 5) SF.READ READ ANY LOCATION IN AN UCP-S FIELD LENGTH
- * 6) SF.REGR ABORT ANY UCP AND WRITE MSG TO ITS DAYFILE
- * 7) SF.SWPO SWAP OUT UCP
- * 8) SF.SWPI SWAP IN UCP
- * 9) SF.STAT DETERMINE IF UCP IS SYSTEM RESIDENT
- *
- * A CLARIFICATION IS NEEDED IN THE DEFINITION OF UCP AS USED IN
- * THE ABOVE FUNCTIONS. AN UCP IS ANY PROGRAM THAT IS COMMUNICATING
- * (HAS ESTABLISHED A CONNECTION) WITH A SYSTEM CONTROL POINT. IN
- * OUR CASE, THAT SCP IS NIP. THEREFORE, NIP CANNOT ARBITRARILY
- * ABORT, READ, OR OVERWRITE THE FIELD LENGTH, ETC. OF JUST ANY
- * PROGRAM RUNNING IN THE COMPUTER.
- *
- * COMMUNICATION BETWEEN AN UCP AND A SCP CAN ONLY BE INITIATED BY
- * THE UCP. THIS OCCURS WHEN AIP ISSUES A SSC RA+1 CALL. THE SSC
- * CALL INFORMS THE OPERATING SYSTEM THAT THE UCP WISHES TO SEND
- * A WORKLIST (NWL) TO NIP.
- *
- * WHENEVER THE UCP SENDS A WORKLIST TO NIP, A SHORT TERM CON-
- * NECTION HAS BEEN ESTABLISHED BETWEEN NIP AND THE UCP. UNLESS
- * THE UCP FAILS, THIS SHORT TERM CONNECTION CAN BE TERMINATED
- * ONLY BY NIP. THIS IS DONE WHEN NIP ISSUES THE SF.ENDT SCP
- * FUNCTION. THE OPERATING SYSTEM ALLOWS AN UCP TO ESTABLISH UP
- * TO SEVEN SHORT TERM CONNECTIONS BETWEEN ITSELF AND NIP. HOWEVER,
- * NIP AND AIP WILL ALLOW ONLY ONE WORKLIST (AND THEREFORE ONLY
- * ONE SHORT TERM CONNECTION) AT A TIME TO BE TRANSFERRED (UNLESS
- * THE SECOND WORKLIST IS A NETOFF). NIP WILL ISSUE THE SF.ENDT SCP
- * FUNCTION AFTER IT HAS FINISHED PROCESSING THE WORKLIST.
- *
- * THE FIRST WORKLIST THAT AIP SENDS TO NIP MUST BE A NETON
- * WORKLIST. IF NOT, NIP WILL ABORT THE UCP (UNLESS IT IS A
- * NETOFF WORKLIST). WHEN NIP RECEIVES THE NETON WORKLIST ENTRY,
- * IT WILL ISSUE A SF.STAT SCP FUNCTION TO DETERMINE IF THE UCP IS
- * SYSTEM RESIDENT. IF THE UCP IS NS OR CS AND LIBRES IS NOT
- * DEFINED, THE UCP MUST BE SYSTEM RESIDENT. IF NOT, NIP
- * WILL ABORT THE UCP ASSUMING THAT A MALICIOUS UCP WAS TRYING
- * TO MASQUERADE AS NS OR CS. IF LIBRES IS DEFINED, NIP DOES NOT
- * CARE IF NS OR CS ARE SYSTEM RESIDENT. IF THE UCP IS NOT NS OR CS,
- * NIP WILL CREATE A PCB AND SEND A NET/ON SUPERVISOR MESSAGE
- * TO CS, UNLESS THE NETWORK IS SHUTTING DOWN OR CS HAS NOT
- * NETTED ON YET OR NIP COULD NOT CREATE A PCB FOR THE UCP.
- * THEN NIP WILL REJECT THE NETON. CS WILL SEND NIP A RESPONSE
- * TO THE NET/ON SUPERVISOR MESSAGE. SINCE IT MAY TAKE SOME
- * TIME BEFORE NIP GETS THE SUPERVISOR MESSAGE
- * RESPONSE, THE SYSTEM CANNOT AFFORD TO HAVE THE UCP SIT AT A CON-
- * TROL POINT WAITING FOR A NETON RESPONSE, ESPECIALLY IF ITS FIELD
- * LENGTH IS QUITE LARGE. THUS NIP WILL SWAPOUT THE UCP AND WILL
- * NOT SWAP IT BACK IN UNTIL AFTER IT GETS THE NET/ON/R FROM CS.
- * IN THE NET/ON/R FROM CS IS A RETURN CODE. DEPENDING ON THE
- * VALUE OF THIS RETURN CODE, NIP WILL EITHER ABORT
- * THE UCP, REJECT THE NETON, OR ACCEPT THE NETON. TO ABORT THE
- * UCP, NIP WILL ISSUE A SF.REGR SCP FUNCTION. THIS WILL SET THE
- * ERROR FLAG AT THE UCP-S CONTROL POINT AND PUT A MSG IN ITS
- * DAYFILE EXPLAINING WHY IT WAS ABORTED. IF REJECTING THE NETON,
- * NIP WILL CREATE A NETON AWL. IN THIS AWL WILL BE THE REASON CODE
- * FOR REJECTING THE NETON OF THIS UCP. THE AWL WILL GET WRITTEN
- * TO THE UCP USING THE SF.WRITE SCP FUNCTION IN A FUNCTION LIST
- * WHICH INCLUDES A SF.ENDT SCP FUNCTION. IF THE NETON IS ACCEPTED
- * NIP WILL ESTABLISH A LONG TERM CONNECTION (ISSUE SF.SLTC SCP
- * FUNCTION) WITH THE UCP.
- *
- * LONG TERM CONNECTIONS NEED TO BE ESTABLISHED BETWEEN UCP-S
- * AND SCP-S SO THAT THE OPERATING SYSTEM CAN KEEP A RECORD
- * OF WHICH SCP-S ARE COMMUNICATING WITH WHICH UCP-S EVEN IF
- * NO SHORT TERM CONNECTIONS EXIST. THIS WAY, IF NIP SHOULD
- * FAIL, THE OPERATING SYSTEM KNOWS WHICH PROGRAMS IN THE
- * SYSTEM WERE COMMUNICATING WITH NIP. TO INFORM THE UCP-S
- * THAT NIP IS GONE, THE OPERATING SYSTEM ABORTS THEM. ALSO IF
- * THE UCP SHOULD FAIL, THE OPERATING SYSTEM KNOWS WHICH SCP-S THE
- * UCP WAS COMMUNICATING WITH. IT CAN THEREFORE INFORM THE SCP THAT
- * THE UCP HAS FAILED. THIS IS DONE BY THE OPERATING SYSTEM
- * CREATING A WORKLIST TO SEND TO THE SCP. IN THIS WORKLIST IS
- * THE JOBID OF THE UCP THAT FAILED PLUS A NONZERO VALUE IN THE
- * FAILED-STATUS FIELD.
- *
- * IF THE NETON IS SUCCESSFUL, THE UCP WILL BE ABLE TO START
- * SENDING NETGET, NETPUT, NETWAIT, ETC. WORKLIST ENTRIES TO
- * NIP. NIP WILL PROCESS THESE WORKLIST (NWL) ENTRIES UNTIL
- * EITHER 1) IT FINISHES PROCESSING THE LAST ENTRY, 2) IT
- * CANNOT GET THE SPACE NEEDED TO PROCESS THE CURRENT ENTRY, 3)
- * COMES ACROSS A NETWAIT WORKLIST ENTRY, 4) IT ISSUES A SCP
- * FUNCTION AND GETS A SCP RETURN CODE 44B, OR 5) THE UCP TRIES
- * TO SEND A SUPERVISOR MESSAGE TO CS AND CS HAS REACHED ITS
- * MAXIMUM NUMBER OF QUEUED SUPERVISOR MESSAGES. EXCEPT FOR CASE
- * NUMBER 1, NIP WILL TEMPORARILY SUSPEND PROCESSING THE WORKLIST.
- * PERIODICALLY XSPCB WILL BE CALLED TO CHECK IF THE SITUATION
- * WHICH CAUSED THE WORKLIST PROCESSING TO BE SUSPENDED HAS CLEARED
- * UP. IF SO, IT WILL RESTART WORKLIST PROCESSING FROM WHEREVER
- * IT LEFT OFF. FOR MOST WORKLIST PROCESSING NIP WILL BE REQUIRED
- * TO CREATE AN AWL TO WRITE BACK TO THE APPLICATION. THIS AWL WILL
- * BE WRITTEN TO THE UCP AFTER NIP FINISHES PROCESSING THE WORKLIST
- *
- * IN PROCESSING NETGETS OR NETGETLS, IF NIP HAS DATA FOR THE UCP,
- * IT WILL ISSUE A SF.WRITE SCP FUNCTION(S) TO WRITE THE TEXT BACK
- * TO THE UCP-S FIELD LENGTH. IF NIP HAS NO DATA, THEN IT WILL JUST
- * CREATE AN AWL ENTRY. IN PROCESSING NETGETFS OR NETGTFLS, NIP
- * MAY ALSO HAVE TO FIRST ISSUE A SF.READ SCP FUNCTION TO READ THE
- * TEXT ARRAY INTO ITS FIELD LENGTH, IF THE TEXT ARRAY DID NOT FIT IN
- * THE WORKLIST. IN PROCESSING NETPUTS AND NETPUTFS, NIP MAY BE
- * REQUIRED TO ISSUE SF.READ SCP FUNCTION(S) TO READ THE TEXT FROM
- * THE UCP-S FIELD LENGTH, IF THE TEXT DID NOT FIT IN THE WORKLIST.
- * IN PROCESSING NETPUTF THERE MAY BE AN ADDITIONAL SF.READ SCP
- * FUNCTION ISSUED TO FIRST READ THE TEXT ARRAY INTO NIP-S FIELD
- * LENGTH, IF THE TEXT ARRAY DID NOT FIT IN THE WORKLIST.
- *
- * IN SENDING NIP A NON-FORCE NETWAIT WORKLIST ENTRY, THE UCP IS
- * SAYING IT HAS NOTHING TO DO UNTIL THERE IS SOME DATA OR
- * SUPERVISOR MESSAGE FOR IT TO PROCESS. THEREFORE RATHER THAN
- * HAVING THE UCP WAIT AROUND AT A CONTROL POINT FOR SOMETHING
- * TO DO, IF NIP HAS NOTHING TO SEND TO THE UCP AND THE NETWAIT
- * TIME IS GREATER THAN THE MINIMUM SWAPOUT TIME, NIP WILL SWAP
- * THE UCP OUT (USING THE SF.SWPO SCP FUNCTION). WHEN DATA BECOMES
- * AVAILABLE OR THE NETWAIT TIME IS UP, NIP WILL SWAP IN THE UCP
- * (USING THE SF.SWPI SCP FUNCTION) AND CONTINUE PROCESSING THE
- * REST OF THE WORKLIST FROM WHEREVER IT LEFT OFF. IF NIP RECEIVES
- * A FORCED NETWAIT ENTRY, IT WILL SWAP OUT THE UCP (UNLESS THE
- * NETWAIT TIME IS LESS THAN THE MINIMUM SWAPOUT TIME). THE UCP
- * WILL NOT BE SWAPPED IN UNTIL THE NETWAIT TIME IS UP, EVEN IF
- * DATA BECOMES AVAILABLE FOR THE UCP BEFORE THEN.
- *
- * WHEN THE UCP NETOFFS, IT NO LONGER WISHES TO COMMUNICATE WITH
- * NIP. NIP WILL FIRST CHECK TO SEE IF IT HAS A RECORD (ACTIVE PCB)
- * OF THAT UCP. IF SO, NIP KNOWS THAT THE UCP HAD SUCCESSFULLY NETTED
- * ON AND NIP HAD ESTABLISHED A LONG TERM CONNECTION WITH IT. NIP
- * WILL THEN ISSUE A SCP FUNCTION LIST TO CLEAR BOTH THE LONG AND
- * SHORT TERM CONNECTIONS AND ALSO INFORM CS THAT THE UCP IS NETTING
- * OFF BY SENDING IT A NET/OFF SUPERVISOR MESSAGE (UNLESS NIP HAD
- * PREVIOUSLY INFORMED CS THAT THE UCP WAS GONE). IF NIP HAS
- * NO RECORD OF THE UCP, IT WILL ASSUME THAT NO LONG TERM CONNECTION
- * EXISTS AND ALSO THAT CS HAS NO RECORD OF THE UCP. NIP WILL THEN
- * ISSUE A SCP FUNCTION TO CLEAR ONLY A SHORT TERM CONNECTION. NIP
- * WILL ALSO NOT INFORM CS THAT THE UCP IS NETTING OFF. WHEN THE
- * SCP FUNCTION LIST HAS BEEN COMPLETED, THE UCP WILL HAVE BECOME A
- * NORMAL PROGRAM AGAIN AND BE FREE TO CONTINUE PROCESSING OR TO
- * TERMINATE. IF DESIRED, THE PROGRAM CAN EVEN NETON AGAIN AND
- * REESTABLISH ITS CONNECTION WITH NIP.
- *
- * WHENEVER AN UCP FAILS, THE OPERATING SYSTEM WILL INFORM NIP.
- * NIP WILL THEN ISSUE A SF.ENDT SCP FUNCTION WITH UCPA = -1 TO
- * CLEAR ALL CONNECTIONS IT HAS WITH THE UCP. IF NIP SHOULD GET
- * A SCP RETURN CODE 44B, IT WILL DISCONTINUE PROCESSING THE UCP
- * FAILURE AND ASSUME THAT THE OPERATING SYSTEM WILL INFORM NIP THAT
- * THE UCP HAD FAILED AGAIN. WHEN IT DOES, NIP WILL PROCESS THE SCP
- * FAILURE AS IF IT WAS BEING NOTIFIED FOR THE FIRST TIME. UNTIL
- * NIP SUCCESSFULLY CLEARS THE CONNECTIONS BETWEEN ITSELF AND THE
- * UCP, THE UCP WILL HANG AT THE CONTROL POINT UNABLE TO EXECUTE ITS
- * NEXT CONTROL CARD. AFTER CLEARING THE CONNECTIONS, IF NIP HAD
- * A PCB FOR THAT UCP AND NIP HAD NOT PREVIOUSLY INFORMED CS
- * THAT THE UCP WAS GONE, NIP WILL SEND A FAIL/APPL SUPERVISOR
- * MESSAGE TO CS TO INFORM IT THAT THE UCP HAD FAILED.
- *
- * ALL SCP FUNCTIONS EXCEPT SWAPIN ARE ISSUED WITH RECALL, I.E.
- * NIP DOES NOT WANT THE CPU BACK UNTIL THE FUNCTION IS COMPLETE.
- * HOWEVER, THERE ARE MANY CASES WHERE THE FUNCTION COULD NOT BE
- * COMPLETED. IF THIS HAPPENS, THE OPERATING SYSTEM WILL GIVE NIP A
- * NONZERO RETURN CODE (RC) INDICATING WHAT WENT WRONG. FOR MOST
- * OF THESE RETURN CODE VALUES, NIP OR THE OPERATING SYSTEM DID
- * SOMETHING WRONG, SO NIP ABORTS. THE RETURN CODES FOR WHICH NIP
- * DOES NOT USUALLY ABORT ARE 43B, 44B, 45B, AND 46B. THERE ARE
- * RESPECTIVELY - BAD UCP ADDRESS, UCP IS SWAPPED OUT, UCP NOT IN
- * SYSTEM, AND UCP TEMPORARILY CANNOT BE SWAPPED IN.
- * IF NIP GETS A SCP RC=43B, NIP ASSUMES THAT THE UCP
- * IN SYSTEM. IF NIP GETS A SCP RC=43B, NIP ASSUMES THAT THE UCP
- * GAVE HIM A BAD ADDRESS SO NIP ABORTS THE UCP. IF NIP GETS A SCP
- * RETURN CODE 45B, IT WILL DISCONTINUE PROCESSING THE WORKLIST AND
- * TREAT THE UCP AS HAVING FAILED. UNDER CERTAIN CASES, IT IS
- * EVEN POSSIBLE FOR A SCP 43B RETURN CODE TO BE FATAL. FOR
- * EXAMPLE, IF NIP ISSUES A SCP SF.ENDT FUNCTION, IT SHOULD NEVER
- * GET A SCP RETURN CODE 43B.
- *
- * NORMALLY, WHEN NIP GETS A SCP RETURN CODE 63B (NO CONNECTION
- * EXISTS BETWEEN THE UCP AND THE SCP), NIP ABORTS.
- * HOWEVER, THERE IS ONE SPECIAL CASE WHEN IT DOES NOT. THAT IS
- * WHEN HAPFAIL CALLS NIP TO PROCESS AN UCP FAILURE. SINCE THE
- * OPERATING SYSTEM CAN INFORM NIP MORE THAN ONCE THAT THE UCP HAS
- * FAILED, IT IS POSSIBLE FOR NIP TO GET TWO FAILED-STATUS WORKLISTS
- * FOR THE SAME UCP. AFTER NIP FINISHES PROCESSING THE FIRST
- * FAILED-STATUS WORKLIST, IT WILL NO LONGER HAVE ANY CONNECTIONS
- * WITH THE FAILED UCP. IN PROCESSING THE SECOND FAILED-STATUS
- * WORKLIST, NIP WILL GET A SCP RETURN CODE 63B, WHEN IT ISSUES THE
- * SCP SF.ENDT FUNCTION (WITH UCPA = -1) FOR THIS SAME UCP.
- *
- * IN MOST CASES WHEN A SCP FUNCTION IS ISSUED, A PCB EXISTS FOR
- * THE APPLICATION. IF THE SCP FUNCTION GETS A RETURN CODE 44B,
- * NIP WILL DISCONTINUE PROCESSING THE WORKLIST AND ISSUE A SF.SWPI
- * SCP FUNCTION TO SWAP IN THE UCP. THEN NIP WILL TRY TO SET FIELDS
- * AND POINTERS IN THE PCB SO THAT THE WORKLIST ENTRY THAT CAUSED THE
- * SCP CALL TO BE MADE CAN BE REPROCESSED FROM THE BEGINNING.
- * HOWEVER, THIS IS NOT ALWAYS POSSIBLE. FOR EXAMPLE, IN PROCESSING
- * A NETGETSM WORKLIST ENTRY, NIP WILL MOVE ALL THE SUPERVISOR
- * MESSAGES INTO ONE BUFFER AFTER DELINKING THEM FROM THE PCB.
- * THEN THE SF.WRITE SCP FUNCTION IS ISSUED TO WRITE THE SUPERVISOR
- * MESSAGES TO AIP-S SUPERVISOR MESSAGE BUFFER. IF NIP GETS A
- * SCP RETURN CODE 44B, IT WOULD BE TOO MUCH WORK TO LINK THE
- * SUPERVISOR MESSAGES BACK TO THE PCB. NIP THEREFORE STORES THE
- * SCP FUNCTION LIST ADDR AND SUPERVISOR MESSAGE BUFFER ADDRESS IN
- * THE PCB. AFTER THE UCP IS SWAPPED IN, THE ORIGINAL SCP FUNCTION
- * LIST IS REISSUED.
- *
- * UNFORTUNATELY THERE ARE CASES WHERE A PCB DOES NOT EXIST FOR
- * THE APPLICATION AND A SCP FUNCTION IS ISSUED WHICH GETS A RETURN
- * CODE 44B. THEY ARE: 1) AN UCP NETOFF-S
- * AND NIP GETS AN SCP RC=44B IN RESPONSE TO THE SF.ENDT, 2)
- * AN UCP TRIES TO NETON AND NIP GETS A SCP RC=44B IN RESPONSE
- * TO THE SF.STAT SCP FUNCTION, 3) AN UCP TRIES TO NETON AND NIP
- * REJECTS IT AND NIP GETS
- * NETON AND CS REJECTS IT (NON-FATAL) AND NIP GETS A SCP RC=44B
- * IN RESPONSE TO THE SCP FUNCTION LIST, 5) A MALICIOUS UCP TRIES TO
- * NETON AS NS OR CS, OR CS REJECTED ITS NETON (FATAL) AND NIP GETS
- * A SCP RC=44B IN RESPONSE TO THE SF.REGR SCP FUNCTION TO ABORT THE
- * UCP. FOR THESE FIVE CASES NIP WILL ISSUE A SWAPIN OF THE UCP AND
- * CREATE A "NO PCB" SWAPIN CHAIN ENTRY. THE SWAPIN CHAIN ENTRY
- * WILL CONTAIN THE SCP SWAPIN CALL PLUS THE ADDRESS OF THE ORIGINAL
- * FUNCTION LIST PLUS MAYBE AN AWL TO WRITE BACK TO THE UCP.
- * WHEN XSPCB IS CALLED, IT WILL CHECK TO SEE IF THERE ARE ANY
- * ENTRIES IN THIS CHAIN. IF SO IT WILL CHECK IF THE SWAPIN HAS
- * COMPLETED. IF COMPLETED, THE ORIGINAL SCP FUNCTION WILL BE
- * BE REISSUED, AND IF SUCCESSFUL, THE SWAPIN ENTRY WILL BE RELEASED
- * NIP WILL RECEIVE A SCP RC=46B IN RESPONSE TO ONLY A SWAPIN
- * REQUEST. NIP WILL SIMPLY REISSUE THE SWAPIN REQUEST IMMEDIATELY.
- *
- #
- *ENDIF
- #**********************************************************************#
- BEGIN
- PARAMP1 = LWPR[0]; # LWA + 1 OF MAIN OVERLAY #
- POVL4 = OVLFG[0]; # SET OVERLAY LOAD CALL TYPE #
- OVLADR0[0] = PGNAME; # EXECUTION FILE NAME #
- OVLNAME = INIPP; # NAME OF OVERLAY PROGRAM TO LOAD #
- OVLCALL; # LOAD AN EXECUTE OVERLAY #
- CONTROL IFEQ ZZDN,1;
- OVLNAME = INIPDP; # CHECK IF FILES ARE LOCAL #
- OVLCALL;
- CONTROL FI;
- IRECVR; # INITIATE RECOVERY #
- NIPINIT = TRUE;
- NIP10:
- XEXEC; # GOTO MAIN EXECUTION CONTROL #
- GOTO NIP10; # LOOP #
- END
- TERM
cdc/nos2.source/nam5871/nip.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator