Google
 

Trailing-Edge - PDP-10 Archives - BB-D480C-SB_1981 - fortra.bwr
There are 10 other files named fortra.bwr in the archive. Click here to see a list.


This file contains warnings regarding FORTRAN V6.




1.0  FOROTS/FORLIB:

     1.  Transition from FORTRAN V5A to FORTRAN V6

         The version 6 FORTRAN system contains many  new  IO  keywords
         provided  for FORTRAN-77.  The subroutine calls generated for
         IO statements  by  the  version  6  compiler  are  hence  not
         understood by FOROTS version 5A.

         Therefore, note the following compatibility restriction:

         PROGRAMS COMPILED WITH THE VERSION 6 COMPILER MUST BE  LINKED
         WITH THE VERSION 6 FORLIB.

         This is the only restriction.  We have changed  the  name  of
         FOROTS   version  6  to  FOROT6.EXE  to  provide  an  orderly
         mechanism for  preventing  programs  linked  with  version  6
         FORLIB from using FOROTS version 5.  The version 6 FORLIB and
         FOROTS routines can handle code generated by the  version  5A
         compiler,  and  programs compiled with 5A and linked with the
         5A FORLIB will execute correctly  using  FOROTS  version  5A.
         Since FOROTS version 6 has a different name (FOROT6.EXE), you
         should merely keep FOROTS version  5A  (FOROTS.EXE)  in  your
         system area for this purpose.


         Recommended transition procedure:

         Keep current versions of FORTRAN, FOROTS, FORLIB,  FORDDT  on
         OLD:.

         Keep FOROTS version 5A as SYS:FOROTS.EXE

         To execute program with old FORTRAN system,

              .EXECUTE/OLD/COMPILE PROG


     2.  TWOSEG  pseudo-ops  have  been  used  in  FORLIB.   This   is
         necessary on TOPS-10 so that sharable FORTRAN programs can be
         run   execute-only.    This   change   has   the    following
         consequences:

         - Link version 4A will load FORLIB code and data into the low
         segment  as it does for FORTRAN programs.  LINK version 4A is
         required for this reason.

         - If you explicitly search FORLIB, say to get the SIN routine
         for  a  Macro  program, LINK will not load FORLIB's code into
         the low segment  by  default  unless  a  FORTRAN  program  is
                                                                Page 2


         present.     If    you    want    it   to,   you   must   say
         "SYS:FORLIB/SEARCH/SEGMENT:LOW".

         The  attached  LINK  patch  will  cause  LINK  to  load  with
         /SEGMENT:LOW as a default whenever FORLIB is searched.

     3.  If site-specific changes are made to modules of  FOROTS,  you
         may cause the PSECTs to overlap, which is fatal.  To fix this
         problem, F10OTS.CCL can be changed to move the PSECTS out  of
         the  way  of  each  other  (relocatable  PSECTs  are  not yet
         supported by LINK).   The  only  restriction  is  that  PSECT
         F.DATA must start on a page boundary.

         PSECT F.DATA must start at the same  place  as  PSECT  F.EES.
         LINK  4A(1220),  this  will  generate a PSECT overlap warning
         which can be ignored.


     4.  If you use RANDOM files in version 6 and do not  specify  the
         BUFFERCOUNT  parameter  in the OPEN statement, more memory is
         used than with version  5A.   This  is  because  the  default
         BUFFERCOUNT has been changed such that four pages are used in
         V6 where one was used in V5A.  This was done to increase  the
         performance  of these files.  However, if your program uses a
         lot of RANDOM files which are opened simultaneously  and  you
         want  to  keep  the  allocated  memory  size down, you should
         modify the OPEN statements in  the  program  to  include  the
         "BUFFERCOUNT=1" specifier.

     5.  In version 6, an OPEN statement specifying a  magnetic  tape,
         but  without  any  MODE  or  FORM  specifier, will default to
         FORM=FORMATTED (*).  Thus the blocksize specified will be  in
         characters,  whether or not the data transfer operations that
         follow are formatted or unformatted.   Thus  for  unformatted
         data  transfers,  the blocksize will be one-fifth of the size
         expected.

         (*) See "Future incompatibilities" section.




2.0  OVERLAYS

The following two patches are required in  OVRLAY.MAC  version  4A(50)
for overlayed programs to work correctly:


[this is OVRLAY edit 51]


on page 75, at LNKNO + 2 lines, replace
        PUSHJ   P,TIME          ;RUNTIME
with
        PUSHJ   P,RNTIME        ;[51] RUNTIME
                                                                Page 3




on page 78, at TIME, replace
TIME:   SPUSH   <T2,T3>
with
RNTIME: SPUSH   <T2,T3>



[this is OVRLAY edit 52]


on page 79, at RESTART + 20 lines, replace
        SKIPE   T2              ;GCVEC% RETURNS T2=0 IF PAT NOT AROUND
with
        SKIPLE  T2              ;[52] GCVEC% RETURNS T2 .LE. 0 IF PAT NOT AROUND



There exists a problem with loading an overlaid program  with  symbols
and  using  FOROTS  V6.   If  you  do  this and at runtime you get the
message:

%OVLSTS OTS reserved space too small


the suggested workaround is to not specify the /SYMSEG switch when the
program is loaded.  (Then the overlaid program will NOT be loaded with
symbols and it should execute correctly).

A patch will be published in the Software Dispatch in  early  1982  to
correct this problem in FOROTS's memory manager.



3.0  SORT

FOROTS version 6 now uses a MERGE.  UUO to merge  FSORT.EXE  into  the
high  segment,  rather  than  having SORT linked into the low segment.
There is a patch which must be inserted in FSORT before this mechanism
can work properly.  In the module SRTSTA.MAC, at initialization:

FILE 1)BAD:SRTSTA.MAC
FILE 2)GOOD:SRTSTA.MAC

1)8     IFN FTVM,<
1)              XMOVEI  P,STACK-1               ;[C20] SET UP STACK
1)      >
1)      IFE FTVM,<
1)              MOVE    P,[IOWD PDLEN,STACK]    ;[N21] SET UP STACK
1)      >
****
2)8     IFN FTOPS20,<
2)              XMOVEI  P,STACK-1               ;[C20] SET UP STACK
2)      >
                                                                Page 4


2)      IFE FTOPS20,<
2)              MOVE    P,[IOWD PDLEN,STACK]    ;[N21] SET UP STACK
2)      >
**************




4.0  DBMS


See the INSTALLATION GUIDE for specific instructions to build  FORTRAN
for  use  with DBMS.  See the end of this BEWARE file for the required
LINK patches.



5.0  QUASAR

QSRMAC.UNV has been included on the tape, since FOROTS interfaces with
QUASAR  with the CLOSE parameters (e.g.  'PRINT').  However, this is a
vanilla-flavored QSRMAC.UNV, using only the defaults specified in  the
released  version.  If site-specific parameters have been changed, and
especially if your site has changed the length  of  the  IPCF  packets
sent to QUASAR, you must substitute your own version of QSRMAC.UNV and
rebuild FOROTS (see the Installation Guide).




6.0  FUTURE INCOMPATIBILITIES

     1.  OPEN statement with no FORM specifier:

         In V6, if no FORM was specified,  FORMATTED  is  the  default
         unless  a  MODE  of  'BINARY' or 'IMAGE' was specified in the
         OPEN statement.  V6 allowed the program to do UNFORMATTED I/O
         even  though  the FORM was defaulted to FORMATTED, as long as
         the  only  I/O  done  to  the  file  after  it  was  open  is
         UNFORMATTED.

         In future versions of  FORTRAN,  the  default  FORM  will  be
         changed  to  UNFORMATTED  if  the  file has ACCESS of RANDOM,
         DIRECT, or RANDIN (otherwise the default form  will  continue
         to  be  FORMATTED).  This is necessary to support the FORTRAN
         77 standard.  In addition, future versions of FORTRAN may not
         allow  the  user to do FORMATTED or UNFORMATTED I/O to a file
         opened with an OPEN statement where the form was specified or
         defaulted to the opposite format.

         As a result, in future releases of FORTRAN, programs that  do
         the following sequence may get a run-time error:
                                                                Page 5


         1.  OPEN (u,ACCESS='RANDOM' or 'RANDIN' or 'DIRECT') with  no
             FORM specifier..
             ...then do FORMATTED I/O

         2.  OPEN (u,ACCESS=  anything  not  mentioned  above,  or  no
             ACCESS specifier) with no FORM specifier..
             ...then do UNFORMATTED I/O


         The fix is to modify the OPEN statement to include  the  FORM
         specifier.   Note that by doing this, your programs will also
         gain some tranportability  to  other  FORTRAN-77  systems  by
         conforming more closely to the standard.




7.0  PATCH TO NOT SUPPRESS LF AFTER "$" FORMAT.


FOROTS version 6 works the same way as FOROTS version 5A with  patches
and   FOROTS   version   4   with   regard   to   the  suppression  of
Carriage-return-Line-Feed after the "$" FORMAT character is used.  For
people  who prefer the way FOROTS version 5 and field image 5A worked,
we are supplying the patch necessary to make FOROTS 6 work that way.

FOROTS version 5 suppressed only the Carriage-return;  to suppress the
Linefeed  also  the next output format had to use the carriage-control
character "+".

The patch is as follows:

In module FORIO.MAC, at label NLF + 6, change:


    TXO T4,D%SICR+D%SILF    ;YES, SUPPRESS INITIAL CRLF OF NEXT LINE

to:

    TXO T4,D%SICR           ;YES, SUPPRESS INITIAL CR OF NEXT LINE




[end of FTN6.BWR]
                                                                Page 6


[SYMPTOM]
 
 
 
 
Undeserved LNKHCL errors when loading an overlaid program.  The two
most common cases are:
 
     1.  Loading  FORTRAN  programs   when   /OTS:NONSHARABLE   was
         specified.
 
     2.  Loading COBOL programs when /R was specified to COBOL.
 
 

                        **********


[DIAGNOSIS]
 
 
     1.  Normally, the FORTRAN compiler generates two-segment code.
         By  default,  LINK  ignores  the two segments, loading all
         code into the low segment, so that FOROTS  may  be  shared
         with other users at run time.  However, if /OTS:NONSHARABLE
         is specified, LINK sees no reason to continue forcing  all
         code  into the low segment.  This leads to LNKHCL messages
         in overlaid programs.
 
     2.  The COBOL compiler can be coaxed to  generate  two-segment
         code,  which  can then lead to LNKHCL messages in overlaid
         programs.
 
 

                        **********


[CURE]
 
Note  that  both  problems  can  by  solved  simply  by  specifying
/SEGMENT:LOW  in  the  proper  places  in  the  LINK  command line.
However, if the overlay structure is large  and  is  not  specified
with continuation lines, then this switch must be typed many times.
Also, overlays were only intended to work  with  all  nonroot  code
loaded into the low segment.  Therefore, for both of these reasons,
force /SEGMENT:LOW in  all  links  but  the  root  in  an  overlaid
program.
                                                                Page 7


[FILCOM]
File 1) DSKC:LNKHST.MAC[30,4507]        created: 1326 26-Oct-1979
File 2) DSKC:LNKHST.MAC[12,4700]        created: 1650 12-Nov-1979
 
1)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN 26-Oct-7
        9
1)      
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN 12-Nov-7
        9
2)      
**************
1)1     DECEVR==1225            ;DEC EDIT VERSION
1)      
****
2)1     DECEVR==1226            ;DEC EDIT VERSION
2)      
**************
1)6     SUBTTL  THE END
****
2)5     ;1226   DZN     12-Nov-79       SPR 20-13384
2)      ;       Default /SEGMENT:LOW in all non-root overlay links. This
         keeps users
2)      ;       from having to type it all the time, especially if /OTS:
        NONSHAR was
2)      ;       specified (/OTS:NONSHAR defaults to /SEGMENT:DEFAULT for
         FORTRAN
2)      ;       programs, frequently causing high segment code in non-ro
        ot links).
2)      ;       Routines: LNKOV1, LNKLOD
2)      
2)6     SUBTTL  THE END
**************


File 1) DSKC:LNKLOD.MAC[30,4507]        created: 1448 30-Oct-1979
File 2) DSKC:LNKLOD.MAC[12,4700]        created: 1710 12-Nov-1979
 
1)1     SUBTTL  D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN     26-Oct-7
        9
1)      
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN     12-Nov-7
        9
2)      
**************
1)1     DECEVR==1225            ;DEC EDIT VERSION
1)      
****
2)1     DECEVR==1226            ;DEC EDIT VERSION
2)      
**************
1)6     
****
2)6     ;1226   Remove now redundant test for non-root link in FORNAM.
                                                                Page 8


2)      
**************
1)62    IFN FTOVERLAY,<
1)              SKIPGE  LNKMAX          ;ONLY IF WE ARE IN ROOT TEST
1)      >
1)              SKIPN   HC.LB           ; IF ANY HIGH LOADED
****
2)62    ;**;[1226] Delete @FORSEG+2L    DZN     12-Nov-79
2)              SKIPN   HC.LB           ; IF ANY HIGH LOADED
**************

[FILCOM]
File 1) DSKC:LNKOV1.MAC[30,4507]        created: 1624 24-Aug-1979
File 2) DSKC:LNKOV1.MAC[12,4700]        created: 1657 12-Nov-1979
 
1)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/MCHC/DZN  24-Aug-79
1)      
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/MCHC/DZN  12-Nov-79
2)      
**************
1)1     DECMVR==1               ;DEC MINOR VERSION
1)      DECEVR==1220            ;DEC EDIT VERSION
1)      
****
2)1     DECMVR==2               ;DEC MINOR VERSION
2)      DECEVR==1226            ;DEC EDIT VERSION
2)      
**************
1)4     SUBTTL  ENTRY POINT
****
2)3     ;START OF VERSION 4B
2)      ;1226   Default /SEGMENT:LOW after loading the root.
2)      
2)4     SUBTTL  ENTRY POINT
**************
1)13            MOVX    W1,PT.SGN!PT.SYM ;FLAG BITS FOR A SYMBOL
****
2)13    ;**;[1226] Insert before LNKT0+2L       DZN     12-Nov-79
2)              MOVSI   T1,L.FNS!L.FHS  ;[1226] TURN OFF /SEG:DEF AND /S
        EG:HIGH
2)              ANDCAM  T1,FLAGS        ;[1226]   IN GLOBAL (ACCROSS LIN
        ES) SWITCHES
2)              ANDCAM  T1,S.LHFL       ;[1226]   AND GLOBAL KLUDGE FLAG
        S
2)              MOVSI   T1,L.FLS        ;[1226] TURN ON /SEGMENT:LOW FOR
         DURATION
2)              IORM    T1,FLAGS        ;[1226]   ..
2)              IORM    T1,S.LHFL       ;[1226]   ..
2)              TXZ     FL,<L.FNS!L.FHS,,R.FNS!R.FHS> ;[1226] FIX /SEG:L
        OW NOW TOO
2)              TXO     FL,<L.FLS,,R.FLS> ;[1226]   ..
2)              MOVX    W1,PT.SGN!PT.SYM ;FLAG BITS FOR A SYMBOL
**************
[END OF PCO 20-LINK  -016]
                                                                Page 9


[SYMPTOM]

If FORTRAN subroutines are loaded with a main program that  is  not  a
FORTRAN  program, FORLIB (version 6 only) code will be loaded into the
high segment.  This happens because LINK does not check where the code
should go if loading FORLIB unless the main program is FORTRAN.

[CURE]

Test to see whether there is a high segment.  If there is not, and the
/OTSEGMENT:NONSHAR has not been given, load FORLIB in the low segment.
Note that the tag offsets (which apply to filed image  LINK  4A(1220))
are slightly different if edit 1225 has been installed.

[FILCOM]
File 1) DSKC:LNKHST.MAC[30,4507]        created: 2209 04-Sep-80
File 2) DSKC:LNKHST.MAC[30,5526]        created: 0846 08-Oct-80
 
1)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB 
        4-Sep-80
1)      
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB 
        7-Oct-80
2)      
**************
1)1     DECEVR==1220            ;DEC EDIT VERSION
1)      
****
2)1     DECEVR==1271            ;DEC EDIT VERSION
2)      
**************
1)5     
****
2)5     ;1271   PY      7-Oct-80
2)      ;       Make FORLIB load into the low segment by default if the
        main
2)      ;       program is not a FORTRAN program.
2)      ;       Routine: LNKLOD
2)      
2)      
**************

[FILCOM]
File 1) DSKC:LNKLOD.MAC[30,4507]        created: 1945 10-Aug-80
File 2) DSKC:LNKLOD.MAC[30,5526]        created: 0853 08-Oct-80
 
1)1     SUBTTL  D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN/PY  10-Aug-8
        0
1)      
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN/PY  7-Oct-80
2)      
**************
1)1     DECEVR==1220            ;DEC EDIT VERSION
                                                               Page 10


1)      
****
2)1     DECEVR==1271            ;DEC EDIT VERSION
2)      
**************
1)6     
****
2)6     ;1271   Cause FORLIB to load /SEG:LOW if main program is not FOR
        TRAN.
2)      
**************
1)92              JRST  FOR.L1          ;NO
1)              MOVX    W1,PT.SGN!PT.SYM
****
2)92    ;**;[1271] Replace 1 Line at FORL01+2 Lines     PY     7-Oct-80
2)      ;**;[1271] ***** at FORL01+3 lines if edit 1225 is installed
2)                JRST  FORL03          ;[1271] NO
2)              MOVX    W1,PT.SGN!PT.SYM
**************
1)92            PUSHJ   P,FOR.L1        ;[1200] PUT FORLIB IN LIST OF LI
        BRARIES
1)              ; ..
****
2)92    ;**;[1271] Replace 1 Line at FORL01+7 Lines     PY     7-Oct-80
2)      ;**;[1271] ***** at FORL01+9 lines if edit 1225 is installed
2)              PUSHJ   P,FORL03        ;[1271] PUT FORLIB IN LIST OF LI
        BRARIES
2)              ; ..
**************
1)93            MOVE    P2,F.NXZR       ;[1200] LAST LIBRARY PUT ON LIST
1)              CAMN    P1,F.NAME(P2)   ;[1200] WAS IT FORLIB?
****
2)93    ;**;[1271] Replace 1 Line at FORL01+13 Lines    PY     7-Oct-80
2)      ;**;[1271] ***** at FORL01+14 lines if edit 1225 is installed
2)      FORL04: MOVE    P2,F.NXZR       ;[1271] LAST LIBRARY PUT ON LIST
2)              CAMN    P1,F.NAME(P2)   ;[1200] WAS IT FORLIB?
**************
1)93    
1)      FOR.L1: SKIPL   FORLIB          ;TEST FOR USER SCREW-UP
1)              JRST    FORL10          ;NO
****
2)93    ;**;[1271] Replace at FOR.L1                    PY     7-Oct-80
2)      FOR.L1: PUSHJ   P,FORL03        ;[1271] LOAD THE LIBRARY
2)              SKIPE   T1,OTSEG        ;[1271] GET THE /OTS: SWITCH
2)              CAIE    T1,1            ;[1271] /OTS:NONSHAR?
2)              SKIPE   HL.S2           ;[1271] NO - HIGH SEG EXIST?
2)              POPJ    P,              ;[1271] LEAVE IT TWOSEG
2)              PJRST   FORL04          ;[1271] MAKE IT /SEG:LOW
2)      FORL03: SKIPL   FORLIB          ;[1271] TEST FOR USER SCREW-UP
2)              JRST    FORL10          ;NO
**************
[End FILCOMs]
                                                               Page 11


8.0  LINK PATCHES REQUIRED TO INSTALL FORTRAN 6 & DBMS 5A

                                                               Page 12


The following patches are required to enable LINK to  combine  PSECTED
FOROT6 and TWOSEGGED DBMS5A in one relocatable module.

THE RESULTING VERSION OF LINK IS NOT RECOMMENDED OR AUTHORIZED FOR ANY
OTHER USE.

[FILCOMs]
File 1) LNK:LNKHST.MAC[4,121]   created: 1401 24-Aug-1979
File 2) DSK:LNKHST.MAC[4,461]   created: 1626 26-Mar-1981

1)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN 24-Aug-79
1)      ;COPYRIGHT (C) 1973, 1979 BY
1)      ;DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB 20-Mar-81
2)      ;COPYRIGHT (C) 1973, 1981 BY
2)      ;DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
**************
1)1     DECMVR==1               ;DEC MINOR VERSION
1)      DECEVR==1220            ;DEC EDIT VERSION
1)      LNKVER==<BYTE(3)CUSTVR(9)DECVER(6)DECMVR(18)DECEVR>
****
2)1     DECMVR==2               ;DEC MINOR VERSION
2)      DECEVR==1304            ;DEC EDIT VERSION
2)      LNKVER==<BYTE(3)CUSTVR(9)DECVER(6)DECMVR(18)DECEVR>
**************
1)6     SUBTTL  THE END
1)              END             ;OF LNKHST
****
2)5     ;START OF VERSION 4B
2)      ;1304   PY      20-Mar-81
2)      ;       Make TWOSEG work with Psects.
2)      ;       Routines: LNKINI, LNKLOW, LNKOLD, LNKWLD
2)6     SUBTTL  THE END
2)              END             ;OF LNKHST
**************
File 1) LNK:LNKINI.MAC[4,121]   created: 1220 24-Aug-1979
File 2) DSK:LNKINI.MAC[4,461]   created: 1756 27-Mar-1981

1)1     SUBTTL  D.M.NIXON/DMN/RKH/SRM/JBC/JNG/DZN       24-Aug-79
1)      ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
****
2)1     SUBTTL  D.M.NIXON/DMN/RKH/SRM/JBC/JNG/DZN/PY    20-Mar-80
2)      ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
**************
1)1     ;COPYRIGHT (C) 1973, 1979 BY DIGITAL EQUIPMENT CORPORATION
1)      SEARCH  LNKPAR,LNKLOW,MACTEN,UUOSYM,SCNMAC
****
2)1     ;COPYRIGHT (C) 1973, 1981 BY DIGITAL EQUIPMENT CORPORATION
2)      SEARCH  LNKPAR,LNKLOW,MACTEN,UUOSYM,SCNMAC
**************
1)1     DECMVR==1               ;DEC MINOR VERSION
1)      DECEVR==1220            ;DEC EDIT VERSION
1)      VERSION
****
                                                               Page 13


2)1     DECMVR==2               ;DEC MINOR VERSION
2)      DECEVR==1304            ;DEC EDIT VERSION
2)      VERSION
**************
1)4     SUBTTL  INITIALIZE
****
2)4     ;START OF VERSION 4B
2)      ;1304   Initialize RC.MAP
2)5     SUBTTL  INITIALIZE
**************
1)9             MOVEM   P1,RC.NTB       ;[706] SETUP PSECT ORDER TABLE
****
2)10    ;**;[1304] Insert after CORINI+16 Lines         PY     20-Mar-81
2)              MOVEM   P1,RC.MAP       ;[1304] SETUP MAP FOR LOCAL PSECT NUMBERS
2)              ADDI    P1,RC.INC       ;[1304] SAME LENGTH AS RC.TB
2)              MOVEM   P1,RC.NTB       ;[706] SETUP PSECT ORDER TABLE
**************
1)10            MOVEM   P1,@RC.TB       ;POINT TO SLOT #1
****
2)11    ;**;[1304] Add 2 Lines after CORINI+1P+2L       PY     20-Mar-81
2)              MOVX    T2,<1,,1>       ;[1304] GET 1 FOR RC.NTB AND RC.TB
2)              MOVEM   T2,@RC.MAP      ;[1304] SET UP MAP FOR .LOW.
2)              MOVEM   P1,@RC.TB       ;POINT TO SLOT #1
**************
File 1) LNK:LNKLOW.MAC[4,121]   created: 1222 24-Aug-1979
File 2) DSK:LNKLOW.MAC[4,461]   created: 1631 26-Mar-1981

1)1     SUBTTL  D.M.NIXON/DMN/JLd/JBC/JNG/MCHC/DZN      24-Aug-79
1)      ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/JBC/JNG/MCHC/DZN/PY   20-Mar-81
2)      ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
**************
1)1     ;COPYRIGHT (C) 1973, 1979 BY DIGITAL EQUIPMENT CORPORATION
1)      SEARCH  LNKPAR,MACTEN,UUOSYM,SCNMAC
****
2)1     ;COPYRIGHT (C) 1973, 1981 BY DIGITAL EQUIPMENT CORPORATION
2)      SEARCH  LNKPAR,MACTEN,UUOSYM,SCNMAC
**************
1)1     DECMVR==1               ;DEC MINOR VERSION
1)      DECEVR==1220            ;DEC EDIT VERSION
1)              LOC     137
****
2)1     DECMVR==2               ;DEC MINOR VERSION
2)      DECEVR==1304            ;DEC EDIT VERSION
2)              LOC     137
**************
1)4     SUBTTL  STORAGE
****
2)3     ;START OF VERSION 4B
2)      ;1304   Add RC.MAP and SLOT2 for handling psects with twoseg.
2)4     SUBTTL  STORAGE
**************
1)4     SG.TB:: BLOCK   3               ;PTR TO SEGMENT TABLES (.+1)
****
                                                               Page 14


2)4     ;**;[1304] Insert 1 Line after RC.NTB           PY     20-Mar-81
2)      RC.MAP::BLOCK   1               ;[1304] POINTER PSECT NUMBERS MAP
2)      SG.TB:: BLOCK   3               ;PTR TO SEGMENT TABLES (.+1)
**************
1)4     RC.NO:: BLOCK   1               ;NUMBER OF RELOCATION COUNTERS ASSIGNED
****
2)4     ;**;[1304] Insert 1 Line after SG.TB+2 Lines    PY     20-Mar-81
2)      SLOT2:: BLOCK   1               ;[1304] PSECT WHEN SLOT 2 FOR TWOSEG
2)      RC.NO:: BLOCK   1               ;NUMBER OF RELOCATION COUNTERS ASSIGNED
**************
File 1) LNK:LNKOLD.MAC[4,121]   created: 1223 24-Aug-1979
File 2) DSK:LNKOLD.MAC[4,461]   created: 2239 30-Mar-1981

1)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/DZN     24-Aug-79
1)      ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/DZN/PY/MFB     20-Mar-81
2)      ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
**************
1)1     ;COPYRIGHT (C) 1973, 1979 BY DIGITAL EQUIPMENT CORPORATION
1)      SEARCH  LNKPAR,LNKLOW,MACTEN,UUOSYM,SCNMAC
****
2)1     ;COPYRIGHT (C) 1973, 1981 BY DIGITAL EQUIPMENT CORPORATION
2)      SEARCH  LNKPAR,LNKLOW,MACTEN,UUOSYM,SCNMAC
**************
1)1     DECMVR==1               ;DEC MINOR VERSION
1)      DECEVR==1220            ;DEC EDIT VERSION
1)      SEGMENT
****
2)1     DECMVR==2               ;DEC MINOR VERSION
2)      DECEVR==1304            ;DEC EDIT VERSION
2)      SEGMENT
**************
1)7     COMMENT \
****
2)6     ;START OF VERSION 4B
2)      ;1304   Use RC.MAP to convert local psect numbers into internal numbers.
2)7     COMMENT \
**************
1)46    T.3RC1: MOVEI   R,2             ;PUT IN SLOT #2
1)              HRLM    R,LL.S2         ;SET ORIGIN GREATER THAN 256K
****
2)46    ;**;[1304] Replace at T.3RC1            PY      20-Mar-81
2)      T.3RC1: PUSHJ   P,T.3CH         ;[1304] MAKE SURE SLOT 2 IS EMPTY
2)              HRLM    R,LL.S2         ;SET ORIGIN GREATER THAN 256K
**************
1)48    T.3L1:  MOVEI   R,2             ;PUT IN SLOT #2
1)              HRLM    R,LL.S2         ;SET ORIGIN GREATER THAN 256K
****
2)48    ;**;[1304] Replace at T.3L1             PY      20-Mar-81
2)      T.3L1:  PUSHJ   P,T.3CH         ;[1304] MAKE SURE SLOT 2 IS EMPTY
2)              HRLM    R,LL.S2         ;SET ORIGIN GREATER THAN 256K
**************
1)49            MOVEI   R,2             ;NOW FOR RC TABLE ENTRIES
1)              SKIPE   @RC.TB          ;SLOT ALREADY OCCUPIED?
                                                               Page 15


1)              JSP     T2,SETRCX       ;CLEAR SLOT, SAVE OCCUPANT FOR LATER
1)              MOVEM   T1,@RC.TB       ;GET POINTER INTO TABLE
1)              MOVEM   T1,@SG.TB
1)              MOVE    R,T1            ;SAFER PLACE FOR POINTER
1)              AOS     RC.NO           ;COUNT ONE MORE
1)              SOS     RC.FRE          ;AND ONE LESS HOLE
1)              MOVEM   W1,RC.IV(R)     ;START OF RELOCATION
1)              MOVE    T2,['.HIGH.']   ;NAME
****
2)49    ;**;[1304] Replace at SETRC+16L         PY      20-Mar-81
2)              AOS     RC.NO           ;[1304] COUNT ONE MORE
2)              SOS     RC.FRE          ;[1304] AND ONE LESS HOLE
2)              MOVEI   R,2             ;[1304] NOW FOR RC TABLE ENTRIES
2)              SKIPN   @RC.TB          ;[1304] SLOT ALREADY OCCUPIED?
File 1) LNK:LNKOLD.MAC[4,121]   created: 1223 24-Aug-1979
File 2) DSK:LNKOLD.MAC[4,461]   created: 2239 30-Mar-1981

2)              JRST    [ MOVX  T2,<2,,2>  ;[1304] NO, SIMPLE CASE FOR MAP
2)                        MOVEM T2,@RC.MAP ;[1304] STORE IT    
2)                        JRST SETRC3]     ;[1304]
2)              PUSHJ   P,T.3FM         ;[1304] FIND THE MODULE
2)      SETRC2: MOVE    T2,RC.NO        ;[1304] GET NEW SLOT NUMBER
2)              HRRM    T2,@RC.MAP      ;[1304] FIX UP MAP
2)              MOVEI   R,2             ;[1304] BACK TO HIGH SEG SLOT
2)              PUSH    P,@RC.TB        ;[1304] STACK CURRENT OCCUPANT
2)              PUSH    P,[SETRCY]      ;[1304] RET ADDRESS TO STORE ABOVE RC POINTER
2)      SETRC3: MOVEM   T1,@RC.TB       ;[1304] GET POINTER INTO TABLE
2)              MOVEM   T1,@SG.TB       ;[1304]
2)              MOVE    R,T1            ;[1304] SAFER PLACE FOR POINTER
2)              MOVEM   W1,RC.IV(R)     ;[1304] START OF RELOCATION
2)              MOVE    T2,['.HIGH.']   ;NAME
**************
1)50    ;HERE IF DESIRED RC SLOT IS NOT FREE
1)      ;STACK CURRENT CONTENTS AND RETURN
1)      ;FIND NEW PLACE FOR CURRENT OCCUPANT LATER
1)      SETRCX: PUSH    P,@RC.TB        ;STACK CURRENT OCCUPANT
1)              PUSH    P,[SETRCY]      ;RET ADDRESS TO STORE ABOVE RC POINTER
1)              JRSTF   (T2)            ;RETURN
1)      SETRCY: SOSGE   RC.FRE          ;ANY FREE SPACE?
****
2)49    ;**;[1304] Delete at SETRCX                     PY     20-Mar-81
2)      SETRCY: SOSGE   RC.FRE          ;ANY FREE SPACE?
**************
1)50            POP     P,@RC.TB        ;STORE IT
1)              POPJ    P,              ;RETURN
1)51    ;NOW TO SETUP HC AREA IF NOT DONE YET
****
2)49    ;**;[1304] Rework after SETRCY+3 Lines          PY     20-Mar-81
2)              MOVEI   T1,2            ;[1304] RC.TB FOR .HIGH. IS 2
2)              HRL     T1,RC.NO        ;[1304] RC.NTB IS CURRENT SLOC
2)              MOVEM   T1,@RC.MAP      ;[1304] STORE NEW MAP ENTRY
2)              POP     P,@RC.TB        ;[1304] STORE IT
2)              POPJ    P,              ;[1304] RETURN
2)      T.3CH:  SETZM   SLOT2           ;[1304] ASSUME NO PSECTS
2)              MOVEI   R,2             ;[1304] POINT TO SLOT 2
                                                               Page 16


2)              CAMLE   R,RC.NO         ;[1304] IN USE?
2)              POPJ    P,              ;[1304] NO
2)              MOVE    T2,@RC.TB       ;[1304] GET POINTER TO BLOCK
2)              MOVE    T2,RC.NM(T2)    ;[1304] GET NAME
2)              CAMN    T2,['.HIGH.']   ;[1304] REAL HIGH SEG?
2)              POPJ    P,              ;[1304] YES
2)              MOVE    T2,@RC.TB       ;[1304] NO, GET THE PSECT POINTER
2)              MOVEM   T2,SLOT2        ;[1304] HIDE IT AWAY FOR THIS MODULE
2)              POPJ    P,              ;[1304]
2)      T.3FM:  HRRZ    T2,@RC.MAP      ;[1304] GET MAP FOR THIS PSECT NUMBER
2)              CAIN    T2,2            ;[1304] POINT TO SECOND SLOT? 
2)              POPJ    P,              ;[1304] YES, FOUND IT
2)              AOS     R               ;[1304] NO, INCREMENT R
2)              CAMGE   R,RC.NO         ;[1304] STILL VALID?
2)              JRST    T.3FM           ;[1304] YES, TRY AGAIN
2)              PUSHJ   P,E$$IPX        ;[1304] NO??
2)50    ;NOW TO SETUP HC AREA IF NOT DONE YET
**************
File 1) LNK:LNKOLD.MAC[4,121]   created: 1223 24-Aug-1979
File 2) DSK:LNKOLD.MAC[4,461]   created: 2239 30-Mar-1981

1)59            MOVE    T1,SG.TB+2      ;FROM SECOND
1)              MOVEM   T1,@RC.TB       ;STORE HIGH WHERE IT SHOULD BE
1)              MOVEI   R,1             ;SET FOR LOW
****
2)58    ;**;[1304] Insert 1 Line after T.5FS+6 Lines    PY     20-Mar-81
2)              SKIPN   T1,SLOT2        ;[1304] CHECK FOR PSECT
2)              MOVE    T1,SG.TB+2      ;FROM SECOND
2)              MOVEM   T1,@RC.TB       ;STORE HIGH WHERE IT SHOULD BE
2)      ;**;[1304] Insert 1 Line after T.5FS+8 Lines    PY     20-Mar-81
2)              SETZM   SLOT2           ;[1304] RESET JUST IN CASE
2)              MOVEI   R,1             ;SET FOR LOW
**************
1)59            MOVE    T1,SG.TB+2      ;POINT TO REAL HIGH SEG BLOCK
1)              MOVEM   T1,@RC.TB       ;STORE 0 OR REAL ADDRESS
1)              MOVEI   R,1             ;MAKE SURE R = LOW
****
2)58    ;**;[1304] Insert 1 Line after T.5FL+3 Lines    PY     20-Mar-81
2)              SKIPN   T1,SLOT2        ;[1304] CHECK FOR PSECT
2)              MOVE    T1,SG.TB+2      ;POINT TO REAL HIGH SEG BLOCK
2)              MOVEM   T1,@RC.TB       ;STORE 0 OR REAL ADDRESS
2)      ;**;[1304] Insert 1 Line after T.5FL+5 Lines    PY     20-Mar-81
2)              SETZM   SLOT2           ;[1304] RESET JUST IN CASE
2)              MOVEI   R,1             ;MAKE SURE R = LOW
**************
1)76            MOVEM   P4,RC.CUR       ;[1166] SET FOR NEXT WORD
****
2)75    ;**;[1304] Insert before T.11RD-1 Line          PY     20-Mar-81
2)              MOVE    R,P4            ;[1304] GET PSECT NUMBER IN R
2)              HRRZ    P4,@RC.MAP      ;[1304] MAP TO INTERNAL PSECT NUMBER
2)              MOVEM   P4,RC.CUR       ;[1166] SET FOR NEXT WORD
**************
1)76            MOVEM   T1,RC.CUR       ;SET FOR NEXT READ
****
2)75    ;**;[1304] Replace at T11RD2+15 Lines   PY      20-Mar-81
                                                               Page 17


2)              MOVE    R,T1            ;[1304] GET PSECT NUMBER IN R
2)              HRRZ    T1,@RC.MAP      ;[1304] MAP TO INTERNAL PSECT NUMBER
2)              MOVEM   T1,RC.CUR       ;SET FOR NEXT READ
**************
1)77            MOVEM   T2,RC.CUR       ;SET FOR NEXT READ
****
2)76    ;**;[1304] Add after T11RHS+13 Lines    PY      20-Mar-81
2)              MOVE    R,T2            ;[1304] GET PSECT NUMBER IN R
2)              HRRZ    T2,@RC.MAP      ;[1304] MAP TO INTERNAL PSECT NUMBER
2)              MOVEM   T2,RC.CUR       ;SET FOR NEXT READ
**************
1)106   T.22B:  MOVEM   R1,RC.CUR       ;SET FOR RELOCATION
1)              JRST    LOAD##          ;FINISHED
1)      T.22C:  ADDI    W2,1            ;[763] PSECT INDEX IS ONE LESS
1)              CAMLE   W2,RC.NO        ;[763] HERE IF PSECT INDEX USED
1)              JRST    E$$IPX          ;[1174] MAKE SURE THIS PSECT EXIST
1)              MOVEM   W2,RC.CUR       ;[763] SWITCH CURRENT RELOC COUNTER TO IT
1)              JRST    LOAD##          ;[763] 
1)107   SUBTTL  BLOCK TYPE 23 - PSECT END BLOCK
****
2)105   ;**;[1304] Insert before T.22B                  PY     20-Mar-81
2)              HRRZ    R1,@RC.MAP      ;[1304] MAP TO INTERNAL NUMBER (IN CASE .HIGH.)
File 1) LNK:LNKOLD.MAC[4,121]   created: 1223 24-Aug-1979
File 2) DSK:LNKOLD.MAC[4,461]   created: 2239 30-Mar-1981

2)      T.22B:  MOVEM   R1,RC.CUR       ;SET FOR RELOCATION
2)              JRST    LOAD##          ;FINISHED
2)      ;**;[1304] Replace at T.22C                     PY     20-Mar-81
2)      T.22C:  MOVEI   R,1(W2)         ;[1304] PSECT INDEX IS ONE LESS
2)              CAMLE   R,RC.NO         ;[1304] PSECT INDEX EXIST?
2)              JRST    E$$IPX          ;[1304] NO, GIVE ERROR
2)              HRRZ    R,@RC.MAP       ;[1304] GET INTERNAL PSECT NUMBER
2)              MOVEM   R,RC.CUR        ;[1304] SWITCH CURRENT RELOC COUNTER TO IT
2)              JRST    LOAD##          ;[1304]
2)106   SUBTTL  BLOCK TYPE 23 - PSECT END BLOCK
**************
1)107           JRST    T.23B           ;[1154] NO, WE HAVE THE PSECT INDEX.
1)      ;HERE WITH OLD-STYLE NAME IN SIXBIT.  LOOP OVER RC BLOCKS LOOKING FOR IT.
****
2)106   ;**;[1304] Replace at T.23+4 Lines              PY     20-Mar-81
2)              JRST    [HRRZ R,@RC.MAP ;[1304] NO, MAP TO INTERNAL PSECT INDEX
2)                       JRST T.23B ]   ;[1304] WE HAVE THE PSECT INDEX.
2)      ;HERE WITH OLD-STYLE NAME IN SIXBIT.  LOOP OVER RC BLOCKS LOOKING FOR IT.
**************
1)108   T.24B:  MOVE    R,RC.NO         ;[1137] LOOP OVER ALL RC BLOCKS
1)      T.24C:  MOVE    T1,@RC.TB       ;[1137] RC BLOCK WHERE THIS PSECT MIGHT BE
1)              CAME    W2,RC.NM(T1)    ;[1137] IS IT HERE?
1)              SOJG    R,T.24C         ;[1137] NO, LOOP OVER ALL PSECTS
1)              JUMPE   R,T.24D         ;[1137] IF NOT FOUND, INSERT A NEW RC BLOCK
1)              TXZ     W3,AT.RP        ;[1137] WE FOUND IT, SO ALREADY HAVE ORIGIN
****
2)107   ;**;[1304] Replace at T.24B                     PY     20-Mar-81
2)      T.24B:  MOVE    T2,RC.NO        ;[1304] LOOP OVER ALL RC BLOCKS
2)      T.24C:  MOVE    R,T2            ;[1304] GET EXTERNAL PSECT NUMBER IN T2
2)              HRRZ    R,@RC.MAP       ;[1304] MAP INTO INTERNAL NUMBER
                                                               Page 18


2)              MOVE    T1,@RC.TB       ;[1304] RC BLOCK WHERE THIS PSECT MIGHT BE
2)              CAME    W2,RC.NM(T1)    ;[1137] IS IT HERE?
2)              SOJG    T2,T.24C        ;[1304] NO, LOOP OVER ALL PSECTS
2)              JUMPE   T2,T.24D        ;[1304] IF NOT FOUND, INSERT A NEW RC BLOCK
2)              TXZ     W3,AT.RP        ;[1137] WE FOUND IT, SO ALREADY HAVE ORIGIN
**************
1)109           MOVE    R,RC.NO         ;[1137] ITS INDEX IS THE LAST PSECT
1)      T.24E:  CAMN    P1,R            ;[1137] IS THE RC BLOCK IN THE RIGHT PLACE?
1)              JRST    LOAD##          ;[1137] YES, DONE
****
2)108   ;**;[1304] Replace at T.24D+2 Lines             PY     20-Mar-81
2)              MOVE    T2,RC.NO        ;[1304] ITS INDEX IS THE LAST PSECT
2)      T.24E:  CAMN    P1,T2           ;[1304] IS THE RC BLOCK IN THE RIGHT PLACE?
2)              JRST    LOAD##          ;[1137] YES, DONE
**************
1)109           MOVE    T1,@RC.TB       ;[1137] RC BLOCK OF THIS PSECT
1)              EXCH    R,P1            ;[1137] POINT TO RC BLOCK IN THE WAY
1)              EXCH    T1,@RC.TB       ;[1137] PUT OUR RC BLOCK WHERE IT BELONGS
1)              EXCH    R,P1            ;[1137] BACK TO WHERE OUR PSECT USED TO BE
1)              MOVEM   T1,@RC.TB       ;AND OUT OF PLACE BLOCK
1)              JRST    LOAD##          ;ALL DONE
****
2)108   ;**;[1304] Replace at T.24E+5 Lines             PY     27-Feb-81
2)              MOVE    R,T2            ;[1304] POINT TO CURRENT MAP SLOT
2)              MOVE    T1,@RC.MAP      ;[1304] GET MAP SLOT FOR THIS PSECT
2)              MOVE    R,P1            ;[1304] POINT TO DESIRED MAP SLOT
File 1) LNK:LNKOLD.MAC[4,121]   created: 1223 24-Aug-1979
File 2) DSK:LNKOLD.MAC[4,461]   created: 2239 30-Mar-1981

2)              EXCH    T1,@RC.MAP      ;[1304] PUT MAP ENTRY IN PROPER SLOT
2)              MOVE    R,T2            ;[1304] BACK TO WHERE OUR PSECT USED TO BE
2)              MOVEM   T1,@RC.MAP      ;[1304] SO WE DON'T LOSE MAP ENTRY
2)              JRST    LOAD##          ;ALL DONE
**************
File 1) LNK:LNKWLD.MAC[4,121]   created: 1226 24-Aug-1979
File 2) DSK:LNKWLD.MAC[4,461]   created: 1757 27-Mar-1981

1)1     SUBTTL  D.M.NIXON/DMN/JLd/SRM/JBC/JNG/MCHC/PAH/DZN     24-Aug-79
1)      ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/SRM/JBC/JNG/MCHC/PAH/DZN/PY  20-Mar-81
2)      ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
**************
1)1     ;COPYRIGHT (C) 1973, 1979 BY DIGITAL EQUIPMENT CORPORATION
1)      SEARCH  LNKPAR,LNKLOW,MACTEN,UUOSYM,SCNMAC
****
2)1     ;COPYRIGHT (C) 1973, 1981 BY DIGITAL EQUIPMENT CORPORATION
2)      SEARCH  LNKPAR,LNKLOW,MACTEN,UUOSYM,SCNMAC
**************
1)1     DECMVR==1               ;DEC MINOR VERSION
1)      DECEVR==1220            ;DEC EDIT VERSION
1)      SEGMENT
****
2)1     DECMVR==2               ;DEC MINOR VERSION
2)      DECEVR==1304            ;DEC EDIT VERSION
                                                               Page 19


2)      SEGMENT
**************
1)7     SUBTTL  ENTER HERE FROM LNKLOD TO GET A FILE TO LOAD
****
2)6     ;START OF VERSION 4B
2)      ;1304   Build RC.MAP entries along with RC.TB and RC.NTB
2)7     SUBTTL  ENTER HERE FROM LNKLOD TO GET A FILE TO LOAD
**************
1)46            MOVE    R,T1            ;R POINTS TO RC BLOCK
****
2)46    ;**;[1304] Insert after SET3+18 Lines           PY     20-Mar-81
2)              HRL     R,R             ;[1304] RC.NTB,,RC.TB POINTERS
2)              MOVEM   R,@RC.MAP       ;[1304] MAP INITIALLY TO SAME SLOT
2)              MOVE    R,T1            ;R POINTS TO RC BLOCK
**************
1)47            POP     P,T2            ;[706]
1)              PUSHJ   P,DY.GET##      ;FROM FREE SPACE
****
2)47    ;**;[1304] Replace at .SETEX+13 Lines           PY     20-Mar-81
2)              MOVE    T2,0(P)         ;[1304]
2)              PUSHJ   P,DY.GET##      ;FROM FREE SPACE
**************
1)47            MOVEI   T3,RC.INC-1     ;NUMBER NOW FREE
****
2)47    ;**;[1304] Insert after .SETEX+22 Lines         PY     20-Mar-81
2)              PUSHJ   P,DY.RET        ;[1304] RETURN SPACE
2)              POP     P,T2            ;[1304]
2)              PUSHJ   P,DY.GET        ;[1304] GET SPACE
2)              HRLZ    T3,RC.MAP       ;[1304] COPY FROM
2)              HRR     T3,T1           ;[1304] TO
2)              ADDI    T2,(T1)         ;[1304] LIMIT
2)              BLT     T3,-1-RC.INC(T2) ;[1304]
2)              SUBI    T2,RC.INC(T1)   ;[1304] GET OLD LENGTH
2)              MOVE    T3,RC.MAP       ;[1304] CURRENT POSITION
2)              HRRM    T1,RC.MAP       ;[1304] NEW
2)              HRRZ    T1,T3           ;[1304] OLD
2)              MOVEI   T3,RC.INC-1     ;NUMBER NOW FREE
**************
[END FILCOMs]
                                                               Page 20


The following patch to SCAN will fix the problem of  spurious  ?SCNIFL
errors when the user's default path includes SFD's.


                                 NOTE

               If you have the 7.01 Released  SCAN  and
               you  wish  to  install  this  patch, the
               "SEARCH C" in SCAN must be replaced with
               "SEARCH   MACTEN,UUOSYM"   in  order  to
               reassemble it.




[SYMPTOM]

     Spurious ?SCNIFL  errors  can  occur  while  processing  .TMP  or
indirect files and the user's default path includes SFDs.



                              **********


[DIAGNOSIS]

     There are several cases in which SCAN looks up its input indirect
file  a  number  of  times.  However, when the LOOKUP is to the user's
default path, the monitor puts the PPN portion  of  the  path  in  the
.RBPPN word of the file.  Subsequent LOOKUPs fail, because the default
path is no longer being referenced.



                              **********


[CURE]

     Always restore the given PPN immediately after an  indirect  file
lookup.
                                                               Page 21


[FILCOM]
File 1) DSK:SCN7C.572   created: 2109 17-MAR-1976
File 2) DSK:SCN7C.MAC   created: 1904 18-MAR-1976
1)1             SUBTTL  P.CONKLIN/DJB/DMN/DAL/PFC -- %7B(572)    18-AUG-75
1)              LALL
****
2)1     SUBTTL  P.CONKLIN/DJB/DMN/DAL/PFC/JNG -- %7B(573)       17-Mar-76
2)              LALL
**************
1)1     DECMVR==2               ;DEC MINOR VERSION
1)      DECEVR==572             ;DEC EDIT VERSION
1)      ;ASSEMBLY INSTRUCTIONS:
****
2)1     DECMVR==3               ;DEC MINOR VERSION
2)      DECEVR==573             ;DEC EDIT VERSION
2)      ;ASSEMBLY INSTRUCTIONS:
**************
1)10    >       ;END OF IF1 FROM FIRST PAGE
****
2)10    ;573    (10-18959) RESTORE .RBPPN AFTER INDIRECT FILE LOOKUP FOR SFD'S.
2)      >       ;END OF IF1 FROM FIRST PAGE
**************
1)116           MOVE    T1,A.LOOK+.RBPRV ;GET PROTECTION
****
2)116   ;**;[573] Insert @ TYIIN2+8L   JNG   17-Mar-76
2)              MOVEM   T1,A.LOOK+.RBPPN ;RESTORE DIRECTORY FROM LOOKUP [573]
2)              MOVE    T1,A.LOOK+.RBPRV ;GET PROTECTION
**************

[END OF PCO 10-SCAN  -003]