SPL,L,M,O,T,C NAME SXLNM(8) "REV G 770321" ! LET EXCPT BE CONSTANT(100454K) !"EXCEPT" LET FGESS,SGESS BE SUBROUTINE,DIRECT LET DIAG,STPRG,SCOMM,.LOCF BE SUBROUTINE,EXTERNAL LET SVLU,IWP,STAK BE PSEUDO,EXTERNAL LET GNNS,B76,STMA,ISTR,MIN BE FUNCTION,EXTERNAL ! SXLNM: SUBROUTINE(NAMX,NAMSX,PLGTH,PLEN7,REV,PAGE,NCPL1,\ NCPL2,LAPAG,LGB1,RREC,RRS,ROFF,AREC,\ ARS,AOFF,TDIFF,OFREB,SRCH,SRCHH,\ .SAVE,NBLK1,LENTH,XLWAC,XFWAC,XLCOM,PBASE,\ CBASE,BBASE,ENTRX)\ GLOBAL LET LOCC,BPLOC,RLNGH,NXTI,LWABP,FWAC,LWAC,NXTPG,\ LCOMM,UNDF1,LINKF,UNDX1,UNDFX,EXTX1,EXTX,\ BINYA,BPLKS,NBPLK,GUESS,NGESS,NLINK,.BKUP,ENTR1,\ ERCO,.LCAT,RIC,ERR,DCB4,DCBB4,FREBE,\ FWAM,XBPLK,XGESS,XSEC,SEC,XCOM,DFLCM BE INTEGER,EXTERNAL LET BPRC3 BE LABEL,EXTERNAL!EOF RETURN LABEL LET BPRC1 BE LABEL,EXTERNAL LET SWTCH,RVERF,STPRG,MOVE.,DIAG BE SUBROUTINE,EXTERNAL ! ! PROTECT AGAINST RELOCATION BELOW FWAM IF LOCC < FWAM THEN CALL DIAG(8,0) CALL SWTCH ! ! GET POSITION OF RELOCATABLE FILE CALL $(.LCAT)($DCB4,ERR,RREC,RRS,ROFF) ! GET POSITION OF ABS. FILE CALL .LOCF(DCBB4,ERR,AREC,ARS,AOFF) LENTH,TDIFF,OFREB,ERCO,GUESS,NGESS,SEC,NCPL1,\ DFLCM,NCPL2,CNTR_0 ! ! SEARCH UNDEFINED SYMBOLS STRING. IF NO UNDEFS, ! THEN IF ALSO SEARCHING, QUIT TO SAVE TIME(MAKE EOF RETURN) ! PTR_UNDF1 ALWAYS DO [ IF IWP(PTR)? \ NO UNDEFS. [ IF SRCHH = 1 THEN GOTO BPRC3,\ ELSE GOTO N0] \ THEN GOTO N0 ;\ REPEAT 2 TIMES DO T_IWP(PTR)] N0: SRCH_SRCHH;.BKUP_-1;CALL MOVE.(NBPLK,.SAVE,9) CALL RVERF IF RIC # 1 THEN CALL DIAG(1,0) !NO NAM RECORD NAMX_GNNS; T_NXTI+1 PTR_NAMSX NBLK1_NBPLK; XLWAC_LWAC; XFWAC_FWAC; XLCOM_LCOMM PLFLG_IWP(PTR)?[GOTO FP2]!SKIP MODULE NAME CHECK IF NONE GIVEN N1: IF PLFLG = EXCPT THEN[EXC_-1; GOTO N2] IF STMA(PLFLG,NAMX) THEN\ MATCH FOUND TO THIS MODULENAME [IFNOT EXC THEN GOTO FP2,ELSE GOTO SKIP1] N2: PLFLG_IWP(PTR)?[IF EXC THEN GOTO FP2,ELSE GOTO SKIP1] GOTO N1 ! SKIP MODULE SKIP1: SRCH_-1; GOTO FP9 !SET SKIPPING FLAG ! ! ! PROCESS REST OF NAM ************* !*** A NAM RECORD HAS BEEN READ, AND EITHER NO PROGRAMS HAVE !*** SPECIFICALLY BEEN NAMED, OR THIS NAM MATCHES ONE OF THOSE !*** GIVEN. CHECK MEMORY BOUNDS, MAINTAIN MAXIMUM COMMON LENGTH, !*** AND SET UP TO ATTEMPT LOADING. !*** FP2: PLEN7_[PLGTH_$T] AND 77777K; T_T+1 IF[LGB1_$T] THEN\ IF ORB DATA,START NEW BP LINKS SUBSTRING [IF LGB1<0 THEN CALL DIAG(13,NAMX),ELSE\ [IWP(XBPLK)_-1; IWP(XBPLK)_BPLOC+LGB1]] ! CHECK FOR BASE PAGE OVERFLOW. IF LGB1 THEN[IF BPLOC+LGB1> LWABP THEN CALL DIAG(9,NAMX) ] ! CHECK FOR MAXIMUM COMMON IF [XCOM_$([T_T+1])] THEN CALL SCOMM T_T+1 ! PROCESS REVISION CODE. ! THE REVISION CODE WILL HAVE IN IT ALL PARAMETERS BEYOND THE ! COMMON LENGTH. A_BINYA+RLNGH!GET END OF RECORD ADDRESS I_ISTR(REV) !INITIALIZE REVISION CODE STRING UNTIL T=A DO[IWP(I)_$T;T_T+1] ! MAKE GUESS AS TO PRIMARY AREA. F1: NXTPG_[PAGE_B76(LOCC)]+2000K!COMPUTE PAGE ADDRESSES IFNOT(LINKF AND 1) THEN GOTO FP3!BASEPAGE ONLY MODE IF PLGTH = -1 THEN[CALL SGESS?[GOTO FP3];FGESS;GOTO FP3] ! CHECK IF A GUESS AREA NEEDS TO BE CREATED IF PAGE=B76(LOCC+PLEN7) THEN GOTO FP1!NO PAGE CROSSING. SGESS?[A_NXTPG-LOCC;B_PLEN7-A;NGESS_(MIN((A>-1),B))>-2] FGESS FP1: SEC_ISTR(XSEC) IWP(XSEC)_LOCC+PLEN7 FP3: NXTPG_[PAGE_B76(LOCC)]+2000K LAPAG_B76(LOCC+PLEN7)!COMPUTE LASTPAGE THIS MODULE FP5: PBASE_LOCC; BBASE_BPLOC; CBASE_FWAC!SET RELOCATION BASES EXTX_ISTR(EXTX1); ENTRX_ISTR(ENTR1); UNDFX_ISTR(UNDX1) ! SAVE OLD STACK CONTENTS OF BASE PAGE LINKS STACK, IN CASE A ! BACKUP PASS IS CALLED FOR. PTR_FREBE ALWAYS DO[IFNOT $PTR THEN GOTO FP9;\ STAK(OFREB)_IWP(PTR)?[GOTO FP9]] FP9: CALL RVERF !GET NEXT RECORD. GOTO BPRC1 END SGESS: SUBROUTINE FEXIT,DIRECT IFNOT NLINK THEN FRETURN NGESS_SVLU(NLINK) RETURN END FGESS: SUBROUTINE DIRECT GUESS_ISTR(XGESS) IWP(XGESS)_LOCC LOCC_LOCC+NGESS RETURN END END END$