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]