User Tools

Site Tools


cdc:nos2.source:nam5871:majptr

MAJPTR

Table Of Contents

  • [00027] PROC MAJPTR
  • [00092] PROC ABORT
  • [00093] PROC MCHKPTR
  • [00094] PROC MDRPTR
  • [00095] PROC OMSG
  • [00096] PROC RDUMP
  • [00097] PROC XTRACE

Source Code

MAJPTR.txt
  1. *DECK MAJPTR
  2. USETEXT NIPDEF
  3. USETEXT ACB
  4. USETEXT ACKHEAD
  5. USETEXT ACNB
  6. USETEXT ACNT
  7. USETEXT AT
  8. USETEXT DEQCOM
  9. USETEXT DISTAIL
  10. USETEXT DUMPFLG
  11. USETEXT DRHDR
  12. USETEXT FLIST
  13. USETEXT FREETAB
  14. USETEXT KDIS
  15. USETEXT KHDRX
  16. USETEXT KINITBF
  17. USETEXT KSTTAB
  18. USETEXT LLCB
  19. USETEXT NBT
  20. USETEXT NCNB
  21. USETEXT NCNT
  22. USETEXT PCNB
  23. USETEXT PRUBUFF
  24. USETEXT PT
  25. USETEXT TNT
  26. USETEXT MSGIDX
  27. PROC MAJPTR; # ADJUST BUFFER POINTERS AFTER MEMORY MOVE#
  28.  
  29. STARTIMS;
  30. #
  31. *1DC MAJPTR
  32. * 1. PROC NAME AUTHOR DATE
  33. * MAJPTR P.C.TAM 80/01/17
  34. *
  35. * 2. FUNCTIONAL DESCRIPTION.
  36. * THIS ROUTINE IS RESPONSIBLE FOR ADJUSTING THE POINTERS
  37. * POINT TO BUFFERS JUST MOVED BY GARBAGE COLLECTION ROUTINE
  38. * MGBGCLT.
  39. *
  40. * 3. METHOD USED.
  41. * START FROM THE FIRST BUFFER IN THE BLOCK JUST MOVED.
  42. * JUMP TO THE CORRESPONDING MODULES TO ADJUST POINTERS BASED ON
  43. * BUFFER ID.
  44. * CALL PROCEDURE MCHKPTR TO CHECK WHETHER THE BUFFER WHICH
  45. * CONTAINS THE POINTERS HAS ALSO BEEN MOVED. IF SO, MODIFY
  46. * THE BUFFER ADDRESS BEFORE RESETTING THE POINTERS.
  47. *
  48. * 4. ENTRY PARAMETERS. NONE
  49. *
  50. * 5. EXIT PARAMETERS. NONE
  51. *
  52. * 6. SYMPL TEXTS USED.
  53. * ACB ACNB ACNT AT ACKHEAD
  54. * NCNB NCNT PBT PCNB PIT TNT
  55. * FLIST FREETAB LLCB NBT
  56. * PT NIPDEF DISTAIL
  57. * DUMPFLG KDIS KHDRX KINITBF
  58. * KSTTAB MSGIDX OSIZE DRHDR
  59. *
  60. * 7. ROUTINES CALLED.
  61. * ABORT ABORT NIP WITH MESSAGE LOGGED
  62. * MCHKPTR CHECK MCHG IN MOVED RANGE OR NOT
  63. * OMSG ISSUE DAYFILE MESSAGE
  64. * MDRPTR UPDATE DATA RING POINTERS
  65. * XTRACE RECORD CALL
  66. *
  67. * 8. DAYFILE MESSAGES.
  68. * MAJPTR FOUND BAD BLK ID
  69. * HIT GARBAGE IN KDIS BUF
  70. *
  71. * W A R N I N G - THE TOTAL SIZE OF 4 GARBAGE COLLECTION
  72. * ROUTINES (MAJPTR, MCHKPTR, AND MGBGCLT)
  73. * WITH THE DELAY OPTION TURNED ON
  74. * CAN NOT EXCEED THE PRIMARY AND SECONDARY
  75. *CALL OSIZE
  76. *
  77. * THIS PROCEDURE IS CALLED BY MGBGCLT.
  78. *
  79.  #
  80. STOPIMS;
  81. #
  82.  PARAMETERS
  83. #
  84. # INPUT PARAMETERS #
  85. # NONE #
  86. # OUTPUT PARAMETERS #
  87. # NONE #
  88. #
  89.  EXTERNAL VARIABLES
  90. #
  91. XREF BEGIN
  92. PROC ABORT; # ABORT NIP WITH LOG MESSAGES #
  93. PROC MCHKPTR; # CHECK POINTER IN MOVED RANGE OR NOT #
  94. PROC MDRPTR; # UPDATE DATA RING #
  95. PROC OMSG; # DAYFILE MESSAGE #
  96. PROC RDUMP; # DUMP NIP FL #
  97. PROC XTRACE; # RECORD CALL #
  98. END
  99. #
  100.  LOCAL VARIABLES
  101. #
  102. ITEM MEND, # LWA+1 OF BLOCK BEEN MOVED TO #
  103. MCUROLD, # NEXT BUFFER POINTER OF OLD BLOCK #
  104. I, # TEMP VARIABLE #
  105. MPTR, # TEMP VARIABLE #
  106. MPTR2, # TEMP VARIABLE #
  107. MPTR3, # TEMP VARIABLE #
  108. MPTR4; # TEMP VARIABLE #
  109. ITEM STYPE; # TYPE OF STATUS BUFFER #
  110. BASED ARRAY ADDRWORD S(1) ;
  111. BEGIN
  112. ITEM ADDRESSB U(0,12,24) ;
  113. ITEM ADDRESSF U(0,42,18) ;
  114. END
  115.  
  116. CONTROL IFEQ DEBUG,1;
  117. # DAYFILE MSG TO ISSUE IF BLK ID UNKNOWN #
  118.  
  119. ARRAY BADID P(3);
  120. BEGIN
  121. ITEM BADMSG C(0,0,23)=["MAJPTR FOUND BAD BLK ID"];
  122. ITEM BADZRO I(2,18,42)=[0];
  123. END
  124. CONTROL FI;
  125. BASED ARRAY STPTRX [1:1] P(1);
  126. ITEM STPTR U(00,00,18);
  127.  
  128.  
  129.  
  130. # LIST FOR SWITCHING TO DIFFERENT LABELS
  131.   ACCORDING TO THE BUFFER ID #
  132. LABEL MPRU ;
  133.  
  134. SWITCH BUFID
  135. MERR, # ID = 0, INVALID BUFFER TYPE #
  136. MAT, # ID = 1, APPLICATION TABLE #
  137. MACNT, # ID = 2, APPLICATION CONNECTION TABLE #
  138. MACK, # ID = 3, ACKNOWLEDGE QUEUE ENTRY #
  139. MFLIST, # ID = 4, FUNCTION LIST #
  140. MACB, # ID = 5, APPLICATION CONTROL TABLE #
  141. MACNB, # ID = 6, APPLICATION CONNECTION BLOCK #
  142. MMSG, # ID = 7, MESSAGE BUFFER #
  143. MTNT, # ID = 8, LOGICAL LINK TABLE #
  144. MLLCB, # ID = 9, LOGICAL LINK CONTROL BLOCK #
  145. MNCNT, # ID = 10, NETWORK CONNECTION NUMBER TBL #
  146. MNCNB, # ID = 11, NETWK CONN CONTROL BLOCK #
  147. MPCNB, # ID = 12, PRU CONN CONTROL BLOCK #
  148. MERR, # ID = 13, PIP INTERFACE TABLE #
  149. MERR, # ID = 14, PRU BUFFER TABLE #
  150. MERR, # ID = 15, NETWK BUFFER TABLE #
  151. MKDIS, # ID = 16, K-DISPLAY BUFFER #
  152. MPRU; # ID = 17, PRU BUFFER #
  153.  
  154. #**********************************************************************#
  155. BEGIN
  156. CONTROL IFEQ DEBUG,1;
  157. XTRACE("MAJPT") ;
  158. CONTROL FI;
  159.  
  160. P<AT> = 0;
  161. P<ACB> = 0;
  162. P<ACNT> = 0;
  163. P<ACNB> = 0;
  164. P<DRHDRWD> = 0;
  165. P<TNT> = 0;
  166. P<LLCB> = 0;
  167. P<NCNT> = 0;
  168. P<NCNB> = 0;
  169. P<PCNB> = 0;
  170. P<PRUBUFF> = 0 ;
  171. P<ACKHEAD> = 0;
  172. P<FLHEAD> = 0;
  173. P<KINITBF> = 0;
  174.  
  175. MEND = MNEW + MSIZE; # LWA+1 OF BLOCK MOVED #
  176. MSIZE = MOLD + MSIZE; # LWA+1 OF OLD BLOCK MOVED #
  177. MCUROLD = MOLD; # PRESET NEXT BUFFER LOCATION #
  178.  
  179. # CHECK WHETHER MORE BUFFERS IN THE BLOCK MOVED #
  180.  
  181. FOR MCUR = 0 DO
  182. BEGIN
  183.  
  184. IF MCUR EQ 0
  185. THEN
  186. MCUR = MNEW; # FIRST BUFFER LOCATION #
  187. ELSE
  188. BEGIN
  189. MCUROLD = MCUROLD + BLKBS[MCUR];# NEXT OLD BUFFER LOCATION #
  190. MCUR = MCUR + BLKBS[MCUR]; # CURRENT BUFFER LOCATION #
  191. END
  192.  
  193. IF MCUR EQ MEND
  194. THEN
  195. RETURN;
  196.  
  197.  
  198. IF BLKID[MCUR] LQ MOVEABLEIDS # VALID BUFFER TYPE #
  199. THEN
  200. GOTO BUFID[BLKID[MCUR]]; # ADJUST PTRS BASED ON ID #
  201.  
  202. #
  203.   ERROR CONDITION -- BUFFER ID INVALID
  204. #
  205. MERR:
  206.  
  207. CONTROL IFEQ DEBUG,1;
  208. ABORT(BADID,0); # ABORT NIP WITH ERROR MESSAGE #
  209. CONTROL FI;
  210.  
  211. RETURN; # CONTINUE PROCESSING #
  212.  
  213. #
  214.   APPLICATION TABLE
  215. #
  216. MAT:
  217. PTAT[0] = MCUR; # MODIFY POINTER IN POINTER TAB #
  218. TEST;
  219. #
  220.   APPLICATION CONNECTION NUMBER TABLE
  221. #
  222. MACNT:
  223. MPTR = ACNTAN[MCUR]; # GET APP NUMBER #
  224. MCHG = PTAT[0]; # APPLICATION TABLE ADDR #
  225. MCHKPTR;
  226. MCHG = ATACBA[MPTR+MCHG];# APPLICATION CONTROL BLOCK ADDR #
  227. MCHKPTR;
  228. ACBACNT[MCHG] = MCUR;# MODIFY ACNT ADDRESS IN ACB #
  229. TEST;
  230. #
  231.   ACKNOWLEDGE QUEUE ENTRY MOVED
  232. #
  233. MACK:
  234. MCHG = ACKNCNB[MCUR];# GET NCNB ADDRESS #
  235. MCHKPTR;
  236. NCNBACKQ[MCHG] = MCUR;
  237. TEST;
  238.  
  239. #
  240.   FUNCTION LIST BUFFER MOVED
  241. #
  242. MFLIST:
  243. FLCB[MCUR] = 0; # CLEAR SCP COMPL BIT #
  244. IF FLFC[MCUR] EQ SFLIST
  245. THEN # MODIFY SCPA FOR A SFLIST #
  246. FLSCPA[MCUR] = LOC(FLWD0[MCUR]) +
  247. FLSCPA[MCUROLD] -
  248. LOC(FLWD0[MCUROLD]);
  249. MCHG = PTAT[0]; # GET APP TABLE ADDR #
  250. MCHKPTR;
  251. MCHG = ATACBA[MCHG+FLAN[MCUR]];# GET CORR ACB ADDR #
  252. MCHKPTR;
  253. ACBFLIST[MCHG] = MCUR;# MODIFY ACB FLIST ADDRESS #
  254. TEST;
  255. #
  256.   APPLICATION CONTROL BLOCK
  257. #
  258. MACB:
  259. MCHG = PTAT[0]; # GET APP TABLE ADDRESS #
  260. MCHKPTR;
  261. ATACBA[MCHG+ACBAN[MCUR]] = MCUR;# MODIFY ACB ADDR IN AT #
  262. ACBIASCPA[MCUR] = LOC(ACBAAVAL[MCUR]); # UPDATE SCP ADDR #
  263. MDRPTR(ACBDRFP[MCUR],ACBDRBP[MCUR],LOC(ACBDRBP[MCUR]));
  264. MDRPTR(ACBPWLFP[MCUR],ACBPWLBP[MCUR],LOC(ACBPWLFP[MCUR]));
  265. TEST;
  266. #
  267.   APPLICATION CONNECTION BLOCK
  268. #
  269. MACNB:
  270. MCHG = PTAT[0]; # GET APP TABLE ADDRESS #
  271. MCHKPTR;
  272. MCHG = ATACBA[MCHG+ACNBAN[MCUR]];# GET ACB ADDRESS #
  273. MCHKPTR;
  274. IF ACBCDRP[MCHG] EQ MCUROLD
  275. THEN # ACNB PROCESSED IN LAST NETGET #
  276. BEGIN
  277. ACBCDRP[MCHG] = MCUR; # UPDATE LAST ACNB #
  278. END
  279. MCHG = ACBACNT[MCHG];# GET APP CONN TABLE ADDRESS #
  280. MCHKPTR;
  281. MPTR = ACNBACN[MCUR] - ACNTMINACN[MCHG] + ACNTHSIZE;
  282. ACNTACNB[MCHG+MPTR] = MCUR;# MODIFY APP CONN BK ADDR IN ACNT #
  283. MCHG = ACNBNCNB[MCUR];# CHANGE ACNB/NCNB POINTERS #
  284. IF MCHG NQ 0
  285. THEN
  286. BEGIN
  287. MCHKPTR;
  288. NCNBACNB[MCHG] = MCUR;
  289. END
  290. MCHG = ACNBCDRFP[MCUR]; # NEXT ACNB IN CONNECTION DATA RING #
  291. IF MCHG NQ 0
  292. THEN
  293. BEGIN
  294. MCHKPTR; # UPDATE POINTER IF MOVED #
  295. ACNBCDRBP[MCHG] = MCUR; # UPDATE BACK PTR OF NEXT ACNB #
  296. MCHG = ACNBCDRBP[MCUR]; # PREVIOUS ACNB IN CON DATA RING #
  297. MCHKPTR; # UPDATE ACNB ADDR IF MOVED #
  298. ACNBCDRFP[MCHG] = MCUR; # UPDATE FP OF PREV. ACNB #
  299. END
  300. MDRPTR(ACNBDRFP[MCUR],ACNBDRBP[MCUR],LOC(ACNBDRFP[MCUR]));
  301. TEST;
  302.  
  303. #
  304.   MESSAGE HAS BEEN MOVED
  305. #
  306.  
  307. MMSG:
  308. MDRPTR(NEXTPTR[MCUR],BACKPTR[MCUR],MCUR);
  309. TEST;
  310. #
  311.   TERMINAL NODE TABLE
  312. #
  313. MTNT:
  314. PTTNT[0] = MCUR; # MODIFY TERMINAL NODE TABLE ADDR IN PT #
  315. TEST;
  316. #
  317.   LOGICAL LINK CONTROL BLOCK
  318. #
  319. MLLCB:
  320. MCHG = LLCBBP[MCUR]; # UPDATE PREV BLOCK BKPTR #
  321. IF MCHG EQ 0
  322. THEN
  323. BEGIN # FIRST LLCB IN CHAIN #
  324. MCHG = PTTNT[0];
  325. MCHKPTR;
  326. MPTR = LLCBTN[MCUR];
  327. TNTLLAD[MPTR+MCHG] = MCUR;# 1 ST LLCB IN CHAIN #
  328. END
  329. ELSE
  330. BEGIN # NOT 1ST LLCB IN CHAIN #
  331. MCHKPTR;
  332. LLCBFP[MCHG] = MCUR;
  333. END
  334. MCHG = LLCBFP[MCUR]; # UPDATE BKPTR OF NEXT LLCB #
  335. IF MCHG NQ 0
  336. THEN
  337. BEGIN
  338. MCHKPTR;
  339. LLCBBP[MCHG] = MCUR;
  340. END
  341. TEST;
  342. #
  343.   NETWORK CONNECTION NUMBER TABLE
  344. #
  345. MNCNT:
  346. MCHG = PTTNT[0]; # GET TERMINAL NODE TABLE ADDR #
  347. MCHKPTR;
  348. MCHG = TNTLLAD[NCNTTN[MCUR]+MCHG];# GET CORR LLCB ADDR IN TNT #
  349. FOR I = 0 STEP 1 WHILE MCHG NQ 0
  350. DO
  351. BEGIN # LOOP TO SEARCH FOR RIGHT LLCB #
  352. MCHKPTR;
  353. IF LLCBHN[MCHG] EQ NCNTHN[MCUR]
  354. THEN
  355. BEGIN
  356. MPTR3 = MCHG;
  357. MCHG = 0;
  358. END
  359. ELSE
  360. MCHG = LLCBFP[MCHG];
  361. END
  362. MPTR = NCNTCI[MCUR]+LLCBHSIZE; # NCNT ADDR IN LLCB W CORR HN #
  363. LLCBNCNT[MPTR+MPTR3] = MCUR;
  364. MPTR2 = NCNTSIZE - NCNTHSIZE;
  365. FOR MPTR = NCNTHSIZE STEP 1 UNTIL MPTR2
  366. DO
  367. BEGIN # LOOP TO MODIFY NCNT ADDR IN NCNB/PCNB #
  368. MCHG = NCNTNCNB[MCUR+MPTR];
  369. IF MCHG NQ 0
  370. THEN
  371. BEGIN
  372. MCHKPTR;
  373. NCNBCTAD[MCHG] = MCUR; # UPDATE NCNT ADDR #
  374. END
  375. END
  376. TEST;
  377. #
  378.   NETWORK CONNECTION CONTROL BLOCK
  379. #
  380. MNCNB:
  381. MPCNB:
  382. MCHG = NCNBCTAD[MCUR];# GET NCNT ADDR IN NCNB #
  383. MCHKPTR;
  384. MPTR = NCNBCN[MCUR]; # CONN NUMBER IN NCNB #
  385. MPTR2 = MPTR/16;
  386. MPTR2 = MPTR - MPTR2*16 + NCNTHSIZE;
  387. NCNTNCNB[MCHG+MPTR2] = MCUR;# MODIFY NCNB ADDR IN NCNT #
  388. MCHG = NCNBACNB[MCUR];# GET ACNB ADDR FOR THIS NCNB #
  389. IF MCHG NQ 0
  390. THEN
  391. BEGIN
  392. MCHKPTR;
  393. ACNBNCNB[MCHG] = MCUR; # MODIFY NCNB ADDRESS IN ACNB #
  394. END
  395. IF BLKID[MCUR] EQ NCNBIDVALUE
  396. THEN
  397. BEGIN
  398. MDRPTR(NCNBDRFP[MCUR],NCNBDRBP[MCUR],LOC(NCNBDRFP[MCUR]));
  399. MCHG = NCNBACKQ[MCUR]; # MODIFY ACKQ ADDR #
  400. IF MCHG NQ 0
  401. THEN
  402. BEGIN # ACKQ EXISTS #
  403. MCHKPTR;
  404. ACKNCNB[MCHG] = MCUR;
  405. END
  406. END
  407. ELSE
  408. BEGIN # PRU CONNECTION CONTROL BLOCK #
  409. MCHG = PCNBPCFP[MCUR];
  410. MPTR = PCNBNBTE[MCUR] * NBTFETNO;
  411. MPTR2 = LOC(NBTFIRST[MPTR]);
  412. IF MCHG EQ MPTR2
  413. THEN # LAST PCNB IN RING #
  414. NBTPCRB[MPTR] = MCUR;
  415. ELSE # NOT LAST PCNB #
  416. BEGIN
  417. MCHKPTR;
  418. PCNBPCBP[MCHG] = MCUR;
  419. END
  420. MCHG = PCNBPCBP[MCUR];
  421. IF MCHG EQ MPTR2
  422. THEN # FIRST PCNB IN RING #
  423. NBTPCRF[MPTR] = MCUR;
  424. ELSE
  425. BEGIN
  426. MCHKPTR;
  427. PCNBPCFP[MCHG] = MCUR;
  428. END
  429. END
  430. TEST;
  431. #
  432.   K-DISPLAY BUFFER
  433. #
  434.  
  435. MKDIS:
  436. MCHG = BACKPTR[MCUR]; # ADDRESS OF PREVIOUS BUFFER #
  437. MCHKPTR; # CHECK IF IN RANGE OF MOVE #
  438. NEXTPTR[MCHG] = MCUR; # UPDATE FRONT POINTER #
  439. MPTR = MCHG + BLKBS[MCHG] - 1; # LWA OF BUFFER #
  440. CONTROL IFEQ DEBUG,1;
  441. IF K7777[MPTR] NQ O"7777"
  442. THEN
  443. BEGIN
  444. ABORT(DFMSG18,0); # ABORT NIP, BAD BLOCK #
  445. END
  446. CONTROL FI;
  447.  
  448. MCHG = KDSTAIL[MPTR]; # FWA OF DATA #
  449. MCHKPTR; # RESET DATA POINTER #
  450. KDSTAIL[MPTR] = MCHG; # UPDATE FWA OF DATA #
  451.  
  452. MCHG = NEXTPTR[MCUR]; # ADDRESS OF NEXT BUFFER #
  453. MCHKPTR; # CHECK IF IN RANGE OF MOVE #
  454. BACKPTR[MCHG] = MCUR; # UPDATE BACK POINTER #
  455.  
  456. TEST;
  457. MPRU:
  458.  
  459. # PRU BUFFER IN FREE CHAIN #
  460.  
  461. MCHG = PRUBBACK[MCUR] ; # PREVIOUS BUFF OF THIS NEW BUF #
  462. MCHKPTR ;
  463. PRUBDLFP[MCHG] = MCUR; # NEXT OF PREV IS CURRENT #
  464. MCHG = PRUBDLFP[MCUR]; # NEXT OF CURRENT BUFFER #
  465. MCHKPTR ;
  466. PRUBBACK[MCHG] = MCUR ; # BACK OF NEXT IS CURRENT #
  467.  
  468. # UPDATE FET POINTERS IN THE NEW BUFFER #
  469.  
  470. MPTR2 = PRUBFIRST[MCUR] ; # FIRST OF OLD BUFFER #
  471. MPTR3 = PRUBIN[MCUR] - MPTR2 ; # IN - FIRST = DIFFERENCE #
  472. PRUBFIRST[MCUR] = MCUR + PBHSIZE - 1 ;
  473. PRUBIN[MCUR] = MCUR + PBHSIZE + MPTR3 ; # IN = NEW FIRST + DIF#
  474. MPTR3 = PRUBOUT[MCUR] - MPTR2 ; # OUT - FIRST = DIF #
  475. PRUBOUT[MCUR] = MCUR + PBHSIZE + MPTR3 ; # OUT = NEW FIRST+DIF #
  476. MPTR3 = PRUBLIMIT[MCUR] - MPTR2 ; # DEFERRENCE OF LIMIT #
  477. PRUBLIMIT[MCUR] = MCUR + PBHSIZE + MPTR3 - 1;
  478.  
  479. #
  480.   PRU CHAIN HAS BEEN SET UP FROM A LIST STRUCTURE, THEREFORE THE
  481.   FORWARD OF CHAIN IS SAME AS THE (PTR OF LIST+1), EXCEPT THE FST
  482.   BUFFER IN THE LIST, PTR OF LIST POINTING BACK TO THE OWNNING
  483.   BUFFER ( SEE MSETPTR ).
  484.   I.E. - IF PRUBDLFP OF MOVED BUFFER IS ZERO, MEANS THAT IT IS THE
  485.   LAST BUFFER IN LIST. AND THIS BUFFER BELONGED TO PIT CHAIN
  486.   THEN UPDATE THE LAST LIMBO POINTER IN PIT, THE PIT ENTRY
  487.   SLOTH IS POINTED BACK BY THIS PRUBDLFP ( SEE MSETPTR ).
  488.   - IF PRUBDLFP OF MOVED BUFFER IS NON-ZERO, AND NOT EQUAL TO
  489.   FORWARD PTR OF DATA RING THEN IT IS THE FIRST BUFFER OF
  490.   THE LIST. UPDATE THE PCBPTR ENTRY OF INTERLOCK TABLE OR FST
  491.   LIMBO PTR OF PIT ENTRY. THIS ENTRY ALSO IS POINTED BY
  492.   THE CURRENT PRUBDLFP.
  493. #
  494.  
  495. IF PRUBFSTB[MCUR] # FIRST BUFFER MARK IS TRUE #
  496. AND PRUBDLFP[MCUR] NQ 0
  497. THEN
  498. BEGIN # THIS MOVED BUFFER IS THE FST#
  499. P<ADDRWORD> = PRUBDLFP[MCUR] ; # UPDATE THE OWNNING BUFFER #
  500. # OWNNING NOW POINTS TO NEW BF#
  501. END
  502. TEST ;
  503.  
  504. END
  505.  
  506.  
  507. END
  508. TERM
cdc/nos2.source/nam5871/majptr.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator