cdc:nos2.source:nam5871:nppct
Table of Contents
NPPCT
Table Of Contents
- [00025] PRGM NPPCT
- [00101] PROC BLINK
- [00102] PROC ABORT
- [00103] PROC LOCLLCB
- [00104] PROC LOCNCNT
- [00105] PROC OVLCALL
- [00106] PROC MCLRIL
- [00107] PROC MGETS
- [00108] PROC MRELS
- [00109] PROC MSETIL
- [00110] PROC OSREQ
- [00111] PROC HCSTTP
- [00112] PROC NRCSSTP
- [00113] PROC XTRACE
Source Code
- NPPCT.txt
- *DECK NPPCT
- USETEXT NIPDEF
- USETEXT AHEADER
- USETEXT PT
- USETEXT TNT
- USETEXT NBT
- USETEXT DRHDR
- USETEXT AT
- USETEXT OVERLAY
- USETEXT PARAMP
- USETEXT PARAMS
- USETEXT ACB
- USETEXT ACNT
- USETEXT LLCB
- USETEXT NCNT
- USETEXT PCNB
- USETEXT PIT
- USETEXT PWL
- USETEXT ACNB
- USETEXT NCNB
- USETEXT RELFILE
- USETEXT ACKHEAD
- USETEXT STATTAB
- USETEXT SUPMSG
- PRGM NPPCT; # PROCESS A PRU CONNECTION TERMINATION #
- STARTIMS;
- #
- *1DC NPPCT
- *
- * 1. PROC NAME AUTHOR DATE
- * NPPCT J.C. LEE 80/04/01
- * A.BEN-ARTZI 82/02/18
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * PROCESS A PRU-CONNECTION-TERMINATED WORKLIST
- *
- * 3. METHOD USED.
- * GET BUFFER FOR A NCNB
- * FORMAT NETWORK NCNB FROM PCNB
- * UPDATE CONNECTION-S CONNECTION TABLE ENTRY
- * DELINK PCNB FROM PCNB RING
- * RELEASE ALL PWL-S IN ICMD AND CMD WORKLIST QUEUE
- * RELEASE ALL PWL-S IN PWL RING THAT BELONGS TO THE CONNECTION
- * RELEASE ANY QUEUE FILE ASSOCIATED WITH THE PRU CONNECTION
- * LINK PP REQUEST PARAMETER BLOCK TO PP CALL RING
- * RELEASE PCNB
- * RELEASE PRU-CONNECTION-TERMINATED WORKLIST SPACE
- * A SPECIAL CASE IS CONSIDERED:
- * IF WE CAME AFTER EST/OFF CASE (LLCBWOF SET)
- * WE RELEASE LLCB AND SEND REG/CP/U TO PIP
- *
- * 4. ENTRY PARAMETERS.
- * PARAMP1 PRU WORKLIST ADDRESS
- * PARAMP2 PRU-QCB ADDRESS
- *
- * 5. EXIT PARAMETERS.
- * PARAMP2 NEW NCNB ADDRESS
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * AT APPLICATION TABLE
- * DRHDR BUFFER HEADER WORD TEMPLATE
- * LLCB LOGICAL LINK CONTROL BLOCK TEMPLATE
- * PIT PIP INTERFACE TABLE
- * NBT NCNB NCNT OPSIZE
- * OVERLAY PARAMP PCNB PT
- * NIPDEF ACB ACNB
- * PWL RELFILE PARAMS
- *
- * 7. ROUTINES AND OVERLAYS CALLED
- * MCLRIL CLEAR NIP/PIP INTERLOCK
- * MSETIL REQUEST NIP/PIP INTERLOCK
- * RELNCNB OVL RELEASE NCNB
- * RELLLCB OVL RELEASE LLCB
- * NCREGCP OVL SEND REG/CP
- * MGETS GET BUFFER
- * MRELS RELEASE BUFFER
- * OSREQ MAKE RA+1 CALL
- * XTRACE TRACE CALLS
- * LOCLLCB LOCATE AN LLCB
- * LOCNCNT LOCATE THE NCNT ENTRY
- * OVLCALL LOAD AND EXECUTE OVERLAY
- *
- * 8. DAYFILE MESSAGES.
- * NONE
- *
- * THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE OVLCALL.
- * WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO LOCATION RJMAIN
- * TO RETURN TO THE CALLING PROGRAM.
- *
- * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY
- *CALL OPSIZE
- *
- * THIS OVERLAY IS CALLED BY NCSTTP.
- #
- STOPIMS;
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC BLINK; # LINK MESSAGE TO DATA RING #
- PROC ABORT ;
- PROC LOCLLCB; # FIND LLCB #
- PROC LOCNCNT; # FIND NCNT ENTRY #
- PROC OVLCALL; # LOAD AND EXECUTE OVERLAY #
- PROC MCLRIL; # CLEAR NIP/PIP INTERLOCK #
- PROC MGETS; # GET A BUFFER #
- PROC MRELS; # RELEASE BUFFER #
- PROC MSETIL; # REQUEST NIP/PIP INTERLOCK #
- PROC OSREQ; # MAKE RA+1 CALL #
- PROC HCSTTP ; # HOST SIDE STATE TABLE #
- PROC NRCSSTP ; # CALL SSTP AND PROCESS REASON CODE #
- PROC XTRACE; # TRACE CALLS #
- LABEL RJMAIN; # RETURN ADDRESS #
- END
- #
- LOCAL VARIABLES
- #
- ITEM
- BSN ,
- HN , # HOST NODE OF CONNECTION #
- PCNBAD, # PCNB ADDRESS #
- FOUND B, # FOUND FLAG #
- NCNTEAD, # NCNT ENTRY ADDRESS #
- NBIND,
- ACNBAD, # ACNB ADDRESS #
- ACBAD, # APPLICATION ACB ADDRESS #
- NEXTBLK, # NEXT BLOCK IN RING #
- LASTBLK, # PREVIOUS BLOCK IN RING #
- PRUCN, # PRU CONNECTION NUMBER #
- PCNFNT, # QUEUE FILE-S FNT POINTER #
- PCNLFN C(7), # QUEUE FILE-S LFN #
- PITIDX, # PIT ENTRY INDEX #
- BUFADDR, # BUFFER ADDRESS #
- PWLADDR, # PWL ADDRESS #
- INDEX, # NPU FRONT-END INDEX #
- IMMOPWL , # LOC OF PCNB IMMO PWL #
- DVT, # DEVICE TYPE #
- ACKQSIZE, # SIZE OF ACK QUEUE #
- ACKQBUF, # BUFFER FOR ACK QUEUE #
- I ,
- LLCBAD; # LLCB ADDRESS #
- BASED ARRAY PRUNIPWD S(1); # TEMPLATE FOR NIP WORD IN PIT #
- BEGIN
- ITEM PRUNIPMFB U(0,00,06); # MINIMUM NO OF PRU BUFS #
- ITEM PRUNIPMAB U(0,06,06); # MAXIMUM NO OF PRU BUFS #
- ITEM PRUNIPNCA U(0,12,12); # CURRENT NO OF BUFFERS ASSIGNED#
- ITEM PRUNIPNC U(0,24,12); # CURRENT NO OF PRU CONNECTIONS #
- ITEM PRUNIPFPB U(0,42,18); # ADR OF FIRST BUF IN FREE CHAIN#
- END
- # ******************************************************************** #
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("NPPCT") ;
- CONTROL FI;
- PWLADDR = PARAMP1; # PWL ADDRESS #
- PCNBAD = PARAMP2; # PCNB ADDRESS #
- P<PCNB> = PCNBAD; # PCNB ADDRESS #
- HN = PCNBHN[0] ;
- LOCLLCB(HN,PCNBTN[0],LLCBAD) ;
- P<LLCB> = LLCBAD ;
- LOCNCNT(LLCBAD,PCNBCN[0],NCNTEAD) ;
- P<NCNT> = NCNTEAD;
- ACNBAD = PCNBACNB[0]; # ACNB ADDRESS #
- P<ACNB> = ACNBAD;
- ACBAD = ATACBA[ATHSIZE + ACNBAN[0] - 1]; # ACB ADDRESS #
- P<ACB> = ACBAD; # ACB ADDRESS #
- #
- GET BUFFER FOR NCNB
- #
- MGETS(NCNBSIZE, BUFADDR, TRUE);
- ACNBNCNB[0] = BUFADDR; # RESET NCNB ADDRESS #
- #
- FORMAT NCNB FROM PCNB
- #
- P<NCNB> = BUFADDR; # NCNB ADDRESS #
- NCNBID[0] = NCNBIDVALUE; # NCNB BLOCK ID #
- NCNBR0[0] = PCNBR0[0] ; # COPY REST OF WORD ZERO #
- NCNBR1[0] = PCNBR1[0] ; # COPY BEGINING OF WORD ONE #
- NCNBACNB[0] = ACNBAD; # ACNB ADDRESS #
- NCNBNBTE[0] = PCNBNBTE[0]; # NBT ENTRY INDEX #
- NCNBTNAM[0] = PCNBTNAM[0]; # TERMINAL NAME #
- NCNBSTS[0] = PCNBSTS[0] ;
- PRUCN = NCNBCN[0]; # PRU CONNECTION NUMBER #
- P<LLCB> = LLCBAD; # LLCB ADDRESS #
- MSETIL(LLCBAD); # REQUEST NIP/PIP INTERLOCK #
- # RELEASE QUEUE FILE OR LOCAL FILE ASSOCIATED WITH THIS CONNECTION,
- LINK PP REQUEST PARAM BLOCK TO PP CALL RING
- #
- P<DRHDRWD> = 0 ;
- DVT = PCNBDT[0] ;
- NEXTBLK = PCNBPCFP[0] ; # SAVE NEXT PCNB IN CHAIN #
- LASTBLK = PCNBPCBP[0] ; # AND THE LAST IN CHAIN #
- IMMOPWL = LOC(PCNBIMMO[0]) ; # SAVE IMMO PWL FOR LATER USE #
- IF PCNBFILE[0] NQ 0
- THEN
- BEGIN # THERE IS STILL FILE NEED TO BE #
- # RETURN TO APPLICATION OR SYSTEM QUEU#
- IF DVT EQ DT$INTA # INTRA-HOST A-A #
- OR DVT EQ DT$INTE # INTER-HOST A-A #
- THEN
- BEGIN # A TO A CONNECTION #
- I = 0 ;
- NRCSSTP(P<ACB>,PWLADDR,PCNBFNTO[0],I) ;
- IF I NQ 0
- THEN
- BEGIN # ERROR OR NON-ZERO RETURNED RC FROM#
- # SST CALL, PWL HAS BEEN RE-CHAINED #
- # IN PWL RING. #
- PARAMP4 = I ; # SET FLAG TO CALLER #
- MRELS(P<NCNB>) ; # NO NEED FOR THIS NCNB YET. #
- ACNBNCNB[0] = P<PCNB> ; # RESTORE THE PCNB IN ACNB #
- MCLRIL; # RELEASE NIP/PIP INTERLOCK #
- GOTO RJMAIN ;
- END
- END # A TO A CONNECTION #
- ELSE
- BEGIN # NOT A-A CONNECTION #
- PCNLFN = PCNBLFN[0]; # QUEUE FILE-S LFN #
- PCNFNT = PCNBFNTO[0]; # QUEUE FILE-S FNT PTR #
- FOR INDEX=PCNBAD+BLKHSIZE STEP 1 UNTIL PCNBAD+PARSIZE
- DO # CLEAR THE DSP/CIO PARAMETER BLOCK #
- CMWORD[INDEX] = 0;
- P<PARAMB> = PCNBAD + BLKHSIZE; # PARAMETER BLOCK ADDRESS #
- FET$LFN[0] = PCNLFN; # LOCAL FILE NAME #
- REQWORD[0] = 0; # ZERO PP CALL WORD #
- PADDR[0] = P<PARAMB>;
- IF DVT EQ DT$CR
- THEN # AN INPUT-QUEUE FILE ATTACHED #
- BEGIN # ISSUE CIO CALL TO RETURN FILE #
- PPNAME[0] = PP$CIO;
- BLKID[PCNBAD] = CPCRIDVALUE;
- FET$STAT[0] = CIORETURN; # CIO FUNCTION REQUEST CODE #
- FET$UP[0] = TRUE; # SET USER PROCESSING FLAG #
- FET$EP[0] = TRUE; # SET ERROR PROCESSING FLAG #
- FET$CIOFNT[0] = PCNFNT; # FNT POINTER #
- END
- IF DVT EQ DT$LP OR
- DVT EQ DT$CP OR
- DVT EQ DT$CLP OR # CDCNET LINE PRINTER #
- DVT EQ DT$PL
- THEN # AN OUTPUT-QUEUE FILE ATTACHED #
- BEGIN # ISSUE DSP CALL TO DISPOSE FILE#
- PPNAME[0] = PP$DSP;
- BLKID[PCNBAD] = DPCRIDVALUE;
- FET$FLAGS[0] = DSPNODAYFI; # SET NO DAYFILE MESSAGE FLAG #
- FET$DSPFNT[0] = PCNFNT; # FNT POINTER #
- END
- OSREQ(REQWORD[0]) ; # ISSUE CIO OR DSP CALL #
- NEXTPTR[PCNBAD] = LOC(PCRHEAD[0]);
- IF PCRHEAD[0] EQ 0
- THEN # EMPTY PP-CALL-RING #
- BEGIN
- BACKPTR[PCNBAD] = LOC(PCRTAIL[0]);
- PCRHEAD[0] = PCNBAD;
- END
- ELSE # ADD NEW REQ-BLOCK TO PCR #
- BEGIN
- BACKPTR[PCNBAD] = PCRTAIL[0];
- NEXTPTR[PCRTAIL[0]] = PCNBAD;
- END
- PCRTAIL[0] = PCNBAD;
- PCNBAD = 0;
- END # NOT A-A CONNECTION #
- END # THERE IS STILL FILE NEED TO BE #
- # BUILD AN ACKNOWLEDGE QUEUE #
- CONTROL IFEQ DEBUG,1;
- IF NCNTOOB[0] GR NCNBDBL[0]
- THEN
- ABORT(0,0) ;
- CONTROL FI ;
- ACKQSIZE = NCNBDBL[0] + ACKHSIZE; # SIZE OF ACK QUEUE #
- MGETS(ACKQSIZE,ACKQBUF,TRUE); # ALLOC ACK QUEUE #
- P<ACKHEAD> = ACKQBUF; # BASE ACK QUEUE #
- ACKQID[0] = ACKQIDVALUE; # SET BLOCK ID #
- ACKNCNB[0] = P<NCNB>;
- NCNBACKQ[0] = ACKQBUF; # ADDRESS OF ACK QUEUE #
- NCNBAKIN[0] = 0 ; # INITIALILZE THE ACK QUEUE #
- NCNBAKOU[0] = 0 ; # IN = OUT, ASSUMING EMPTY #
- BSN = NCNTNOB[0] - 1 ;
- IF BSN EQ 0
- THEN
- BSN = 7 ;
- NCNBDBSN[0] = BSN ; # LAST BSN WAS SENT #
- NCNBNBO[0] = NCNTOOB[0] ;
- IF NCNTOOB[0] NQ 0
- THEN
- BEGIN # STILL OUTSTADING BACK WAITING #
- NCNBAKIN[0] = NCNTOOB[0] ; # SET ACKNOWLEDGE QUEUE IN PTR #
- IF NCNBAKIN[0] EQ NCNBDBL[0]
- THEN # ACKNOWLEDGE QUEUE IS FULL #
- BEGIN
- NCNBAKIN[0] = 0; # SET IN PTR FOR BUFFER FULL CASE #
- END
- FOR I = NCNTOOB[0] - 1 STEP -1 WHILE I GQ 0
- DO
- BEGIN # BUILD ACK QUEUE ACCORDING TO OOB FROM PIP#
- P<AHEADER> = P<ACKHEAD> + ACKHSIZE + I ;
- ABHABT[0] = 0 ; # FLAG FOR BACK CHECKING #
- ABHADR[0] = BSN ; # FAKING THIS ENTRY WITH THIS BSN #
- BSN = BSN - 1 ; # NEXT BSN #
- IF BSN EQ 0
- THEN
- BEGIN
- BSN = 7 ;
- END
- END # BUILD THE ACK QUEUE #
- END # STILL OUSTANDING BACK WAITING #
- CONTROL IFEQ STAT,1; # STATISTICS OPTION ON #
- ST$AQ = ST$AQ + 1; # INCREM NO OF ACK QUEUES #
- CONTROL FI;
- #
- UPDATE PRU CONNECTION-S ENTRY IN NCNT
- #
- NCNTBSS[0] = 0 ; # CLEAR BATCH STREAM STATE #
- NCNTBHS[0] = BHSIVT;
- NCNTNCNB[0] = BUFADDR; # UPDATE NCNB ADDRESS #
- #
- DELINK PCNB FROM PCNB-RING
- #
- FOUND = FALSE;
- FOR INDEX = 0 STEP NBTFETNO WHILE NOT FOUND
- DO # SEARCH FOR HOST NODE #
- BEGIN
- IF NBTIUF[INDEX] AND NBTHN[INDEX] EQ NCNBHN[0]
- THEN # NBT FOR THE HOST NODE FOUND #
- FOUND = TRUE; # FLAG TO STOP -FOR- LOOP #
- NBIND = INDEX ;
- END
- IF NEXTBLK EQ LASTBLK
- THEN # PCNB IS ONLY MEMBER #
- BEGIN
- NBTPCRF[NBIND] = 0; # CLEAR PCNB POINTERS IN NBT #
- NBTPCRB[NBIND] = 0;
- END
- ELSE
- BEGIN
- P<PCNB> = 0;
- IF LASTBLK EQ LOC(NBTFIRST[NBIND])
- THEN # THIS IS THE FIRST MEMBER #
- NBTPCRF[NBIND] = NEXTBLK;
- ELSE
- PCNBPCFP[LASTBLK] = NEXTBLK;
- IF NEXTBLK EQ LOC(NBTFIRST[NBIND])
- THEN # THIS IS THE LAST MEMBER #
- NBTPCRB[NBIND] = LASTBLK;
- ELSE
- PCNBPCBP[NEXTBLK] = LASTBLK;
- P<PCNB> = PCNBAD; # RESOTRE PCNB ADDRESS #
- END
- MCLRIL; # CLEAR NIP/PIP INTERLOCK #
- #
- RELEASE ALL PWL-S IN ICMD AND CMD WORKLIST QUEUE
- #
- FOR INDEX = ICMDQP STEP 1 UNTIL CMDQP DO
- BEGIN
- P<PWLHDR> = IMMOPWL + INDEX ; # WORKLIST QUEUE WORD #
- NEXTBLK = PWLNEXT[0]; # FIRST PWL IN WORKLIST WUEUE #
- FOR NEXTBLK = NEXTBLK WHILE NEXTBLK NQ 0 DO
- BEGIN
- P<PWLHDR> = NEXTBLK; # CURRENT PWL IN QUEUE #
- NEXTBLK = PWLNEXT[0]; # ADDRESS OF NEXT PWL IN QUEUE #
- MRELS(P<PWLHDR>); # RELEASE CURRENT PWL #
- END
- END
- #
- DECREMENT ACTIVE PRU CONNECTION CO0NT IN LOGICAL-LINK PCB
- AND INTERLOCK TABLE
- #
- PITIDX = LLCBPITIDX[0]; # PIT ENTRY INDEX #
- LLCBNPC[0] = LLCBNPC[0] - 1; # UPDATE COUNT IN LLCB #
- ACBNPRU[0] = ACBNPRU[0] - 1; # UPDATE COUNT OF PRU CONNEC. #
- #
- RELEASE ALL PWL-S IN PWL RING THAT BELONG TO THIS CONNECTION
- #
- NEXTBLK = ACBPWLFP[0]; # PWL RING POINTER #
- IF NEXTBLK EQ PWLADDR
- THEN # NO NEED TO DELINK FIRST ENTRY #
- BEGIN # IN ACB PWL RING BECAUSE #
- # XSACB WILL DO IT. #
- P<PWLHDR> = NEXTBLK; # PWL CURRENTLY BEING PROCESSED #
- PWLID[0] = PWLIDVALUE; # RESTORE PWL BLOCK ID IF ALTERD#
- NEXTBLK = PWLNPWLFP[0]; # NEXT ENTRY IN ACB PWL IF ANY #
- END
- FOR NEXTBLK = NEXTBLK WHILE NEXTBLK NQ 0 AND
- NEXTBLK NQ LOC(ACBPWLFP[0]) DO
- BEGIN
- P<PWLHDR> = NEXTBLK; # PWL ADDRESS #
- NEXTBLK = PWLNPWLFP[0]; # ADDRESS OF NEXT PWL IN RING #
- LASTBLK = PWLNPWLBP[0]; # ADDRESS OF PREVIOUS PWL #
- IF (PWLTN[0] EQ NCNBTN[0]) AND # TERMINAL NODE MATCHES #
- (PWLHN[0] EQ NCNBHN[0]) AND # HOST NODE MATCHES #
- (PWLCN[0] EQ NCNBCN[0]) # CONNECTION NUMBER MATCHES #
- THEN # FOUND PWL FROM THIS CONNECTION#
- BEGIN # DELINK PWL FROM PWL RING #
- MRELS(P<PWLHDR>); # RELEASE PWL SPACE #
- IF ACBPWLFP[0] EQ ACBPWLBP[0]
- THEN # ONLY PWL IN RING #
- BEGIN
- ACBPWLFP[0] = 0; # ZERO PWL RING PTR-S IN ACB #
- ACBPWLBP[0] = 0;
- END
- ELSE # MORE THAN ONE PWL IN RING #
- BEGIN # UPDATE RING POINTERS #
- NEXTPTR[LASTBLK] = NEXTBLK;
- BACKPTR[NEXTBLK] = LASTBLK;
- END
- END
- END
- #
- RELEASE PCNB BUFFER
- #
- IF PCNBAD NQ 0
- THEN
- BEGIN # RELEASE PCNB AND LIMBO BUF IF NEED#
- INDEX = PCNBPBS[0] ; # SAVE THE TYPE OF PRU #
- P<PRUNIPWD> = LOC(PITW5[PITIDX])-1;
- PRUNIPNC[INDEX] = PRUNIPNC[INDEX] - 1; # DECRE NO OF PRU CONS #
- MRELS(PCNBAD) ;
- END # RELEASE #
- #
- RELEASE PRU-CONNECTION-TERMINATED WORKLIST SPACE
- #
- IF NCNTREL[0] # IF THIS NCNB IS TO BE RELEASED #
- THEN
- BEGIN
- #
- FIRST RELEASE THIS NCNB
- #
- RCBRK = RCCB"LLF" ; #RC = LOGICAL LINK FAILED #
- PARAMS1 = BUFADDR ;
- NCNTREL[0] = FALSE; # RESET THE NCNB-TO-BE-RELEASED FLAG #
- OVLNAME = RELNCNBP;
- OVLCALL ;
- # INFORM THE HOST SIDE THAT THIS CONNECTION IS TERMINATED, AND
- THE NETWORK IS IS CLEANED UP ALREADY.
- #
- HCSTTP(P<ACB>,ACNBACN[0],NWTC,0) ;
- #
- NOW CHECK IF WE CAN RELEASE THE LLCB TOO
- #
- IF LLCBWOF[0] AND LLCBNPC[0] EQ 0
- THEN # MAY NEED TO RELEASE LLCB #
- BEGIN
- LLCBWOF[0] = FALSE; # CLEAR WAITING FOR PIP FLG #
- IF LLCBNC[0] EQ 0
- THEN # NO CNS LEFT IN LLCB #
- BEGIN
- PARAMS2 = LLCBAD ;
- OVLNAME = RELLLCBP ;
- OVLCALL ;
- IF NBTREGW[NBIND] NQ 0 # IF DELETION DUE TO REG/CP #
- THEN
- BEGIN
- NBTREGW[NBIND] = NBTREGW[NBIND] - 1 ; # LLCB(S) REMAINING #
- IF NBTREGW[NBIND] EQ 0 # IF LAST LLCB DELETED #
- THEN
- BEGIN # SEND REG/CP/R TO PIP #
- PARAMS1 = HN ;
- PARAMS2 = 1 ; # FLAG TO SET RESPONSE BIT #
- OVLNAME = NCREGCPP ;
- OVLCALL ;
- END
- END
- END
- END
- PARAMP2 = 0 ; # SIGNAL FOR NO NCNB #
- END
- ELSE
- #
- SEND BACK THE NEW NCNB ADDRESS
- #
- PARAMP2 = BUFADDR ;
- PARAMP1 = 0 ;
- GOTO RJMAIN;
- END
- TERM
cdc/nos2.source/nam5871/nppct.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator