User Tools

Site Tools


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
  1. *DECK NIP
  2. PRGM NIP;
  3. CONTROL PRESET;
  4. *IF DEF,IMS
  5. #
  6. * W 12
  7. * NN NN A MM MM
  8. * NNN NN AAA MMM MMM
  9. * NNNN NN AA AA MMMM MMMM
  10. * NN NN NN AA AA MM MM MM MM
  11. * NN NN NN AA AA MM MM MM MM
  12. * NN NN NN AA AA MM MMMM MM
  13. * NN NN NN AA AA MM MM MM
  14. * NN NN NN AAAAAAAAA MM MM
  15. * NN NN NN AAAAAAAAAAA MM MM
  16. * NN NNNN AA AA MM MM
  17. * NN NNN AA AA MM MM
  18. * NN NN AA AA MM MM
  19.  * NETWORK PRODUCTS DOCUMENTATION PAGE
  20.  * NAM INTERNAL SPECIFICATION DATE.
  21.  * NAM GENERAL DESCRIPTION
  22. *1DC NAM GENERAL DESCRIPTION
  23. * *****************************************************************
  24. * * PLEASE REFER TO THE RECENT HARD COPY OF NAM IMS. *
  25. * *****************************************************************
  26. *
  27. *
  28. * THE NETWORK ACCESS METHOD(NAM) PROVIDES AN INTERFACE FOR PROGRAMS
  29. * EXECUTING IN A CYBER 70/170 FOR EXCHANGING DATA WITH TERMINALS
  30. * IN THE NETWORK AS WELL AS OTHER EXECUTING PROGRAMS IN THE NETWORK.
  31. *
  32. * NAM PROVIDES THE FOLLOWING FEATURES AND/OR ADVANTAGES TO THE
  33. * APPLICATION PROGRAM
  34. *
  35. * .ISOLATION OF APPLICATION COMMUNICATIONS FROM THE OPERATING
  36. * SYSTEM
  37. *
  38. * .MANAGEMENT OF NETWORK PROTOCOL
  39. *
  40. * .DYNAMIC ESTABLISHMENT, MAINTENANCE AND TERMINATION OF DATA PATHS
  41. * BETWEEN TERMINALS AND PROGRAMS OR BETWEEN PROGRAMS.
  42. *
  43. * .BUFFERING AND QUEUING OF DATA FOR REGULATION OF DATA FLOW
  44. *
  45. * .SUPPORT A WIDE VARIETY OF TERMINALS THROUGH NORMALIZATION OF
  46. * DATA FORMATS
  47. *
  48. * .MECHANISM FOR ANY PROGRAM TO COMMUNICATE WITH A NUMBER OF
  49. * TERMINALS WHICH MAY BE ADDRESSED INDIVIDUALLY OR BE GROUPED
  50. * TOGETHER AND ADDRESSED AS A MEMBER OF A GROUP (LIST).
  51. *
  52. * NAM IS MADE UP OF THE FOLLOWING 3 MAJOR MODULES
  53. *
  54. * .NIP - A CP PROGRAM WRITTEN MOSTLY IN SYMPL AND RUNNING AT
  55. * A DEDICATED CONTROL POINT. NIP HAS SYSTEM CONTROL POINT
  56. * PRIVILEGES, I.E. IT CAN READ AND WRITE INTO THE FIELD LENGTH
  57. * OF SO CALLED USER CONTROL POINTS UPON REQUEST OF THESE
  58. * CONTROL POINTS.
  59. *
  60. * .PIP - A DEDICATED PPU PROGRAM RUNNING AT NIP"S CONTROL POINT.
  61. * ONE OR MORE COPIES OF PIP MAY RESIDE IN PPU-S (DEPENDING ON
  62. * THE EST CONFIGURATION OF ENABLED NETWORK NODES) AND WILL
  63. * OCCUPY THOSE PPU-S AS LONG AS THERE ARE NETWORK NODES ENABLED.
  64. *
  65. * .AIP - A COLLECTION OF RELOCATABLE SUBROUTINES RESIDING IN THE
  66. * APPLICATIONS FIELD LENGTH, WHICH ENABLE THE APPLICATION TO
  67. * COMMUNICATE WITH NIP, USING THE OPERATING SYSTEM SYSTEM
  68. * CONTROL POINT FEATURE.
  69. *
  70. * THE READER OF THIS DOCUMENT IS EXPECTED TO BE FAMILIAR WITH THE
  71. * NAM REFERENCE MANUAL, THE NOS REFERENCE MANUAL AND DETAILS
  72. * OF THE NOS SYSTEM CONTROL POINT FEATURE. THE DOCUMENTATION FOR
  73. * THIS NOS OPERATING SYSTEM FEATURE IS PENDING.
  74. *
  75. * THE REMAINDER OF THIS DOCUMENT IS ORGANIZED IN THE FOLLOWING
  76. * MANNER:
  77. *
  78. * 1.0 NIP PROGRAM STRUCTURE
  79. * 2.0 MESSAGE TRANSMISSION THROUGH NAM
  80. * 3.0 NIP TABLE STRUCTURE
  81. * 4.0 SYSTEM CONTROL POINT COMMUNICATION
  82. * 5.0 NIP DETAILED DESCRIPTION
  83. * 6.0 NIP CROSS REFERENCE TABLE
  84. * 7.0 AIP PROGRAM STRUCTURE
  85. * 8.0 AIP TABLE STRUCTURE
  86. * 9.0 AIP DETAILED DESCRIPTION
  87. * 10.0 AIP CROSS REFERENCE TABLE
  88. * 11.0 PIP PROGRAM STRUCTURE
  89. * 12.0 PIP DETAILED DESCRIPTION
  90. (
  91. *
  92.  * NETWORK PRODUCTS DOCUMENTATION PAGE
  93.  * NAM INTERNAL SPECIFICATION DATE.
  94.  * 1.0 NIP PROGRAM STRUCTURE
  95. *1DC 1.0 NIP PROGRAM STRUCTURE
  96. *
  97. * NIP GLOBAL STRUCTURE IS PICTURED BELOW
  98. * ---------------------------------------------------------
  99. * I I
  100. * I I
  101. * I SYSTEM COMMUNICATION, RESIDENT TABLES, CONSTANTS I
  102. * I (1100O) I
  103. * ---------------------------------------------------------
  104. * I I
  105. * I I
  106. * I I
  107. * I I
  108. * I I
  109. * I MAIN PROGRAM AND FREQUENTLY USED SUBROUTINES I
  110. * I I
  111. * I (16000O) I
  112. * ---------------------------------------------------------
  113. * I I
  114. * I OVERLAYS (1400O) I
  115. * I I
  116. * ---------------------------------------------------------
  117. * I I
  118. * I DYNAMICALLY ALLOCATED BUFFER AREA I
  119. * I I
  120. * ---------------------------------------------------------
  121. *
  122. * ALL OCTAL NUMBERS INDICATING SIZES OF THE VARIOUS PORTIONS ARE
  123. * APPROXIMATE.
  124. *
  125. * UNDER SYSTEM COMMUNICATION OF COURSE WE HAVE THE FIRST 111O WORDS
  126. * OF CORE, SOME OF WHICH IS BEING UTILIZED FOR SYSTEM CONTROL POINT
  127. * COMMUNICATION. THIS AREA ALSO CONTAINS THE FOLLOWING POINTERS AND
  128. * TABLES NEEDED BY NIP TO FUNCTION.
  129. *
  130. * COPYRT COPYRIGHT COMMON BLOCK
  131. * APPSTAT NETWORK WORKLIST PROCESSING TABLE
  132. * BACKBUF SPECIAL BUFFER FOR DOWNLINE BACKS
  133. * FREETAB BUFFER MANAGEMENT PROCESSING TABLE
  134. * KDIS K-DISPLAY SUPPORT TABLE
  135. * OVERLAY OVERLAY PROCESSING TABLE
  136. * OVLNAMEP OVERLAY NAME TABLE
  137. * PARAMP BUFFER FOR PASSING PARAMS TO/FROM PRIMARY OVERLAYS
  138. * PARAMS BUFFER FOR PASSING PARAMS TO/FROM SECONDARY OVRLAYS
  139. * PITTAB PIP INTERFACE TABLE
  140. * PT POINTER TABLE
  141. * SSTCOM SYSTEM CONTROL POINT FILE TRANSFER TABLE
  142. * TIME SYSTEM TIME TABLE
  143. *
  144. * THE MAIN PROGRAM FOR NIP IS ALSO CALLED NIP, AND IS THE FIRST
  145. * PROGRAM ON THE PL. IT IS THE ONLY PROGRAM THAT HAS THE COMMON
  146. * DECKS USED BY NIP LISTED. IN ALL OTHER ROUTINES SYMPL TEXT IS
  147. * USED. COMMON DECKS FOR SUPERVISORY MESSAGES USED THROUGHOUT
  148. * NETWORK HOST PRODUCTS MAY BE LISTED BY EXECUTING THE
  149. * FOLLOWING JOB:
  150. *
  151. * (JOB AND ACCOUNT CARDS)
  152. * (OBTAIN A COPY OF NAMPL)
  153. * UPDATE(Q,P=NAMPL)
  154. * RFL(60000)
  155. * COMPASS(I)
  156. * 7-8-9
  157. * *C NP$SYM
  158. * 6-7-8-9
  159. *
  160. *
  161. * THE STRUCTURE OF NIP ON THE PL IS AS FOLLOWS:
  162. * . COMMON DECKS IN ALPHABETICAL ORDER
  163. * . THE MAIN PROGRAM NIP FOLLOWED BY ALL THE ROUTINES WRITTEN IN
  164. * SYMPL IN ALPHABETICAL ORDER (NIP THROUGH XTERMST). NOTE THAT
  165. * ROUTINES WHICH ARE OVERLAYS ARE RESIDING INTERSPERSED WITH
  166. * ROUTINES IN THE RESIDENT OVERLAY. THIS IS SO THAT A ROUTINE
  167. * CAN BE EASILY LOCATED.
  168. * . THE ROUTINES WRITTEN IN COMPASS FOLLOW THE SYMPL PROGRAMS FOR
  169. * OTHER NHP PRODUCTS. THESE ROUTINES ARE ALSO ARRANGED ALPHABE-
  170. * TICALLY AND CURRENTLY THIS INCLUDES ALL THE ROUTINES FROM ABORT
  171. * TO XTRACE.
  172. * . IN ADDITION TO THAT ON THE NAMPL THERE IS A COMPASS SKELETON
  173. * DECK (DECKNAME SKENIP) THAT CONTAINS OVERLAY CARDS FOLLOWED
  174. * BY A COMPASS ROUTINE CONSISTING OF ONLY AN IDENT AND END
  175. * CARD FOR EACH OF THE ROUTINES IN A PARTICULAR OVERLAY.
  176. *
  177. * THUS AFTER COMPILING AND ASSEMBLING ALL OF THE NIP ROUTINES
  178. * ALL ONE HAS TO DO IS REPLACE THE ROUTINES IN SKELETON WITH THE
  179. * CORRESPONDING REAL ROUTINES TO GET A BINARY STRUCTURE WITH THE
  180. * PROPER OVERLAY CARDS IN IT.
  181. *
  182. * THE MAIN PROGRAM NIP IS JUST ABOUT A DO-NOTHING. IT SIMPLY CALLS
  183. * THE INITIALIZATION OVERLAY AND THEN CALLS XEXEC WHICH IS REALLY
  184. * THE MAIN EXECUTIVE FOR NIP. THE LOGIC FLOW OF XEXEC IS A GOOD
  185. * REPRESENTATION OF THE LOGIC FLOW FOR NIP AND MAY BE SUMMARIZED
  186. * AS FOLLOWS:
  187. *
  188. * START : CALL INIP
  189. * LOOP: IF HALF A SECOND HAS ELAPSED,
  190. * CHECK FOR SWAPPED IN APPLICATIONS.
  191. * IF 5 SECONDS HAVE ELAPSED,
  192. * CHECK FOR INACTIVE CONNECTIONS,
  193. * IF 10 SECONDS HAVE ELAPSED,
  194. * CHECK IF GARBAGE COLLECTION NEEDS TO BE DONE,
  195. * IF SO, PERFORM GARBAGE COLLECTION.
  196. * IF 10 SECONDS HAVE ELAPSED,
  197. * CHECK FOR EST TABLE CHANGES.
  198. * CHECK IF PIP NEEDS MORE PRU BUFFERS AND ALLOCATE THEM.
  199. * RELEASE ANY OUTBOUND BUFFERS PROCESSED BY PIP,
  200. * IF NIP NOT IN REGULATION LEVEL 0,
  201. * CALL HHIR.
  202. * CALL NEIB.
  203. * PROCESS REGULATION LEVEL CHANGE IF ANY.
  204. * UPDATE NIP K-DISPLAY.
  205. *
  206. * LOOP2: IF NO WORKLIST FROM APPLICATION OR
  207. * PIP HAS NO WORK FOR NIP TO DO OR
  208. * HALF A SECOND HAS NOT ELAPSED,
  209. * GO INTO RECALL.
  210. * GO TO LOOP2.
  211. * GO TO LOOP.
  212. *
  213. * AS CAN BE SEEN FROM THE ABOVE, NIP EXECUTES UNTIL
  214. * NETWORK SHUTDOWN. THE ROUTINES CALLED BY XEXEC ARE THE MAJOR
  215. * FUNCTIONAL MODULES OF NIP AND A BRIEF DESCRIPTION FOR EACH
  216. * FOLLOWS:
  217. *
  218. * . INIP IS RESPONSIBLE FOR INITIALIZING BUFFERS AND BUFFER
  219. * POINTERS
  220. * . XSACB IS RESPONSIBLE FOR CHECKING THE STATE OF APPLICATIONS
  221. * AND TAKING APPROPRIATE ACTION.
  222. * . XCHKPCR IS RESPONSIBLE FOR CHECKING CONNECTION FOR INACTIVITY
  223. * AND DETERMINE IF INTRA-HOST A TO A LOGICAL LINK EXISTS AND CAN
  224. * BE DELETED.
  225. * . MGBGCLT IS THE GARBAGE COLLECTION ROUTINE TO COMPACT THE
  226. * DYNAMICALLY ALLOCATED BUFFERS.
  227. * . XCHKCET IS RESPONSIBLE FOR UPDATING THE COUPLER
  228. * EQUIPMENTS TABLE ( CET ).
  229. * . XCHKABC IS RESPONSIBLE FOR ALLOCATE MORE PRU BUFFERS IF PIP
  230. * REQUESTED THEM.
  231. * . NEIB EMPTIES THE NETWORK (PIP) INPUT BUFFER OF UPLINE DATA
  232. * MESSAGES.
  233. * . HHIR IS RESPONSIBLE FOR PROCESSING AN INCOMING SYSTEM CONTROL
  234. * POINT REQUEST. HHIR CALLS NFOB TO QUEUE MESSAGES FOR PIP TO BE
  235. * DELIVERED TO THE NPU.
  236. *
  237. * EACH OF THESE MAJOR MODULES CALL SEVERAL SUBMODULES. THE MAJOR
  238. * MODULES AS WELL AS THE SUBMODULES ARE DISCUSSED IN MORE DETAIL
  239. * IN CHAPTER 5, IN NIP DETAILED DESCRIPTION. IN GENERAL,HOWEVER,
  240. * IT SHOULD BE NOTED THAT THE FIRST LETTER OF THE ROUTINE NAME
  241. * HAS FUNCTIONAL SIGNIFICANCE AS FOLLOWS
  242. * .NAMES BEGINNING WITH A B ARE ASSOCIATED WITH NIPS BUFFERING
  243. * FUNCTION (I.E. BUFFERING OF DATA BETWEEN APPLICATIONS AND
  244. * THE TERMINAL.) EXAMPLES ARE BDELINK TO DELINK A DATA BLOCK FROM
  245. * THE DATA RING, AND BCONV TO CONVERT INBOUND DATA FROM ASCII
  246. * TO DISPLAY CODE.
  247. * .NAMES BEGINNING WITH AN H ARE ASSOCIATED WITH HOST SIDE PROCES-
  248. * SING. THAT IS THE H ROUTINES PROCESS THE APPLICATIONS REQUEST.
  249. * EXAMPLES ARE HPPUT TO PROCESS A NETPUT, HPGET TO PROCESS A
  250. * NETGET, ETC.
  251. * .NAMES BEGINNING WITH AN I ARE ASSOCIATED WITH THE INITIALIZA-
  252. * TION PROCESS. THUS INIP INITIALIZES NIP FETS.
  253. * .NAMES BEGINNING WITH AN M ARE ASSOCIATED WITH THE MEMORY MANAGE-
  254. * MENT FUNCTIONS, SUCH AS MGETS, MRELS TO GET AND RELEASE MEMORY
  255. * SPACE.
  256. * .NAMES BEGINNING WITH N ARE ASSOCIATED WITH NETWORK SIDE
  257. * PROCESSING, THAT IS THE MOVEMENT OF DATA BETWEEN NIP AND PIP.
  258. * EXAMPLES ARE NEIB TO EMPTY THE NETWORK INPUT BUFFER, OR
  259. * NGIGO TO PROCESS A GARBAGE IN GARBAGE OUT MESSAGE FROM THE
  260. * NETWORK
  261. * .NAMES BEGINNING WITH O ARE ASSOCIATED WITH OPERATING SYSTEM
  262. * INTERFACES SUCH AS OSCPSI TO SWAP IN AN APPLICATION.
  263. * .NAMES BEGINNING WITH R ARE FOR RECOVERY. CURRENTLY THERE IS
  264. * ONLY ONE, RDUMP TO TAKE A DUMP IN CASE OF A FAILURE.
  265. * .NAMES BEGINNING WITH X ARE MISCELLANEOUS ROUTINES.
  266. * .NAMES BEGINNING WITH K ARE FOR K-DISPLAY PROCESSING ROUTINES.
  267. *
  268. * ACB -S , ACNB-S AND NCNB-S WILL BE DESCRIBED LATER.
  269. *
  270. * THE NIP OVERLAY AREA IS DIVIDED INTO TWO BUFFERS: ALL PRIMARY
  271. * OVERLAYS ARE LOADED INTO THE FIRST BUFFER AND ALL SECONDARY
  272. * OVERLAYS ARE LOADED INTO THE SECOND BUFFER. BECAUSE THE BUFFERS
  273. * ARE FIXED IN SIZE EXTRA CARE MUST BE TAKEN TO ASSURE THAT AN
  274. * OVERLAY DOES NOT EXCEED THE BUFFER SIZE. ALLOWED SIZES ARE DEFINED
  275. * IN CHAPTER 3 (NIP TABLE STRUCTURE OF THIS GID).
  276. *
  277. * THE PHILOSOPHY ON PUTING THINGS INTO OVERLAYS IS OBVIOUS: IN-
  278. * FREQUENTLY CALLED FUNCTIONS ARE DONE IN OVERLAYS. EXAMPLES OF
  279. * SUCH FUNCTIONS ARE NETON/NETOFF PROCESSING, CREATING/DELETING/
  280. * SWITCHING ACB-S AND ACNB-S ETC. FOR A COMPLETE LIST SEE COMMON
  281. * BLOCK OVLNAME IN CHAPTER 3.
  282. * FINALLY WE SHOULD DISCUSS NIP"S DYNAMICALLY ALLOCATED BUFFER
  283. * AREA. NIP USES A VARIABLE LENGTH BUFFER ALLOCATION MECHANISM.
  284. * WHEN SPACE IS NEEDED. THE REQUESTING ROUTINE SPECIFIES THE
  285. * NUMBER OF WORDS NEEDED, CALLS MGETS AND RECEIVES THE FWA OF
  286. * THE ACQUIRED SPACE. THE FIRST WORD OF THE ACQUIRED BUFFER
  287. * HAS THE FOLLOWING FORMAT
  288. * NOTE THAT HERE AS IN THE REMAINDER OF THIS IMS BITS ARE NUMBERED
  289. * FROM LEFT TO RIGHT, ACCORDING THE SYMPL LANGUAGE CONVENTIONS.
  290. * W 9
  291. * 2 5
  292. * 0 6 4 9
  293. * I--------I-------I-------------------------I
  294. * I I I I
  295. * I ID I BS I FREE I
  296. * I I I I
  297. * I--------I-------I-------------------------I
  298. *
  299. * WHERE ID IS THE BLOCK ID, SET TO 0 WHEN THE CALLER RECEIVES
  300. * THE BUFFER, AND BS IS THE ACTUAL SIZE OF THE BLOCK ACQUIRED.
  301. * THE CALLER MUST IMMEDIATELY SET THE BLOCK ID TO THE TYPE OF
  302. * BLOCK THE BLOCK IS GOING TO BE, AND MUST NEVER CHANGE THE BLOCK
  303. * SIZE FIELD. THE REMAINDER OF THE WORD AS WELL AS THE BS-1
  304. * NUMBER OF WORDS FOLLOWING IT ARE AVAILABLE FOR THE CALLER
  305. *
  306. * IF A BUFFER IS TO BE RETURNED TO THE FREE POOL,THEN THE MRELS
  307. * ROUTINE MUST BE CALLED WITH THE FWA OF THE BLOCK TO BE
  308. * THE FORMAT OF A FREE BLOCK IN THE FREE RING IS AS FOLLOWS:
  309. *
  310. * 0 6 22 4 5
  311. * 34 2 9
  312. * 1----1-----------------1------------------1----------------1
  313. * 1 1 1 1 1
  314. * 1 0 1 BS 1 FRBFBBP 1 FRBFBFP 1
  315. * 1 1 1 1 1
  316. * 1----1-----------------1------------------1----------------1
  317. *
  318. * AS CAN BE SEEN THE FREE BUFFER ID IS ALWAYS 0. AGAIN BS
  319. * REPRESENTS THE BLOCK SIZE. FRBFBBP AND FRBFBFP ARE THE FREE
  320. * BUFFER BACKWARD AND FORWARD POINTER RESPECTIVELY. AT ANY ONE TIME
  321. * LOCATION FREETAB IN LABELLED COMMON IS THE DOMINANT MEMBER OF
  322. * THE FREE CHAIN,I.E. IT HAS FORWARD AND BACKWARD POINTERS TO
  323. * THE FIRST AND LAST BLOCK, RESPECTIVELY IN THE CHAIN.
  324. *
  325. * IN ORDER TO ACQUIRE SPACE NIP WILL LOOK THROUGH THE FREE CHAIN
  326. * FOR THE REQUIRED SIZE OF FREE BLOCK. A BLOCK IS OBTAINED EITHER
  327. * ON A FIRST OR BEST FIT BASIS, DEPENDING ON AN INSTALLATION
  328. * SPECIFIED UPDATE OPTION. CURRENTLY THE BUFFER WHICH IS RETURNED
  329. * TO THE CALLER HAS A BS WHICH IS THE EXACT SIZE REQUESTED BY
  330. * THE CALLER. HOWEVER THERE MUST BE NO CODE RELYING ON THIS FACT
  331. * SINCE WE MIGHT EXPERIMENT WITH NOT RETURNING THE REMAINDER
  332. * OF THE BUFFER TO THE FREE CHAIN IF THE REMAINDER IS ONLY A
  333. * FEW WORDS LONG. THE MEMORY MANAGEMENT FUNCTIONS MUST REMAIN
  334. * MODULAR AND TOTALLY INDEPENDENT OF THE REST OF THE CODE.
  335. *
  336. * IF THERE IS NO ROOM IN THE FREE BUFFER CHAIN FOR A BLOCK OF THE
  337. * REQUIRED SIZE MEMORY WILL BE REQUESTED FROM THE OPERATING SYSTEM.
  338. *
  339. * IN ORDER TO RETURN A BLOCK TO THE FREE CHAIN THE BLOCK IS SIMPLY
  340. * INSERTED INTO THE FREE CHAIN. THE FREE CHAIN IS ORDERED BY
  341. * INCREASING FWA OF THE BLOCK. IN ORDER TO MINIMIZE BUFFER
  342. * FRAGMENTATION,IF A BLOCK BEING INSERTED INTO THE FREE CHAIN FORMS
  343. * A CONTIGUOUS BLOCK WITH EITHER THE BLOCK BEFORE IT OR THE BLOCK
  344. * AFTER IT,THEN THESE BLOCKS ARE COMBINED INTO A SINGLE BLOCK.
  345. *
  346. * OTHER STEPS TAKEN TO MINIMIZE BUFFER FRAGMENTATION INCLUDE
  347. * GARBAGE COLLECTION. GARBAGE COLLECTION CONSIST OF MOVING DOWN
  348. * ALL MOVABLE BUFFERS TO LOWER ADDRESSES SO THAT FREE BUFFERS
  349. * MAY BE COMBINED INTO A SINGLE FREE BUFFER AT HIGH CORE. THE
  350. * BLOCK ID"S DURING THIS MOVE ARE EXTREMELY IMPORTANT. THE
  351. * BLOCK ID FIELD IS USED IN THE FIRST PLACE TO DETERMINE IF
  352. * THE BUFFER IS MOVABLE OR NOT. BUFFERS WAITING FOR OPERATING
  353. * SYSTEM ACTION (SUCH AS COMPLETION OF AN SCP SWAPIN REQUEST)
  354. * OR BUFFERS INVOLVED IN PIP COMMUNICATION ARE NOT MOVABLE.
  355. * ANY BUFFER THAT HAS BIT 0 OF ITS BLOCK ID SET IS A NONMOVABLE
  356. * BUFFER.
  357. * NOTE THAT THE SAME CORE AREA CAN ALTERNATE FROM BEING MOVABLE
  358. * TO NONMOVABLE EVEN WHILE IT CONTAINS THE SAME INFORMATION.
  359. *
  360. * THE BLOCKID FIELD IS ALSO USED TO TELL THE GARBAGE COLLECTION
  361. * ROUTINE WHAT SPECIFIC ACTION TO TAKE IN MOVING THE BLOCK.
  362. * SOME TYPES OF BLOCK ARE MEMBERS OF SEVERAL DIFFERENT KINDS OF
  363. * RINGS WITH POINTERS IN OTHER BLOCKS POINTING TO THEM, WHICH
  364. * OBVIOUSLY HAVE TO BE UPDATED WHEN THE BLOCK POINTED TO IS BEING
  365. * MOVED. THIS ALSO MEANS THAT ANY BLOCK WHICH IS POINTED TO BY
  366. * ANOTHER BLOCK MUST ITSELF HAVE A POINTER TO THAT BLOCK IN ORDER
  367. * FOR THE GARBAGE COLLECTION ROUTINE TO BE ABLE TO EASILY LOCATE
  368. * THE BLOCK POINTING TO THE BLOCK BEING MOVED.
  369. *
  370. * FOR THE DETAILS ON WHEN GARBAGE COLLECTION TAKES PLACE SEE THE
  371. * DETAILED DOCUMENTATION ON XEXEC.
  372. *
  373. * SOME OF THE MORE SIGNIFICANT BLOCKS IN THE DYNAMICALLY ALLOCATED
  374. * BUFFER AREA ARE AS FOLLOWS:
  375. *
  376. * . ACB ( APPLICATION CONTROL BLOCK) A ACB EXISTS FOR EACH APPL.
  377. * THAT HAS NETTED ON SUCCESSFULLY, UNTIL THAT APPLICATION
  378. * DOES A NETOFF OR FAILS. A LLCB ALSO EXISTS FOR EACH LOGICAL
  379. * LINK. A LOGICAL LINK IS A LINK
  380. * BETWEEN A HOST NODE (PHYSICALLY THIS CAN BE THOUGHT OF AS
  381. * THE COUPLER) AND A TERMINAL NODE (PHYSICALLY THIS CAN BE
  382. * THOUGHT OF AS ANY 255X TO WHICH THERE ARE TERMINALS ATTACHED)
  383. * ON WHICH DATA TRAFFIC MAY TAKE PLACE.
  384. * THE ACB CONTAINS INFORMATION UNIQUE TO THE PROCESS AND
  385. * PROVIDES NIP WITH A CONVENIENT WAY OF CONTROLLING ACTIVITY OF
  386. * THE PROCESS.
  387. * THE ACB ALSO SERVES AS A ACNB ( APLLICATION CONNNECTION
  388. * CONTROL BLOCK) FOR CONNECTION ZERO ( SUPERVISORY MESSAGE) I.E.
  389. * A CONTROL BLOCK FOR QUEUING SUPERVISORY MESSAGES AND OR SERVICE
  390. * MESSAGES.
  391. * ACB CONTAINS A POINTER TO ACNT ( APPLICATION CONNECTION TABLE)
  392. * WHICH IS THE TABLE OF ALL EXISTING ACNB ( APPLICATION CONNECTION
  393. * CONTROL BLOCK / EACH FOR EACH CONNECTION TO APPL. ) THE CN/ACN
  394. * SERVE AS AN INDEX INTO THE TABLE. SEE THE NIP TABLES SECTION
  395. * OF THIS DOCUMENT.
  396. *
  397. * . ACNB/NCNB ( APPLICATION CONNECTION CONTROL BLOCK/NETWORK
  398. * CONNECTION CONTROL BLOCK). A PAIR OF THESE EXIST FOR EACH
  399. * LOGICAL CONNECTION ON THE NETWORK. A LOGICAL CONNECTION CAN
  400. * BE THOUGHT OF AS A CONNECTION BETWEEN AN APPLICATION AND
  401. * A TERMINAL,OR A CONNECTION BETWEEN TWO APPLICATIONS. A MULTI-
  402. * TERMINAL SUPPORT APPLICATION WOULD HAVE A PAIR OF ACNB/NCNB FOR
  403. * EACH OF THE TERMINALS CONNECTED TO THAT APPL. THE ACNB/NCNB
  404. * PAIR HOLDS ALL INFORMATION UNIQUE TO THAT CONNECTION AND
  405. * IS USED TO CONTROL ALL DATA TRAFFIC ON THAT CONNECTION. EACH
  406. * ACNB IS POINTED TO BY ACNT, A TABLE OF ALL ACNB'S ASSOCIATE
  407. * WITH THIS APPLICATION. NCNB IS POINTED TO BY NCNT, TABLE OF
  408. * ALL NCNB'S ASSOCIATE WITH THIS LOGICAL LINK.
  409. * ACB ALSO BY THE APPLICATION NUMBER IN THE ACNB.
  410. *
  411. *
  412. * MESSAGES BEING SENT ON CONNECTION ARE QUEUED ON ACNB/NCNB
  413. * WHICH REPRESENT THEIR DESTINATION. THUS DATA TRAFFIC THROUGH
  414. * THE NETWORK IS ACCOMPLISHED BY DEQUEUING DATA FROM BUFFERS
  415. * (WHERE DATA IS MIXED REGARDLESS OF DESTINATION) SUCH AS IN THE
  416. * NETWORK INPUT BUFFER PROCESSED BY NEIB, OR THE HOST SIDE
  417. * BUFFER PROCESSED BY HHIR, AND QUEUING MESSAGE BLOCKS ON THEIR
  418. * RESPECTIVE NCNB/ACNB.
  419. *
  420. * . ACNT ( APPLICATION CONNECTION TABLE ) -
  421. * TABLE OF ACNB ADDRESSES POINTED TO BY ACB .
  422. * . NCNT ( NETWORK CONNECTION TABLE ) -
  423. * TABLE OF NCNB ADDRESSES POINTED TO BY LLCB
  424. *
  425. *
  426. * . NWL (NIP WORK LIST) IS A FIXED SIZE DYNAMICALLY
  427. * ALLOCATED BUFFER TO RECEIVE THE WORKLIST OF REQUESTS FROM
  428. * APPLICATIONS. A POINTER TO THE NWL IS STORED IN RA.SSC,
  429. * WHICH IS USED BY THE OPERATING SYSTEM TO DETERMINE WHERE TO
  430. * PLACE WORKLISTS FROM APPLICATIONS. NIP WILL MAINTAIN TWO NWL
  431. * BUFFERS AT ALL TIMES, EXCEPT WHEN SHUTDOWN IS IN
  432. * PROCESS. AFTER THE OPERATING SYSTEM HAS PLACED
  433. * A WORKLIST IN THE FIRST NWL, NIP WILL UPDATE RA.SSC TO POINT
  434. * TO THE SECOND NWL BEFORE IT BEGINS PROCESSING THE FIRST NWL.
  435. * IF THE WORKLIST CONTAINS ANY MESSAGES TO BE QUEUED, THIS
  436. * QUEUING IS DONE BY INSERTING THE MESSAGE IN THE DATA RING
  437. * ASSOCIATED WITH APPROPRIATE ACB/ACNB. THIS IS DONE BY
  438. * INSERTING APPROPRIATE FORWARD AND BACKWARD POINTERS IN THE
  439. * BLOCK HEADER. THEN WHEN ALL THE MESSAGES IN THE NWL HAVE BEEN
  440. * PROCESSED, THE REST (REMAINS) OF THE NWL IS RELEASED. A NEW
  441. * NWL IS THEN ALLOCATED (EVEN IF NWL PROCESSING WAS SUSPENDED).
  442. *
  443. * . AWL (APPLICATION WORK LIST) IS A SIX WORD ENTRY IN ACB
  444. * WHICH NIP FORMS ITS REPLY TO CERTAIN REQUESTS IN THE NWL.
  445. * THE AWL GETS SENT BACK TO AIP.
  446. *
  447. * . PBI IS THE PIP INPUT BUFFER, ONE PER FRONT END NPU/MDI, INTO
  448. * WHICH PIP DUMPS ALL UPLINE MESSAGES FROM THE NETWORK. WHENEVER
  449. * PIP INDICATES THAT THE NEXT MESSAGE DOES NOT FIT INTO THE
  450. * REMAINDER OF THE CURRENT BUFFER NIP WILL ALLOCATE A NEW
  451. * INPUT BUFFER. ACCESS TO PBI IS CONTROLLED BY PSEUDO FET"S
  452. * IN THE PREALLOCATED LABELLED COMMON AREA BUFFTAB.
  453. *
  454. * . THE BULK OF THE DYNAMICALLY ALLOCATED BUFFER AREA IS USED FOR
  455. * ACTUAL MESSAGES, EITHER TO OR FROM TERMINALS (AND APPLICATIONS)
  456. * OR SUPERVISORY AND SERVICE MESSAGES.
  457. * MESSAGES GET DEQUEUED FROM THE NWL OR PBI, QUEUED ON AN APPROP-
  458. * RIATE ACB/ACNB AND THEN DELIVERED TO ITS DESTINATION BY EITHER
  459. * BEING QUEUED IN THE PIP OUTPUT BUFFER FOR DOWNLINE DATA,
  460. * OR BEING WRITTEN TO THE APPLICATION"S FIELD LENGTH.
  461. *
  462.  * 2.0 MESSAGE TRANSMISSION THROUGH NAM
  463. * IN ORDER TO UNDERSTAND HOW MESSAGES TRAVEL THROUGH NAM IT SEEMS
  464. * BEST TO DESCRIBE THE FATE OF VARIOUS MESSAGE TYPES FROM THEIR
  465. * SOURCE TO THEIR DESTINATION.
  466. *
  467. * 2.1 DOWNLINE DATA
  468. *
  469. * DOWNLINE DATA (ALSO REFERRED TO AS OUTPUT) IS TRIGGERED BY AN AIP
  470. * CALL NETPUT OR NETPUTF. THE CALLER SPECIFIES THE HEADER ADDRESS
  471. * AND THE FWA OF THE MESSAGE TEXT. AIP CREATES A WORKLIST ENTRY
  472. * FOR THE PUT IN NP$NWL BY PUTING A ONE WORD WORKLIST IDENTIFIER
  473. * IN THE NEXT AVAILABLE WORD IN THE WORK LIST INDICATING THAT THIS
  474. * IS A PUT (AS OPPOSED TO GET, WAIT, ETC) REQUEST, COPYING THE
  475. * HEADER ABH BEHIND THIS WORD IN THE NP$NWL AND BY EITHER COPYING
  476. * THE TEXT OF THE MESSAGE INTO NP$NWL, IF THERE IS ROOM, OR
  477. * BY INSERTING A POINTER TO THE TEXT AREA INTO THE FIRST WORD
  478. * (WORKLIST IDENTIFIER) OF THE ENTRY IF THERE IS NO ROOM.
  479. * IN EITHER CASE AIP WILL REQUEST THE OPERATING SYSTEM TO TRANSFER
  480. * THIS WORK LIST TO NIP-S RECEIVING BUFFER USING A SYSTEM CONTROL
  481. * POINT CALL. AIP WILL DO THIS AT THE EARLIEST OCCURANCE OF ONE
  482. * OF THE FOLLOWING EVENTS:
  483. *
  484. * A. THE WORKLIST IS FULL
  485. * B. THE CURRENT REQUEST EXCEEDS THE SIZE OF THE REMAINING SPACE
  486. * IN THE WORKLIST
  487. * C. THE APPLICATION HAS DONE A NETWAIT
  488. * D. THE APPLICATION HAS DONE A GET TYPE CALL
  489. * E. THE APPLICATION HAS DONE A NETPUTF WHICH CANNOT BE HANDLED
  490. * AS A NETPUT.
  491. * F. THE APPLICATION HAS DONE A NETPUT ABT=4.
  492. * G. THE APPLICATION HAS DONE A NETCHEK CALL.
  493. *
  494. * THE WORKLIST GETS TO A BUFFER IN NIP"S FL POINTED TO BY WORD
  495. * RA.SCC(51B). NIP PROCESSES EACH ENTRY IN THE WORK LIST
  496. * SEQUENTIALLY. (FOR THE FORMAT OF THE WORK LIST SEE THE TABLES
  497. * SECTION OF THIS IMS) NIP WILL KNOW WHICH PARTICULAR APPLICATION
  498. * THE WORKLIST CAME FROM BY TWO INDEPENDENT PIECES OF INFORMATION
  499. * IN THE WORKLIST, NAMELY:
  500. *
  501. * A. THE JOB IDENTIFIER THAT THE OPERATING SYSTEM PLACES IN FRONT
  502. * OF THE WORK LIST SENT BY AIP
  503. * B. THE APPLICATION NUMBER AS ESTABLISHED AT NETON TIME BY NIP
  504. * AND PASSED BACK WITH EACH WORKLIST
  505. *
  506. *
  507. * AT ANY RATE PROCESS HHIR WILL RECOGNIZE THAT A NEW WORKLIST ENTRY
  508. * ARRIVED AND WILL CALL HWLP TO PROCESS EACH WORKLIST ENTRY. HWLP
  509. * RECOGNIZES THAT THE CURRENT ENTRY IS A NETPUT AND CALLS PROCESS
  510. * HPPUT TO PROCESS THE REQUEST. HPPUT AND ITS HELPER ROUTINE
  511. * WILL PROCESS THE MESSAGE PUT BY THE APPLICATION AS FOLLOWS:
  512. *
  513. * . IF THE MESSAGE TEXT DID NOT FIT INTO THE WORK LIST THEN READ
  514. * THE MESSAGE TEXT FROM THE APPLICATIONS FIELD LENGTH INTO
  515. * NIP-S FIELD LENGTH.
  516. *
  517. * . IF THE MESSAGE IS A DATA MESSAGE, NIP WILL QUEUE THE MESSAGE
  518. * IMMEDIATELY TO THE NETWORK OUTBOUND CHAIN UNLESS THE DOWNLINE
  519. * BLOCK LIMIT FOR THE CONNECTION HAS BEEN REACHED IN WHICH CASE
  520. * THE MESSAGE IS QUEUED ONTO THE NCNB. THE NCNB IS FOUND BY
  521. * SEARCHING THROUGH THE VARIOUS TABLES. THE APPLICATION NUMBER
  522. * ALLOWS NIP TO FIND THE APPROPRIATE APPLICATION CONTROL BLOCK
  523. * (ACB). THE ACB HAS A POINTER TO THE APPLICATION CONNECTION
  524. * TABLE (ACNT). KNOWING THE APPLICATION CONNECTION NUMBER OF
  525. * THE DATA MESSAGE, THE ACNT IS INDEXED TO FIND THE APPROPRIATE
  526. * APPLICATION CONNECTION BLOCK (ACNB). THE ACNB HAS A POINTER
  527. * TO THE CORRESPONDING NETWORK CONNECTION BLOCK (NCNB).
  528. *
  529. * . FOR ABT=3 NIP CHECKS IF THE MESSAGE IS A SYNCHRONOUS
  530. * SUPERVISORY MESSAGE OR AN ASYNCHRONOUS SUPERVISORY MESSAGE.
  531. * IF IT IS A SYNCHRONOUS SUPERVISORY MESSAGE, IT IS PROCESSED
  532. * AS A DATA MESSAGE. IF IT IS AN ASYNCHRONOUS SUPERVISORY
  533. * MESSAGE, NIP WILL PROCESS IT IF IT IS LEGAL. IF NOT A LEGAL
  534. * ASYNCHRONOUS SUPERVISORY MESSAGE, NIP WILL REJECT IT AND
  535. * SEND AN ERROR LOGICAL SUPERVISORY MESSAGE BACK TO THE
  536. * APPLICATION THAT SENT IT. THE ASYNCHRONOUS SUPERVISORY
  537. * MESSAGES WHICH MOST APPLICATIONS ARE ALLOWED TO SEND ARE:
  538. *
  539. * . CON/ACRQ - NIP WILL CONVERT THE SUPERVISORY MESSAGE INTO A
  540. * CR/IAP SUPERVISORY MESSAGE AND SEND IT TO NVF.
  541. *
  542. * . CON/END - NIP WILL VERIFY THE APPLICATION HAS THE
  543. * CONNECTION SPECIFIED IN THE ACN FIELD OF THIS MESSAGE.
  544. * IF NOT VALID, THE SUPERVISORY MESSAGE IS REJECTED AND AN
  545. * ERROR LOGICAL SUPERVISORY MESSAGE IS SENT TO THE
  546. * APPLICATION. IF VALID, A NORMAL RESPONSE IS SENT BACK TO
  547. * THE APPLICATION AND THE CONNECTION IS SWITCHED TO NVF
  548. * (NVF WILL BE SENT A CR/RCN SUPERVISORY MESSAGE).
  549. *
  550. * . CON/REQ/N/A - NIP WILL CHECK THE STATE OF THE CONNECTION
  551. * TO VERIFY IT WAS EXPECTING THIS SUPERVISORY MESSAGE FOR
  552. * THE CONNECTION SPECIFIED IN THE ACN FIELD. IF NOT, THE
  553. * SUPERVISORY MESSAGE IS REJECTED AND AN ERROR LOGICAL
  554. * SUPERVISORY MESSAGE IS SENT TO THE APPLICATION. IF THE
  555. * SUPERVISORY MESSAGE WAS EXPECTED AND IS AN ABNORMAL
  556. * RESPONSE, THE CONNECTION IS SWITCHED BACK TO NVF. IF
  557. * IT WAS A NORMAL RESPONSE THEN A INITR NETWORK ELEMENT IS
  558. * SENT TO THE NETWORK AND THE STATE OF THE CONNECTION IS
  559. * CHANGED TO WAITING FOR AN INITN ELEMENT RESPONSE. AN
  560. * CR/ACC SUPERVISORY MESSAGE IS ALSO SENT TO NVF.
  561. *
  562. * . DBG/STOP - IF DEBUG MODE IS ON, NIP WILL TAKE A DUMP OF
  563. * ITS FIELD LENGTH, SIGNAL PIP TO STOP THE NPU(S), AND DROP.
  564. *
  565. * . DC/CICT - NIP WILL CHANGE THE INPUT CHARACTER TYPE IN
  566. * THE ACNB.
  567. *
  568. * . DC/TRU - NIP WILL SET DATA TRUNCATION BIT IN ACNB
  569. * SPECIFIED BY THE ACN. IF THE ACN VALUE IS ZERO, THEN
  570. * THE ACB AND ALL ITS ACNB WILL HAVE THE FLAG SET.
  571. *
  572. * . FC/BRK - NIP WILL FORMAT A NETWORK BREAK ELEMENT (SEE
  573. * CCP IMS) AND QUEUE IT DIRECTLY TO THE OUTBOUND CHAIN.
  574. * ANY DOWNLINE DATA QUEUED IN THE NCNB IS DISCARDED. THE
  575. * STATE OF THE CONNECTION IS SET TO WAITING FOR A NETWORK
  576. * RESET ELEMENT. ANY UPLINE DATA RECEIVED AHEAD OF THE
  577. * RESET ELEMENT IS DISCARDED.
  578. *
  579. * . FC/INIT/N - NIP WILL FORMAT A NETWORK INITR ELEMENT (SEE
  580. * CCP IMS) AND QUEUE IT DIRECTLY TO THE NETWORK OUTBOUND
  581. * CHAIN. ANY DOWNLINE DATA QUEUED IN THE NCNB IS DISCARDED.
  582. * THE STATE OF HE CONNECTION IS SET TO WAITING FOR A NETWORK
  583. * INITN ELEMENT. ANY UPLINE DATA RECEIVED AHEAD OF THE
  584. * INITN ELEMENT ARE QUEUED IN THE ACNB FOR THE APPLICATION.
  585. *
  586. * . FC/RST - NIP WILL FORMAT A NETWORK RESET ELEMENT (SEE
  587. * CCP IMS) AND QUEUE IT DIRECTLY TO THE NETWORK OUTBOUND
  588. * CHAIN UNLESS NIP WAS NOT EXPECTING THE APPLICATION TO
  589. * SEND THIS SUPERVISORY MESSAGE, IN WHICH CASE NIP DISCARDS
  590. * IT AND SENDS AN ERROR LOGICAL SUPERVISORY MESSAGE BACK
  591. * TO THE APPLICATION. IF THE MESSAGE WAS EXPECTED, NIP
  592. * WILL UPDATE THE STATE OF THE CONNECTION AND DISCONTIUE
  593. * DISCARDING ALL UPLINE DATA MESSAGES FOR THAT CONNECTION.
  594. *
  595. * . HOP/ALT - NIP WILL VERIFY IF THE APPLICATION IS VALIDATED
  596. * FOR THE NAM K-DISPLAY. IF NOT, THE SUPERVISORY MESSAGE
  597. * IS REJECTED AND AN ERROR LOGICAL SUPERVISORY MESSAGE IS
  598. * SENT TO THE APPLICATION. IF VALID AND THE OPERATOR HAS
  599. * NOT DIRECTED NIP TO IGNORE ALERTS FROM THIS APPLICATION,
  600. * NIP WILL POST THE APPLICATION NAME ON ITS ALERT LINE.
  601. *
  602. * . HOP/DIS - NIP WILL VERIFY IF THE APPLICATION HAS THE
  603. * K-DISPLAY ASSIGNED TO IT. IF NOT, THE SUPERVISORY MESSAGE
  604. * IS REJECTED AND AN ERROR LOGICAL SUPERVISORY MESSAGE IS
  605. * SENT TO THE APPLICATION. IF VALID, NIP WIL UPDATE ITS
  606. * K-DISPLAY BUFFERS.
  607. *
  608. * . HOP/LOG - NIP WILL WRITE THE MESSAGE TEXT TO ITS DAYFILE.
  609. *
  610. * . INTR/APP - NIP WILL FORMAT A ICMD NETWORK ELEMENT AND
  611. * SEND IT TO THE NETWORK.
  612. *
  613. * . INTR/RSP - NIP WILL VERIFY THIS SUPERVISORY MESSAGE WAS
  614. * EXPECTED FOR THE CONNECTION SPECFIED IN THE ACN FIELD.
  615. * IF NOT, THE MESSAGE IS REJECTED AND AN ERROR LOGICAL
  616. * SUPERVISORY MESSAGE IS SENT TO THE APPLICATION. IF IT WAS
  617. * EXPECTED, NIP WILL FORM A ICMDR NETWORK ELEMENT AND SEND
  618. * IT TO THE NETWORK. THE STATE OF THE CONNECTION WILL ALSO
  619. * BE UPDATED TO NO LONGER EXPECT AN INTERRUPT RESPONSE.
  620. *
  621. * . LST/FDX OR LST/HDX - NIP WILL CLEAR OR SET THE HALF DUPLEX
  622. * FLAG IN THE ACNB SPECIFIED BY ACN . IF THE ACN VALUE IS
  623. * ZERO, THEN THE ACB AND ALL ITS ACCB"S WILL HAVE THE HALF
  624. * DUPLEX FLAG CLEARED OR SET.
  625. *
  626. * . LST/ON OR LST/OFF - NIP WILL TURN THE LIST ON FLAG ON
  627. * OR OFF IN THE ACNB SPECIFIED IN THE ACN OF THE MESSAGE.
  628. *
  629. * . LST/SWH - NIP WILL UPDATE THE LIST NUMBER IN THE ACNB
  630. * SPECIFIED BY THE ACN FIELD OF THE MESSAGE.
  631. *
  632. * . PRU/ON - NIP VERIFIES THE APPLICATION IS ALLOWED TO SEND
  633. * THIS SUPERVISORY MESSAGE. IF NOT, IT IS DISCARDED AND
  634. * AN ERROR LOGICAL SUPERVISORY MESSAGE IS RETURNED TO THE
  635. * APPLICATION. IF VALID, THE NCNB IS FOUND AND CONVERTED
  636. * TO A PCNB. THE PCNB IS LINKED TO THE PRU CONNECTION
  637. * RING.
  638. *
  639. * NIP PROCESSES ONE SPECIAL SUPERVISORY MESSAGE FROM NS. IF
  640. * ANY OTHER APPLICATION SENDS THIS SUPERVISORY MESSAGE TO NIP,
  641. * NIP WILL REJECT THE MESSAGE AND SEND THE APPLICATION AN ERROR
  642. * LOGICAL SUPERVISORY MESSAGE. THIS SUPERVISORY MESSAGE IS THE
  643. * FOLLOWING
  644. *
  645. * . NPD/REL/R - NIP WILL SEND A HOP/REL SUPERVISORY MESSAGE
  646. * TO ALL APPLICATIONS.
  647. *
  648. * NIP ALSO PROCESSES A SET OF ASYNCHRONOUS SUPERVISORY MESSAGES
  649. * WHICH ARE ALLOWED ONLY FROM NVF. IF ANY OTHER APPLICATION
  650. * TRIES TO SEND THEM, NIP WILL REJECT THE MESSAGE AND SEND THE
  651. * APPLICATION AN ERROR LOGICAL SUPERVISORY MESSAGE. THOSE
  652. * SUPERVISORY MESSAGES ARE ARE THE FOLLOWING:
  653. *
  654. * . CR/IAP/N/A - NVF HAS ACCEPTED OR REJECTED THE APPLICATION
  655. * TO APPLICATION CONNECTION REQUEST. IF NVF HAS ACCEPTED
  656. * IT, NIP WILL SEND A ICN/AP/R SUPERVISORY MESSAGE TO THE
  657. * NETWORK AND THE STATE OF THE CONNECTION IS UPDATED. IF
  658. * NVF HAS REJECTED THE A-A CONNECTION REQUEST, A CON/ACRQ/A
  659. * SUPERVISORY MESSAGE IS SENT BACK TO THE APPLICATION AND
  660. * ALL APPLICABLE TABLE STRUCTURES FOR THE CONNECTION ARE
  661. * CLEARED.
  662. *
  663. * . CR/ITE/N/A - NVF HAS ACCEPTED OR REJECTED THE TERMINAL
  664. * CONNECTION. IF NVF HAS ACCEPTED IT, NIP WILL SEND AN
  665. * ICN/TE/N SUPERVISORY MESSAGE RESPONSE AND INITR NETWORK
  666. * ELEMENT TO THE NETWORK AND UPDATE THE STATE OF THE
  667. * CONNECTION ACCORDINGLY. IF NVF HAS REJECTED THE TERMINAL
  668. * CONNECTION, AN ICN/TE/A SUPERVISORY MESSAGE IS SENT TO
  669. * THE NETWORK AND ALL APPLICABLE TABLE STRUCTURES FOR THE
  670. * CONNECTION ARE CLEARED.
  671. *
  672. * . CR/RAP/N/A - NVF HAS ACCEPTED OR REJECTED THE APPLICATION
  673. * TO APPLICATION CONNECTION REQUEST. IF NVF HAS ACCEPTED
  674. * IT, NIP WILL SEND AN ICN/AP/N OR ICN/EX/N SUPERVISORY
  675. * MESSAGE RESPONSE AND INITR NETWORK ELEMENT TO THE NETWORK
  676. * AND UPDATE THE STATE OF THE CONNECTION ACCORDINGLY.
  677. * IF NVF HAS REJECTED THE A-A CONNECTION REQUEST, AN
  678. * ICN/AP/A OR ICN/EX/A SUPERVISORY MESSAGE IS SENT TO
  679. * THE NETWORK AND ALL APPLICABLE TABLE STRUCTURES FOR THE
  680. * CONNECTION ARE CLEARED.
  681. *
  682. * . CR/RCN/N/A - NVF HAS ACCEPTED OR REJECTED THE RECONNECT
  683. * OF A NETWORK CONNECTION. IF NVF HAS ACCEPTED IT, NIP
  684. * WILL SEND IT AN FC/INIT/R SUPERVISORY MESSAGE AND UPDATE
  685. * THE STATE OF THE CONNECTION ACCORDINGLY. IF NVF REJECTS
  686. * THE RECONNECT, IT IS BECAUSE THE CONNECTION WAS BEING
  687. * SWITCHED TO A SECONDARY APPLICATION AND COULD NOT BE
  688. * SWITCHED. NIP WILL THEN RECONNECT THE TERMINAL TO THE
  689. * PRIMARY APPLICATION, SEND IT A CON/REQ/R SUPERVISORY
  690. * MESSAGE, AND UPDATE THE STATE OF THE CONNECTION.
  691. *
  692. * . CR/SWH/R - NVF IS SWITCHING THE CONNECTION FROM ITSELF
  693. * TO ANOTHER APPLICATION. NIP WILL SWITCH THE CONNECTION
  694. * TO THE SPECIFIED APPLICATION, SEND THAT APPLICATION A
  695. * CON/REQ/R SUPERVISORY MESSAGE, AND UPDATE THE STATE OF
  696. * THE CONNECTION UNLESS THE SPECIFIED APPLICATION IS NO
  697. * LONGER AVAILABLE IN WHICH CASE, NIP WILL SEND A CR/RCN/R
  698. * SUPERVISORY MESSAGE BACK TO NVF. IN ANY CASE NIP ALWAYS
  699. * RESPONDS TO THE CR/SWH/R SUPERVISORY MESSAGE WITH A
  700. * CR/SWH/N SUPERVISORY MESSAGE RESPONSE.
  701. *
  702. * . CR/TRM/R - NVF IS TERMINATING ONE OF ITS CONNECTIONS.
  703. * NIP WILL CLEAN UP ANY DATA STRUCTURES ASSOCIATED WITH THE
  704. * HOST SIDE PROCESSING OF THE CONNECTION AND SEND NVF A
  705. * CR/TRM/N SUPERVISORY MESSAGE RESPONCE. ON THE NETWORK
  706. * SIZE OF THE CONNECTION, NIP WILL SEND A TCN/TA/R
  707. * SUPERVISORY MESSAGE TO THE NETWORK AND UPDATE THE STATE
  708. * OF THE CONNECTION ACCORDINGLY.
  709. *
  710. * . FAIL/APP/N - NIP WILL TERMINATE ALL SCP LONG AND SHORT
  711. * TERM CONNECTIONS IT HAS WITH THE APPLICATION. ALL DATA
  712. * STRUCTURES ASSOCIATED WITH THE APPLICATION ARE ALSO
  713. * CLEARED.
  714. *
  715. * . NET/OFF/N - NIP WILL TERMINATE ALL SCP LONG AND SHORT
  716. * TERM CONNECTIONS IT HAS WITH THE APPLICATION. ALL DATA
  717. * STRUCTURES ASSOCIATED WITH THE APPLICATION ARE ALSO
  718. * CLEARED.
  719. *
  720. * . NET/ON/N/A - NVF HAS ACCEPTED OR REJECTED THE NETON
  721. * REQUEST OF THE APPLICATION. IF NVF HAS ACCEPTED THE
  722. * NETON REQUEST, NIP WILL SWAP IN THE APPLICATION, SET UP
  723. * A SCP LONG TERM CONNECTION WITH THE APPLICATION AND WRITE
  724. * BACK TO AIP-S FIELD LENGTH TO INFORM IT THE NETON WAS
  725. * ACCEPTED. IF NVF REJECTED THE NETON REQUEST, NIP WILL
  726. * SWAP IN THE APPLICATION, WRITE BACK TO AIP-S FIELD
  727. * LENGTH THE REASON CODE FOR WHY THE NETON WAS REJECTED,
  728. * AND TERMINATE THE SCP SHORT TERM CONNECTION IT HAS WITH
  729. * THE APPLICATION.
  730. *
  731. * . FOR ABT= 4 NIP ASSURES THAT THE SENDER IS EITHER NS OR CS.
  732. * IF NOT NIP REJECTS THE MESSAGE. THESE MESSAGE HAVE A
  733. * SPECIAL APPLICATION BLOCK HEADER WORD THAT IS ACTUALLY A
  734. * NETWORK HEADER WORD. NIP SENDS THESE ASYNCHRONOUS
  735. * SUPERVISORY MESSAGES TO THE NETWORK FOR THE NPU TO PROCESS.
  736. *
  737. * IN SUMMARY THEN, A NETPUT CALL TO AIP RESULTS IN THE MESSAGE THUS
  738. * PUT BEING EITHER COMPLETELY PROCESSED AND DISCARDED BY NIP
  739. * OR CONVERTED TO A NEW MESSAGE OR NETWORK ELEMENT AND/OR QUEUED TO
  740. *
  741. * A. PIP OUTBOUND CHAIN (FOR PIP TO SEND TO NETWORK),
  742. *
  743. * B. A NCNB ( IF IT WAS A DATA MESSAGE OR SYNCHRONOUS SUPERVISORY
  744. * MESSAGE AND THE LOGICAL LINK IS IN REGULATION OR THE
  745. * CONNECTIONS-S DOWNLINE BLOCK LIMIT HAS BEEN REACHED.
  746. *
  747. * C. A SPECIAL NIP CHAIN (IF IT WAS A MESSAGE FOR A INTRAHOST
  748. * APPLICATION TO APPLICATION CONNECTION).
  749. *
  750. * D. NVF-S ACB FOR SPECIAL ASYCHRONOUS SUPERVISORY MESSAGE
  751. * PROCESSING.
  752. *
  753. * DOWNLINE NETWORK MESSAGES ARE PLACED IN THE PIP OUTBOUND CHAIN OR
  754. * NCNB OR SPECIAL NIP CHAIN BY CALLING SUBROUTINE NFOB.
  755. * DOWNLINE NETWORK MESSAGES ARE ALWAYS IN ONE OF THREE PRIORITIES.
  756. * NIP THUS HAS THREE DIFFERENT CHAINS FOR DOWNLINE MESSAGES, ONE
  757. * FOR EACH PRIORITY. THE HIGHEST PRIORITY MESSAGES ARE ASYNCHRONOUS
  758. * SUPERVISORY MESSAGES QUEUED FOR EITHER PIP, CCP, OR THE MDI TO
  759. * PROCESS. THESE MESSAGES ORIGINATE FROM EITHER NIP, NS, OR CS.
  760. * DOWNLINE BACK NETWORK ELEMENTS ARE ALSO SENT ON THIS HIGHEST
  761. * PRIORITY CHAIN TO HELP PREVENT CCP FROM GOING INTO REGULATION.
  762. * THE SECOND HIGHEST PRIORITY CHAIN IS USED FOR HIGH PRIORITY
  763. * CONNECTIONS. ALL NETWORK ELEMENTS EXCEPT BACKS FOR HIGH PRIORITY
  764. * CONNECTIONS ARE SENT ON THE SECOND CHAIN. THE THIRD CHAIN IS
  765. * USED FOR SENDING MESSAGES ON LOW PRIORITY CONNECTIONS.
  766. * THERE IS A SET OF THREE OUTBOUND CHAINS FOR EACH FRONT END NPU
  767. * AND MDI.
  768. *
  769. * . FOR BT = BLK, MSG, QBLK, OR QMSG, THE 8 BIT STATUS FIELD FROM
  770. * THE ABH FIELD IS MOVED INTO THE NETWORK BLOCK DBC FIELD.
  771. * THE APPLICATION BLOCK HEADER IN CONVERTED TO A NETWORK HEADER
  772. * USING ADDRESSING INFORMATION FROM THE NCNB.
  773. *
  774. * . THE CHARACTER COUNT AND ACT FIELDS FROM THE ABH ARE PASSED
  775. * TO PIP IN THE CM WORD CONTAINING THE NETWORK BLOCK HEADER
  776. * + OPTIONAL DBC.
  777. *
  778. * . FOR ALL DATA MESSAGES AND SYNCHRONOUS SUPERVISORY MESSAGES,
  779. * AN ACKNOWLEDGE QUEUE ENTRY IS CREATED WHEN THE MESSAGE IS
  780. * QUEUED TO THE NETWORK OUTBOUND CHAIN. THE ACK QUEUE ENTRY IS
  781. * JUST A COPY OF THE ABH, EXCEPT THAT A BSN IS INSERTED IN
  782. * THE ADR FIELD OF THE ABH.
  783. *
  784. * THE DOWNLINE OUTBOUND CHAIN IS CONTROLED THROUGH THE NETWORK
  785. * BUFFER TABLE (NBT). THERE IS ONE NBT ENTRY FOR EACH
  786. * FRONT END NPU AND MDI. THE NBT ENTRY ITSELF IS MADE UP OF
  787. * FIVE PSEUDO FETS. THE FIRST TWO PSEUDO FETS ARE USED FOR UPLINE
  788. * MESSAGE PROCESSING. THE LAST THREE PSEUDO FETS ARE USED FOR
  789. * DOWNLINE MESSAGE PROCESSING, ONE FOR EACH OF THE THREE PRIORITIES.
  790. * THE DOWNLINE MESSAGE PSEUDO FETS ARE DIFFERENT FROM THE USUAL
  791. * CONCEPT OF A FET SINCE IT DOES NOT POINT TO A CONTIGUOUS BUFFER
  792. * IN CORE, RATHER IT POINTS TO MESSAGES LINKED TOGETHER BY FORWARD
  793. * POINTERS. QUEUEING THE MESSAGE IN THE OUTBOUND CHAIN CONSISTS OF
  794. * THE FOLLOWING STEPS:
  795. *
  796. * .INITIALLY ALL FET POINTERS EQ 0. THEN THEY ARE USED AS FOLLOWS
  797. *
  798. * FIRST = ADDR OF FIRST BUFFER IN OUTBOUND CHAIN
  799. * IN = ADDR OF LAST BUFFER QUEUED IN OUTBOUND CHAIN
  800. * OUT = ADDR OF LAST BUFFER IN OUTBOUND CHAIN PROCESSED BY
  801. * PIP
  802. * LIMIT = UNUSED
  803. *
  804. * .IF OUT " 0, PIP HAS PROCESSED MESSAGES QUEUED ON THE OUTBOUND
  805. * CHAIN. FIRST IS RESET TO OUT AND ALL MESSAGES BETWEEN FIRST
  806. * AND OUT ARE RELEASED TO THE FREE BUFFER CHAIN.
  807. *
  808. * .IF IN " 0, NIP HAS QUEUED MESSAGES TO THE OUTBOUND CHAIN. THE
  809. * FORWARD POINTER OF THE LAST ENTRY QUEUED BY NIP IS UPDATED TO
  810. * POINT TO THE NEW ENTRY.
  811. *
  812. * .IF IN = 0, THIS IS FIRST MESSAGE TO BE QUEUED IN THE OUTBOUND
  813. * CHAIN. SET FIRST TO POINT TO THE FIRST MESSAGE.
  814. *
  815. * .SET IN TO POINT TO THE NEW MESSAGE.
  816. *
  817. * ONCE A MESSAGE IS PUT IN PIP-S OUTPUT BUFFER IT IS A NONMOVABLE
  818. * BUFFERS AND STAYS NONMOVABLE UNTIL IT GETS RELEASED TO THE FREE
  819. * SPACE.
  820. *
  821. * PIP WILL READ AND DELIVER TO THE NPU MESSAGES IN PRIORITY ORDER.
  822. * IT WILL SEND TO THE NPU/MDI ALL THE ASYCHRONOUS SUPERVISORY
  823. * MESSAGES FIRST. THEN IT WILL SEND ALL HIGH PRIORITY CONNECTION
  824. * MESSAGES UNTIL THERE ARE NONE LEFT OR AN ASYNCHRONOUS
  825. * SUPERVISORY MESSAGE GETS QUEUED TO BE SENT TO THE NPU/MDI.
  826. * FINALLY IT WILL SEND ALL LOW PRIORITY CONNECTION MESSAGES UNTIL
  827. * THERE ARE NONE LEFT OR AN HIGHER PRIORITY MESSAGE IS QUEUED.
  828. *
  829. * PIP"S PROCESSING OF AN OUTBOUND MESSAGE CONSIST OF THE FOLLOWING
  830. * STEPS:
  831. *
  832. * . IF IN = OUT ALL MESSAGES IN THIS BUFFER HAVE BEEN PROCESSED
  833. *
  834. * . IF IN " OUT THERE ARE SOME MESSAGES IN THE CHAIN TO BE
  835. * PROCESSED. IF OUT = 0 THE NEXT MESSAGE TO BE PROCESSED IS
  836. * POINTED TO BY FIRST. IF OUT "0 THEN OUT POINTS TO THE
  837. * FWA OF THE LAST MESSAGE OUTPUT. THE FORWARD POINTER IN THE
  838. * LAST MESSAGE THEN POINTS TO THE NEXT MESSAGE TO BE OUTPUT.
  839. *
  840. * . ONCE PIP DETERMINES WHERE THE NEXT MESSAGE IS IT READS IT UP
  841. * FROM CM. AFTER IT HAS READ THE MESSAGE IT DETERMINES IF THE
  842. * DESTINATION NODE NUMBER IS PIP-S OWN NODE NUMBER (THE HOST
  843. * NODE NUMBER ORIGINALLY FOUND IN THE EST). IF IT IS, THEN
  844. * PIP WILL COMPLETELY PROCESS THAT MESSAGE (IT IS A MESSAGE
  845. * FROM NS TO PIP. THIS IS THE MECHANISM USED TO LOAD, DUMP, OR
  846. * STATUS THE SAM PROGRAM OR NPU OR MDI). OTHERWISE PIP WILL
  847. * REFORMAT THE MESSAGE AS FOLLOWS:
  848. *
  849. * . IF ACT IS 4 CONVERT TO ASCII, ONE ASCII CHARACTER PER
  850. * 12 BIT PP BYTE. 12-66 BITS OF ZEROES GET CONVERTED TO
  851. * A <US>.
  852. *
  853. * . CHANGE 8 BIT ASCII TO 12 BIT ASCII
  854. *
  855. * . IF BT = BLK, MSG, QBLK, OR QMSG, TAKE THE 8 BITS FROM THE
  856. * HEADER AND MAKE IT THE FIRST BYTE OF THE MESSAGE TEXT
  857. * TO BE TRANSMITTED (DBC)
  858. *
  859. * . THUS THE MESSAGE TRAMSMITTED BY PIP TO CCP/MDI IS IN
  860. * NETWORK FORMAT. FOR ITS EXACT FORMAT SEE THE NHP/CCP IFS.
  861. * OVER THE COUPLER THE UPPER 4 BITS OF EACH 12 BIT BYTE ARE
  862. * STRIPPED SO THAT ONLY THE 8 BITS ARRIVE AS 8 BIT BYTES
  863. * TO BE RECEIVED BY CCP.
  864. *
  865. * . AFTER THE MESSAGE IS PROCESSED BY PIP EITHER BY PERFORMING
  866. * THE APPROPRIATE ACTION OR BY SENDING THE MESSAGE OVER THE
  867. * COUPLER TO THE NPU, IT WILL UPDATE THE PSEUDO FET IN NIP
  868. * SUCH THAT THE OUT POINTER POINTS TO THE LAST MESSAGE OUTPUT.
  869. *
  870. * NIP WILL RELEASE MESSAGES PROCESSED BY PIP BY UPDATING THE
  871. * FIRST POINTER (FIRST=OUT) AND BY CALLING MRELS TO RELEASE
  872. * THE VARIOUS LINKED MESSAGES BETWEEN THE OLD FIRST POINTER AND
  873. * THE NEW FIRST POINTER.
  874. * THE ONLY OTHER ASPECT TO REMEMBER ABOUT DOWNLINE DATA IS THAT
  875. * ANYTHING (BLK-S, MSG-S, QBLK-S, QMSG-S, OR CMD-S) SENT ON A
  876. * CONNECTION WILL BE ACKNOWLEDGED
  877. * BY CCP/MDI, AND THIS ACKNOWLEDGEMENT WILL BE DELIVERED
  878. * TO THE APPLICATION. THE METHOD BY WHICH THIS IS DONE WILL BE
  879. * DISCUSSED IN THE UPLINE DATA (NEXT) SECTION OF THIS IMS.
  880. *
  881. *
  882. * 2.2 UPLINE DATA
  883. *
  884. * UPLINE DATA (ALSO REFERRED TO AS INPUT OR INBOUND DATA) ORIGINATES
  885. * FROM EITHER PIP, CCP, THE MDI, A TERMINAL DEVICE CONNECTED TO THE
  886. * NETWORK, OR FROM ANOTHER APPLICATION RESIDING IN A HOST CONNECTED
  887. * TO THE NETWORK.
  888. *
  889. * AS MENTIONED EARLIER, THE NETWORK BUFFER TABLE CONTAINS TWO PSUEDO
  890. * FETS FOR UPLINE DATA PROCESSING. TWO PSUEDO FETS ARE USED BECAUSE
  891. * A DOUBLE BUFFERING SCHEME IS USED FOR RECEIVING UPLINE DATA. NIP
  892. * INITIALLY ALLOCATES ONE BUFFER FOR RECEIVING UPLINE DATA. THIS
  893. * BUFFER IS POINTED TO BY ONE OF THE PSEUDO FET. THE BUFFER IS BIG
  894. * ENOUGH TO HOLD THE LARGEST NETWORK MESSAGE (WHICH IS 2043
  895. * CHARACTERS) BUT WILL NORMALLY CONTAIN SEVERAL SMALLER MESSAGES
  896. * SINCE PIP WRITES MULTIPLE MESSAGES INTO THE BUFFER UNTIL THE
  897. * BUFFER IS NOT BIG ENOUGH FOR THE NEXT UPLINE MESSAGE. EACH
  898. * MESSAGE BEGINS WITH A BUFFER HEADER WORD WHICH CONSISTS OF A
  899. * BUFFER ID AND A BUFFER SIZE WHICH IS THE SIZE OF THE UPLINE
  900. * MESSAGE IN WORDS INCLUDING THE BUFFER HEADER WORD. WHEN PIP
  901. * DETECTS THAT THE BUFFER IS NO LONGER BIG ENOUGH, IT WILL SET A
  902. * FLAG IN THE PSEUDO FET INFORMING NIP THAT IT IS NO LONGER USING
  903. * THE BUFFER AND NIP CAN RELEASE THE REMAINING BUFFER SPACE.
  904. * NIP ALLOCATES A NEW BUFFER WHEN EITHER THE EXISTING BUFFER IS OVER
  905. * HALF USED OR PIP HAS SET THE FLAG INDICATING IT IS THROUGH WITH
  906. * THE EXISTING BUFFER AND NIP NEEDS TO ALLOCATE A NEW ONE.
  907. * THE NEW BUFFER IS POINTED TO BY THE FET THAT IS CURRENTLY NOT
  908. * BEING USED. THUS NIP AND PIP TOGGLE BETWEEN USING THE TWO FETS.
  909. * AFTER NIP ALLOCATES THE BUFFER,
  910. * NIP SETS A FLAG IN THE PSEUDO FET TO INFORM PIP THAT THE PSUEDO
  911. * FET CONTAINS VALID BUFFER POINTERS. NIP PROCESSES UPLINE MESSAGES
  912. * FROM ONE UPLINE BUFFER AT A TIME EVEN THOUGH TWO BUFFERS MAY
  913. * EXIST. NIP BEGINS PROCESSING WITH THE FIRST BUFFER ALLOCATED AND
  914. * CONTINUES PROCESSING THAT UPLINE BUFFER UNTIL PIP INFORMS NIP THAT
  915. * IT IS THROUGH USING THE BUFFER AND IT CAN BE RELEASED. AT THAT
  916. * POINT, NIP WILL SWITCH TO THE SECOND BUFFER (IF NOT ALREADY
  917. * ALLOCATED, IT IS ALLOCATED AT THIS POINT). WHEN PIP DETECTS THAT
  918. * THE UPLINE BUFFER IS IS CURRENTLY USING IS NOT BIG ENOUGH FOR THE
  919. * NEXT MESSAGE, IT WILL SWITCH TO THE SECOND UPLINE DATA BUFFER IF
  920. * IT HAS ALREADY BEEN ALLOCATED.
  921. *
  922. * WHEN PIP IS READY TO RECEIVE DATA FROM THE LOCAL NPU, IT FUNCTIONS
  923. * THE COUPLER TO READ THE NPU STATUS WORD. WHEN THE NPU RETURNS A
  924. * -INPUT AVAILABLE, LESS THAN 256 CHARACTERS OR LESS THAN 2043
  925. * CHARACTERS- STATUS, PIP PROCEEDS TO DETERMINE IF THERE IS ENOUGH
  926. * SPACE IN NIP-S INBOUND BUFFER TO ACCOMODATE THE INCOMING MESSAGE.
  927. * IF THERE IS NOT ENOUGH BUFFER SPACE AND NIP HAS NOT ALLOCATED A
  928. * SECOND BUFFER, PIP SENDS A - NOT READY FOR INPUT - ORDER WORD TO
  929. * NOTIFY THE NPU THE HOST IS NOT YET READY TO
  930. * ACCEPT THE INPUT. IF THERE IS SPACE
  931. * AVAILABLE, PIP WOULD FUNCTION THE COUPLER TO INPUT DATA AND
  932. * ACTIVATE THE CHANNEL TO RECEIVE UPLINE DATA VIA THE IAM INSTRUCT-
  933. * ION. INPUT DATA TRANSFER TERMINATES WHEN COUPLER DISCONNECTS THE
  934. * CHANNEL FOLLOWING TRANSFER OF THE LAST CHARACTER (WITH BIT 11 SET)
  935. * OF THE UPLINE DATA. PIP DETERMINES
  936. * THE AMOUNT OF DATA IT RECEIVES FROM THE A-REGISTER CONTENT WHEN
  937. * THE IAM INSTRUCTION IS COMPLETED, SINCE THE A-REGISTER
  938. * NOW HOLDS THE BLOCK LENGTH (A-REGISTER CONTENT WHEN IAM
  939. * IS CALLED) MINUS THE NUMBER OF REAL DATA WORDS READ. THE NETWORK
  940. * SENDS A MAXIMUM OF 2043 CHARACTERS FOR EACH UPLINE BLOCK. FOR
  941. * SUCH LARGE BLOCKS, BECAUSE OF THE LIMITED PIP BUFFER SPACE, IT
  942. * MAY TAKE MORE THAN ONE INPUT OPERATIONS TO COMPLETE THE INPUT
  943. * TRANSFER. PIP WRITES THE INPUT DATA TO NIP-S INBOUND BUFFER AND
  944. * UPDATES THE -IN- POINTER IN THE INPUT FET TO POINT TO THE LAST
  945. * MESSAGE INPUT. MESSAGE TEXT LENGTH IN THE NETWORK HEADER IS ALSO
  946. * UPDATED TO REFLECT THE PROPER CHARACTER COUNT (CHARACTER TRANS-
  947. * FERRED MINUS THE HEADER SIZE, FOR BLOCK TYPES -BLK- AND -MSG- AN
  948. * ADDITIONAL CHARACTER FOR THE DATA BLOCK CLARIFIER IS INCLUDED IN
  949. * THE HEADER).
  950. *
  951. * INBOUND DATA IS ALL DATA FROM NETWORK TO NIP. ALL DATA IS
  952. * TRANSMITTED TO NIP BY PIP AND PLACED IN INBOUND MESSAGE BUFFERS
  953. * PROVIDED BY NIP.
  954. *
  955. * NIP INBOUND FET PROTOCOL CONSISTS OF:
  956. *
  957. * . FET INITIALIZATION STATE
  958. *
  959. * . WHEN NIP LINKS A BUFFER TO FET, FIRST POINTER = IN = OUT
  960. * = START OF BUFFER. LIMIT POINTER = BUFFER LAST WORD
  961. * ADDRESS + 1 AND NIP CLEARS THE BUSY BIT IN THE LAST WORD
  962. * OF THE FET.
  963. *
  964. * . IF OUT " IN, NIP USES THE OUT POINTER TO GET THE UPLINE MSG
  965. * ADDRESS. NIP DELINKS A MESSAGE FROM THE INBOUND CHAIN AND
  966. * UPDATES OUT TO POINT TO THE NEXT UPLINE MSG. IF IN = OUT, ALL
  967. * MESSAGES HAVE BEEN PROCESSED FROM THE CURRENT BUFFER. IF
  968. * OUT IS GREATER THAN THE MIDDLE BUFFER POINTER, A NEW BUFFER IS
  969. * ALLOCATED FOR THE SECOND INBOUND FET. ITS FET POINTERS ARE
  970. * INITIALIZED AS MENTIONED ABOVE. NIP ALSO SETS THE FLAG TO
  971. * INFORM PIP THE FET CONTAINS VALID BUFFER POINTERS.
  972. *
  973. * . IF THE RELEASE BIT IS SET IN THE INBOUND FET, NIP CHECKS IF
  974. * A SECOND BUFFER HAD NOT ALREADY BEEN ALLOCATED. IF NOT, IT
  975. * ALLOCATES IT RIGHT AWAY. IT THEN PROCESSES THE MESSAGES IN
  976. * THE CURRENT INBOUND BUFFER AND RELEASES ANY REMAINING SPACE
  977. * AFTER IT IS THROUGH PROCESSING ALL THE MESSAGES.
  978. *
  979. * PIP INBOUND FET PROTOCOL CONSISTS OF:
  980. *
  981. * . PIP USES IN POINTER TO BEGIN THE POT HEADER STORAGE FOLLOWED
  982. * BY THE MESSAGE. PIP SETS IN = ADDRESS OF THE NEXT FREE
  983. * LOCATION IN THE BUFFER.
  984. *
  985. * . IF THE MESSAGE CANNOT FIT IN BUFFER, PIP SETS THE RELEASE FLAG
  986. * FET.
  987. *
  988. * . IF THE RELEASE FLAG IS SET OR THE BUFFER AVAILABLE FLAG IS NOT
  989. * SET, PIP WILL NOT USE THIS BUFFER.
  990. *
  991. * THE NIP ROUTINE NEIB EMPTIES THE INPUT BUFFER(PBI) THAT PIP HAS
  992. * FILLED WITH NETWORK DATA.
  993. *
  994. * . IF IN = OUT THEN THE PIP INPUT BUFFER IS EMPTY AND NIP RETURNS
  995. * TO ITS MAIN LOOP IN XEXEC.
  996. *
  997. * . IF IN " OUT THEN THE INPUT BUFFER IS NOT EMPTY. THE CURRENT
  998. * MESSAGE IS LOCATED AT OUT.
  999. *
  1000. * ONCE NIP HAS RECEIVED A MESSAGE FROM PIP, NIP CONVERTS THAT
  1001. * MESSAGE"S NETWORK HEADER (DN,SN,CN,...) TO AN APPLICATION BLOCK
  1002. * HEADER (ABT,ABN,ACT,TLC...).
  1003. *
  1004. * IF THE MESSAGE"S CONNECTION NUMBER (CN) IS ZERO, THEN THE MESSAGE
  1005. * IS AN ASYNCHRONOUS SUPERVISORY MESSAGES DESTINED FOR EITHER NIP,
  1006. * NS, OR CS TO PROCESS. NIP DETERMINES WHO PROCESSES THE
  1007. * MESSAGE BASED ON THE PFC VALUE OF THE SUPERVISORY MESSAGE.
  1008. * MESSAGES DESTINED FOR CS HAVE A PFC VALUE IN THE RANGE OF 14 TO
  1009. * 47. MESSAGES DESTINED FOR NS HAVE A PFC VALUE IN THE RANGE OF
  1010. * 0 TO 13. FOR NETWORK MESSAGES DESTINED FOR CS/NS, NIP DOES NOT
  1011. * CREATE THE NORMAL APPLICATION BLOCK HEADER WORD. INSTEAD THE
  1012. * NETWORK HEADER IS SHIFTED TO THE LEFT AND THE SPECIAL BLOCK HEADER
  1013. * TYPE OF 4 IS ADDED. THE MESSAGE IS THEN QUEUED TO NS/CS-S ACB.
  1014. * IF THE SUPERVISORY MESSAGE IS NOT IN THESE RANGES, THEN NIP CHECKS
  1015. * IF IT IS ONE OF THE ONES FOR NIP TO PROCESS. IF NOT, NGIGO IS
  1016. * CALLED TO DISCARD THE MESSAGE. NPNIPSM IS CALLED TO PROCESS ALL
  1017. * SUPERVISORY MESSAGES DESTINED FOR NIP.
  1018. * IF THE CURRENT MESSAGE-S CONNECTION NUMBER (CN) IS NON-ZERO, THEN
  1019. * THE MESSAGE IS PROCESSED BY THE NETWORK BLOCK STATE TABLE
  1020. * PROCESSOR UNLESS IT IS A DATA MESSAGE IN WHICH CASE THE STATE
  1021. * TABLE PROCESSOR IS BYPASSED. THE MESSAGE IS QUEUED TO THE
  1022. * ACNB OF THE APPLICATION CONNECTION CORRESPONDING TO THE NETWORK
  1023. * CONNECTION OF THE UPLINE MESSAGE. PROCESSING OF THE MESSAGE BY
  1024. * THE NETWORK BLOCK STATE TABLE PROCESSOR IS DETERMINED BY THE STATE
  1025. * OF THE CONNECTION AND THE BLOCK TYPE OF THE UPLINE MESSAGE.
  1026. *
  1027. * . BLK,MSG,CMD,QMSG,QBLK - IF STILL BEING ESTABLISHED, NIP
  1028. * DISCARDS THESE BLOCK TYPES. OTHERWISE
  1029. * THE MESSAGE IS QUEUED TO THE ACNB
  1030. * AND THE APPLICATION IS SWAPPED IN
  1031. * IF IT HAD PREVIOUSLY BEEN SWAPPED
  1032. * OUT (OSCHAPP CALLED).
  1033. *
  1034. * . BACK - NIP VERIFIES THE BSN OF THE BACK MATCHES THE ONE IT WAS
  1035. * EXPECTED. IF IT MATCHES, A FC/ACK SUPERVISORY MESSAGE
  1036. * IS CREATED AND QUEUED ON THE APPLICATION-S ACB DATA
  1037. * RING. THE ASSOCIATED ACKNOWLEDGE QUEUE ENTRY FOR THAT
  1038. * BACK IS RELEASED. IF THE BSN DOES NOT MATCH, THE
  1039. * ENTIRE ACKNOWLEDGE QUEUE IS SEARCHED FOR A MATCH. IF
  1040. * NONE IS FOUND, THE BACK BLOCK IS DISCARDED. IF A MATCH
  1041. * IS FOUND, A FC/NAK SUPERVISORY MESSAGE IS CREATED FOR
  1042. * EACH ACKNOWLEDGE QUEUE ENTRY BEFORE THE MATCHING ONE.
  1043. * A FC/ACK SUPERVISORY MESSAGE IS THEN CREATED FOR THE
  1044. * MATCHING ONE AND ALL ACKNOWLEDGE QUEUE ENTRIES FOR
  1045. * WHICH AN FC/ACK OR FC/NAK WAS CREATED ARE RELEASED.
  1046. *
  1047. * . BRK - NIP RELEASES ALL DATA AND SYNCHRONOUS SUPERVISORY
  1048. * MESSAGES QUEUED DOWNLINE IN THE NCNB. A FC/BRK
  1049. * SUPERVISORY MESSAGE IS CREATED AND QUEUED TO THE
  1050. * THE APPLICATION-S ACB DATA RING.
  1051. * THE STATE OF THE CONNECTION IS CHANGED TO WAITING
  1052. * FOR FC/RST SUPERVISORY MESSAGE RESPONSE FROM THE
  1053. * APPLICATION.
  1054. *
  1055. * . ICMD - NIP CREATES A INTR/USR SUPERVISORY MESSAGE AND QUEUES
  1056. * IT TO THE APPLICATION-S ACB DATA RING. THE STATE
  1057. * OF THE CONNECTION IS UPDATED TO EXPECT A INTR/RSP
  1058. * SUPERVISORY MESSAGE RESPONSE FROM THE APPLICATION.
  1059. *
  1060. * . ICMDR - NIP CREATES A INTR/RSP SUPERVISORY MESSAGE AND QUEUES
  1061. * IT TO THE APPLICATION-S ACB DATA RING. THE STATE
  1062. * OF THE CONNECTION IS UPDATED TO REFLECT RECEIVING
  1063. * THE ICMDR BLOCK.
  1064. *
  1065. * . INITR - NIP RESPONDS TO THE INITR BLOCK BE SENDING A INITN
  1066. * BLOCK BACK TO THE NETWORK IN RESPONSE. THE UPLINE
  1067. * DATA PATH HAS NOT BEEN INITIALIZED.
  1068. *
  1069. * . INITN - NIP CREATES A FC/INIT SUPERVISORY MESSAGE AND QUEUES
  1070. * IT TO THE APPLICATION-S ACB DATA RING. THE STATE
  1071. * OF THE CONNECTION IS UPDATED TO EXPECT AN FC/INIT/N
  1072. * SUPERVISORY MESSAGE FROM THE APPLICATION.
  1073. *
  1074. * . RST - NIP CREATES A FC/RST SUPERVISORY MESSAGE AND QUEUES
  1075. * IT TO THE APPLICATION-S ACB DATA RING. THE STATE
  1076. * OF THE CONNECTION IS UPDATED TO REFLECT RECEIVING
  1077. * THE RESET BLOCK.
  1078. *
  1079. * . TERM - IF THE TERM IS IN RESPONSE TO A PREVIOUS TERM SENT BY
  1080. * NIP TO THE NETWORK, NIP RESPONDS WITH A TCN/TA/N
  1081. * SUPERVISORY MESSAGE AND CLEANS UP ALL DATA STRUCTURES
  1082. * ASSOCIATED WITH THE NETWORK SIDE OF THE CONNECTION.
  1083. * IF THE TERM IS IN RESPONSE TO A TCN/TA/R SUPERVISORY
  1084. * MESSAGE SENT BY NIP TO THE NETWORK, NIP RESPONDS
  1085. * WITH A TERM BLOCK RESPONSE. THE STATE OF THE
  1086. * CONNECTION IS UPDATED TO EXPECT THE TCN/TA/N
  1087. * SUPERVISORY MESSAGE.
  1088. *
  1089. * IF THE MESSAGE IS UNRECIGNIZABLE (ILLEGAL BLOCK TYPE, ACB OR
  1090. * ACNB NOT FOUND) THEN NGIGO IS CALLED TO DAYFILE THE MESSAGE
  1091. * TO NIP DAYFILE.
  1092. *
  1093. * AN APPLICATION MAY READ THE MESSAGES QUEUED FOR IT BY CALLING
  1094. * NETGET,NETGETL,NETGETF, OR NETGTFL. THESE AIP ROUTINES COMMUNICATE
  1095. * WITH NIP VIA SYSTEM CONTROL POINT CALLS. NIP WILL WRITE THE TEXT
  1096. * OF THE MESSAGE DIRECTLY TO THE AREA THAT THE APPLICATION HAS
  1097. * RESERVED FOR THE TEXT. AIP WILL WRITE THE APPLICATION BLOCK HEADER
  1098. * TO THE HEADER AREA RESERVED BY THE APPLICATION.
  1099. *
  1100. * AS TO A TEXT THAT IS LONGER THAN THE APPLICATION SPECIFIED BUFFER,
  1101. * THERE ARE OPTION SET IN ACNB BY SENDING OR NOT SENDING DC/TRU
  1102. * SUPERVISORY MESSAGES FOR THE ACNB TO NIP.
  1103. * IF AN APPLICATION HAS NOT SENT THE DC/TRU MESSAGE, THEN THE
  1104. * TEXT WILL NOT BE DELIVERED AND AIP OR NIP SETS A FLAG IN ABH TO
  1105. * INDICATE THAT THE INPUT BLOCK WAS NOT DELIVERABLE. THE TEXT LENGTH
  1106. * IN CHARACTERS SPECIFIED IN THE ABH WILL BE THE ACTUAL SIZE OF THE
  1107. * TEXT,SO THAT THE APPLICATION MAY REPEAT THE GET REQUEST WITH A
  1108. * LARGER BUFFER SIZE. IF AN APPLICATION HAS SENT THE DC/TRU,
  1109. * THEN NIP SETS A FLAG IN ABH TO INDICATE THAT THE MESSAGE IS
  1110. * TRUNCATED AND DELIVERS THE MESSAGE TRUNCATED TO THE LENGTH
  1111. * OF THE SPECIFIED BUFFER.
  1112. *
  1113. * IF AN APPLICATION HAS REQUESTED THAT HALF DUPLEX MODE IS ON
  1114. * (BY SENDING NIP A LST/HDX SUPERVISORY MESSAGE), THEN AFTER
  1115. * ONE MSG BLOCK HAS BEEN READ FROM THE HOST SIDE ACNB, A
  1116. * TEMPORARY LIST OFF FLAG IS SET AND THIS ACNB IS LONGER
  1117. * CHECKED FOR UPLINE DATA UNTIL THE APPLICATION SENDS A DOWN-
  1118. * LINE MSG OR RETURNS TO FULL DUPLEX MODE BY SENDING NIP THE
  1119. * SUPERVISORY MESSAGE LST/FDX. HALF DUPLEX ON ALLOWS THE
  1120. * APPLICATION TO IMPLEMENT TYPE-AHEAD FOR TERMINAL USERS.
  1121. *
  1122.  * NETWORK PRODUCTS DOCUMENTATION PAGE
  1123.  * NAM INTERNAL SPECIFICATION DATE.
  1124.  * 3.0 NIP TABLE STRUCTURE
  1125. *
  1126. * NAM COMMON DECKS CONTAIN TEMPLATES FOR VARIOUS TABLES, COMMON
  1127. * BLOCKS, AND VALUES FOR FREQUENTLY USED VARIABLES. NIP COMMON
  1128. * DECKS ARE ARRANGED ALPHABETICALLY EXCEPT WHEN ONE COMMON DECK
  1129. * USES VALUES FROM ANOTHER COMMON DECK. THE DOCUMENTATION THAT
  1130. * FOLLOWS COVERS COMMON DECKS USED BY NAM ONLY, BUT NOT
  1131. * THE COMMON DECKS USED THROUGHOUT NETWORK HOST PRODUCTS FOR THE
  1132. * VARIOUS SUPERVISORY MESSAGES. THE SUPERVISORY MESSAGE FORMATS
  1133. * ARE DOCUMENTED IN THE NAM RM (FOR USER APPLICATION SUPERVISORY
  1134. * MESSAGES) AND IN THE SUPERVISION (CS-NS) IMS FOR MESSAGES USED
  1135. * BY THE SUPERVISORS.
  1136.  #
  1137. *ENDIF
  1138. CONTROL EJECT;
  1139. XREF BEGIN
  1140. PROC IRECVR; # INITIATE RECOVERY #
  1141. PROC OVLCALL; # LOAD OVERLAY #
  1142. PROC XEXEC; # GOTO EXECUTION CONTROL PROCEDURE #
  1143. END
  1144. #* * * * * * * * * * ---------- TLIST ----------* * * * * * * * * * #
  1145. CONTROL EJECT;
  1146. # * * * * * * * * * * * * * * * --- CRCOM --- * * * * * * * * * * * * *#
  1147. *CALL CRCOM
  1148. *CALL CYBERDEFS
  1149. *CALL MISDEF
  1150. *IF,DEF,IMS
  1151. *CALL IMSPT
  1152. *CALL IMSNBT
  1153. *CALL IMSPIT
  1154. *CALL IMSCET
  1155. *CALL IMSTNT
  1156. *CALL IMSAT
  1157. *CALL IMSLLCB
  1158. *CALL IMSNCNT
  1159. *CALL IMSNCNB
  1160. *CALL IMSACB
  1161. *CALL IMSACNT
  1162. *CALL IMSACNB
  1163. *CALL IMSPCNB
  1164. *CALL IMSPOA
  1165. #
  1166. *1DC ACKNOWLEDGE QUEUE HEADER
  1167. * THERE IS AN ACKNOWLEDGE QUEUE OF LENGTH ABL (APPLICATION BLOCK
  1168. * LIMIT - SEE NDL REFERENCE MANUAL) FOR EACH ACTIVE CONNECTION ON
  1169. * THE NETWORK. THE ACKNOWLEDGE QUEUE HAS THE ABH (APPLICATION
  1170. * BLOCK HEADER) OF EACH MESSAGE THAT HAS BEEN SENT FROM NIP TO
  1171. * PIP BUT HAS NOT YET BEEN ACKNOWLEDGE BY CCP. THE ACKNOWLEDGE
  1172. * QUEUE ENABLES NIP TO MATCH THE BLOCK SEQUENCE NUMBER RECEIVED
  1173. * FROM CCP TO THE CORRECT APPLICATION BLOCK NUMBER SENT BY THE
  1174. * APPLICATION, SO THAT NIP MAY RETURN THE ABN IN THE FC/ACK
  1175. * MESSAGE TO THE APPLICATION.
  1176. * THE ACKNOWLEDGE QUEUE IS CONTROLLED BY THE ACKNOWLEDGE QUEUE
  1177. * HEADER OF THE FOLLWING FORMAT:
  1178. * 2 4 5
  1179. * 0 6 4 2 9
  1180. * I----------I----------I---------------I-------------I
  1181. * I I I I I
  1182. * I ACKQID I ACKQBS I ACKQLBSN I ACKNCNB I
  1183. * I I I I I
  1184. * I----------I----------I---------------I-------------I
  1185. *
  1186. * WHERE
  1187. * ACKQID = ACKNOWLEDGE QUEUE BLOCK ID =3
  1188. * ACKBS = ACKNOWLEDGE QUEUE BLOCK SIZE = ABL+1
  1189. * ACKQLBSN = LAST BSN BACKED FROM CCP
  1190. * ACBNCNB = ADDRESS OF NCNB.
  1191. *
  1192. * ENTRIES IN THE ACKNOWLEDGE QUEUE HAVE THE SAME FORMAT AS THE ABH,
  1193. * EXCEPT THAT THE ADR FIELD CONTAINS THE BSN SENT TO CCP ON THE
  1194. * OUTGOING MESSAGE.
  1195. *
  1196. * THE ACKNOWLEDGE QUEUE IS A MOVABLE BUFFER UNDER THE DEFAULT NIP
  1197. * INSTALLATION OPTION PERF1 OF DYNAMIC ALLOCATION. (SEE INPARU
  1198. * DOCUMENTATION BELOW). WHEN THE ACKNOWLEDGE QUEUE IS STATICALLY
  1199. * ALLOCATED, IT IS MOVABLE ONLY WITH ITS QCB. UNDER STATIC
  1200. * ALLOCATION THE ACKNOWLEDGE QUEUE IS CREATED WHEN THE NETWORK
  1201. * SIDE QCB IS CREATED. UNDER DYNAMIC ALLOCATION, THE ACKNOWLEDGE
  1202. * QUEUE IS ONLY CREATED WHEN IT IS NEEDED.
  1203.  #
  1204. *ENDIF
  1205. *CALL ACKHEAD
  1206. #* * * * * * * * * * ---------- AHEADER ----------* * * * * * * * * * #
  1207. BASED ARRAY AHEADER[0:0] P(1); # APPLICATION BLOCK HEADER #
  1208. BEGIN
  1209. *CALL HEADER
  1210. END
  1211. *IF,DEF,IMS
  1212. #
  1213. *1DC APPSTAT
  1214. * APPSTAT IS A COMMON BLOCK OF VARIABLES THAT DESCRIBE THE STATUS
  1215. * OF THE WORKLIST CURRENTLY BEING PROCESSED. SEE SYMPL LISTING
  1216. * FOR THE LIST OF VARIABLES IN THIS COMMON BLOCK
  1217.  #
  1218. *ENDIF
  1219. *CALL APPSTAT
  1220. #* * * * * * * * * * ---------- AWLHEAD ----------* * * * * * * * * * #
  1221. *IF,DEF,IMS
  1222. #
  1223. *1DC AWL - APPLICATION WORK LIST
  1224. * THE AWL IS THE MIDDLE PART OF THE ACB. IT CONTAINS NIP-S
  1225. * REPLY TO THE NWL (NETWORK WORK LIST). FOR THE FORMAT OF
  1226. * THE NWL SEE NWL DESCRIPTION BELOW. THE AWL HAS A SIZE OF 6 WORDS
  1227. * LONG AND IS WRITTEN BACK TO AIP WHENEVER A NWL IS RECEIVED THAT
  1228. * REQUIRES A REPLY. THIS WOULD BE A NWL THAT CONTAINED EITHER A
  1229. * NETON, GET, GETL, GETF, GTFL, GETMM, OR GETSM ENTRY. IF THE NWL
  1230. * CONTAINS A NETON NWL ENTRY, IT WILL BE THE ONLY ENTRY AND THE AWL
  1231. * WILL CONTAIN THE NETON RESPONSE BEGINNING IN THE FIRST WORD OF THE
  1232. * AWL. FOR NORMAL AWLS THE 6 WORDS ARE DIVIDED INTO 3 TWO WORD
  1233. * ENTRIES. THE FIRST 2 WORDS WILL ALWAYS CONTAIN THE GET, GETL,
  1234. * GETF, OR GTFL RESPONSE. THE FIRST WORD OF THE
  1235. * TWO WORD ENTRY HAS THE FORMAT
  1236. * 3 5 5 5
  1237. * 0 6 6 4 9 9
  1238. * I-------I---------I-I-------I-------I
  1239. * I I I I I I
  1240. * I AWLRC I GETSMND I I AWLOP I AWLCB I
  1241. * I I I I I I
  1242. * I-------I---------I-I-------I-------I
  1243. * WHERE:
  1244. * GETSMND = NO OF SUPERVISORY MESSAGES DELIVERED, WHEN AWLOP=GETSM
  1245. * AWLOP = THE AWL OP CODE. POSSIBLE OP CODES IN THE AWL ARE
  1246. * WLOPGET (2) FOR NETGET
  1247. * WLOPGETL (3) FOR NETGETL
  1248. * WLOPGETS (4) FOR NETGETSM, I.E GET SUPERVISORY MESSAGES
  1249. * WLOPNON (6) FOR NETON
  1250. * WLOPGETF (8) FOR NETGETF
  1251. * WLOPGTFL (10)FOR NETGTFL
  1252. * THERE IS NO AWL ENTRY (REPLY) FOR NETOFF, NETPUT,
  1253. * NETPUTF, OR NETWAIT.
  1254. * AWLCB = THE COMPLETION BIT-IN THE ORIGINAL REQUEST IT IS CLEARED
  1255. * BY AIP, AND IT IS SET TO 1 BY NIP.
  1256. *
  1257. * THE FORMAT OF THE SECOND WORD OF THE AWL ENTRY DEPENDS ON THE
  1258. * OP CODE FIELD IN THE FIRST WORD. IF THE OP CODE IS GET, GETL,
  1259. * GETF OR GETL THEN THE SECOND WORD IS THE ABH FOR THE MESSAGE
  1260. * (NOTE THAT THE TEXT OF THE MESSAGE IS WRITTEN DIRECTLY TO THE
  1261. * TA AREA SPECIFIED BY THE APPLICATION IN THE AIP CALL)
  1262. *
  1263. * FOR AN OPCODE OF GETMM THE FORMAT IS AS FOLLOWS:
  1264. *
  1265. * 4 5
  1266. * 0 8 9
  1267. * I--------------------I---------I
  1268. * I I I
  1269. * I I GETMMNW I
  1270. * I I I
  1271. * I--------------------I---------I
  1272. *
  1273. * WHERE
  1274. * GETMMNW = NO OF WORDS OF DATA MESSAGES DELIVERED TO AIP-S
  1275. * DATA QUEUE.
  1276. *
  1277. *
  1278. * FOR AN OP CODE OF GETS (GET SUPERVISORY MESSAGES) THE FORMAT
  1279. * OF THE SECOND WORD IS AS FOLLOWS
  1280. * 4 5
  1281. * 0 6 8 9
  1282. * I---------I----------I---------I
  1283. * I I I I
  1284. * I GETSMNL I I GETSMNW I
  1285. * I I I I
  1286. * I---------I----------I---------I
  1287. *
  1288. * WHERE
  1289. * GETSMNL = IS THE LENGTH OF THE NEXT SUPERVISORY MESSAGE NOT YET
  1290. * DELIVERED TO AIP. WHEN ZERO THERE ARE NO MORE SUPER-
  1291. * VISORY MESSAGES.
  1292. *
  1293. * GETSMNW = NO OF WORDS OF SUPERVISORY MESSAGES DELIVERED TO AIP
  1294. * USED BY AIP TO UPDATE ITS POINTERS TO THE CIRCULAR
  1295. * SUPERVISORY MESSAGE BUFFER. SEE AIP DOCUMENTATION
  1296. * AND ALSO DETAILED DOCUMENTATION OF HPGETSM, IN NIP.
  1297. *
  1298. * WHEN AN APPLICATION DOES A -NETON-, THE GLOBAL 5-WORD NWL WORKLIST
  1299. * ENTRY IS NOT USED, RATHER A LOCAL (ASSOCIATED WITH THE
  1300. * APPLICATION) 3-WORD AWL IS CREATED. THIS IS
  1301. * BECAUSE THERE CAN ONLY BE ONE ENTRY IN THE AWL, A NETON RESPONSE
  1302. * ENTRY. IF THE NETON WAS REJECTED, AWLRC WILL CONTAIN THE REASON
  1303. * CODE FOR REJECTING THE NETON.IF THE NETON WAS ACCEPTED, THE SECOND
  1304. * WORD OF THE AWL ENTRY WILL CONTAIN THE PROCESS NUMBER ASSIGNED TO
  1305. * THIS APPLICATION AND WHICH WILL BE USED BY AIP IN FUTURE
  1306. * WORKLISTS.
  1307. *
  1308.  #
  1309. *ENDIF
  1310. #* * * * * * * * * * ---------- AWLNTRY ----------* * * * * * * * * * #
  1311. *CALL AWLNTRY
  1312. #* * * * * * * * * * ---------- INPARU ----------* * * * * * * * * *#
  1313. *IF DEF,IMS
  1314. #
  1315. *1DC INPARU
  1316. *
  1317. * INPARU IS A COMMON DECK OF INSTALLATION PARAMETERS WHICH ARE
  1318. * AVAILABLE TO THE USERS
  1319. *
  1320. * THESE ARE COMPILATION TIME OPTIONS, WHICH ARE IN ADDITION TO THE
  1321. * UPDATE TIME OPTIONS.
  1322. *
  1323. * THE UPDATE TIME OPTIONS THAT EFFECT NAM ARE AS FOLLOWS
  1324. *
  1325. * SUBAREA EFFECTED
  1326. * NIP AIP PIP
  1327. *
  1328. * IMS - WHEN DEFINED IN THE UPDATE RUN IT YES YES YES
  1329. * TURNS EXTENSIVE IMS DOCUMENTATION ON.
  1330. * THE RELEASE VALUE IS IMS NOT DEFINED.
  1331. * IN THAT STATE ONLY MINIMAL IMS DOCU-
  1332. * MENTATION IS INCLUDED IN THE LISTING.
  1333. *
  1334. * DEBUG WHEN DEFINED DEBUG WILL BE TURNED ON. YES YES YES
  1335. * THE EFFECT OF DEBUG ON THE NAM COMPO-
  1336. * NENTS IS AS FOLLOWS
  1337. * NIP - INTERNAL TRACE BUFFERS WILL BE
  1338. * USED BY NIP TO TRACE MESSAGES SENT
  1339. * AND RECEIVED AS WELL AS TO TRACE
  1340. * SUBROUTINE AND OVERLAY CALLS.
  1341. * DEBUG WILL ALSO EFFECT NIP-S ACTION
  1342. * UPON DETECTING ERROR CONDITIONS.
  1343. * MOST OF THESE ARE DOCUMENTATED IN THE
  1344. * NAM ERS. ON THE RELEASE VERSION
  1345. * DEBUG FOR NIP IS TURNED OFF.
  1346. * AIP - WITH DEBUG ON AIP WILL PRODUCE
  1347. * AN AIP TRACE FILE. BOTH THE DEBUG
  1348. * AND NONDEBUG VERSIONS OF AIP
  1349. * ARE RELEASED ON LIBRARIES NETIOD AND
  1350. * NETIO RESPECTIVELY.
  1351. *
  1352. * PIP - WHEN DEBUG IS ON PIP WILL HANG
  1353. * THE PP ON CERTAIN ERROR CONDITIONS.
  1354. * WITH DEBUG TURNED OFF PIP WILL EITHER
  1355. * ATTEMPT TO CONTINUE OR JUST ABORT THE
  1356. * NETWORK DEPENDING ON THE PARTICULAR
  1357. * ERROR.
  1358. *
  1359. * STAT -WHEN DEFINED STATISTICS OPTION WILL BE YES YES NO
  1360. * TURNED ON IN NIP AND AIP.
  1361. * THE RESULTS OF NIP-S STATISTICS
  1362. * GATHERING APPEARS IN THE NIP DAYFILE.
  1363. * THE FOLLOWING INFORMATION IS DAYFILED:
  1364. *
  1365. * 1. AT THE TIME NIP IS TERMINATED THE
  1366. * NO OF TIMES EACH OVERLAY WAS CALLED,
  1367. * AS WELL AS THE STATISTICS VARIABLES
  1368. * IN COMMON BLOCK STATTAB (FOR DOCU-
  1369. * MENTATION SEE BELOW).
  1370. * 2. AT THE TIME A PCB IS DELETED THE
  1371. * STATISTICS INFORMATION IN THE PCB.
  1372. * (SEE PCB DOCUMENTATION BELOW)
  1373. * 3. AT THE TIME A QCB IS DELETED OR
  1374. * SWITCHED THE STATISTICS INFORMA-
  1375. * TION IN THE QCB (SEE QCB DOCUMEN-
  1376. * TATION BELOW.)
  1377. *
  1378. * THE ABOVE 3 UPDATE TIME OPTIONS ARE MADE AVAILABLE TO THE USERS
  1379. * BY DOCUMENTATION IN THE IHB (INSTALLATION HANDBOOK)
  1380. * THE ADDITIONAL UPDATE TIME OPTIONS ARE FOR USE BY THE NAM PROJECT
  1381. * ONLY
  1382. *
  1383. * BFSC - IF DEFINED, NIP WILL EXAMINE THE FREE BUFFER CHAIN
  1384. * FOR ANY DISCREPANCIES AFTER EVERY MGETS, MRELS OR MACQ
  1385. * CALL. IF ERROR IS DETECTED, NIP WILL ABORT WITH DAYFILE
  1386. * MESSAGE. THIS OPTION WILL SLOW NIP DOWN COMSIDERABLY
  1387. * AND SHOULD ONLY BE USED IN EXTREME DEBUG SITUATION.
  1388. *
  1389. * DELAY - IF DEFINED NIP WILL DELAY 2 SECONDS AFTER IT HAS
  1390. * DECIDED THAT THERE IS EXTRA CORE TO RELEASE BEFORE ACTUALLY
  1391. * RELEASING THAT CORE. IT WILL NOT BE DEFINED ON THE RELEASE
  1392. * VERSION OF NIP. THAT IS, EXTRA CORE ABOVE 400B WORDS WILL BE
  1393. * IMMEDIATELY RELEASED. SINCE WE DO KEEP THE 400B WORDS THIS IS
  1394. * CONSIDERED TO BE ADEQUATE TO AVOID MEMORY THRASHING.
  1395. *
  1396. * BESTFIT - IF DEFINED, THE MEMORY ALLOCATION ROUTINE WILL SEARCH
  1397. * FOR A BUFFER EXACTLY THE SAME SIZE AS REQUESTED. IF ONE IS NOT
  1398. * FOUND, IT WILL USE THE BUFFER COMING CLOSEST (BUT ALWAYS GREATER)
  1399. * TO THE REQUESTED SIZE. IF NOT DEFINED, FIRST FIT BUFFER
  1400. * ALLOCATION SCHEME IS USED. UNDER THIS SCHEME, THE FIRST BUFFER
  1401. * GREATER THAN OR EQUAL TO THE REQUESTED SIZE IS USED. THE RELEASE
  1402. * VALUE IS BESTFIT NOT DEFINED.
  1403. *
  1404. * LIBRES - IF DEFINED NIP WILL NOT CHECK LIBRARY RESIDENCY OF
  1405. * NS AND CS. THIS IS USED DURING DEVELOPMENT SO THAT NS AND CS
  1406. * MAY RUN EXPERIMENTAL VERSIONS OFF OF A FILE. THE RELEASE
  1407. * VALUE OF COURSE IS TO NOT HAVE LIBRES DEFINED.
  1408. *
  1409. * PERF1 - IF DEFINED THE ACKNOWLEDGE QUEUE IN NIP WILL BE ALLOCATED
  1410. * AT THE TIME THE QCB IS CREATED. IF NOT DEFINED IT WILL BE
  1411. * ALLOCATED AND RELEASED DYNAMICALLY. THE MORE DYNAMIC HANDLING
  1412. * OF ACK. Q"S OBVIOUSLY REQUIRES MORE CPU TIME BUT LESS CORE SIZE
  1413. * IN NIP. THE RELEASE VALUE IS TO HAVE IT ASSIGNED DYNAMICALLY.
  1414. *
  1415. * ZZDN - IF DEFINED, ALL INBOUND/OUTBOUND MESSAGES WILL BE RECORDED
  1416. * IN A FILE CALLED ZZZZZDN, WHICH SERVES AS INPUT TO
  1417. * POSTPROCESSOR DLFP.
  1418. *
  1419. * ALL OF THE ABOVE UPDATE OPTIONS TRANSLATE INTO COMPILATION TIME
  1420. * OPTIONS IN NIP. THIS CAN BE READILY PERCEIVED BY LISTING, THROUGH
  1421. * UPDATE, ALL OF THE ACTIVE CARDS IN NIP. THEREFORE THE VARIABLES
  1422. * MENTIONED ABOVE SHOW UP AS VARIABLES IN THE INSTALLATION PARAMETER
  1423. * COMMON DECKS(INPARU FOR USER AND INPAR FOR NAM PROJECT).
  1424. *
  1425. * THE FOLLOWING ADDITIONAL COMPILATION OPTIONS ARE AVAILABLE.
  1426. *
  1427. * MAXNIP - THIS DEFINES THE MAXIMUM FIELD LENGTH THAT NIP MAY USE.
  1428. * THE DEFAULT VALUE IS 20480=50000B. THE RANGE IN VALUE IS FROM
  1429. * 15000B TO 377777B.
  1430. *
  1431. * NFBUFF - WHEN THE NUMBER OF FREE BUFFERS EXCEED NFBUFF, NIP WILL
  1432. * START GARBAGE COLLECTION AFTER TBUF SECONDS. THE RANGE IN VALUE IS
  1433. * FROM 2 TO 16000B. THE DEFAULT VALUE IS 64 (100B).
  1434. *
  1435. * NFSIZE - WHEN THE SIZE OF THE FREE BUFFER CHAIN EXCEEDS NFSIZE
  1436. * NUMBER OF WORDS, THEN NIP WILL CALL GARBAGE COLLECTION AFTER TBUF
  1437. * SECONDS. THE RANGE IN VALUE IS FROM 2 TO 16000B. THE DEFAULT IS
  1438. * 2048.
  1439. *
  1440. * NMBUF - THIS PARAMETER IS THE MINIMUM NUMBER OF IDLE FREE BUFFERS
  1441. * WHICH WILL INITIATE GARBAGE COLLECTION. IT IS COMPARED TO THE
  1442. * NUMBER OF FREE BUFFERS MINUS THE NUMBER OF CONNECTIONS (ASSUMING
  1443. * AN AVERAGE NEED OF ONE FREE BUFFER FOR EACH CONNECTION). THE
  1444. * DEFAULT VALUE IS 20. THE RANGE IN VALUE IS FROM 2 TO 16000B.
  1445. *
  1446. * NTIME - NO SWAPOUT NETWAIT TIME. THIS PARAMETER IS THE MAXIMUM
  1447. * TIME (IN SECONDS) FOR WHICH THE APPLICATION WILL NOT BE SWAPPED
  1448. * OUT. THE RANGE IN VALUE IS FROM 1 TO 3777B. THE DEFAULT VALUE IS
  1449. * TWO SECONDS. THE PARAMETER SERVES THE PURPOSE OF AVOIDING
  1450. * DISK ACCESS WHEN THE SWAPIN/SWAPOUT PROCESS MAY TAKE AS LONG
  1451. * AS THE NETWAIT TIME SPECIFIED.
  1452. *
  1453. * TBUF - THIS PARAMETER IS THE MINIMUM TIME INTERVAL (IN SECONDS)
  1454. * BETWEEN CHECKS TO SEE IF NFBUFF BUFFERS OR NFSIZE WORDS ARE FREE
  1455. * SO THAT GARBAGE COLLECTION CAN BE INITIATED. THE RANGE IN VALUE IS
  1456. * FROM 1 TO 777777B. THE DEFAULT VALUE IS 64 SECONDS (=100B).
  1457. *
  1458.  #
  1459. #
  1460.   INSTALLATION PARAMETERS--USER
  1461.  
  1462.  BFSC SCAN FREE BUFFER CHAIN OPTION
  1463.  
  1464.   THIS PARAMETER TURNS ON SCAN FREE BUFFER CHAIN CODE IN
  1465.   NIP.
  1466.   ASSIGN BFSC A VALUE OF 0 TO TURN IT OFF (DEFAULT).
  1467.   ASSIGN BFSC A VALUE OF 1 TO TURN IT ON.
  1468.  
  1469.  DEBUG DEBUG OPTION
  1470.  
  1471.   THIS PARAMETER TURNS ON/OFF DEBUG CODE IN NIP WHICH WOULD
  1472.   OTHERWISE NOT BE COMPILED.
  1473.   THE VALUE IS 0 TO TURN IT OFF (DEFAULT).
  1474.   THS VALUE IS 1 TO TURN IT ON.
  1475.  
  1476.  DELAY RELEASE FL DELAY OPTION
  1477.  
  1478.   THIS PARAMETER TURNS ON/OFF DELAY OPTION CODE
  1479.   IN GARBAGE COLLECTION ROUTINE MGBGCLT TO CONTROL
  1480.   WHETHER TO WAIT 2 SECONDS TO RELEASE EXTRA NIP FL OR NOT.
  1481.   THE VALUE IS 0 TO TURN IT OFF (DEFAULT).
  1482.   THE VALUE IS 1 TO TURN IT ON.
  1483.  
  1484.  BESTFIT BUFFER ALLOCATION METHOD OPTION
  1485.  
  1486.   THIS PARAMETER SPECIFIES WHETHER MGETS USES BEST FIT OR
  1487.   FIRST FIT STRATEGY WHEN A BUFFER IS DYNAMICALLY ALLOCATED.
  1488.   THE VALUE IS 1 FOR BEST FIT.
  1489.   THE VALUE IS 0 FOR FIRST FIT (DEFAULT).
  1490.  
  1491.  IMSLIST IMS DOCUMENTATON OPTION
  1492.  
  1493.   THIS PARAMETER TURNS ON/OFF LISTING OF IMS DOCUMENTATION.
  1494.   THE VALUE IS 0 TO TURN IT OFF (DEFAULT).
  1495.   THE VALUE IS 1 TO TURN IT ON.
  1496.  
  1497.  LIBRES SYSTEM RESIDENT CHECK IPTION
  1498.  
  1499.   THIS PARAMETER TURNS ON/OFF CHECK TO SEE IF CS AND NS ARE
  1500.   SYSTEM ORIGINATED PROGRAMS.
  1501.   THE VALUE IS 0 TO TURN IT ON (DEFAULT).
  1502.   THE VALUE IS 1 TO TURN IT OFF.
  1503.  
  1504.  MAXNIP MAXIMUM FIELD LENGTH
  1505.  
  1506.   THIS PARAMETER IS THE MAXIMUM FIELD LENGTH THAT NIP MAY
  1507.   REACH.
  1508.   THE RANGE IN VALUE IS FROM 15000B TO 377777B
  1509.   (DEFAULT = 50000B).
  1510.  
  1511.  NFBUFF NUMBER OF FREE BUFFERS FOR GARBAGE COLLECTION
  1512.  
  1513.   THIS PARAMETER IS THE MINIMUM NUMBER OF FREE BUFFERS
  1514.   WHICH WILL INITIATE GARBAGE COLLECTION AFTER TBUF SECONDS.
  1515.   THE RANGE IN VALUE IS FROM 2 TO 16000B (DEFAULT = 100B).
  1516.  
  1517.  NFSIZE NUMBER OF FREE WORDS FOR GARBAGE COLLECTION
  1518.  
  1519.   THIS PARAMETER IS THE MINIMUM NUMBER OF FREE WORDS
  1520.   WHICH WILL INITIATE GARBAGE COLLECTION AFTER TBUF SECONDS.
  1521.   THE RANGE IN VALUE IS FROM 2 TO 16000B (DEFAULT = 1500B).
  1522.  
  1523.  NMBUF NUMBER OF IDLE FREE BUFFERS FOR GARBAGE COLLECTION
  1524.  
  1525.   THIS PARAMETER IS THE MINIMUM NUMBER OF IDLE FREE BUFFERS
  1526.   WHICH WILL INITIATE GARBAGE COLLECTION. IT IS COMPARED
  1527.   TO THE NUMBER OF FREE BUFFERS MINUS THE NUMBER OF
  1528.   CONNECTIONS (ASSUMING A AVERAGE NEED OF ONE FREE BUFFER
  1529.   FOR EACH CONNECTION).
  1530.   THE RANGE IN VALUE IS FROM 2 TO 16000B (DEFAULT = 24B).
  1531.  
  1532.  NTIME NO-SWAPOUT NETWAIT TIME
  1533.  
  1534.   THIS PARAMETER IS THE MAXIMUM NETWAIT TIME (IN SECONDS)
  1535.   FOR WHICH THE APPLICATION WILL NOT BE SWAPPED OUT.
  1536.   THE RANGE IN VALUE IS FROM 1 TO 3777B (DEFAULT = 2).
  1537.  
  1538.  PERF1 PERFORMANCE OPTION NUMBER 1
  1539.  
  1540.   THIS PARAMETER WILL DETERMINE IF THE ACKNOWLEDGE QUEUE
  1541.   WILL BE ALLOCATED DYNAMICALLY (I.E. ONLY WHEN NEEDED) OR
  1542.   STATICALLY (I.E. AT QCB CREATION TIME).
  1543.   THE VALUE IS 0 TO ALLOCATE DYNAMICALLY (DEFAULT).
  1544.   THE VALUE IS 1 TO ALLOCATE STATICALLY.
  1545.  
  1546.  STAT STATISTICS OPTION
  1547.  
  1548.   THIS PARAMETER TURNS ON/OFF STATISTICS PRODUCING CODE IN NI
  1549.   WHICH WOULD OTHERWISE NOT BE COMPILED.
  1550.   THE VALUE IS 0 TO TURN IT OFF (DEFAULT).
  1551.   THE VALUE IS 1 TO TURN IT ON.
  1552.  
  1553.  TBUF TIME INTERVAL FOR GARBAGE COLLECTION CHECK
  1554.  
  1555.   THIS PARAMETER IS THE MINIMUM TIME INVERVAL (IN SECONDS)
  1556.   BETWEEN CHECKS TO SEE IF NFBUFF BUFFERS OR NFSIZE WORDS
  1557.   ARE FREE SO THAT GARBAGE COLLECTION CAN BE INITIATED.
  1558.   THE RANGE IN VALUE IS FROM 1 TO 777777B (DEFAULT = 100B).
  1559.  
  1560.  ZZDN TRACE PIP IN/OUT BOUND MESSAGES
  1561.  
  1562.   THIS OPTION WILL INCLUDE CODE TO RECORD ALL PIP IN/OUT
  1563.   BOUND MESSAGES IN A FILE NAMED ZZZZZDN.
  1564.   SET TO 1 TO TURN IT ON.
  1565.   SET TO 0 TO TURN IT OFF (DEFAULT).
  1566.  
  1567. #
  1568. *ENDIF
  1569. *CALL INPARU
  1570. *CALL IMSBB
  1571. # * * * * * * * * * * * * * --- BACKBUF --- * * * * * * * * * * * * * *#
  1572. *CALL BACKBUF
  1573. # * * * * * * * * * * * * * * * --- BPIPBUF --- * * * * * * * * * * * *#
  1574. *IF DEF,IMS
  1575. #
  1576. *1DC BPIPBUF
  1577. *
  1578. * BPIPBUF IS A COMMON BLOCK USED BY ZZDN OPTION. WHEN NIP IS
  1579. * GENERATED WITH ZZDN, ALL MESSAGES INBOUND OR OUTBOUND THROUGH
  1580. * PIP ARE RECORDED IN A FILE CALLED ZZZZZDN. BPIPBUF CONTAINS
  1581. * CIO BUFFER FOR ZZZZZDN AND ITS FETS.
  1582. * INTERNAL FORMAT OF ZZZZZDN -
  1583. *
  1584. * HEADER WORD 0 -
  1585. * W 7
  1586. * 4
  1587. * 0 2
  1588. * I----------------------------I
  1589. * I I
  1590. * I NIP I
  1591. * I I
  1592. * I----------------------------I
  1593. *
  1594. * WHERE
  1595. * THE LEFTMOST 42 BITS CONTAINS DISPLAY CODE LITERALS NIP WITH
  1596. * ZERO FILL.
  1597. *
  1598. * HEADER WORD 1 -
  1599. * W 7
  1600. * 2
  1601. * 0 4
  1602. * I---------------------I-----------------------I
  1603. * I I I
  1604. * I SECONDS I MILLISECONDS I
  1605. * I I I
  1606. * I---------------------I-----------------------I
  1607. *
  1608. * WHERE
  1609. *
  1610. *
  1611. * SECONDS = ELAPSED TIME SINCE DEADSTART IN SECS.
  1612. * MILLISECONDS = ELAPSED TIME SINCE DEADSTART IN MILLISECONDS.
  1613. *
  1614. * HEADER WORD 2 -
  1615. *
  1616. * W 7
  1617. * 1 2 3 4 5
  1618. * 6 8 4 6 2 4
  1619. * I----I------I-----I------I-----I------I-----I
  1620. * I I I I I I I I
  1621. * I I HH I . I MM I . I SS I . I
  1622. * I I I I I I I I
  1623. * I----I------I-----I------I-----I------I-----I
  1624. *
  1625. *
  1626. * WHERE
  1627. *
  1628. * HH = HOUR IN DISPLAY CODE.
  1629. * MM = MINUTE IN DISPLAY CODE.
  1630. * SS = SECONDS IN DISPLAY CODE.
  1631. *
  1632. *
  1633. * HEADER WORD 3 -
  1634. * W 7
  1635. * 1 2 3 4 5
  1636. * 6 8 4 6 2 4
  1637. * I----I------I-----I------I-----I------I-----I
  1638. * I I I I I I I I
  1639. * I I YY I / I MM I / I DD I / I
  1640. * I I I I I I I I
  1641. * I----I------I-----I------I-----I------I-----I
  1642. *
  1643. *
  1644. * WHERE
  1645. *
  1646. * YY = YEAR IN DISPLAY CODE.
  1647. * EG. 1978 WILL BE EXPRESSED AS 4243B.
  1648. * MM = MONTH IN DISPLAY CODE.
  1649. * DD = DATE OF THE MONTH IN DISPLAY CODE.
  1650. *
  1651. *
  1652. * THE HEADER IS FOLLOWED BY INDIVIDUAL ZZZZZDN ENTRY CONTAINING AN
  1653. * INBOUND OR OUTBOUND MESSAGE.
  1654. * INTERNAL FORMAT OF EACH ZZZZZDN ENTRY -
  1655. *
  1656. *
  1657. * WORD 0 -
  1658. *
  1659. * W 7
  1660. * 2
  1661. * 0 4
  1662. * I---------------------I-----------------------I
  1663. * I I I
  1664. * I SECONDS I MILLISECONDS I
  1665. * I I I
  1666. * I---------------------I-----------------------I
  1667. *
  1668. * WHERE
  1669. *
  1670. *
  1671. * SECONDS = ELAPSED TIME SINCE DEADSTART IN SECS.
  1672. * MILLISECONDS = ELAPSED TIME SINCE DEADSTART IN MILLISECONDS.
  1673. *
  1674. *
  1675. * WORD 1 -
  1676. *
  1677. * W 7
  1678. * 2
  1679. * 6 3
  1680. * I----------I----------I
  1681. * I I I
  1682. * I BPIPID I BPIPBS I
  1683. * I I I
  1684. * I----------I----------I
  1685. *
  1686. *
  1687. * WHERE
  1688. *
  1689. * BPIPID = BLOCK ID.
  1690. * 14 FOR INBOUND, 15 FOR OUTBOUND.
  1691. * BPIPBS = BLOCK SIZE. SIZE OF ZZZZZDN ENTRY MINUS ONE.
  1692. *
  1693. *
  1694. * WORD 2 -
  1695. *
  1696. * W 5
  1697. * 1 2 2 2 3 4 4 4
  1698. * 0 8 6 4 5 8 2 0 4 8
  1699. * I--I--I--I-----I-----I--I-----I-----I-I--I
  1700. * IDNISNICNINHPRIINHBNSIBTINHDBCINHACTIBICCI
  1701. * I--I--I--I-----I-----I--I-----I-----I-I--I
  1702. *
  1703. * SEE NHEADER FOR EXPLANATION OF THE ABOVE FIELDS.
  1704. * MESSAGE TEXT WILL FOLLOW THIS WORD.
  1705. *
  1706.  #
  1707. *ENDIF
  1708. *CALL BPIPBUF
  1709. *CALL IMSNBT
  1710. *ENDIF
  1711. # * * * * * * * * * * * * * ----- CET ----- * * * * * * * * * * * * * *#
  1712. *CALL CET
  1713. *CALL SMPFC
  1714. *CALL SMAPPFC
  1715. *CALL SMAPDEF
  1716. *CALL SMDEF
  1717. *IF DEF,IMS
  1718. #
  1719. *1DC DBGBUF
  1720. *
  1721. * DBGBUF IS A PREALLOCATED COMMON BLOCK WHICH CONSISTS OF 5 TRACE
  1722. * BUFFERS TO RECORD ALL DATA TRAFFIC GOING THROUGH NIP. THEY ARE
  1723. * USED PRIMARILY FOR DEBUGGING PURPOSES AND ARE COMPILED ONLY WHEN
  1724. * THE INSTALLATION DEFINED PARAMETER -DEBUG- IS TURNED ON.
  1725. *
  1726. * EACH CIRCULAR TRACE BUFFER HAS A SIZE OF 1001 WORDS .IE. A HEADER
  1727. * WORD WHICH CONTAINS THE OFFSET POINTER OF THE NEXT AVAILABLE
  1728. * WORD IN THE BUFFER TO BE FILLED, AND 1000-WORDS FOR LOGGING
  1729. * DATA MESSAGES. THESE BUFFERS ARE ALLOCATED IN THE FOLLOWING
  1730. * ORDER :
  1731. *
  1732. * . BGET RECORDS NON-SUPERVISORY DATA SENT TO APPLICATION(S)
  1733. * . BGETSM RECORDS SUPERVISORY DATA SENT TO APPLICATION(S)
  1734. * . BPIPIN RECORDS DATA RECEIVED FROM NPU(S)
  1735. * . BPIPOUT RECORDS DATA SENT TO NPU(S)
  1736. * . BPUT RECORDS DATA RECEIVED FROM APPLICATION(S)
  1737. *
  1738. * EVERY TIME NIP PROCESSES NETWORK DATA (INBOUND OR OUTBOUND), IT
  1739. * WILL FIRST STORE IN THE TRACE BUFFERS (BPIPIN AND BPIPOUT) THE
  1740. * ELAPSED TIME THE OPERATING SYSTEM HAS BEEN UP. TO RECOGNIZE THE
  1741. * WORD CONTAINING THE TIME, THE LEFTMOST PART OF THE WORD WILL
  1742. * CONTAIN THE LETTERS -TIME- IN DISPLAY CODE. EACH NETWORK MESSAGE
  1743. * IS PRECEDED BY A BLOCK HEADER WORD. THIS CONSISTS OF A BLOCK TYPE
  1744. * IN BITS 0-3 (SYMPL BIT NUMBERING SCHEME) AND A BLOCK SIZE IN BITS
  1745. * 4-11. FOR NETWORK INBOUND MESSAGES THE BLOCK TYPE IS 14 (70B) AND
  1746. * FOR NETWORK OUTBOUND MESSAGES THE BLOCK TYPE IS 15 (74B) .
  1747. *
  1748. * EVERY TIME NIP PROCESSES AIP GET OR PUT FUNCTIONS, IT WILL FIRST
  1749. * STORE IN THE TRACE BUFFERS (BGET, BGETSM, AND BPUT) THE PROCESS
  1750. * NUMBER OF THE APPLICATION WHOSE WORKLIST IS BEING PROCESSED. TO
  1751. * RECOGNIZE THE WORD CONTAINING THE PROCESS NUMBER, THE LEFTMOST
  1752. * PART OF THE WORD WILL CONTAIN THE LETTERS -PN- IN DISPLAY CODE.
  1753. * DATA RECEIVED BY NIP FROM APPLICATIONS WILL BE PRECEDED BY THE
  1754. * AIP OPCODE WORD IN THE BPUT TRACE BUFFER. ENTRIES IN THE BGET
  1755. * TRACE BUFFERS MAY HAVE DIFFERENT ACT AND/OR ADR VALUES IN THE
  1756. * ABH WORD THAN WHAT IS ACTUALLY SENT TO THE APPLICATION.
  1757. *
  1758.  #
  1759. *ENDIF
  1760. *CALL DBGBUF
  1761. *IF DEF,IMS
  1762. #
  1763. *# #
  1764. *1DC DEQCOM
  1765. *
  1766. * DEQCOM IS A PREALLOCATED COMMON BLOCK CONTAINING VARIABLES WHICH
  1767. * ARE USED IN PERFORMING CHARACTER CONVERSIONS FOR UPLINE DATA,
  1768. * BUFFER MOVE FOR GARBAGE COLLECTION FUNCTIONS, AND NIP-S FIELD
  1769. * LENGTH DUMP FOR ERROR CONDITIONS. SEE SYMPL LISTING FOR LIST
  1770. * OF VARIABLES IN THE COMMON DECK.
  1771. *
  1772.   #
  1773. #
  1774. *#
  1775. *ENDIF
  1776. *CALL DEQCOM
  1777. #* * * * * * * * * * ---------- DRHDR ----------* * * * * * * * * * #
  1778. *IF DEF,IMS
  1779. #
  1780. *1DC DRHDR
  1781. *
  1782. * DRHDR CONTAINS THE TEMPLATE FOR THE DATA RING HEADER WORD. EACH
  1783. * DATA POT IN NIP-S FIELD LENGTH HAS A DATA RING HEADER ASSOCIATED
  1784. * WITH IT. BASICALLY IT IS USED TO CHAIN TOGETHER DATA POTS QUEUED
  1785. * ON THE SAME CONNECTION SO AS TO SPEED UP THE QUEUEING AND DE-
  1786. * QUEUEING PROCESS WITHIN NIP. IT HAS THE FOLLOWING FORMAT:
  1787. *
  1788. * 2 4 5
  1789. * 0 6 4 2 9
  1790. * I--------I------I---------I---------I
  1791. * I I I I I
  1792. * I DRID I DRBS I BACKPTR I NEXTPTR I
  1793. * I I I I I
  1794. * I--------I------I---------I---------I
  1795. *
  1796. *
  1797. * WHERE :
  1798. *
  1799. * DRID = DATA RING BLOCK ID = 7.
  1800. * DRBS = DATA RING BLOCK SIZE.
  1801. * BACKPTR = DATA RING BACK POINTER. POINTS TO FWA OF LAST DATA
  1802. * POT WHICH HEADS THIS DATA POT IN THE RING.
  1803. * NEXTPTR = DATA RING NEXT POINTER. POINTS TO FWA OF NEXT DATA
  1804. * POT WHICH TRAILS THIS DATA POT IN THE RING.
  1805. *
  1806.  #
  1807. *ENDIF
  1808. *CALL DRHDR
  1809.  
  1810. #* * * * * * * * * ---------- FLIST ---------- * * * * * * * * * * * #
  1811.  
  1812. *IF DEF,IMS
  1813. #
  1814. *1DC FLIST
  1815. *
  1816. * FLIST CONTAINS TEMPLATE FOR SYSTEM CONTROL POINT (SCP) FUNCTION
  1817. * LIST WHEN THERE IS A PCB FOR THE USER CONTROL POINT (UCP).
  1818. *
  1819. * SCP FUNCTION LIST IS A DYNAMICALLY MOVABLE BUFFER. IT ALLOWS NAM
  1820. * TO ISSUE SUBSYSTEM FUNCTION REQUESTS TO THE O/S. FOR A NON-LIST
  1821. * SFCALL FUNCTION, IT IS A 3-WORD ENTRY WITH A HEADER WORD PLUS A
  1822. * 2-WORD PARAMETER BLOCK ( FOR THE EXTENDED SF.READ / SF.WRIT
  1823. * FUNCTIONS, THERE IS A 3-WORD PARAMETER BLOCK TO ALLOW FOR THE
  1824. * EXTENDED TRANSFER LENGTH OF MORE THAN 100B WORDS ). FOR A LIST
  1825. * SFCALL FUNCTION (SF.LIST), IT IS A (3+N)-WORD ENTRY WITH A HEADER
  1826. * WORD PLUS A 2-WORD PARAMETER BLOCK, FOLLOWED BY N CONTIGUOUS ONE
  1827. * WORD LIST ENTRIES ( FOR AN EXTENDED LIST SFCALL FUNCTION (SF.XLST)
  1828. * EACH LIST ENTRY IS 2 WORDS LONG WITH THE SECOND WORD RESERVED FOR
  1829. * ALL BUT THE EXTENDED SF.READ AND SF.WRIT FUNCTIONS ). THE FORMAT
  1830. * IS AS FOLLOWS:
  1831. *
  1832. * 0 6 24 48 59
  1833. * I---------I------I------------------I---------I
  1834. * I FLID I FLBS I I FLPN I HEADER WORD
  1835. * I---------I------I------------------I---------I
  1836. *
  1837. * ( 2-WORD PARAMETER BLOCK FOR SFCALL FUNCTION )
  1838. *
  1839. * 0 6 18 36 54 58 59
  1840. * I------I------I--------I--------I------I------I
  1841. * I FLRC I FLFP I FLUCPA I FLSCPA I FLFC I FLCB I
  1842. * I------I------I--------I--------I------I------I
  1843. *
  1844. * 0 42 59
  1845. * I-----------------------------------I---------I
  1846. * I FLNAME I FLJDT I
  1847. * I-----------------------------------I---------I
  1848. *
  1849. * ( 1 ADDITIONAL WORD IN PARAMETER BLOCK FOR EXTENDED SF.READ /
  1850. * SF.WRIT FUNCTIONS )
  1851. *
  1852. * 0 1 2 12 36 59
  1853. * I-----I-----I-----I-------------I-------------I
  1854. * I FLU I FLS I I FLXUCPA I FLXSCPA I
  1855. * I-----I-----I-----I-------------I-------------I
  1856. *
  1857. *
  1858. *
  1859. * ( CONTIGUOUS LIST ENTRIES FOR SF.LIST OR SF.XLST FUNCTIONS )
  1860. *
  1861. * 0 6 18 36 54 58 59
  1862. * I-------I-------I---------I---------I-------I-------I
  1863. * I FLERC I FLEFP I FLEUCPA I FLESCPA I FLEFC I FLECB I ENTRY 1
  1864. * I-------I-------I---------I---------I-------I-------I
  1865. *
  1866. * ( SECOND WORD OF SF.XLST FUNCTION LIST ENTRY FOR EXTENDED SF.READ
  1867. * AND SF.WRIT FUNCTIONS ONLY )
  1868. *
  1869. * 0 1 2 12 36 59
  1870. * I------I------I-----I---------------I---------------I
  1871. * I FLEU I FLES I I FLEXUCPA I FLEXSCPA I
  1872. * I------I------I-----I---------------I---------------I
  1873. * .
  1874. * .
  1875. * . FUNCTION LIST ENTRIES
  1876. * .
  1877. * .
  1878. * 0 6 18 36 54 58 59
  1879. * I-------I-------I---------I---------I-------I-------I
  1880. * I FLERC I FLEFP I FLEUCPA I FLESCPA I FLEFC I FLECB I ENTRY N
  1881. * I-------I-------I---------I---------I-------I-------I
  1882. *
  1883. * ( SECOND WORD OF SF.XLST FUNCTION LIST ENTRY FOR OTHER SFCALL
  1884. * FUNCTIONS )
  1885. *
  1886. * 0 59
  1887. * I---------------------------------------------------I
  1888. * I RESERVED I
  1889. * I---------------------------------------------------I
  1890. *
  1891. * WHERE :
  1892. *
  1893. * FLID = FUNCTION LIST BLOCK ID = 4.
  1894. * FLBS = FUNCTION LIST BLOCK SIZE. 3 TO 64 WORDS ALLOWED.
  1895. * FLPN = PROCESS NUMBER OF UCP. USED ONLY BY GARBAGE
  1896. * COLLECTION ROUTINES WHEN MOVING THE FUNCTION
  1897. * LIST BUFFER.
  1898. *
  1899. * FLRC = REPLY CODE. SET BY THE OPERATING SYSTEM IF AN
  1900. * ERROR IS DETECTED WHILE PROCESSING THE SF.LIST
  1901. * REQUEST. IF RC = 40B, THEN THE FUNCTION LIST
  1902. * MUST BE SEARCHED FOR THE FIRST LIST ENTRY WITH
  1903. * A NON-ZERO RC FIELD TO DETERMINE THE ACTUAL
  1904. * ERROR CONDITION. FOR DETAILED RC VALUES, SEE
  1905. * DOCUMENTATION ON SCPCOM COMDECK.
  1906. * FLFP = FUNCTION PARAMETER. FOR SF.LIST REQUEST, THIS
  1907. * CONTAINS THE NUMBER OF ENTRIES IN THE LIST,
  1908. * INITIALLY SET BY NIP WHEN ISSUEING THE FUNCTION
  1909. * REQUEST AND UPDATED BY THE OPERATING SYSTEM.
  1910. * IF IT RETURNS WITH A ZERO VALUE, THE ENTIRE LIST
  1911. * HAS BEEN PROCESSED BY THE OPERATING SYSTEM. IF IT
  1912. * RETURNS WITH A NON-ZERO VALUE, IT INDICATES THAT
  1913. * THE OPERATING SYSTEM HAS ABANDONED PROCESSING OF
  1914. * THE LIST. THE VALUE OF FLFP IS SET TO THE NUMBER
  1915. * OF ENTRIES REMAINING IN THE LIST AND FLSCPA IS
  1916. * SET TO THE ADDRESS OF THE FIRST ENTRY IN THE
  1917. * REMAINING LIST.
  1918. * FLUCPA = RELATIVE ADDRESS WITHIN THE UCP. FOR THE SF.LIST
  1919. * LIST, THIS IS SET TO 0.
  1920. * FLSCPA = RELATIVE ADDRESS WITHIN THE SCP. THIS CONTAINS
  1921. * FWA OF FIRST LIST ENTRY IN THE FUNCTION LIST.
  1922. * FLFC = SCP FUNCTION CODE (SF.LIST = 30B) .
  1923. * FLCB = SCP COMPLETION BIT. SET BY THE OPERATING SYSTEM
  1924. * WHEN IT COMPLETES PROCESSING OF THE SF.LIST CALL.
  1925. * FLNAME = A 7-CHARACTER UCP JOB NAME.
  1926. * FLJDT = UCP-S FNT ADDRESS.
  1927. *
  1928. * FLU = ECS ADDRESS IN UCP FLAG. BIT IS CLEARED IF
  1929. * FLXUCPA IS THE UCP CM ADDRESS.
  1930. * FLS = ECS ADDRESS IN SCP FLAG. BIT IS CLEARED IF
  1931. * FLXSCPA IS THE SCP CM ADDRESS.
  1932. * FLXUCPA = EXTENDED MODE READ / WRITE UCP CM OR ECS ADDRESS.
  1933. * FLXSCPA = EXTENDED MODE READ / WRITE SCP CM OR ECS ADDRESS.
  1934. * FLERC = REPLY CODE. SET BY THE OPERATING SYSTEM IF ERROR
  1935. * IS DETECTED IN PROCESSING THE FUNCTION LIST ENTRY.
  1936. * FOR DETAILED RC VALUES, SEE SCPCOM.
  1937. * FLEFP = FUNCTION PARAMETER FOR THE SCP REQUEST OF THE
  1938. * LIST ENTRY.
  1939. * FLEUCPA = RELATIVE ADDRESS WITHIN THE UCP.
  1940. * FLESCPA = RELATIVE ADDRESS WITHIN THE SCP.
  1941. * FLEFC = SCP FUNCTION CODE. FOR DETAILED SCP FUNCTIONS
  1942. * AVAILABLE, SEE DOCUMENTATION IN SCPCOM COMDECK.
  1943. * FLECB = SCP COMPLETION BIT. SET BY THE OPERATING SYSTEM
  1944. * WHEN IT COMPLETES PROCESSING THE SCP REQUEST OF
  1945. * THE LIST ENTRY.
  1946. *
  1947. * FLEU = SAME AS FLU.
  1948. * FLES = SAME AS FLS.
  1949. * FLEXUCPA = SAME AS FLUCPA.
  1950. * FLEXSCPA = SAME AS FLXSCPA.
  1951. *
  1952. * LIST ENTRIES ARE PROCESSED SEQUENTIALLY BY THE OPERATING SYSTEM.
  1953. *
  1954. * FOR MORE INFORMATION ON THE SPECIFIC FORMAT OF EACH AVAILABLE
  1955. * SCP FUNCTION CALLS, SEE DOCUMENTATION ON SYSTEM CONTROL POINT.
  1956. *
  1957.  #
  1958. *ENDIF
  1959. *CALL FLIST
  1960. *IF DEF,IMS
  1961. #
  1962. *# #
  1963. *1DC DUMPFLG
  1964. *
  1965. * DUMPFLG CONTAINS A SINGLE WORD BUFFER USED TO STORE THE REASON
  1966. * CODES FOR DUMPING NIP-S FIELD LENGTH. IF THE INSTALLATION DEFINED
  1967. * OPTION -DEBUG- IS TURNED ON. RDUMP WOULD ONLY DUMP NIP-S FIELD
  1968. * LENGTH IF THE PROBLEM AS SPECIFIED BY THE REASON CODE HAD NOT
  1969. * OCCURRED ONCE ALREADY.
  1970. *
  1971. *
  1972.   #
  1973. #
  1974. *#
  1975. *ENDIF
  1976. *CALL DUMPFLG
  1977. *CALL IMSAT
  1978. *ENDIF
  1979. #* * * * * * * * * * ---------- INPAR ----------* * * * * * * * * * #
  1980. *CALL INPAR
  1981. #* * * * * * * * * * ---------- FREETAB ----------* * * * * * * * * * #
  1982. *IF DEF,IMS
  1983. #
  1984. *# #
  1985. *1DC FREETAB
  1986. *
  1987. * FREETAB IS A PREALLOCATED COMMON BLOCK USED TO CONTROL THE FREE
  1988. * CHAIN. IT IS A 3-WORD ENTRY HAVING THE FOLLOWING FORMAT :
  1989. *
  1990. * 0 1 23 41 59
  1991. * I--------I----------I-----------I-----------I
  1992. * I FREMFL I I FREFBBP I FREFBFP I
  1993. * I--------I----------I-----------I-----------I
  1994. * I FRENOFB I
  1995. * I-------------------------------------------I
  1996. * I FRESFB I
  1997. * I-------------------------------------------I
  1998. *
  1999. * WHERE :
  2000. *
  2001. * FREMFL = NIPLWA REACHES MAXNIP FLAG. SET IF THE INSTALLATION
  2002. * DEFINED MAXIMUM NIP FIELD LENGTH HAS BEEN REACHED
  2003. * WHEN MGETS TRIES TO GET A NEW BUFFER.
  2004. * FREFBBP = FREE RING BACKWARD POINTER. IT POINTS TO THE LAST
  2005. * AVAILABLE (HIGHEST ADDRESS) FREE BUFFER. IF THERE
  2006. * IS NO FREE BUFFERS, IT POINTS TO ITSELF.
  2007. * FREFBFP = FREE RING FORWARD POINTER. IT POINTS TO THE FIRST
  2008. * AVAILABLE (LOWEST ADDRESS) FREE BUFFER. IF THERE
  2009. * IS NO FREE BUFFERS, IT POINTS TO ITSELF.
  2010. * FRENOFB = NUMBER OF FREE BUFFERS IN THE FREE RING.
  2011. * FRESFB = TOTAL SIZE OF FREE BUFFER SPACE IN WORDS.
  2012. *
  2013. * FOLLOWING THE FRETAB ARRAY, THERE ARE 8 ADDITION WORDS USED
  2014. * GENERALLY BY THE MEMORY MANAGER OF NIP.
  2015. *
  2016. * MAXFL MAXIMUN PERMISSIBLE PROGRAM LENGTH
  2017. * CTLSFWA FWA OF DYNAMICALLY CONTROLLED STORAGE
  2018. * CTLSLWA LWA OF DYNAMICALLY CONTROLLED STORAGE
  2019. * MCUR CURRENT FREE BUFFER EXAMINED BY MGBGCLT
  2020. * MCHG NEW ADDRESS OF MOVED BUFFER USED BY MGBGCLT
  2021. * MOLD FWA OF BLOCK TO BE COPIED BY OMOVE
  2022. * MNEW FWA OF BLOCK TO BE COPIED TO BY OMOVE
  2023. * MSIZE SIZE OF BLOCK TO BE COPIED BY OMOVE
  2024. *
  2025. * THIS COMMON BLOCK IS USED IN ASSEMBLY ROUTINES MGETS
  2026. * MRELS, MSEIZE, OMOVE. ANY CHANGES TO THIS COMMON
  2027. * BLOCK SHOULD BE FOLLOWED BY CHANGES IN THOSE
  2028. * ROUTINES.
  2029.   #
  2030. #
  2031. *#
  2032. *ENDIF
  2033. *CALL FREETAB
  2034. *IF DEF,IMS
  2035. #* * * * * * * * * * * * * * --- MEM --- * * * * * * * * * * * * * * *#
  2036. *IF DEF,IMS
  2037. #
  2038. *1DC MEM
  2039. * MEM IS AN EXTERNAL ARRAY WITH ADDRESS 0 USED TO
  2040. * ADDRESS ANY LOCATION WITHIN PROGRAM LENGTH. IT
  2041. * IS SET IN MGETS.
  2042.  #
  2043. *ENDIF
  2044. *CALL INPARUT
  2045. #
  2046. *1DC KDIS
  2047. * KDIS IS THE COMMUNICATION AREA FOR ALL APPLICATIONS
  2048. * USING THE K-DISPLAY
  2049. * IT HOLDS POINTERS TO SCREEN,BUFFERS AND STATUS FLSGS
  2050. *
  2051. * THE DISTAIL COMMON HOLDS THE BASIC DATA THAT SHOULD
  2052. * ALWAYS BE DISPLAYED AT BOTTOM OF SCREEN
  2053. *
  2054.  #
  2055. #
  2056. *****
  2057. * K-DISPLAY INTERFACES
  2058. *
  2059. * K-DISPLAY IN NAM HAS TWO MODES - "NAM" MODE AND "APPLIACTION"
  2060. * MODE.
  2061. * THE GENERAL SCENARIO FOR USING NAM K-DISPLAY IS AS FOLLOWS.
  2062. * FIRST, THE HOP ASSIGNS THE K-DISPLAY TO NAM IN THE NORMAL
  2063. * FASHION. NEXT, THE HOP ENTERS THE COMMAND THAT SELECTS THE
  2064. * SUPERVISORY APPLICATION WITH WHICH TO BE INTERFACED. AT THIS
  2065. * POINT THE HOP MAY ENTER THE SELECTED APPLICATION ACCORDING TO
  2066. * THE SYSTAX RULES IN NAM REFERENCE MANUAL. TO CLEAR THE APPL.
  2067. * MODE, ENTER AN ASTERISK AND K-DISPLAY WILL RETURN TO NAM MODE.
  2068. *
  2069. * THE GENERAL FORMAT OF THE NAM K-DISPLAY AS FOLLOWS:
  2070. *
  2071. * +-------------------------------------------+
  2072. * I RESERVED FOR SYSTEM USAGE I LINE 50
  2073. * I . I .
  2074. * I . I .
  2075. * I-------------------------------------------I LINE 44
  2076. * I I LINE 43
  2077. * I APPLICATION CONTROL DISPLAY I
  2078. * I (ACD) I LINE 12
  2079. * I-------------------------------------------I
  2080. * I BLANK LINE I 11
  2081. * I-------------------------------------------I
  2082. * I ALERT I 10
  2083. * I-------------------------------------------I
  2084. * I BLANK LINE I 09
  2085. * I-------------------------------------------I
  2086. * I APPL-NAME TYPE IN REPEAT MSGI 08
  2087. * I-------------------------------------------I
  2088. * I BLANK LINE I
  2089. * I-------------------------------------------I
  2090. * I RESERVED FOR SYSTEM USE I
  2091. * I . I
  2092. * I . I
  2093. * I-------------------------------------------I 00
  2094. *
  2095. * K-DISPLAY COMMANDS: (FORMAT K.-----)
  2096. * AP = APPLNAME DISPLAY THE RECENT HISTORY OF THE SPECIFIED
  2097. * APPLICATION.
  2098. * DEFAULT TO THE APPLICATION NAME ON THE LEFT
  2099. * MOST ON THE ALERT LINE.
  2100. * IG DISABLE ANY ALERT FROM APPLICATION NAME ON
  2101. * THE LEFT MOST OF THE ALERT LINE AND THEN
  2102. * CLEAR THIS FIELD.
  2103. * END CLEAR THE K-DISPLAY OF NAM.
  2104. * * CLEAR THE APPLICATION MODE AND GET BACK TO
  2105. * NAM MODE.
  2106. * / ABORT THE PREVIOUS K-DISPLAY COMMAND. RESPOND
  2107. * BY READY AT K-DISPLAY.
  2108. * + TURN ON THE PAGE WAIT IF NOT ON. IF ON, ROLL
  2109. * IN THE NEXT PAGE.
  2110. * - TURN OFF THE PAGE WAIT. IGNORE IF PAGE WAIT
  2111. * IS NOT ON.
  2112. * ST START UP NAM MODE K-DISPLAY.
  2113. * *
  2114.   #
  2115. *CALL KDIS
  2116. *CALL DISTAIL
  2117. *CALL KHDRX
  2118. *CALL KSTTAB
  2119. *CALL MEM
  2120. #* * * * * * * * * * ---------- MISCOM ----------* * * * * * * * * * #
  2121. *IF DEF,IMS
  2122. #
  2123. *1DC MISCOM
  2124. * MISCOM IS A COMMON DECK CONTAINING VALUES DEFINED FOR APPLICATION
  2125. * CHARACTER TYPES, APPLICATION BLOCK TYPES AND NETWORK BLOCK TYPES.
  2126. * FOR DETAILS, SEE NAM REFERENCE MANUAL AND CCP IMS.
  2127. *
  2128.  #
  2129. *ENDIF
  2130. *CALL MISCOM
  2131. *IF DEF,IMS
  2132. #
  2133. *1DC MISDEF
  2134. *
  2135. * MISDEF IS A COMMON DECK CONTAINING VALUES DEFINED FOR BLOCK ID-S
  2136. * KNOWN TO NIP. VALUES DEFINED FOR ENTRY SIZES ARE ALSO INCLUDED.
  2137. *
  2138.  #
  2139. *ENDIF
  2140. #* * * * * * * * * * ---------- MSGDEF ----------* * * * * * * * * * #
  2141. *IF DEF,IMS
  2142. #
  2143. *# #
  2144. *1DC MSGIDX
  2145. *
  2146. * MSGIDX IS A COMMON DECK CONTAINING DAYFILE MESSAGE INDEX
  2147. * DEFINITIONS. THE MESSAGE INDEX IS USED BY VARIOUS NIP ROUTINES
  2148. * AS AN INPUT PARAMETER TO CALL XERRMSG TO DAYFILE A SPECIFIC
  2149. * MESSAGE.
  2150.   #
  2151. #
  2152. *#
  2153. *ENDIF
  2154. *CALL MSGIDX
  2155. #* * * * * * * * * * ---------- NAMLEV ----------* * * * * * * * * * #
  2156. *CALL NAMLEV
  2157. # * * * * * * * * * * * * * ----- NBT ----- * * * * * * * * * * * * * *#
  2158. *CALL NBT
  2159. #* * * * * * * * * * ---------- NHEADER ----------* * * * * * * * * * #
  2160. *IF DEF,IMS
  2161. #
  2162. *1DC NHEADER
  2163. *
  2164. * NHEADER CONTAINS THE TEMPLATE FOR THE BLOCK HEADER OF BLOCKS IN
  2165. * NIP-S INBOUND AND OUTBOUND BUFFERS. WE SHALL REFER TO THIS TYPE
  2166. * OF BLOCK HEADER AS THE NETWORK HEADER. FOR DOWNLINE BLOCKS, THE
  2167. * NETWORK HEADER IS FORMATTED BY NIP WHILE FOR UPLINE BLOCKS, IT IS
  2168. * FORMATTED BY CCP AND PIP.
  2169. *
  2170. * THE NETWORK HEADER HAS THE FOLLOWING FORMAT :
  2171. *
  2172. * 0 8 16 24 25 28 32 40 44 48 59
  2173. * I----I----I----I-------I-------I----I-------I-------I---I----I
  2174. * I DN I SN I CN I NHPRI I NHBSN I BT I NHDBC I NHACT I B I CC I
  2175. * I----I----I----I-------I-------I----I-------I-------I---I----I
  2176. *
  2177. * WHERE :
  2178. *
  2179. * DN = DESTINATION NODE NUMBER
  2180. * SN = SOURCE NODE NUMBER
  2181. * CN = CONNECTION NUMBER
  2182. * NHPRI = PRIORITY BIT. SET TO 1 FOR HIGH PRIORITY DATA AND 0
  2183. * FOR LOW PRIORITY DATA, ALL BLOCKS ON THE SAME
  2184. * CONNECTION ARE ASSIGNED THE SAME PRIORITY. PRIORITY
  2185. * OF A PCB/QCB IS SET AT CREATION TIME AND IS USED TO
  2186. * DETERMINE PRIORITY FOR LOGICAL LINK REGULATION.
  2187. * NHBSN = BLOCK SEQUENCE NUMBER (1-7). THE BSN SUPPLIED IN A
  2188. * DOWNLINE BLOCK OF TYPE -MSG-, -BLK- OR -CMD- MUST
  2189. * BE RETURNED IN THE BSN FIELD OF THE UPLINE -BACK-
  2190. * WHICH ACKNOWLEDGES THAT SPECIFIC BLOCK. WHEN A -BRK-
  2191. * OR -STP- IS SENT, THE BSN RETURNED MUST BE THE SAME
  2192. * BSN OF LAST -BACK- SENT FOR THE CONNECTION. THE BSN
  2193. * WILL ALWAYS BE ZERO ON OTHER UPLINE OR DOWNLINE
  2194. * BLOCKS. THIS FIELD ALSO CONTAIN THE ISN - INIT
  2195. * SEQUENCE NUMBER WHICH IS SET UP BY NIP FOR DOWNLINE
  2196. * -INIT- AND BY CCP FOR UPLINE -INIT-.
  2197. * BT = BLOCK TYPE. SEE CCP IMS FOR DETAILS.
  2198. * NHDBC = DATA BLOCK CLARIFIER. IT EXISTS ONLY FOR BLOCK TYPES
  2199. * -MSG- AND -BLK-, SEE CCP IMS FOR DETAILS.
  2200. * NHACT = APPLICATION CHARACTER TYPE. ONLY CHARACTER TYPE 2
  2201. * (ASCII-8), 3(ASCII-12) AND 4(DISPLAY CODE) ARE VALID
  2202. * FOR DOWNLINE BLOCKS. UPLINE DATA IS ALWAYS IN ASCII-8
  2203. * FORMAT AND THIS FIELD IS ZEROED FOR UPLINE BLOCKS.
  2204. * B = BLOCK TYPE FOR BAD UPLINE BLOCK. WHEN PIP DETECTS
  2205. * AN UPLINE DATA TRANSMISSION ERROR, THE BT FIELD IS
  2206. * CLEARED SO THAT NIP MAY DAYFILE THE BAD UPLINE BLOCK.
  2207. * CC = TEXT LENGTH IN CHARACTERS. THIS IS SET BY NIP FOR
  2208. * DOWNLINE BLOCKS AND BY PIP FOR UPLINE BLOCKS.
  2209. *
  2210.  #
  2211. *ENDIF
  2212. *CALL NHEADER
  2213. *CALL IMSPIT
  2214. #* * * * * * * * * * ---------- NP$TAA ---------- * * * * * * * * * *#
  2215. *CALL NP$TAA
  2216. *CALL NP$NWNC
  2217. #* * * * * * * * * * ---------- NWLHEAD ----------* * * * * * * * * * #
  2218. *IF DEF,IMS
  2219. #
  2220. *1DC NWLHEAD
  2221. *
  2222. * THE NETWORK WORKLIST (NWL) IS A DYNAMICALLY ALLOCATED NON-MOVABLE
  2223. * BUFFER. THE NWL IS 78 WORDS LONG, OF WHICH 64 WORDS CONTAINING
  2224. * THE HEADERS AND WORKLIST ENTRIES ARE PASSED FROM AIP, 2 WORDS
  2225. * CONTAINING THE APPLICATION STATUS AND IDENTIFICATION INFORMATION
  2226. * ARE PASSED FROM THE OPERATING SYSTEM, ONE BLOCK HEADER WORD IS
  2227. * SET UP BY NIP FOR IDENTIFYING THE WORKLIST BUFFER AND 11 EXTRA
  2228. * WORDS ARE RESERVED FOR THE SITUATION WHEN THE APPLICATION HAS
  2229. * FAILED DURING THE NWL WORKLIST PROCESSING. A GLOBAL (FOR ANY
  2230. * PROCESS) NWL BUFFER IS ALLOCATED WHENEVER THE PREVIOUS ONE HAS
  2231. * BEEN ASSIGNED TO A NEW NWL FROM AIP. THE NWL HAS A 5-WORD HEADER
  2232. * OF THE FOLLOWING FORMAT :
  2233. *
  2234. * 0 6 24 59
  2235. * I----------I-------I---------------------I
  2236. * I NWLID I NWLBS I I WORD 0
  2237. * I----------I-------I---------------------I
  2238. *
  2239. * 0 36 42 59
  2240. * I-------------------I---------I----------I
  2241. * I I NWLSTAT I NWLHADDR I WORD 1
  2242. * I-------------------I---------I----------I
  2243. *
  2244. * 0 42 59
  2245. * I-----------------------------I----------I
  2246. * I NWLNAME I NWLJDT I WORD 2
  2247. * I-----------------------------I----------I
  2248. *
  2249. * 0 59
  2250. * I----------------------------------------I
  2251. * I I WORD 3
  2252. * I----------------------------------------I
  2253. *
  2254. * 0 9 22 30 42 59
  2255. * I---I-------I-------I-------I------------I
  2256. * I I NWLPN I NWLNE I NWLWC I NWLAWLADDR I WORD 4
  2257. * I---I-------I-------I-------I------------I
  2258. *
  2259. * WHERE :
  2260. *
  2261. * NWLID = NETWORK WORKLIST ID.
  2262. * NWLBS = NETWORK WORKLIST BLOCK SIZE.
  2263. *
  2264. * ( WORDS 1 AND 2 ARE SET UP BY THE OPERATING SYSTEM AND
  2265. * PASSED TO NIP )
  2266. *
  2267. * NWLSTAT = APPLICATION STATUS. SET TO NON-ZERO BY THE
  2268. * OPERATING SYSTEM WHEN IT DETECTS THE APPLICATION
  2269. * HAD FAILED, ZERO OTHERWISE.
  2270. * NWLHADDR = UCP COMPLETION BIT ADDRESS. THE COMPLETION BIT
  2271. * AT THE SPECIFIED ADDRESS IS SET TO 1 BY NIP
  2272. * WHEN PROCESSING OF THE WHOLE NWL IS COMPLETED.
  2273. * NWLNAME = A 7-CHARACTER JOB NAME FOR THE APPLICATION.
  2274. * NWLJDT = FNT ADDRESS FOR THE APPLICATION.
  2275. *
  2276. * ( WORD 4 IS SET UP BY AIP AND PASSED TO NIP TOGETHER WITH
  2277. * THE WORKLIST ENTRIES VIA A SCP FUNCTION CALL )
  2278. *
  2279. * NWLPN = APPLICATION PROCESS NUMBER.
  2280. * NWLNE = NUMBER OF WORKLIST ENTRIES IN THE NWL.
  2281. * NWLWC = TOTAL NUMBER OF WORDS FOR NWL ENTRIES IN NWL.
  2282. * NWLAWLADDR = APPLICATION WORKLIST ADDRESS. THIS FIELD
  2283. * SPECIFIES THE ADDRESS IN APPLICATION-S FIELD
  2284. * LENGTH INTO WHICH THE AWL (NIP-S REPLY TO THIS
  2285. * NWL) IS WRITTEN.
  2286. *
  2287.  #
  2288. *ENDIF
  2289. *CALL NWLHEAD
  2290. #* * * * * * * * * * ---------- NWLNTRY ----------* * * * * * * * * * #
  2291. *IF,DEF,IMS
  2292. #
  2293. *1DC NWLNTRY (NETWORK WORKLIST ENTRY)
  2294. * A NETWORK WORKLIST ENTRY IS AN ENTRY IN A WORKLIST WHICH IS
  2295. * FORMATTED BY AIP AND IS PASSED TO NIP TO BE PROCESSED. AFTER
  2296. * COMPLETING CONSTRUCTION OF A NETWORK WORKLIST, AIP WILL DO A
  2297. * CALLSS MACRO CALL TO TRANSMIT THE WORKLIST TO NIP. UPON RECEIVING
  2298. * THE WORKLIST, NIP WILL IDENTIFY AND VALIDATE THE CALLER, THROUGH
  2299. * FNT ORDINAL, DECODE AND PROCESS EACH ENTRY SEQUENTIALLY.
  2300. * SOMETIMES AN OPERATION CANNOT BE COMPLETED IMMEDIATELY. NAM WILL
  2301. * SUSPEND THE PROCESSING OF THE WORKLIST, LINK IT TO THE CORR-
  2302. * ESPONDING HOST PCB, OR SWAP IN RING IN CASE THE APPLICATION
  2303. * HAS NO PCB. THE PROCESSING FOR THIS WORKLIST WILL RESUME AT A
  2304. * LATER TIME AS NAM SEES FIT. THERE ARE TEN DIFFERENT VALID
  2305. * OPERATIONS FOR NAM FROM AIP. EACH OPERATION TOGETHER WITH ITS
  2306. * PARAMETERS, MAKES UP AN NETWORK WORKLIST ENTRY. AS AN OPERATION
  2307. * IS COMPLETELY PROCESSED, ITS ENTRY SPACE IN THE NWL IS RELEASED.
  2308. * THE INITIAL SIZE OF AN NWL IS 72 CM WORDS WITH HEADER. THE HEADER
  2309. * CONTAINS INFORMATION ABOUT THE APPLICATION AND THE NUMBER OF
  2310. * ENTRIES IN THE NWL. NWL IS ALWAYS NONMOVABLE BY GBGCLT ROUTINE.
  2311. *
  2312. * EACH ENTRY IN NWL HAS THE FOLLOWING FORMAT:
  2313. *
  2314. * WORD 0 -
  2315. *
  2316. * W 7
  2317. * 2 3 3 5 5
  2318. * 0 6 4 0 6 4 9
  2319. * I----------I--------I--I------------I-------I-------I-------I
  2320. * I I I I I I I I
  2321. * I NWLEID I NWLEBS I I NWLELTAA I NWLTA I NWLOF I NWLCB I
  2322. * I I I I I I I I
  2323. * I----------I--------I--I------------I-------I-------I-------I
  2324. *
  2325. * WHERE
  2326. *
  2327. * NWLEID = BLOCK ID OF THE NWLNTRY (11)
  2328. * NWLEBS = BLOCK SIZE OF THE NWLNTRY. THIS INCLUDES THE TEXT
  2329. * AREA OR DESCRIPTION OF THE TEXT AREA FOLLOWING THE
  2330. * FIRST TWO WORDS OF THE ENTRY IF ONE EXISTS.
  2331. * NWLELTAA = USED IF OPERATION IS NETGETF, NETGETFL, NETPUTF.
  2332. * THIS IS THE NUMBER OF ENTRIES IN THE TEXT AREA
  2333. * DESCRIPTIONS.
  2334. * NWLTA = ZERO IF TEXT AREA IMMEDIATELY FOLLOWS THE FIRST TWO
  2335. * WORDS OF THE NWL ENTRY. IF THE TEXT IS STILL IN
  2336. * APPLICATION FIELD LENGTH, THIS IS THE ADDRESS
  2337. * POINTING TO THE FIRST WORD ADDRESS OF THE AREA.
  2338. * NWLOP = OPERATION CODE FIELD FOR THIS ENTRY.
  2339. * A LISTING OF ALL VALID OPERATION CODES CAN BE FOUND
  2340. * IN NWLHEAD COMMON DECK.
  2341. * NWLCB = COMPLETION BIT. AFTER NAM COMPLETES THE OPERATION,
  2342. * IT WILL SET THIS BIT. THIS IS THEN TRANSFERED BACK
  2343. * TO APP.
  2344. *
  2345. * WORD 1 -
  2346. *
  2347. * IF THE OPERATION IS NOT NETWAIT:
  2348. *
  2349. * W 8
  2350. * 1 3 4 4 4 4
  2351. * 0 6 8 6 0 1 2 3
  2352. * I----------I--------I--------I-------I------I------I------I------I
  2353. * I I I I I I I I I
  2354. * I NWLABT I NWLADR I NWLABN I NWLACTI NWL- I NWL- I NWL- I NWL- I
  2355. * I I I I I IBU I BOF I TRU I RFE I
  2356. * I----------I--------I--------I-------I------I------I------I------I
  2357. *
  2358. *
  2359. * WHERE
  2360. *
  2361. * NWLABT = APPLICATION BLOCK TYPE. FOR DATA MESSAGES, IT IS 1
  2362. * OR 2. FOR SUPERVISORY MESSAGE, IT IS 3. FOR SERVICE
  2363. * MESSAGES, IT IS 4.
  2364. * NWLADR = APPLICATION ADDRESS. IT CONTAINS CONNECTION NUMBER
  2365. * THIS ENTRY IS REFERING TO. FOR SUPERVISORY MESSAGES
  2366. * THIS FIELD IS ZERO.
  2367. * FOR NWLABT = 4, THIS IS THE PN FIELD. THIS FIELD IS
  2368. * SET BY SENDER TO THE PROCESS NUMBER OF THE RECEIVER,
  2369. * AND LATER SET BY NIP TO THE PN OF THE SENDER SO THAT
  2370. * THE ONE RECEIVING IT KNOWS WHERE IT COMES FROM.
  2371. * NWLABN = APPLICATION BLOCK NUMBER. THIS CAN BE USED BY THE
  2372. * APP TO KEEP TRACK OF BLOCK SENT DOWNLINE. IF A BLOCK
  2373. * GETS THROUGH TO THE TERMINAL, NIP WILL SEND APP
  2374. * A FC/ACK WITH CORRESPONDING ABN.
  2375. * NWLACT = APP CHARACTER TYPE. THE CHARACTER TYPE OF THE DATA
  2376. * IN THE CURRENT BLOCK.
  2377. * NWLIBU = INPUT BLOCK UNDELIVERABLE. SET WHEN APP REQUEST A
  2378. * DATA BLOCK UPLINE, BUT THE BLOCK CANNOT BE DELIVERED
  2379. * BECAUSE OF SIZE RESTRICTION IF QHDATRU OFF IN QCB.
  2380. * NWLBOF = BREAK OCCURRED FLAG.
  2381. * NWLTRU = UPLINE DATA TRUNCATED. SET WHEN APP REQUESTS A DATA
  2382. * BLOCK UPLINE, AND THE BLOCK IS DELIVERED TRUNCATED
  2383. * IF QHDATRU FLAG IS SET IN QCB.
  2384. * NWLRFE = RESERVED FOR EXPANSION.
  2385. *
  2386. * W 8
  2387. * 4 4 4 4 4 5
  2388. * 4 5 6 7 8 9
  2389. * I--------I--------I--------I--------I--------I
  2390. * I I I I I I
  2391. * I NWLNFE I NWLXPT I NWLCAN I NWLBIT I NWLTLC I
  2392. * I I I I I I
  2393. * I--------I--------I--------I--------I--------I
  2394. * N W L D B C
  2395. * WHERE
  2396. *
  2397. * NWLNFE = NO FORMAT EFFECTOR. SET WHEN THE FIRST CHARACTER
  2398. * OF THE ASSOCIATED BLOCK IS NOT USED AS A FORMAT
  2399. * CONTROL CHARACTER.
  2400. * NWLXPT = TRANSPARENT BIT. SET WHEN TRANSPARENT MODE IS ON,
  2401. * NO CONVERSION OF DATA TO OTHER CHARACTER TYPE IS
  2402. * NEEDED.
  2403. * NWLCAN = CANCEL BIT.
  2404. * FOR UPLINE DATA, THIS MEANS THE BLOCK IS CANCELLED
  2405. * BY TERMINAL OPERATOR.
  2406. * FOR DOWNLINE DATA, SET WHEN A LACED CARD IS REQUESTED
  2407. * TO BE PUNCHED IN FRONT OF THE DATA BLOCK.
  2408. * NWLBIT = ON UPLINE DATA, THIS IS THE PARITY ERROR FLAG. ON
  2409. * DOWNLINE DATA, THIS IS THE AUTO INPUT BIT. SEE NAM
  2410. * REFERENCE MANUAL APPLICATION BLOCK HEADER FOR
  2411. * DETAILS.
  2412. * NWLACT = TEXT LENGTH IN UNITS SPECIFIED BY ACT.
  2413. * NWLDBC = DATA BLOCK CLARIFIER. NWLNFE, NWLXPT, NWLCAN,
  2414. * NWLBIT ARE COLLECTIVELY CALLED NWLDBC.
  2415. *
  2416. * THE TEXT AREA OR DESCRIPTION OF TEXT AREA IF PRESENTS WILL FOLLOW
  2417. * THE FIRST TWO WORDS OF THE NWLNTRY.
  2418. *
  2419. *
  2420. * IF OPERATION IS NETWAIT,
  2421. * W 7
  2422. * 4
  2423. * 0 1 2
  2424. * I---------I----------I-----------I
  2425. * I I I I
  2426. * I NWLFLAG I I NWLTIME I
  2427. * I I I I
  2428. * I---------I----------I-----------I
  2429. *
  2430. * WHERE
  2431. *
  2432. * NWLFLAG = FLAG FOR FORCE NETWAIT. SET IF OPERATION NETWAIT IS
  2433. * WITH FORCE OPTION.
  2434. * NWLTIME = TIME LIMIT FOR NETWAIT.
  2435. *
  2436.  #
  2437. *ENDIF
  2438. *CALL NWLNTRY
  2439. *CALL ON
  2440. #* * * * * * * * * * -------- OVERLAY --------- * * * * * * * * * * * #
  2441. *IF DEF,IMS
  2442. #
  2443. *1DC OVERLAY
  2444. * COMMON BLOCK OVERLAY
  2445. * THREE WORD BUFFER USED BY OVLCALL ROUTINE TO SET UP PARAMETER
  2446. * FOR LOADING OVERLAYS.
  2447.  #
  2448. *ENDIF
  2449. *CALL OVERLAY
  2450. #* * * * * * * * * * -------- OVLNAME ---------- * * * * * * * * * * * #
  2451. *IF DEF,IMS
  2452. #
  2453. *1DC OVLNAME
  2454. * COMMON DECK OF DEFS OF OVERLAY LEVEL NUMBERS. IT IS USED BY SKENIP
  2455. * AND ALL SYMPL PROGRAMS USING OVERLAYS. THE DEF MACRO FROM MACDEF
  2456. * COMMON DECK WILL CONVERT THE VALUE OF EACH EXPRESSION ENCLOSED
  2457. * IN THE PAIR OF TRIPLE BARS JUST AFTER THE NAME INTO 4 CHARACTERS
  2458. * OCTAL STRING. THE FIRST 2 CHARACTERS GROUP IS THE PRIMARY
  2459. * LEVEL NUMBER FOR THE NAMED OVERLAY. THE SECOND 2 CHARACTERS GROUP
  2460. * IS THE SECONDARY LEVEL NUMBER FOR THE OVERLAY.
  2461.  #
  2462. *ENDIF
  2463. *CALL OVLNAME
  2464. #* * * * * * * * * * * ------ OVLSTAT ----- * * * * * * * * * * * * * *#
  2465. *IF DEF,IMS
  2466. #
  2467. *1DC OVLSTAT
  2468. * COMMON BLOCK TO CREATE A WORD FOR EACH EXISTING OVERLAY. IN
  2469. * EACH ENTRY OF THE OVLNAMP COMMON BLOCK, LEFTMOST 42 BITS CONTAIN
  2470. * THE NAME OF THE OVERLAY LEFT JUSTIFIED AND ZERO FILLED. THE
  2471. * REST OF THE WORD WILL BE ZEROED INITIALLY, WHERE THE RIGHTMOST
  2472. * 18 BITS ARE USED AS A COUNT OF THE TIMES THE OVERLAY CALLED.
  2473. * THIS INITIALIZATION WILL BE DONE BY THE ITEM MACRO WHEN CALLED
  2474. * FROM OVLCALL ASSEMBLY ROUTINE DURING COMPILATION TIME.
  2475. * THIS COMMON BLOCK EXISTS ONLY WHEN EITHER STATISTICS OR
  2476. * DEBUG IS ON.
  2477. * NOTE - IT IS VERY IMPORTANT TO HAVE PRINUM, OVLNUM DEFINED
  2478. * ACCURATELY. OTHERWISE, WRONG OVERLAY MAY BE LOADED, AND
  2479. * INCORRECT STATISTICS MAY BE COLLECTED.
  2480. *
  2481.  #
  2482. *ENDIF
  2483. *CALL OVLSTAT
  2484. #* * * * * * * * * --------- PARAMP ----------- * * * * * * * * * * * *#
  2485. *IF DEF,IMS
  2486. #
  2487. *1DC PARAMP
  2488. * COMMON BLOCK PARAMP. A TWO WORD BUFFER TO PASS PARAMETERS TO
  2489. * PRIMARY OVERLAY.
  2490.  #
  2491. *CALL IMSPT
  2492. *ENDIF
  2493. *CALL PARAMP
  2494. *CALL PARAMS
  2495. # * * * * * * * * * * * * * ----- PIT ----- * * * * * * * * * * * * * *#
  2496. *CALL PIT
  2497. *CALL PT
  2498. *CALL RELFILE
  2499. *ENDIF
  2500. #* * * * * * * * * * ---------- SCPCOM ----------* * * * * * * * * * #
  2501. *IF DEF,IMS
  2502. #
  2503. *1DC SCPCOM
  2504. * SYSTEM CONTROL POINT COMMON DECK, CONTAINING A TEMPLATE (SCPCALL)
  2505. * FOR FIELDS IN SCP CALL PARAMETER WORDS, ALL POSSIBLE OPERATION
  2506. * CODE, AND ALL POSSIBLE RETURN CODES FROM SCP CALLS. FOR MORE
  2507. * DETAILS ABOUT SCP CALLS, READ DOCUMENTATION ON SCP FACILITY.
  2508. *
  2509. * THE FORMAT OF SCP PARAMETER BLOCK (SCPCALL TEMPLATE):
  2510. *
  2511. * W 7
  2512. * 2
  2513. * 0 6 4
  2514. * I----------I-------I
  2515. * I I I
  2516. * I SCPID I SCPBS I
  2517. * I I I
  2518. * I----------I-------I
  2519. *
  2520. *
  2521. * WORD 0 -
  2522. *
  2523. * WHERE
  2524. *
  2525. * SCPID = BLOCK ID FOR SYSTEM CONTROL POINT CALL PARAMETER
  2526. * BLOCK.
  2527. * SCPBS = BLOCK SIZE OF THE PARAMETER BLOCK (3 CM WORDS)
  2528. *
  2529. * WORD 1 -
  2530. *
  2531. * W 7
  2532. * 1 3 5
  2533. * 0 6 8 6 4
  2534. * I-------I-------I---------I---------I-------I
  2535. * I I I I I I
  2536. * I SCPRC I SCPFP I SCPUCPA I SCPSCPA I SCPFC I
  2537. * I I I I I I
  2538. * I-------I-------I---------I---------I-------I
  2539. *
  2540. *
  2541. * WHERE
  2542. *
  2543. * SCPRC = RETURN CODE FOR SCP CALL
  2544. * SCPFP = FUNCTION PARAMETER.
  2545. * SCPUCPA = USER CONTROL POINT ADDRESS. ADDRESS IN USER APP
  2546. * FOR TRANSFER OF INFORMATION.
  2547. * SCPSCPA = SYSTEM CONTROL POINT ADDRESS. ADDRESS IN NIP OF
  2548. * BLOCK USED BY SFLIST, SFREAD, SFWRITE.
  2549. * SCPFC = FUNCTION CODE VALID FOR SCP CALL.
  2550. * RIGHTMOST BIT OF SCPFC IS ALWAYS SET BY SYSTEM
  2551. * WHEN THE OPERATION IS COMPLETED.
  2552. *
  2553. * WORD 2 -
  2554. *
  2555. * W 7
  2556. * 4
  2557. * 0 2
  2558. * I---------------I-----------I
  2559. * I I I
  2560. * I SCPNAME I SCPJDT I
  2561. * I I I
  2562. * I---------------I-----------I
  2563. *
  2564. *
  2565. * WHERE
  2566. *
  2567. * SCPNAME = JOB SEQUENCE NUMBER OF THE APP INTERACTING WITH
  2568. * NAM.
  2569. * SCPJDT = FNT ORDINAL OF THE APP.
  2570.  #
  2571. *ENDIF
  2572. *CALL SCPCOM
  2573. *CALL SSTCOM
  2574. BASED ARRAY SUPMSG P(11);
  2575. BEGIN
  2576. *CALL SUPMSG
  2577. *CALL SMAPPL
  2578. *CALL SMRBF
  2579. END
  2580. BASED ARRAY SMNIP P(3);
  2581. BEGIN
  2582. *CALL SMNIP
  2583. END
  2584. BASED ARRAY SMNVF P(11);
  2585. BEGIN
  2586. *CALL SMNVF
  2587. END
  2588. *CALL SUPABH
  2589. #* * * * * * * * * * ---------- STATTAB ----------* * * * * * * * * * #
  2590. *IF DEF,IMS
  2591. #
  2592. *1DC STATTAB
  2593. * STATISTICS VARIABLES COMMON BLOCK. USED ONLY IF STATISTICS IS ON
  2594. * DURING NAM GENERATION. THE COMMON BLOCK IS USED BY SYMPL AND
  2595. * COMPASS ROUTINES.
  2596. * LIST OF STATISTICS VARIABLES IN THE COMMON BLOCK:
  2597. * 1. ST$PCB NUMBER OF PCBS ASSIGNED.
  2598. * 2. ST$PCBX NUMBER OF PCBS DELETED.
  2599. * 3. ST$QCB NUMBER OF QCBS ASSIGNED.
  2600. * 4. ST$QCBX NUMBER OF QCBS DELETED.
  2601. * 5. ST$AQ NUMBER OF ACKNOWLEDGEMENT QUEUES CREATED.
  2602. * 6. ST$AQX NUMBER OF ACKNOWLEDGEMENT QUEUES RELEASED.
  2603. * 7. ST$NIB NUMBER OF TIMES PIP NEEDED NEW INBOUND BUFFER.
  2604. * 8. ST$INB NUMBER OF INBOUND NON-DATA BLOCKS
  2605. * 9. ST$INC NUMBER OF INBOUND NON-DATA CHARACTERS
  2606. * 10. ST$IDB NUMBER OF INBOUND DATA BLOCKS
  2607. * 11. ST$IDC NUMBER OF INBOUND DATA CHARACTERS.
  2608. * 12. ST$ONB NUMBER OF OUTBOUND NON-DATA BLOCKS.
  2609. * 13. ST$ONC NUMBER OF OUTBOUND NON-DATA CHARACTERS.
  2610. * 14. ST$ODB NUMBER OF OUTBOUND DATA BLOCKS.
  2611. * 15. ST$ODC NUMBER OF OUTBOUND DATA CHARACTERS.
  2612. * 16. ST$LNB NUMBER OF LOCAL NON-DATA BLOCKS.
  2613. * 17. ST$LNC NUMBER OF LOCAL NON-DATA CHARACTERS.
  2614. * 18. ST$LDB NUMBER OF LOCAL DATA BLOCKS.
  2615. * 19. ST$LDC NUMBER OF LDCAL DATA CHARACTERS.
  2616. * 20. ST$ENB NUMBER OF TIMES PIP INBOUND BUFFERS WERE EMPTY.
  2617. * 21. ST$ESB NUMBER OF TIMES SCP BUFFER EMPTY.
  2618. * 22. ST$RCL NUMBER OF TIMES NIP DOES RECALL.
  2619. * 23. ST$LOOP NUMBER OF TIMES XEXEC LOOP GETS EXECUTED.
  2620. * 24. ST$SCP NUMBER OF SCP CALLS.
  2621. * 25. ST$SI NUMBER OF TIMES OSWAPIN EXECUTED.
  2622.  #
  2623. *ENDIF
  2624. *CALL STATTAB
  2625. #* * * * * * * * * *--------- STATTAB2 ---------- * * * * * * * * * * *#
  2626. *IF,DEF,IMS
  2627. #
  2628. *1DC STATTAB2
  2629. * STATISTICS VARIABLES FOR MEMORY MANAGER. USED BY BOTH
  2630. * SYMPL AND COMPASS ROUTINES.
  2631. * LIST OF VARIABLES IN THE BLOCK:
  2632. *
  2633. * 1. ST$GET NUMBER OF TIMES BUFFERS ALLOCATED.
  2634. * 2. ST$GNB NO. OF BUFFERS TRANSVERSED BY MGETS
  2635. * 3. ST$REL NUMBER OF TIMES BUFFERS RELEASED.
  2636. * 4. ST$RNB NO. OF BUFFERS TRANSVERSED BY MRELS
  2637. * 5. ST$FL NUMBER OF TIMES NIP INCREASES FIELD LENGTH.
  2638. * 6. ST$FLW SUM OF WORDS NIP INCREASES ITS FIELD LENGTH.
  2639. * 7. ST$FLX NUMBER OF TIMES NIP DECREASES FIELD LENGTH.
  2640. * 8. ST$FLWX SUM OF WORDS NIP DECREASES ITS FIELD LENGTH.
  2641. * 9. ST$FLT FIELD LENGTH * INTERVAL.
  2642. * 10. ST$FWT FREE WORDS * TIME INTERVAL.
  2643. * 11. ST$FBT FREE BUFFER NUMBER * TIME INTERVAL.
  2644. * 12. ST$GBWM SUM OF WORDS MOVED IN GARBAGE COLLECTION.
  2645. * 13. ST$GBGC NUMBER OF BUFFERS COMBINED BY GARBAGE COLLECTION.
  2646.  #
  2647. *ENDIF
  2648. *CALL STATTAB2
  2649. #* * * * * * * * * * -------- SWAPIN ---------- * * * * * * * * * * * #
  2650. *IF DEF,IMS
  2651. #
  2652. *1DC SWAPIN
  2653. * COMMON DECK FOR SWAP IN RING STRUCTURE.
  2654. * SWAPIN COMMON BLOCK IS A TWO WORD TABLE USED TO MANAGE SCP SWAPIN
  2655. * RING. EACH ENTRY IN THE RING IS A SCP SWAPIN CALL. ENTRIES ARE
  2656. * ADDED TO THE RING WHEN AN APPLICATION NEEDS TO BE SWAPPED IN AND
  2657. * IT HAS NO PCB. THE SWAPIN RING ENTRIES ARE NOT MOVABLE.
  2658. * EACH SWAPIN RING ENTRY HAS THE FOLLOWING FORMAT:
  2659. *
  2660. *
  2661. * WORD 0 -
  2662. * W 7
  2663. * 2 4 5
  2664. * 0 6 4 2 9
  2665. * I----------I--------I---------I---------I
  2666. * I I I I I
  2667. * I SWPIID I SWPIBS I SWPINBP I SWPINFP I
  2668. * I I I I I
  2669. * I----------I--------I---------I---------I
  2670. *
  2671. * WHERE
  2672. *
  2673. * SWPIID = SWAP IN RING ENTRY BLOCK ID (9)
  2674. * SWPIBS = BLOCK SIZE OF ENTRY (4)
  2675. * SWPINBP = BACKWARD POINTER TO PREVIOUS ENTRY IN THE DOUBLY
  2676. * LINKED SWAP IN RING.
  2677. * SWPINFP = FORWARD POINTER TO FOLLOWING ENTRY.
  2678. *
  2679. *
  2680. * WORD 1 -
  2681. * W 7
  2682. * 2 4
  2683. * 0 1 4 2
  2684. * I--------I--------------I--------I--------I
  2685. * I I I I I
  2686. * I SWPINC I I SWPIWR I SWPIFL I
  2687. * I I I I I
  2688. * I--------I--------------I--------I--------I
  2689. *
  2690. *
  2691. * WHERE
  2692. *
  2693. * SWPINC = SET WHEN THE FUNCTION LIST ASSOCIATED WITH THE
  2694. * ENTRY HAS BEEN USED IN A SCP CALL PREVIOUSLY.
  2695. * SWPIWR = ADDRESS OF SCP WRITE BUFFER.
  2696. * SWPIFL = ADDRESS OF FUNCTION LIST FOR SCP CALL.
  2697. *
  2698. *
  2699. * WORD 2 -
  2700. *
  2701. * W 7
  2702. * 1 3 5
  2703. * 0 6 8 6 4
  2704. * I--------I--------I----------I----------I--------I
  2705. * I I I I I I
  2706. * I SWPIRC I SWPIFP I SWPIUCPA I SWPISCPA I SWPIFC I
  2707. * I I I I I I
  2708. * I--------I--------I----------I----------I--------I
  2709. *
  2710. *
  2711. * WHERE
  2712. *
  2713. * SWPIRC = RETURN CODE FROM SWAPIN SCP REQUEST.
  2714. * SWPIFP = FUNCTION PARAMETER. NOT USED IN SWAPIN REQUEST.
  2715. * SWPIUCPA = USER ADDRESS. NOT USED IN SWAPIN REQUEST.
  2716. * SWPISCPA = SCP ADDRESS. NOT USED IN SWAPIN REQUEST.
  2717. * SWPIFC = OPERATION CODE. RIGHTMOST BIT OF THIS FIELD IS THE
  2718. * COMPLETION BIT.
  2719. *
  2720. * WORD 3 -
  2721. *
  2722. *
  2723. * W 7
  2724. * 4
  2725. * 0 2
  2726. * I-----------------I-----------I
  2727. * I I I
  2728. * I SWPINAME I SWPIJDT I
  2729. * I I I
  2730. * I-----------------I-----------I
  2731. *
  2732. *
  2733. * WHERE
  2734. *
  2735. * SWPINAME = JOB SEQUENCE NUMBER OF THE APP ASSOCIATED WITH THIS
  2736. * ENTRY.
  2737. * SWPIJDT = FNT OF THE APP.
  2738. *
  2739.  #
  2740. *ENDIF
  2741. *CALL SWAPIN
  2742. # * * * * * * * * * * * --- SYSCOMD --- * * * * * * * * * * * * * * * *#
  2743. *IF DEF,IMS
  2744. #
  2745. *1DC SYSCOMD
  2746. * COMMON DECK DEFINED TO ENABLE NIP TO REFERENCE THE SYSTEM
  2747. * COMMUNICATION AREA
  2748. * THE ARRAYS AND ITEMS INCLUDED IN THIS COMMON DECK IS
  2749. * 1. PGNAME PROGRAM NAME WORD IN RA
  2750. * 2. LDPM ARRAY POINTED TO RA+LWPR
  2751. * LWA+1 OF MAIN OVERLAY, OVERLAY CALL TYPE
  2752. * ARE IN THIS WORD
  2753. * 3. RASSC ARRAY FOR RA.SSC WORD FOR SYSTEM CONTROL
  2754. * INTERFACE
  2755. *
  2756. * WORD 0 -
  2757. * W 7
  2758. * 2 2 4
  2759. * 0 1 6 3 5 2
  2760. * I-------I-----I-------I--------------I-------I-------I
  2761. * I I I I I I I
  2762. * I SSCLK I I SSCXP I SSCVF I SSCLP I SSCAP I
  2763. * I I I I I I I
  2764. * I-------I-----I-------I--------------I-------I-------I
  2765. *
  2766. *
  2767. * WHERE
  2768. *
  2769. * SSCLK = SET IF NO INCOMING WORKLIST.
  2770. * SSCXP = ADDRESS OF APP EXCHANGE PACKAGE.
  2771. * SSCVF = SET IF VARIABLE LENGTH WORKLIST ALLOWED.
  2772. * SSCLP = LENGTH OF SCP BUFFER FOR INCOMING WORKLIST.
  2773. * SSCAP = ADDRESS OF SCP BUFFER
  2774. *
  2775.  #
  2776. *ENDIF
  2777. *CALL SYSCOMD
  2778. #* * * * * * * * * * -------- SYSTIME ---------- * * * * * * * * * * *#
  2779. *IF DEF,IMS
  2780. #
  2781. *1DC SYSTIME
  2782. * COMMON DECK FOR INTERFACE WITH OPERATING SYSTEM REAL TIME MACRO.
  2783. * TIME IS A COMMON BLOCK USED BY ROUTINES IN NAM. IT CONTAINS
  2784. * THETIME ARRAY WHICH HAS A DESCRIPTION OF THE FIELDS IN THE
  2785. * PARAMETER WORD FOR REAL TIME MACRO CALL. NOTE - THIS IS A NOS VER-
  2786. * SION OF REAL TIME MACRO.
  2787. *
  2788. * FORMAT OF THETIME PARAMETER WORD:
  2789. *
  2790. * WORD 0 -
  2791. *
  2792. * W 7
  2793. * 2
  2794. * 0 4
  2795. * I----------I---------I
  2796. * I I I
  2797. * I RTSECS I MSECS I
  2798. * I I I
  2799. * I----------I---------I
  2800. *
  2801. *
  2802. * WHERE
  2803. *
  2804. * RTSECS = REAL TIME IN SECONDS UNIT.
  2805. * MSECS = REAL TIME IN MICRO SECONDS UNIT.
  2806. *
  2807.  #
  2808. *ENDIF
  2809. *CALL SYSTIME
  2810. # * * * * * * * * * * * * * ----- TNT ----- * * * * * * * * * * * * * *#
  2811. *CALL TNT
  2812. #* * * * * * * * * * ---------- TRAF ----------* * * * * * * * * * #
  2813. BASED ARRAY TRAFLST P(10);
  2814. BEGIN
  2815. END
  2816. #* * * * * * * * * * ---------- USERDEF ----------* * * * * * * * * * #
  2817.  
  2818. *IF DEF,IMS
  2819. #
  2820.  * NETWORK PRODUCTS DOCUMENTATION PAGE
  2821.  * NAM INTERNAL SPECIFICATION DATE.
  2822.  * 4.0 SYSTEM CONTROL POINT COMMUNICATION
  2823. *
  2824. * NIP, AS A SUBSYSTEM, USES THE NOS SYSTEM CONTROL POINT
  2825. * FEATURE TO COMMUNICATE WITH OTHER PROGRAMS, WHICH WILL HERE-
  2826. * AFTER BE REFERRED TO AS USER CONTROL POINTS (UCP). AS PART OF
  2827. * ITS INITIALIZATION PHASE, NIP ISSUES A RA+1 CALL TO ESTABLISH
  2828. * ITSELF AS A SYSTEM CONTROL POINT (SCP). THIS IS SO THE OPERATING
  2829. * SYSTEM CAN KEEP TRACK OF WHICH SUBSYSTEMS ARE ACTIVE AS SYSTEM
  2830. * CONTROL POINTS.
  2831. *
  2832. * AS A SYSTEM CONTROL POINT, NIP CAN EXECUTE THE FOLLOWING
  2833. * FUNCTIONS:
  2834. *
  2835. * 1) SF.ENDT TERMINATE SHORT TERM CONNECTION BETWEEN UCP
  2836. * AND SCP
  2837. * 2) SF.SLTC ESTABLISH LONG TERM CONNECTIONS BETWEEN UCP
  2838. * AND SCP
  2839. * 3) SF.CLTC CLEAR LONG TERM CONNECTIONS BETWEEN UCP AND SCP
  2840. * 4) SF.WRITE WRITE ANYWHERE IN AN UCP-S FIELD LENGTH
  2841. * 5) SF.READ READ ANY LOCATION IN AN UCP-S FIELD LENGTH
  2842. * 6) SF.REGR ABORT ANY UCP AND WRITE MSG TO ITS DAYFILE
  2843. * 7) SF.SWPO SWAP OUT UCP
  2844. * 8) SF.SWPI SWAP IN UCP
  2845. * 9) SF.STAT DETERMINE IF UCP IS SYSTEM RESIDENT
  2846. *
  2847. * A CLARIFICATION IS NEEDED IN THE DEFINITION OF UCP AS USED IN
  2848. * THE ABOVE FUNCTIONS. AN UCP IS ANY PROGRAM THAT IS COMMUNICATING
  2849. * (HAS ESTABLISHED A CONNECTION) WITH A SYSTEM CONTROL POINT. IN
  2850. * OUR CASE, THAT SCP IS NIP. THEREFORE, NIP CANNOT ARBITRARILY
  2851. * ABORT, READ, OR OVERWRITE THE FIELD LENGTH, ETC. OF JUST ANY
  2852. * PROGRAM RUNNING IN THE COMPUTER.
  2853. *
  2854. * COMMUNICATION BETWEEN AN UCP AND A SCP CAN ONLY BE INITIATED BY
  2855. * THE UCP. THIS OCCURS WHEN AIP ISSUES A SSC RA+1 CALL. THE SSC
  2856. * CALL INFORMS THE OPERATING SYSTEM THAT THE UCP WISHES TO SEND
  2857. * A WORKLIST (NWL) TO NIP.
  2858. *
  2859. * WHENEVER THE UCP SENDS A WORKLIST TO NIP, A SHORT TERM CON-
  2860. * NECTION HAS BEEN ESTABLISHED BETWEEN NIP AND THE UCP. UNLESS
  2861. * THE UCP FAILS, THIS SHORT TERM CONNECTION CAN BE TERMINATED
  2862. * ONLY BY NIP. THIS IS DONE WHEN NIP ISSUES THE SF.ENDT SCP
  2863. * FUNCTION. THE OPERATING SYSTEM ALLOWS AN UCP TO ESTABLISH UP
  2864. * TO SEVEN SHORT TERM CONNECTIONS BETWEEN ITSELF AND NIP. HOWEVER,
  2865. * NIP AND AIP WILL ALLOW ONLY ONE WORKLIST (AND THEREFORE ONLY
  2866. * ONE SHORT TERM CONNECTION) AT A TIME TO BE TRANSFERRED (UNLESS
  2867. * THE SECOND WORKLIST IS A NETOFF). NIP WILL ISSUE THE SF.ENDT SCP
  2868. * FUNCTION AFTER IT HAS FINISHED PROCESSING THE WORKLIST.
  2869. *
  2870. * THE FIRST WORKLIST THAT AIP SENDS TO NIP MUST BE A NETON
  2871. * WORKLIST. IF NOT, NIP WILL ABORT THE UCP (UNLESS IT IS A
  2872. * NETOFF WORKLIST). WHEN NIP RECEIVES THE NETON WORKLIST ENTRY,
  2873. * IT WILL ISSUE A SF.STAT SCP FUNCTION TO DETERMINE IF THE UCP IS
  2874. * SYSTEM RESIDENT. IF THE UCP IS NS OR CS AND LIBRES IS NOT
  2875. * DEFINED, THE UCP MUST BE SYSTEM RESIDENT. IF NOT, NIP
  2876. * WILL ABORT THE UCP ASSUMING THAT A MALICIOUS UCP WAS TRYING
  2877. * TO MASQUERADE AS NS OR CS. IF LIBRES IS DEFINED, NIP DOES NOT
  2878. * CARE IF NS OR CS ARE SYSTEM RESIDENT. IF THE UCP IS NOT NS OR CS,
  2879. * NIP WILL CREATE A PCB AND SEND A NET/ON SUPERVISOR MESSAGE
  2880. * TO CS, UNLESS THE NETWORK IS SHUTTING DOWN OR CS HAS NOT
  2881. * NETTED ON YET OR NIP COULD NOT CREATE A PCB FOR THE UCP.
  2882. * THEN NIP WILL REJECT THE NETON. CS WILL SEND NIP A RESPONSE
  2883. * TO THE NET/ON SUPERVISOR MESSAGE. SINCE IT MAY TAKE SOME
  2884. * TIME BEFORE NIP GETS THE SUPERVISOR MESSAGE
  2885. * RESPONSE, THE SYSTEM CANNOT AFFORD TO HAVE THE UCP SIT AT A CON-
  2886. * TROL POINT WAITING FOR A NETON RESPONSE, ESPECIALLY IF ITS FIELD
  2887. * LENGTH IS QUITE LARGE. THUS NIP WILL SWAPOUT THE UCP AND WILL
  2888. * NOT SWAP IT BACK IN UNTIL AFTER IT GETS THE NET/ON/R FROM CS.
  2889. * IN THE NET/ON/R FROM CS IS A RETURN CODE. DEPENDING ON THE
  2890. * VALUE OF THIS RETURN CODE, NIP WILL EITHER ABORT
  2891. * THE UCP, REJECT THE NETON, OR ACCEPT THE NETON. TO ABORT THE
  2892. * UCP, NIP WILL ISSUE A SF.REGR SCP FUNCTION. THIS WILL SET THE
  2893. * ERROR FLAG AT THE UCP-S CONTROL POINT AND PUT A MSG IN ITS
  2894. * DAYFILE EXPLAINING WHY IT WAS ABORTED. IF REJECTING THE NETON,
  2895. * NIP WILL CREATE A NETON AWL. IN THIS AWL WILL BE THE REASON CODE
  2896. * FOR REJECTING THE NETON OF THIS UCP. THE AWL WILL GET WRITTEN
  2897. * TO THE UCP USING THE SF.WRITE SCP FUNCTION IN A FUNCTION LIST
  2898. * WHICH INCLUDES A SF.ENDT SCP FUNCTION. IF THE NETON IS ACCEPTED
  2899. * NIP WILL ESTABLISH A LONG TERM CONNECTION (ISSUE SF.SLTC SCP
  2900. * FUNCTION) WITH THE UCP.
  2901. *
  2902. * LONG TERM CONNECTIONS NEED TO BE ESTABLISHED BETWEEN UCP-S
  2903. * AND SCP-S SO THAT THE OPERATING SYSTEM CAN KEEP A RECORD
  2904. * OF WHICH SCP-S ARE COMMUNICATING WITH WHICH UCP-S EVEN IF
  2905. * NO SHORT TERM CONNECTIONS EXIST. THIS WAY, IF NIP SHOULD
  2906. * FAIL, THE OPERATING SYSTEM KNOWS WHICH PROGRAMS IN THE
  2907. * SYSTEM WERE COMMUNICATING WITH NIP. TO INFORM THE UCP-S
  2908. * THAT NIP IS GONE, THE OPERATING SYSTEM ABORTS THEM. ALSO IF
  2909. * THE UCP SHOULD FAIL, THE OPERATING SYSTEM KNOWS WHICH SCP-S THE
  2910. * UCP WAS COMMUNICATING WITH. IT CAN THEREFORE INFORM THE SCP THAT
  2911. * THE UCP HAS FAILED. THIS IS DONE BY THE OPERATING SYSTEM
  2912. * CREATING A WORKLIST TO SEND TO THE SCP. IN THIS WORKLIST IS
  2913. * THE JOBID OF THE UCP THAT FAILED PLUS A NONZERO VALUE IN THE
  2914. * FAILED-STATUS FIELD.
  2915. *
  2916. * IF THE NETON IS SUCCESSFUL, THE UCP WILL BE ABLE TO START
  2917. * SENDING NETGET, NETPUT, NETWAIT, ETC. WORKLIST ENTRIES TO
  2918. * NIP. NIP WILL PROCESS THESE WORKLIST (NWL) ENTRIES UNTIL
  2919. * EITHER 1) IT FINISHES PROCESSING THE LAST ENTRY, 2) IT
  2920. * CANNOT GET THE SPACE NEEDED TO PROCESS THE CURRENT ENTRY, 3)
  2921. * COMES ACROSS A NETWAIT WORKLIST ENTRY, 4) IT ISSUES A SCP
  2922. * FUNCTION AND GETS A SCP RETURN CODE 44B, OR 5) THE UCP TRIES
  2923. * TO SEND A SUPERVISOR MESSAGE TO CS AND CS HAS REACHED ITS
  2924. * MAXIMUM NUMBER OF QUEUED SUPERVISOR MESSAGES. EXCEPT FOR CASE
  2925. * NUMBER 1, NIP WILL TEMPORARILY SUSPEND PROCESSING THE WORKLIST.
  2926. * PERIODICALLY XSPCB WILL BE CALLED TO CHECK IF THE SITUATION
  2927. * WHICH CAUSED THE WORKLIST PROCESSING TO BE SUSPENDED HAS CLEARED
  2928. * UP. IF SO, IT WILL RESTART WORKLIST PROCESSING FROM WHEREVER
  2929. * IT LEFT OFF. FOR MOST WORKLIST PROCESSING NIP WILL BE REQUIRED
  2930. * TO CREATE AN AWL TO WRITE BACK TO THE APPLICATION. THIS AWL WILL
  2931. * BE WRITTEN TO THE UCP AFTER NIP FINISHES PROCESSING THE WORKLIST
  2932. *
  2933. * IN PROCESSING NETGETS OR NETGETLS, IF NIP HAS DATA FOR THE UCP,
  2934. * IT WILL ISSUE A SF.WRITE SCP FUNCTION(S) TO WRITE THE TEXT BACK
  2935. * TO THE UCP-S FIELD LENGTH. IF NIP HAS NO DATA, THEN IT WILL JUST
  2936. * CREATE AN AWL ENTRY. IN PROCESSING NETGETFS OR NETGTFLS, NIP
  2937. * MAY ALSO HAVE TO FIRST ISSUE A SF.READ SCP FUNCTION TO READ THE
  2938. * TEXT ARRAY INTO ITS FIELD LENGTH, IF THE TEXT ARRAY DID NOT FIT IN
  2939. * THE WORKLIST. IN PROCESSING NETPUTS AND NETPUTFS, NIP MAY BE
  2940. * REQUIRED TO ISSUE SF.READ SCP FUNCTION(S) TO READ THE TEXT FROM
  2941. * THE UCP-S FIELD LENGTH, IF THE TEXT DID NOT FIT IN THE WORKLIST.
  2942. * IN PROCESSING NETPUTF THERE MAY BE AN ADDITIONAL SF.READ SCP
  2943. * FUNCTION ISSUED TO FIRST READ THE TEXT ARRAY INTO NIP-S FIELD
  2944. * LENGTH, IF THE TEXT ARRAY DID NOT FIT IN THE WORKLIST.
  2945. *
  2946. * IN SENDING NIP A NON-FORCE NETWAIT WORKLIST ENTRY, THE UCP IS
  2947. * SAYING IT HAS NOTHING TO DO UNTIL THERE IS SOME DATA OR
  2948. * SUPERVISOR MESSAGE FOR IT TO PROCESS. THEREFORE RATHER THAN
  2949. * HAVING THE UCP WAIT AROUND AT A CONTROL POINT FOR SOMETHING
  2950. * TO DO, IF NIP HAS NOTHING TO SEND TO THE UCP AND THE NETWAIT
  2951. * TIME IS GREATER THAN THE MINIMUM SWAPOUT TIME, NIP WILL SWAP
  2952. * THE UCP OUT (USING THE SF.SWPO SCP FUNCTION). WHEN DATA BECOMES
  2953. * AVAILABLE OR THE NETWAIT TIME IS UP, NIP WILL SWAP IN THE UCP
  2954. * (USING THE SF.SWPI SCP FUNCTION) AND CONTINUE PROCESSING THE
  2955. * REST OF THE WORKLIST FROM WHEREVER IT LEFT OFF. IF NIP RECEIVES
  2956. * A FORCED NETWAIT ENTRY, IT WILL SWAP OUT THE UCP (UNLESS THE
  2957. * NETWAIT TIME IS LESS THAN THE MINIMUM SWAPOUT TIME). THE UCP
  2958. * WILL NOT BE SWAPPED IN UNTIL THE NETWAIT TIME IS UP, EVEN IF
  2959. * DATA BECOMES AVAILABLE FOR THE UCP BEFORE THEN.
  2960. *
  2961. * WHEN THE UCP NETOFFS, IT NO LONGER WISHES TO COMMUNICATE WITH
  2962. * NIP. NIP WILL FIRST CHECK TO SEE IF IT HAS A RECORD (ACTIVE PCB)
  2963. * OF THAT UCP. IF SO, NIP KNOWS THAT THE UCP HAD SUCCESSFULLY NETTED
  2964. * ON AND NIP HAD ESTABLISHED A LONG TERM CONNECTION WITH IT. NIP
  2965. * WILL THEN ISSUE A SCP FUNCTION LIST TO CLEAR BOTH THE LONG AND
  2966. * SHORT TERM CONNECTIONS AND ALSO INFORM CS THAT THE UCP IS NETTING
  2967. * OFF BY SENDING IT A NET/OFF SUPERVISOR MESSAGE (UNLESS NIP HAD
  2968. * PREVIOUSLY INFORMED CS THAT THE UCP WAS GONE). IF NIP HAS
  2969. * NO RECORD OF THE UCP, IT WILL ASSUME THAT NO LONG TERM CONNECTION
  2970. * EXISTS AND ALSO THAT CS HAS NO RECORD OF THE UCP. NIP WILL THEN
  2971. * ISSUE A SCP FUNCTION TO CLEAR ONLY A SHORT TERM CONNECTION. NIP
  2972. * WILL ALSO NOT INFORM CS THAT THE UCP IS NETTING OFF. WHEN THE
  2973. * SCP FUNCTION LIST HAS BEEN COMPLETED, THE UCP WILL HAVE BECOME A
  2974. * NORMAL PROGRAM AGAIN AND BE FREE TO CONTINUE PROCESSING OR TO
  2975. * TERMINATE. IF DESIRED, THE PROGRAM CAN EVEN NETON AGAIN AND
  2976. * REESTABLISH ITS CONNECTION WITH NIP.
  2977. *
  2978. * WHENEVER AN UCP FAILS, THE OPERATING SYSTEM WILL INFORM NIP.
  2979. * NIP WILL THEN ISSUE A SF.ENDT SCP FUNCTION WITH UCPA = -1 TO
  2980. * CLEAR ALL CONNECTIONS IT HAS WITH THE UCP. IF NIP SHOULD GET
  2981. * A SCP RETURN CODE 44B, IT WILL DISCONTINUE PROCESSING THE UCP
  2982. * FAILURE AND ASSUME THAT THE OPERATING SYSTEM WILL INFORM NIP THAT
  2983. * THE UCP HAD FAILED AGAIN. WHEN IT DOES, NIP WILL PROCESS THE SCP
  2984. * FAILURE AS IF IT WAS BEING NOTIFIED FOR THE FIRST TIME. UNTIL
  2985. * NIP SUCCESSFULLY CLEARS THE CONNECTIONS BETWEEN ITSELF AND THE
  2986. * UCP, THE UCP WILL HANG AT THE CONTROL POINT UNABLE TO EXECUTE ITS
  2987. * NEXT CONTROL CARD. AFTER CLEARING THE CONNECTIONS, IF NIP HAD
  2988. * A PCB FOR THAT UCP AND NIP HAD NOT PREVIOUSLY INFORMED CS
  2989. * THAT THE UCP WAS GONE, NIP WILL SEND A FAIL/APPL SUPERVISOR
  2990. * MESSAGE TO CS TO INFORM IT THAT THE UCP HAD FAILED.
  2991. *
  2992. * ALL SCP FUNCTIONS EXCEPT SWAPIN ARE ISSUED WITH RECALL, I.E.
  2993. * NIP DOES NOT WANT THE CPU BACK UNTIL THE FUNCTION IS COMPLETE.
  2994. * HOWEVER, THERE ARE MANY CASES WHERE THE FUNCTION COULD NOT BE
  2995. * COMPLETED. IF THIS HAPPENS, THE OPERATING SYSTEM WILL GIVE NIP A
  2996. * NONZERO RETURN CODE (RC) INDICATING WHAT WENT WRONG. FOR MOST
  2997. * OF THESE RETURN CODE VALUES, NIP OR THE OPERATING SYSTEM DID
  2998. * SOMETHING WRONG, SO NIP ABORTS. THE RETURN CODES FOR WHICH NIP
  2999. * DOES NOT USUALLY ABORT ARE 43B, 44B, 45B, AND 46B. THERE ARE
  3000. * RESPECTIVELY - BAD UCP ADDRESS, UCP IS SWAPPED OUT, UCP NOT IN
  3001. * SYSTEM, AND UCP TEMPORARILY CANNOT BE SWAPPED IN.
  3002. * IF NIP GETS A SCP RC=43B, NIP ASSUMES THAT THE UCP
  3003. * IN SYSTEM. IF NIP GETS A SCP RC=43B, NIP ASSUMES THAT THE UCP
  3004. * GAVE HIM A BAD ADDRESS SO NIP ABORTS THE UCP. IF NIP GETS A SCP
  3005. * RETURN CODE 45B, IT WILL DISCONTINUE PROCESSING THE WORKLIST AND
  3006. * TREAT THE UCP AS HAVING FAILED. UNDER CERTAIN CASES, IT IS
  3007. * EVEN POSSIBLE FOR A SCP 43B RETURN CODE TO BE FATAL. FOR
  3008. * EXAMPLE, IF NIP ISSUES A SCP SF.ENDT FUNCTION, IT SHOULD NEVER
  3009. * GET A SCP RETURN CODE 43B.
  3010. *
  3011. * NORMALLY, WHEN NIP GETS A SCP RETURN CODE 63B (NO CONNECTION
  3012. * EXISTS BETWEEN THE UCP AND THE SCP), NIP ABORTS.
  3013. * HOWEVER, THERE IS ONE SPECIAL CASE WHEN IT DOES NOT. THAT IS
  3014. * WHEN HAPFAIL CALLS NIP TO PROCESS AN UCP FAILURE. SINCE THE
  3015. * OPERATING SYSTEM CAN INFORM NIP MORE THAN ONCE THAT THE UCP HAS
  3016. * FAILED, IT IS POSSIBLE FOR NIP TO GET TWO FAILED-STATUS WORKLISTS
  3017. * FOR THE SAME UCP. AFTER NIP FINISHES PROCESSING THE FIRST
  3018. * FAILED-STATUS WORKLIST, IT WILL NO LONGER HAVE ANY CONNECTIONS
  3019. * WITH THE FAILED UCP. IN PROCESSING THE SECOND FAILED-STATUS
  3020. * WORKLIST, NIP WILL GET A SCP RETURN CODE 63B, WHEN IT ISSUES THE
  3021. * SCP SF.ENDT FUNCTION (WITH UCPA = -1) FOR THIS SAME UCP.
  3022. *
  3023. * IN MOST CASES WHEN A SCP FUNCTION IS ISSUED, A PCB EXISTS FOR
  3024. * THE APPLICATION. IF THE SCP FUNCTION GETS A RETURN CODE 44B,
  3025. * NIP WILL DISCONTINUE PROCESSING THE WORKLIST AND ISSUE A SF.SWPI
  3026. * SCP FUNCTION TO SWAP IN THE UCP. THEN NIP WILL TRY TO SET FIELDS
  3027. * AND POINTERS IN THE PCB SO THAT THE WORKLIST ENTRY THAT CAUSED THE
  3028. * SCP CALL TO BE MADE CAN BE REPROCESSED FROM THE BEGINNING.
  3029. * HOWEVER, THIS IS NOT ALWAYS POSSIBLE. FOR EXAMPLE, IN PROCESSING
  3030. * A NETGETSM WORKLIST ENTRY, NIP WILL MOVE ALL THE SUPERVISOR
  3031. * MESSAGES INTO ONE BUFFER AFTER DELINKING THEM FROM THE PCB.
  3032. * THEN THE SF.WRITE SCP FUNCTION IS ISSUED TO WRITE THE SUPERVISOR
  3033. * MESSAGES TO AIP-S SUPERVISOR MESSAGE BUFFER. IF NIP GETS A
  3034. * SCP RETURN CODE 44B, IT WOULD BE TOO MUCH WORK TO LINK THE
  3035. * SUPERVISOR MESSAGES BACK TO THE PCB. NIP THEREFORE STORES THE
  3036. * SCP FUNCTION LIST ADDR AND SUPERVISOR MESSAGE BUFFER ADDRESS IN
  3037. * THE PCB. AFTER THE UCP IS SWAPPED IN, THE ORIGINAL SCP FUNCTION
  3038. * LIST IS REISSUED.
  3039. *
  3040. * UNFORTUNATELY THERE ARE CASES WHERE A PCB DOES NOT EXIST FOR
  3041. * THE APPLICATION AND A SCP FUNCTION IS ISSUED WHICH GETS A RETURN
  3042. * CODE 44B. THEY ARE: 1) AN UCP NETOFF-S
  3043. * AND NIP GETS AN SCP RC=44B IN RESPONSE TO THE SF.ENDT, 2)
  3044. * AN UCP TRIES TO NETON AND NIP GETS A SCP RC=44B IN RESPONSE
  3045. * TO THE SF.STAT SCP FUNCTION, 3) AN UCP TRIES TO NETON AND NIP
  3046. * REJECTS IT AND NIP GETS
  3047. * NETON AND CS REJECTS IT (NON-FATAL) AND NIP GETS A SCP RC=44B
  3048. * IN RESPONSE TO THE SCP FUNCTION LIST, 5) A MALICIOUS UCP TRIES TO
  3049. * NETON AS NS OR CS, OR CS REJECTED ITS NETON (FATAL) AND NIP GETS
  3050. * A SCP RC=44B IN RESPONSE TO THE SF.REGR SCP FUNCTION TO ABORT THE
  3051. * UCP. FOR THESE FIVE CASES NIP WILL ISSUE A SWAPIN OF THE UCP AND
  3052. * CREATE A "NO PCB" SWAPIN CHAIN ENTRY. THE SWAPIN CHAIN ENTRY
  3053. * WILL CONTAIN THE SCP SWAPIN CALL PLUS THE ADDRESS OF THE ORIGINAL
  3054. * FUNCTION LIST PLUS MAYBE AN AWL TO WRITE BACK TO THE UCP.
  3055. * WHEN XSPCB IS CALLED, IT WILL CHECK TO SEE IF THERE ARE ANY
  3056. * ENTRIES IN THIS CHAIN. IF SO IT WILL CHECK IF THE SWAPIN HAS
  3057. * COMPLETED. IF COMPLETED, THE ORIGINAL SCP FUNCTION WILL BE
  3058. * BE REISSUED, AND IF SUCCESSFUL, THE SWAPIN ENTRY WILL BE RELEASED
  3059. * NIP WILL RECEIVE A SCP RC=46B IN RESPONSE TO ONLY A SWAPIN
  3060. * REQUEST. NIP WILL SIMPLY REISSUE THE SWAPIN REQUEST IMMEDIATELY.
  3061. *
  3062.  #
  3063. *ENDIF
  3064. #**********************************************************************#
  3065.  
  3066. BEGIN
  3067. PARAMP1 = LWPR[0]; # LWA + 1 OF MAIN OVERLAY #
  3068. POVL4 = OVLFG[0]; # SET OVERLAY LOAD CALL TYPE #
  3069. OVLADR0[0] = PGNAME; # EXECUTION FILE NAME #
  3070. OVLNAME = INIPP; # NAME OF OVERLAY PROGRAM TO LOAD #
  3071. OVLCALL; # LOAD AN EXECUTE OVERLAY #
  3072. CONTROL IFEQ ZZDN,1;
  3073. OVLNAME = INIPDP; # CHECK IF FILES ARE LOCAL #
  3074. OVLCALL;
  3075. CONTROL FI;
  3076.  
  3077. IRECVR; # INITIATE RECOVERY #
  3078. NIPINIT = TRUE;
  3079.  
  3080. NIP10:
  3081. XEXEC; # GOTO MAIN EXECUTION CONTROL #
  3082. GOTO NIP10; # LOOP #
  3083. END
  3084. TERM
cdc/nos2.source/nam5871/nip.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator