SPL,L,M,O,T,C NAME ENDR(8) "REV G 770415" ! ! END RECORD PROCESSOR ! LET BPRC1,BPRC0 BE LABEL,EXTERNAL LET .BKUP,NXTI,NAMX,UNDX1,EXTX1 BE INTEGER,EXTERNAL ! DECLARE 'USED' BASE PAGE LINKS STACK, CONTAINING THE ! LINKS WHICH WERE ALLOCATED FROM THE "FREE" BASE PAGE LINKS ! STACK, BUT WHICH WILL NOT NECESSARILY BE USED ON THE SECOND ! PASS. LET UFREB BE INTEGER,EXTERNAL LET ABINY BE INTEGER,EXTERNAL ! ENDR: SUBROUTINE(PLGTH,LENTH,NCPL1,NCPL2,LGB1,NBLK1,REV,\ TDIFF,RREC,RRS,ROFF,AREC,\ ARS,AOFF,.SAVE,OFREB,PBASE,PLEN7,BINY2,NXTII)GLOBAL LET BINY BE INTEGER(60),EXTERNAL LET SWTCH,BLNK,STPRG,MOVE.,POSN.,RVERF,\ PRENT,OCTAQ,EXEC,DIAG,PBPLK BE SUBROUTINE,EXTERNAL LET PRT BE SUBROUTINE LET LOCC,BPLOC,LISTO,GUESS,SEC,NBPLK,ERR,MAXAB,XMAXA,ERCO,\ NXTPG,LWAM1,LWABP,LSTLU,.POSN,DCB4,DCBB4,FREBE,NGESS,XBPLK,\ RIC,XGESS,XSEC,BINY,LSTLU BE INTEGER,EXTERNAL LET B76,IWPP,ISTR,MAX BE FUNCTION,EXTERNAL LET ICP,IWP,STAK BE PSEUDO,EXTERNAL ! CALL SWTCH BIN17_[BIN13_ABINY+12]+4 IF PLGTH<0 THEN PLGTH_LENTH !USE ACTUAL LENGTH IF COMPILER-GENERA ! ! IS BACKUP NECESSARY? ! NOT PERFORMED IF INPUT OR OUTPUT FILE NON-DISC, OR IF ! SECOND PASS ALREADY DONE, OR IF GUESS AREA COMPLETELY USED. ! IF NGESS=NCPL1 THEN GOTO ENDR1 !GUESS AREA ALL USED. IFNOT .BKUP THEN GOTO ENDR1! THIS IS THE SECOND PASS IFNOT$(DCB4+2) THEN GOTO ENDR1 !INPUT FILE NON-DISC IFNOT $(@DCBB4+2) THEN GOTO ENDR1 !"OUTPUT " " " ! ! BACKUP PASS CALLED FOR. BACKUP POINTERS AND REPOSITION INPUT ! AND OUTPUT FILES. ! .BKUP_0 CALL $(.POSN)($DCB4,ERR,RREC,RRS,ROFF)!POSITION R.B. FILE CALL POSN.(DCBB4,ERR,AREC,ARS,AOFF)!" ABS. FILE X_UNDX1 !BACKUP TEMPORARY UNDEFINEDS AND FIXUPS ALWAYS DO[I1_IWP(X)?[GOTO E1];REF1_IWP(X);FIX_IWP(X);\ CALL STPRG($(REF1 OR 7)); $REF1_100000K] ! E1: CALL MOVE.(.SAVE,NBPLK,9) $XBPLK_100000K; CALL STPRG($(XBPLK OR 7)) PBASE,LOCC_LOCC-[TDIFF_NGESS-NCPL1]! BACK DOWN LOCC NGESS_NCPL1;NCPL1,NCPL2_0 ! CALL STPRG(GUESS); CALL STPRG(SEC); CALL STPRG(FREBE) ALWAYS DO \ BE SURE ALL LINKS TAKEN FROM "FREE BASE PAGE CALL PBPLK ( STAK(UFREB)? [GOTO E3] , 0) ! ARE CLEARED TO ZERO. E3: GUESS_ISTR(XGESS); IWP(XGESS)_LOCC-NGESS SEC_ISTR(XSEC); IWP(XSEC)_[PLEN7_PLGTH]+LOCC NXTPG_[XPAGE_B76(LOCC)]+2000K IF LGB1 THEN[IWP(XBPLK)_-1; IWP(XBPLK)_BPLOC+LGB1] ALWAYS DO[STAK(FREBE)_STAK(OFREB)?[GOTO E2]] ! ! GET 1ST DBL OR END RECORD ! E2: CALL RVERF IF RIC<3 THEN GOTO E2 IF RIC=4 THEN GOTO E2 GOTO BPRC1 !GO GET PROPER RECORD PROCESSOR ! ENDR1: CALL STPRG(UFREB) ! GET RID OF 'USED' LINKS STACK. BINY2_$(ABINY+1) !SAVE WORD 2 OF END RECORD NXTII_$NXTI IFNOT(LISTO AND 2) THEN GOTO ENDRC CALL BLNK (BINY,40) X1_0;X_NAMX ALWAYS DO\ MOVE NAME AND COUNT CHARACTERS [C_ICP(X)?[GOTO EN01];\ IF X1 AND 1 THEN \ODD-NUMBERED CHAR. $NXTI_($NXTI AND 77400K)OR C,\MAKE SURE BUFFER IS BLANK-FILLED ELSE[NXTI_NXTI+1;$NXTI_C-<8 OR 40K];\ X1_X1+1] ! ! PUT IN REVISION CODE, IF ANY ! EN01: NXTI_NXTI+1 ! SKIP OVER TIME PARAMETERS ! T_REV; REPEAT 8 TIMES DO I_IWP(T)?[GOTO EN00] ! ! IF NAM HAS EVEN # CHARS, PUT LEADING BLANK AHEAD OF REV CODE. ! IFNOT (X1 AND 1) THEN [X1_X1+2; NXTI_NXTI+1] ALWAYS DO[$NXTI_IWP(T)?[GOTO EN00];\ X1_X1+2; NXTI_NXTI+1] EN00: IF X1>8 THEN\ [IF (LISTO AND 2) THEN CALL PRT(10+X1)] CALL OCTAQ($BIN13,LOCC) ! ENDRC: X_GUESS; FS_SEC G_IWP(X)?(0) !ADDRESS 1ST WORD GUESS AREA. LG_G+NCPL1-1 !LAST WORD OF GUESS AREA. FS_IWP(FS)?(0) !ADDRESS 1ST WORD OF SECONDARY AR X1_[LOCC_LOCC+PLGTH]-1 !LAST ADDRESS OF PROGRAM CALL OCTAQ($BIN17,X1) !CONVERT IT TO OCTAL CALL OCTAQ($(ABINY+20),BPLOC) NXTPG_B76([LOCC_LOCC+NCPL2]+2000K) BPLOC_BPLOC+LGB1+NBPLK-NBLK1 CALL OCTAQ($(ABINY+24),BPLOC-1) IF (LISTO AND 2) THEN CALL PRT(56) ! ! CHECK IF 'LINKS' OPTION SELECTED, AND IF SO, PRINT OUT LIMITS ! FOR GUESS AND SECONDARY AREAS. ! IF (LISTO AND 20K) THEN\ PRINT GUESS,SECONDARY AREA LIMITS [IF NCPL1 THEN\ [ CALL OCTAQ($BIN13,G); CALL OCTAQ($BIN17,LG);\ CALL PRT(38)]; IF NCPL2 THEN\ [IFNOT NCPL1 THEN CALL PRT(1);\PRINT BLANK LINE CALL OCTAQ($BIN13,FS); CALL OCTAQ($BIN17,LOCC-1);\ CALL PRT(38)]] ! ! CHECK IF MEMORY OVERFLOWED. ! XMAXA_MAX(XMAXA,LOCC) IF XMAXA>LWAM1 THEN CALL DIAG(8,NAMX) IF MAXAB>LWABP THEN CALL DIAG(9,NAMX) !BP OVERFLOW IF ERCO THEN CALL DIAG(ERCO,NAMX) CALL STPRG(EXTX1) RETURN ! END PRT: SUBROUTINE(PRT1) !OUTPUT PRINT LINE:PRT1=#CHARS. I_(PRT1+1)>-1 CALL EXEC(2,LSTLU,BINY,I) !OUTPUT PRINT LINE TO COREMAP FILE CALL BLNK(BINY,I) RETURN END END END$