Google
 

Trailing-Edge - PDP-10 Archives - BB-D608D-SB_1982 - algol.bwr
There are 4 other files named algol.bwr in the archive. Click here to see a list.


ALG310.BWR
January 1982






























COPYRIGHT (C) 1974,1981,1982 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.


THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
TRANSFERRED.

THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.

DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
                                                                Page 2


     This file contains last minute information and warnings  relevant
to  the  ALGOL  10B/1.2(310)  release.   Critical bug fixes discovered
since the software and the DOC file were  submitted  for  distribution
are  listed  here.  In addition, this file also contains bugs fixes to
other products that directly affect the usage/building of this version
of  ALGOL.   This  file serves as additional information to ALGOL.DOC,
which should  be  referenced  for  full  information  concerning  this
release.



[SYMPTOM]

     The ALGOL OTS and debugger (ALG310) will  not  function  properly
when protected execute-only on a KI10.  This is due to a deficiency in
the KI processor, such that when an XCT instruction is executed from a
concealed  area,  and  the  instruction  being executed is in a public
area, a memory protection violation is produced.  This occurs even  if
the  public area is not actually entered, and regardless of whether or
not   the   XCT   is   followed   by   a   PORTAL.    Refer   to   the
DECsystem-10/DECSYSTEM-20  Processor  Reference  Manual,  AA-H391A-TK,
Section 2.9, page 2-63, footnote 18.

[CURE]

     In all cases where the  OTS  and  ALGDDT  would  do  such  a  XCT
instruction, move the XCT and an appropriate JRST to the high seg into
the low seg (either on the stack, on in the program  data  base),  and
jump  to  do  the XCT completely in the low seg.  The JRST to the high
seg will re-enter the concealed area at an  appropriate  PORTAL.   The
following  code  is provided only as a workaround for this KI hardware
deficiency, and will not appear in any version of the  ALGOL  product.
It is applicable to edit level 310, and has been given minimal testing
on a KI10 while protected execute-only (protection <666>).

[FILCOM]
File 1) A1:ALGOTS.MAC[4,664]    created: 1329 22-Dec-1981
File 2) DSK:ALGOTS.MAC[4,53]    created: 1402 08-Jan-1982

1)39            XCT     @A5             ; EVALUATE FORMAL OR THUNK
1)              PORTAL  .+1             ; [303]
1)              RPOP    DL              ; RESTORE DL
****
2)39    ;**;[KIEXO] @ DEXP14 + 11L, Replace 2 lines, 8-Jan-82
2)              PUSH    SP,[XCT @A5]    ;[KIEXO] FOR THUNK
2)              PUSH    SP,[JRST .+2]   ;[KIEXO] BACK
2)              JRST    -1(SP)          ;[KIEXO] EVAL FORMAL OR THUNK
2)              PORTAL  .+1             ;[KIEXO] ALLOW RETURN
2)              SUB     SP,[2,,2]       ;[KIEXO] TIDY STACK
2)              RPOP    DL              ; RESTORE DL
**************
1)40            XCT     (AX)            ; NO - GET VALUE OF FORMAL
1)              PORTAL  .+1             ; [303]
1)              RPOP    DL              ; RESTORE CURRENT DL
****
                                                                Page 3


2)40    ;**;[KIEXO] @ FSVRC0 + 10L, replace 2 lines, 8-Jan-82
2)              PUSH    SP,[XCT (AX)]   ;[KIEXO] FOR VALUE
2)              PUSH    SP,[JRST .+2]   ;[KIEXO] FOR RETURN
2)              JRST    -1(SP)          ;[KIEXO] GET VALUE OF FORMAL
2)              PORTAL  .+1             ;[KIEXO] ALLOW RETURN
2)              SUB     SP,[2,,2]       ;[KIEXO] TIDY STACK
2)              RPOP    DL              ; RESTORE CURRENT DL
**************
1)40    FSVRCA: XCTA    (AX)            ; GET ADDRESS OF FORMAL
1)              PORTAL  .+1             ; [303]
1)              RPOP    DL              ; RESTORE CURRENT DL
****
2)40    ;**;[KIEXO] @ FSVRCA + 0L, replace 2 lines, 8-Jan-82
2)      FSVRCA: PUSH    SP,[XCTA (AX)]  ;[KIEXO] FOR VALUE
2)              PUSH    SP,[JRST .+2]   ;[KIEXO] FOR RETURN
2)              JRST    -1(SP)          ;[KIEXO] GET VALUE OF FORMAL
2)              PORTAL  .+1             ;[KIEXO] ALLOW RETURN
2)              SUB     SP,[2,,2]       ;[KIEXO] TIDY STACK
2)              RPOP    DL              ; RESTORE CURRENT DL
**************
1)40            XCT     1(AX)           ; STORE RESULT IN FORMAL
1)              PORTAL  .+1             ; [303]
1)              RPOP    DL              ; RESTORE CURRENT DL
****
2)40    ;**;[KIEXO] @ FSVRDC + 6L, replace 2 lines, 8-Jan-82
2)              PUSH    SP,[XCT 1(AX)]  ;[KIEXO] FOR RESULT
2)              PUSH    SP,[JRST .+2]   ;[KIEXO] FOR RETURN
2)              JRST    -1(SP)          ;[KIEXO] STORE RESULT IN FORMAL
2)              PORTAL  .+1             ;[KIEXO] ALLOW RETURN
2)              SUB     SP,[2,,2]       ;[KIEXO] TIDY STACK
2)              RPOP    DL              ; RESTORE CURRENT DL
**************
1)56            XCT     (AX)            ; [E053] GET VALUE OF FORMAL
1)              PORTAL  .+1             ; [303]
1)              RPOP    DL              ; [E053] RESTORE CURRENT DL
****
2)56    ;**;[KIEXO] @ FLABF0 + 12L, replace 2 lines, 8-Jan-82
2)              PUSH    SP,[XCT (AX)]   ;[KIEXO] FOR VALUE
2)              PUSH    SP,[JRST .+2]   ;[KIEXO] FOR RETURN
2)              JRST    -1(SP)          ;[KIEXO] GET VALUE OF FORMAL
2)              PORTAL  .+1             ;[KIEXO] ALLOW RETURN
2)              SUB     SP,[2,,2]       ;[KIEXO] TIDY STACK
2)              RPOP    DL              ; [E053] RESTORE CURRENT DL
**************
1)170           MOVE    A3,%SYS16(DB)   ; AND A3
1)              XCT     %SYS17(DB)
1)              XCT     %SYS15(DB)      ; EXECUTE ORDERS
1)              JRSTF   @.JBTPC         ; AND RETURN
****
2)170   ;**;[KIEXO] @ APR4 + 4L, Replace 3 lines, 8-Jan-82
2)              MOVE    A3,%SYS17(DB)   ;[KIEXO] GET FIRST ORDER
2)              MOVEM   A3,%SYS14(DB)   ;[KIEXO] PUT BEFORE SECOND
2)              MOVE    A3,[JRST .+3]   ;[KIEXO] TO GET BACK
2)              EXCH    A3,%SYS16(DB)   ;[KIEXO] RELOAD A3, PLANT RETURN
2)              JRST    %SYS14(DB)      ;[KIEXO] EXECUTE ORDERS
                                                                Page 4


2)              PORTAL  .+1             ;[KIEXO] ALLOW RETURN
2)              JRSTF   @.JBTPC         ; AND RETURN
**************

[FILCOM]
File 1) A1:ALGDDT.MAC[4,664]    created: 1537 10-Nov-1981
File 2) DSK:ALGDDT.MAC[4,53]    created: 1322 08-Jan-1982

1)26            XCT     (AX)                    ; CALL OTS ROUTINE TO EVALUATE FORMAL
1)              SUB     SP,[3,,3]               ; TIDY UP THE STACK
1)              JRST    DDGOT5                  ; GO JOIN COMMON CODE
****
2)26    ;**;[KIEXO] @ DDGOT2 + 12L, Replace 2 lines, 8-Jan-82
2)              PUSH    SP,[XCT (AX)]           ;[KIEXO] CALL TO OTS TO EVAL FORMAL
2)              PUSH    SP,[JRST .+2]           ;[KIEXO] WAY TO GET BACK
2)              JRST    -1(SP)                  ;[KIEXO] EVALUATE
2)              SUB     SP,[5,,5]               ;[KIEXO] TIDY UP THE STACK
2)              JRST    DDGOT5                  ; GO JOIN COMMON CODE
**************
1)51            XCTA    (A3)                    ; PUT - GET ADDRESS TO A2  F[0]
1)              PORTAL  .+1                     ; [303]
1)              POP     SP,A1                   ; RESCUE VALUE.
1)              POP     SP,A0
1)              XCT     1(A3)                   ; PUT VALUE     F[1]
1)              PORTAL  .+1                     ; [303]
1)              JRST    CPOPJ1                  ; DONE
****
2)51    ;**;[KIEXO] @ DDGT4 + 3L, Replace 2 lines, 8-Jan-82
2)              PUSH    SP,[XCTA (A3)]          ;[KIEXO] SETUP FOR THUNK
2)              PUSH    SP,[JRST .+2]           ;[KIEXO] WAY BACK
2)              JRST    -1(SP)                  ;[KIEXO] PUT - GET ADDR TO A2  F[0]
2)              PORTAL  .+1                     ;[KIEXO] ALLOW RETURN
2)              SUB     SP,[2,,2]               ;[KIEXO] TIDY STACK
2)              POP     SP,A1                   ; RESCUE VALUE.
2)              POP     SP,A0
2)      ;**;[KIEXO] @ DDGT4 + 7L, Replace 2 lines, 8-Jan-82
2)              PUSH    SP,[XCT 1(A3)]          ;[KIEXO] SETUP FOR THUNK
2)              PUSH    SP,[JRST .+2]           ;[KIEXO] WAY BACK
2)              JRST    -1(SP)                  ;[KIEXO] PUT VALUE    F[1]
2)              PORTAL  .+1                     ;[KIEXO] ALLOW RETURN
2)              SUB     SP,[2,,2]               ;[KIEXO] TIDY STACK
2)              JRST    CPOPJ1                  ; DONE
**************
[End FILCOMs]



[SYMPTOM]


     If a program contains a macro with the same name as the  tag  for
the  starting  address,  no start block is generated.  When assembling
one of the ALGOL source modules (using MACRO with edit 1155 installed)
that  uses  this code sequence, a bad .REL file will be produced which
will cause LINK to Ill Mem Ref.  This occurs  because  the  MACRO  END
                                                                Page 5


psuedo-op  code  incorrectly  determines  that the starting address is
located  in  other  than  the  current  Psect,  causing  an  incorrect
inter-Psect Polish block to be generated instead of a start address.

[CURE]


     Only use the right halfword of the current Psect for comparisons.
This patch is only applicable if edit 1155 has been installed to field
image MACRO 53A(1152).

[FILCOM]
File 1) DSK:MC1204.MAC[4,113]   created: 1608 03-Oct-1980
File 2) DSK:MC1205.MAC[4,113]   created: 1517 03-Oct-1980
 
1)1     TITLE MACRO %53B(1204)  2-Oct-80
1)      SUBTTL EDIT BY MCHC/JBC/EGM/MFB/PY
****
2)1     TITLE MACRO %53B(1205)  3-Oct-1980
2)      SUBTTL EDIT BY MCHC/JBC/EGM/MFB/PY
**************
1)1             VEDIT==1204             ;EDIT NUMBER
1)              VCUSTOM==0              ;NON-DEC UPDATE LEVEL
****
2)1             VEDIT==1205             ;EDIT NUMBER
2)              VCUSTOM==0              ;NON-DEC UPDATE LEVEL
**************
1)4     ;*****End of Revision History*****
****
2)4     ;1205   PY      3-Oct-80        SPR 10-30043
2)      ;       If processing the END statement, and the start address l
        abel
2)      ;       has the same name as a macro, do not incorrectly set the
2)      ;       inter-PSECT reference bit. Broken by Edit 1155.
2)      ;*****End of Revision History*****
**************
1)36            MOVE SX,SGNCUR          ;[1155] GET CURRENT PSECT NUMBER
1)              CAMN SX,SGWFND          ;[1155] SYMBOL FOUND IN CURRENT
        PSECT?
****
2)36    ;**;[1205] Replace 1 Line at EVAS3+7L           PY      3-Oct-80
2)              HRRZ SX,SGNCUR          ;[1205] GET CURRENT PSECT NUMBER
2)              CAMN SX,SGWFND          ;[1155] SYMBOL FOUND IN CURRENT
        PSECT?
**************
[End FILCOM]



[SYMPTOM]


     If FORTRAN subroutines are loaded with  an  ALGOL  main  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
                                                                Page 6


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 field  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
1)      
****
2)1     DECEVR==1271            ;DEC EDIT VERSION
2)      
                                                                Page 7


**************
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]



[SYMPTOM]
                                                                Page 8


     LINK does not know about the ALGOL debugger, ALGDDT.

[CURE]


     Implement /DEBUG:ALGOL, and teach LINK about ALGDDT.  This  patch
changes  LNKPAR,  therefore  all modules of LINK should be recompiled.
Note that this edit can be installed directly into version 4A(1220) of
LINK.

[FILCOM]
File 1) DSKC:LNKHST.MAC[30,4507]        created: 1836 31-Aug-80
File 2) DSKC:LNKHST.MAC[30,5526]        created: 1938 31-Aug-80
 
1)1     DECEVR==1266            ;DEC EDIT VERSION
1)      
****
2)1     DECEVR==1267            ;DEC EDIT VERSION
2)      
**************
1)5     
****
2)5     ;1267   PY      31-Aug-80
2)      ;       Teach LINK about /DEBUG:ALGOL and about ALGDDT.
2)      ;       Routines: LNKPAR, LNKWLD, LNKXIT
2)      
2)      
**************

[FILCOM]
File 1) DSKC:LNKPAR.MAC[30,4507]        created: 1500 10-Jul-80
File 2) DSKC:LNKPAR.MAC[30,5526]        created: 1943 31-Aug-80
 
1)1     DECEVR==1264            ;DEC EDIT VERSION
1)      
****
2)1     DECEVR==1267            ;DEC EDIT VERSION
2)      
**************
1)5     
****
2)5     ;1267   Add ALGOL and ALGDDT to list of debuggers in DEB macro.
2)      
**************
1)37    KEYMAC  DEB,<,MACRO,DDT,*FORTRAN,FORDDT,*COBOL,COBDDT,SAIL,SDDT^
        _
1)      ,FAIL,SDDT,SIMULA,SIMDDT>
1)      >
1)      IFN FTMANTIS,<
1)      KEYMAC  DEB,<,MACRO,DDT,*FORTRAN,MANTIS,*COBOL,COBDDT,SAIL,SDDT^
        _
1)      ,FAIL,SDDT,SIMULA,SIMDDT>
1)      >
****
2)37    ;**;[1267] Replace KEYMAC DEB in IFE FTMANTIS           PY      
                                                                Page 9


        31-Aug-80
2)      KEYMAC  DEB,<,MACRO,DDT,*FORTRAN,FORDDT,*COBOL,COBDDT,SAIL,SDDT^
        _
2)      ,FAIL,SDDT,SIMULA,SIMDDT,ALGOL,ALGDDT>          ;[1267] ADD ALGO
        L AND ALGDDT
2)      >
2)      IFN FTMANTIS,<
2)      ;**;[1267] Replace KEYMAC DEB in IFN FTMANTIS           PY      
        31-Aug-80
2)      KEYMAC  DEB,<,MACRO,DDT,*FORTRAN,MANTIS,*COBOL,COBDDT,SAIL,SDDT^
        _
2)      ,FAIL,SDDT,SIMULA,SIMDDT,ALGOL,ALGDDT>          ;[1267] ADD ALGO
        L AND ALGDDT
2)      >
**************

[FILCOM]
File 1) DSKC:LNKWLD.MAC[30,4507]        created: 0906 27-May-80
File 2) DSKC:LNKWLD.MAC[30,5526]        created: 1957 31-Aug-80
 
1)1     SUBTTL  D.M.NIXON/DMN/JLd/SRM/JBC/JNG/MCHC/PAH/DZN/PY   23-May-8
        0
1)      
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/SRM/JBC/JNG/MCHC/PAH/DZN/PY   31-Aug-8
        0
2)      
**************
1)1     DECEVR==1255            ;DEC EDIT VERSION
1)      
****
2)1     DECEVR==1267            ;DEC EDIT VERSION
2)      
**************
1)6     
****
2)6     ;1267   Teach /DEBUG and /TEST switches about ALGDDT.
2)      
**************
1)23            JRST    LNKWLD          ;AND TRY AGAIN
****
2)23    ;**;[1267] Insert 5 lines before SPCDDT-1L      PY      31-Aug-8
        0
2)              CAME    T1,['ALGDDT']   ;[1267] CHECK FOR ALGDDT
2)              JRST    LNKWLD          ;[1267] NOT ALGDDT
2)              SETOM   NULSPC          ;[1267] IT'S ALGDDT - DONT LOAD
        ANYTHING
2)              SETZM   F.NAME(P1)      ;[1267] SINCE ALGDDT IS PART OF
        ALGOTS
2)              TRO     FL,L.SYM        ;[1267] TURN ON SYMBOLS
2)              JRST    LNKWLD          ;AND TRY AGAIN
**************

[FILCOM]
File 1) DSKC:LNKXIT.MAC[30,4507]        created: 0901 06-Jun-80
                                                               Page 10


File 2) DSKC:LNKXIT.MAC[30,5526]        created: 1953 31-Aug-80
 
1)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/MCHC/DZN/MFB/PY   5-Jun-80
1)      
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/MCHC/DZN/MFB/PY   31-Aug-8
        0
2)      
**************
1)1     DECEVR==1261            ;DEC EDIT VERSION
1)      
****
2)1     DECEVR==1267            ;DEC EDIT VERSION
2)      
**************
1)6     
****
2)6     ;1267   Add ALGDDT to KEYMAC definition.
2)      
**************
1)43              IFE %%2,<                     ;;[1144] IF IT WASN'T AB
        OVE DEBUGGERS
****
2)43    ;;**;[1267] Insert at KEYMAC(A,B) Definition +22L       PY      
        31-Aug-80
2)                IFIDN <B><ALGDDT>,<           ;;[1267] ALGDDT IS SPECI
        AL
2)              .JBREN(P1)              ;[1267] ALGDDT STARTS FROM REENT
        ER ADDRESS
2)                  %%2==1                      ;;[1267] REMEMBER WE FOU
        ND A DEBUGGER
2)                >
2)                IFE %%2,<                     ;;[1144] IF IT WASN'T AB
        OVE DEBUGGERS
**************
[End FILCOMs]



[SYMPTOM]


     LINK produces %LNKSFU symbol table errors when loading  an  ALGOL
program  in a small amount of memory or with a small /MAXCORE setting.
This happens because if LINK  has  insufficient  memory  to  keep  all
tables  in  memory,  the ALGOL symbols are the first thing to be paged
out to an overflow file.  When this happens, LINK removes  the  entire
ALGOL symbols area from memory.  Later, when the ALGOL symbols area is
to be expanded, LINK does not check to see if  there  are  symbols  in
memory,  and  attempts  to  move  the  memory  resident  area with the
exchange pages PAGE.  UUO.   Since  there  are  no  ALGOL  symbols  to
exchange, a page from the next area higher, the local symbols area, is
exchanged with a page of zeros.

[CURE]
                                                               Page 11


     Do not exchange  pages  if  the  area  being  expanded  has  been
entirely paged to disk.

[FILCOM]
File 1) DSKC:LNKHST.MAC[30,4507]        created: 2350 18-Jan-81
File 2) DSKC:LNKHST.MAC[30,5526]        created: 1755 28-Jan-81
 
1)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB   
        19-Jan-81
1)      
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB   
        28-Jan-81
2)      
**************
1)1     DECEVR==1274            ;DEC EDIT VERSION
1)      
****
2)1     DECEVR==1275            ;DEC EDIT VERSION
2)      
**************
1)6     SUBTTL  THE END
****
2)5     ;1275   PY      SPR 10-30508
2)      ;       Fix core management bug which occurs if an area has
2)      ;       overflowed to disk, has no pages in memory, and is
2)      ;       being expanded on a VM system. This happens to the
2)      ;       Algol symbols area if it has overflowed, causing
2)      ;       the first AS area page to be swapped with the first
2)      ;       LS area page, producing %LNKSFU errors.
2)      ;       Routine: LNKCOR
2)      
2)      
2)6     SUBTTL  THE END
**************

File 1) DSKC:LNKCOR.MAC[30,4507]        created: 1447 24-Jan-80
File 2) DSKC:LNKCOR.MAC[30,5526]        created: 1747 28-Jan-81
 
1)1     SUBTTL  D.M.NIXON/DMN/JLd/JBC/JNG/DZN   16-Jan-80
1)      
****
2)1     SUBTTL  D.M.NIXON/DMN/JLd/JBC/JNG/DZN   28-Jan-81
2)      
**************
1)1     ;COPYRIGHT (C) 1973, 1980 BY DIGITAL EQUIPMENT CORPORATION
1)      
****
2)1     ;COPYRIGHT (C) 1973, 1981 BY DIGITAL EQUIPMENT CORPORATION
2)      
**************
1)1     DECEVR==1230            ;DEC EDIT VERSION
1)      
****
2)1     DECEVR==1275            ;DEC EDIT VERSION
                                                               Page 12


2)      
**************
1)3     
****
2)3     ;1275   Fix core management bug when expanding a zero length are
        a with PAGE.
2)      
**************
1)15            JUMPL   P1,MOVPG1       ;[650] MOVING UP?
****
2)15    ;**;[1275] Add 1 Line after MOVPAG+5 Lines      PY      28-Jan-8
        1
2)              JUMPE   P2,MOVPG4       ;[1275] DON'T MOVE IF AREA CONTA
        INS NO PAGES
2)              JUMPL   P1,MOVPG1       ;[650] MOVING UP?
**************
1)15            SPOP    <P3,P2,P1>      ;[650] RESTORE ACS USED
1)              JRST    ADJTBL          ;[650] GO FIXUP OTHER TAB.XX WOR
        DS
****
2)15    ;**;[1275] Replace 1 Line at MOVPG#+10 Lines    PY      28-Jan-8
        0
2)      MOVPG4: SPOP    <P3,P2,P1>      ;[1275] RESTORE ACS USED
2)              JRST    ADJTBL          ;[650] GO FIXUP OTHER TAB.XX WOR
        DS
**************
[End FILCOMs]